Skip to content

Commit f305b10

Browse files
committed
Added unit tests
1 parent 36c5780 commit f305b10

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed

Diff for: client_test.go

+56
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package discovery
1919

2020
import (
2121
"fmt"
22+
"io"
2223
"net"
2324
"testing"
2425
"time"
@@ -93,3 +94,58 @@ func TestDiscoveryStdioHandling(t *testing.T) {
9394

9495
require.False(t, disc.Alive())
9596
}
97+
98+
func TestClient(t *testing.T) {
99+
// Build dummy-discovery
100+
builder, err := paths.NewProcess(nil, "go", "build")
101+
require.NoError(t, err)
102+
builder.SetDir("dummy-discovery")
103+
require.NoError(t, builder.Run())
104+
105+
t.Run("WithDiscoveryCrashingOnStartup", func(t *testing.T) {
106+
// Run client with discovery crashing on startup
107+
cl := NewClient("1", "dummy-discovery/dummy-discovery", "--invalid")
108+
require.ErrorIs(t, cl.Run(), io.EOF)
109+
})
110+
111+
t.Run("WithDiscoveryCrashingWhileSendingCommands", func(t *testing.T) {
112+
// Run client with crashing discovery after 1 second
113+
cl := NewClient("1", "dummy-discovery/dummy-discovery", "-k")
114+
require.NoError(t, cl.Run())
115+
116+
time.Sleep(time.Second)
117+
118+
ch, err := cl.StartSync(20)
119+
require.Error(t, err)
120+
require.Nil(t, ch)
121+
})
122+
123+
t.Run("WithDiscoveryCrashingWhileStreamingEvents", func(t *testing.T) {
124+
// Run client with crashing discovery after 1 second
125+
cl := NewClient("1", "dummy-discovery/dummy-discovery", "-k")
126+
require.NoError(t, cl.Run())
127+
128+
ch, err := cl.StartSync(20)
129+
require.NoError(t, err)
130+
131+
time.Sleep(time.Second)
132+
133+
loop:
134+
for {
135+
select {
136+
case msg, ok := <-ch:
137+
if !ok {
138+
// Channel closed: Test passed
139+
fmt.Println("Event channel closed")
140+
break loop
141+
}
142+
fmt.Println("Recv: ", msg)
143+
case <-time.After(time.Second):
144+
t.Error("Crashing client did not close event channel")
145+
break loop
146+
}
147+
}
148+
149+
cl.Quit()
150+
})
151+
}

Diff for: dummy-discovery/args/args.go

+9
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package args
2020
import (
2121
"fmt"
2222
"os"
23+
"time"
2324
)
2425

2526
// Tag is the current git tag
@@ -38,6 +39,14 @@ func Parse() {
3839
fmt.Printf("dummy-discovery %s (build timestamp: %s)\n", Tag, Timestamp)
3940
os.Exit(0)
4041
}
42+
if arg == "-k" {
43+
// Emulate crashing discovery
44+
go func() {
45+
time.Sleep(time.Millisecond * 500)
46+
os.Exit(1)
47+
}()
48+
continue
49+
}
4150
fmt.Fprintf(os.Stderr, "invalid argument: %s\n", arg)
4251
os.Exit(1)
4352
}

0 commit comments

Comments
 (0)