@@ -18,105 +18,64 @@ import (
1818 "os"
1919 "strconv"
2020 "testing"
21+ "time"
2122)
2223
23- func TestSdWatchdogEnabled (t * testing.T ) {
24- // (time, nil)
25- err := os .Setenv ("WATCHDOG_USEC" , "100" )
26- if err != nil {
27- panic (err )
28- }
29- err = os .Setenv ("WATCHDOG_PID" , strconv .Itoa (os .Getpid ()))
24+ func must (err error ) {
3025 if err != nil {
3126 panic (err )
3227 }
28+ }
3329
34- delay , err := SdWatchdogEnabled ()
35- if delay == 0 || err != nil {
36- t .Errorf ("TEST: Watchdog enabled FAILED" )
37- }
30+ func TestSdWatchdogEnabled (t * testing.T ) {
31+ mypid := strconv .Itoa (os .Getpid ())
32+ tests := []struct {
33+ usec string // empty => unset
34+ pid string // empty => unset
3835
39- // (0, nil) PID doesnt match
40- err = os .Setenv ("WATCHDOG_USEC" , "100" )
41- if err != nil {
42- panic (err )
43- }
44- err = os .Setenv ("WATCHDOG_PID" , "0" )
45- if err != nil {
46- panic (err )
47- }
48- delay , err = SdWatchdogEnabled ()
49- if delay != 0 || err != nil {
50- t .Errorf ("TEST: PID doesn't match FAILED" )
51- }
36+ werr bool
37+ wdelay time.Duration
38+ }{
39+ // Success cases
40+ {"100" , mypid , false , 100 * time .Microsecond },
41+ {"50" , mypid , false , 50 * time .Microsecond },
42+ {"1" , mypid , false , 1 * time .Microsecond },
5243
53- // (0, nil) WATCHDOG_USEC doen't exist
54- err = os .Unsetenv ("WATCHDOG_USEC" )
55- if err != nil {
56- panic (err )
57- }
58- err = os .Setenv ("WATCHDOG_PID" , strconv .Itoa (os .Getpid ()))
59- if err != nil {
60- panic (err )
61- }
62- delay , err = SdWatchdogEnabled ()
63- if delay != 0 || err != nil {
64- t .Errorf ("TEST: WATCHDOG_USEC doen't exist FAILED" )
65- }
44+ // No-op cases
45+ {"" , mypid , false , 0 }, // WATCHDOG_USEC not set
46+ {"1" , "" , false , 0 }, // WATCHDOG_PID not set
47+ {"1" , "0" , false , 0 }, // WATCHDOG_PID doesn't match
48+ {"" , "" , false , 0 }, // Both not set
6649
67- // (0, nil) WATCHDOG_PID doen't exist
68- err = os .Setenv ("WATCHDOG_USEC" , "1" )
69- if err != nil {
70- panic (err )
71- }
72- err = os .Unsetenv ("WATCHDOG_PID" )
73- if err != nil {
74- panic (err )
75- }
76- delay , err = SdWatchdogEnabled ()
77- if delay != 0 || err != nil {
78- t .Errorf ("TEST: WATCHDOG_PID doen't exist FAILED" )
50+ // Failure cases
51+ {"-1" , mypid , true , 0 }, // Negative USEC
52+ {"string" , "1" , true , 0 }, // Non-integer USEC value
53+ {"1" , "string" , true , 0 }, // Non-integer PID value
54+ {"stringa" , "stringb" , true , 0 }, // E v e r y t h i n g
55+ {"-10239" , "-eleventythree" , true , 0 }, // i s w r o n g
7956 }
8057
81- // (0, err) USEC negative
82- err = os .Setenv ("WATCHDOG_USEC" , "-1" )
83- if err != nil {
84- panic (err )
85- }
86- err = os .Setenv ("WATCHDOG_PID" , strconv .Itoa (os .Getpid ()))
87- if err != nil {
88- panic (err )
89- }
90- _ , err = SdWatchdogEnabled ()
91- if err == nil {
92- t .Errorf ("TEST: USEC negative FAILED" )
93- }
58+ for i , tt := range tests {
59+ if tt .usec != "" {
60+ must (os .Setenv ("WATCHDOG_USEC" , tt .usec ))
61+ } else {
62+ must (os .Unsetenv ("WATCHDOG_USEC" ))
63+ }
64+ if tt .pid != "" {
65+ must (os .Setenv ("WATCHDOG_PID" , tt .pid ))
66+ } else {
67+ must (os .Unsetenv ("WATCHDOG_PID" ))
68+ }
9469
95- // (0, err) Bad USEC
96- err = os .Setenv ("WATCHDOG_USEC" , "string" )
97- if err != nil {
98- panic (err )
99- }
100- err = os .Setenv ("WATCHDOG_PID" , strconv .Itoa (os .Getpid ()))
101- if err != nil {
102- panic (err )
103- }
104- _ , err = SdWatchdogEnabled ()
105- if err == nil {
106- t .Errorf ("TEST: Bad USEC FAILED" )
107- }
70+ delay , err := SdWatchdogEnabled ()
10871
109- // (0, err) Bad PID
110- err = os .Setenv ("WATCHDOG_USEC" , "1" )
111- if err != nil {
112- panic (err )
113- }
114- err = os .Setenv ("WATCHDOG_PID" , "string" )
115- if err != nil {
116- panic (err )
117- }
118- _ , err = SdWatchdogEnabled ()
119- if err == nil {
120- t .Errorf ("TEST: Bad PID FAILED" )
72+ if tt .werr && err == nil {
73+ t .Errorf ("#%d: want non-nil err, got nil" , i )
74+ } else if ! tt .werr && err != nil {
75+ t .Errorf ("#%d: want nil err, got %v" , i , err )
76+ }
77+ if tt .wdelay != delay {
78+ t .Errorf ("#%d: want delay=%d, got %d" , i , tt .wdelay , delay )
79+ }
12180 }
12281}
0 commit comments