@@ -17,10 +17,8 @@ package otel
17
17
import (
18
18
"bytes"
19
19
"errors"
20
- "fmt"
21
20
"log"
22
21
"testing"
23
- "time"
24
22
25
23
"github.com/stretchr/testify/suite"
26
24
)
@@ -72,70 +70,26 @@ func (s *HandlerTestSuite) TestGlobalHandler() {
72
70
}
73
71
74
72
func (s * HandlerTestSuite ) TestNoDropsOnDelegate () {
75
- // max time to wait for goroutine to Handle an error.
76
- pause := 10 * time .Millisecond
77
-
78
- var sent int
79
- err := errors .New ("" )
80
- stop := make (chan struct {})
81
- beat := make (chan struct {})
82
- done := make (chan struct {})
83
-
84
- // Wait for a error to be submitted from the following goroutine.
85
- wait := func (d time.Duration ) error {
86
- timer := time .NewTimer (d )
87
- select {
88
- case <- timer .C :
89
- // We are about to fail, stop the spawned goroutine.
90
- stop <- struct {}{}
91
- return fmt .Errorf ("no errors sent in %v" , d )
92
- case <- beat :
93
- // Allow the timer to be reclaimed by GC.
94
- timer .Stop ()
95
- return nil
96
- }
97
- }
98
-
99
- go func () {
100
- // Slow down to speed up: do not overload the processor.
101
- ticker := time .NewTicker (100 * time .Microsecond )
102
- for {
103
- select {
104
- case <- stop :
105
- ticker .Stop ()
106
- done <- struct {}{}
107
- return
108
- case <- ticker .C :
109
- sent ++
110
- Handle (err )
111
- }
112
-
113
- select {
114
- case beat <- struct {}{}:
115
- default :
116
- }
73
+ causeErr := func () func () {
74
+ err := errors .New ("" )
75
+ return func () {
76
+ Handle (err )
117
77
}
118
78
}()
119
79
120
- // Wait for the spice to flow
121
- s .Require ().NoError ( wait ( pause ), "starting error stream" )
80
+ causeErr ()
81
+ s .Require ().Len ( s . errLogger . Got ( ), 1 )
122
82
123
83
// Change to another Handler. We are testing this is loss-less.
124
84
newErrLogger := new (errLogger )
125
85
secondary := & loggingErrorHandler {
126
86
l : log .New (newErrLogger , "" , 0 ),
127
87
}
128
88
SetErrorHandler (secondary )
129
- s .Require ().NoError (wait (pause ), "switched to new Handler" )
130
-
131
- // Testing done, stop sending errors.
132
- stop <- struct {}{}
133
- // Ensure we do not lose any straglers.
134
- <- done
135
89
136
- got := append ( s . errLogger . Got (), newErrLogger . Got () ... )
137
- s .Assert ().Greater ( len ( got ), 1 , "at least 2 errors should have been sent " )
138
- s .Assert ().Len (got , sent )
90
+ causeErr ( )
91
+ s .Assert ().Len ( s . errLogger . Got ( ), 1 , "original Handler used after delegation " )
92
+ s .Assert ().Len (newErrLogger . Got (), 1 , "new Handler not used after delegation" )
139
93
}
140
94
141
95
func TestHandlerTestSuite (t * testing.T ) {
0 commit comments