1818package discovery
1919
2020import (
21- "io "
21+ "net "
2222 "testing"
2323 "time"
2424
@@ -27,25 +27,31 @@ import (
2727)
2828
2929func TestDiscoveryStdioHandling (t * testing.T ) {
30- // Build `cat ` helper inside testdata/cat
30+ // Build `netcat ` helper inside testdata/cat
3131 builder , err := paths .NewProcess (nil , "go" , "build" )
3232 require .NoError (t , err )
33- builder .SetDir ("testdata/cat " )
33+ builder .SetDir ("testdata/netcat " )
3434 require .NoError (t , builder .Run ())
3535
36- // Run cat and test if streaming json works as expected
37- disc := NewClient ("test" , "testdata/cat/cat" ) // copy stdin to stdout
36+ // Run netcat and test if streaming json works as expected
37+ listener , err := net .ListenTCP ("tcp" , nil )
38+ require .NoError (t , err )
3839
40+ disc := NewClient ("test" , "testdata/netcat/netcat" , listener .Addr ().String ())
3941 err = disc .runProcess ()
4042 require .NoError (t , err )
4143
42- _ , err = disc .outgoingCommandsPipe .Write ([]byte (`{ "eventType":` )) // send partial JSON
44+ listener .SetDeadline (time .Now ().Add (time .Second ))
45+ conn , err := listener .Accept ()
46+ require .NoError (t , err )
47+
48+ _ , err = conn .Write ([]byte (`{ "eventType":` )) // send partial JSON
4349 require .NoError (t , err )
4450 msg , err := disc .waitMessage (time .Millisecond * 100 )
4551 require .Error (t , err )
4652 require .Nil (t , msg )
4753
48- _ , err = disc . outgoingCommandsPipe .Write ([]byte (`"ev1" }{ ` )) // complete previous json and start another one
54+ _ , err = conn .Write ([]byte (`"ev1" }{ ` )) // complete previous json and start another one
4955 require .NoError (t , err )
5056
5157 msg , err = disc .waitMessage (time .Millisecond * 100 )
@@ -57,7 +63,7 @@ func TestDiscoveryStdioHandling(t *testing.T) {
5763 require .Error (t , err )
5864 require .Nil (t , msg )
5965
60- _ , err = disc . outgoingCommandsPipe .Write ([]byte (`"eventType":"ev2" }` )) // complete previous json
66+ _ , err = conn .Write ([]byte (`"eventType":"ev2" }` )) // complete previous json
6167 require .NoError (t , err )
6268
6369 msg , err = disc .waitMessage (time .Millisecond * 100 )
@@ -67,9 +73,9 @@ func TestDiscoveryStdioHandling(t *testing.T) {
6773
6874 require .True (t , disc .Alive ())
6975
70- err = disc . outgoingCommandsPipe .(io. ReadCloser ) .Close ()
76+ err = conn .Close ()
7177 require .NoError (t , err )
72- time .Sleep (time .Millisecond * 100 )
78+ time .Sleep (time .Millisecond * 500 )
7379
7480 require .False (t , disc .Alive ())
7581}
0 commit comments