@@ -17,10 +17,7 @@ limitations under the License.
17
17
package signals
18
18
19
19
import (
20
- "fmt"
21
20
"os"
22
- "os/signal"
23
- "sync"
24
21
"time"
25
22
26
23
. "github.com/onsi/ginkgo/v2"
@@ -31,53 +28,23 @@ var _ = Describe("runtime signal", func() {
31
28
32
29
Context ("SignalHandler Test" , func () {
33
30
34
- It ("test signal handler" , func () {
35
- ctx := SetupSignalHandler ()
36
- task := & Task {
37
- ticker : time .NewTicker (time .Second * 2 ),
38
- }
39
- c := make (chan os.Signal , 1 )
40
- signal .Notify (c , os .Interrupt )
41
- task .wg .Add (1 )
42
- go func (c chan os.Signal ) {
43
- defer task .wg .Done ()
44
- task .Run (c )
45
- }(c )
31
+ It ("test signal handler with delay" , func () {
32
+ delay := time .Second
33
+ ctx := SetupSignalHandlerWithDelay (delay )
46
34
47
- select {
48
- case sig := <- c :
49
- fmt .Printf ("Got %s signal. Aborting...\n " , sig )
50
- case _ , ok := <- ctx .Done ():
51
- Expect (ok ).To (BeFalse ())
52
- }
35
+ // Save time before sending signal
36
+ beforeSendingSignal := time .Now ()
37
+
38
+ // Send signal
39
+ signalCh <- os .Interrupt
40
+
41
+ _ , ok := <- ctx .Done ()
42
+ // Verify that the channel was closed
43
+ Expect (ok ).To (BeFalse ())
44
+ // Verify that our delay was respected
45
+ Expect (time .Since (beforeSendingSignal )).To (BeNumerically (">=" , delay ))
53
46
})
54
47
55
48
})
56
49
57
50
})
58
-
59
- type Task struct {
60
- wg sync.WaitGroup
61
- ticker * time.Ticker
62
- }
63
-
64
- func (t * Task ) Run (c chan os.Signal ) {
65
- for {
66
- go sendSignal (c )
67
- handle ()
68
- }
69
- }
70
-
71
- func handle () {
72
- for i := 0 ; i < 5 ; i ++ {
73
- fmt .Print ("#" )
74
- time .Sleep (time .Millisecond * 100 )
75
- }
76
- fmt .Println ()
77
- }
78
-
79
- func sendSignal (stopChan chan os.Signal ) {
80
- fmt .Printf ("..." )
81
- time .Sleep (1 * time .Second )
82
- stopChan <- os .Interrupt
83
- }
0 commit comments