18
18
package discovery
19
19
20
20
import (
21
- "io "
21
+ "net "
22
22
"testing"
23
23
"time"
24
24
@@ -27,25 +27,31 @@ import (
27
27
)
28
28
29
29
func TestDiscoveryStdioHandling (t * testing.T ) {
30
- // Build `cat ` helper inside testdata/cat
30
+ // Build `netcat ` helper inside testdata/cat
31
31
builder , err := paths .NewProcess (nil , "go" , "build" )
32
32
require .NoError (t , err )
33
- builder .SetDir ("testdata/cat " )
33
+ builder .SetDir ("testdata/netcat " )
34
34
require .NoError (t , builder .Run ())
35
35
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 )
38
39
40
+ disc := NewClient ("test" , "testdata/netcat/netcat" , listener .Addr ().String ())
39
41
err = disc .runProcess ()
40
42
require .NoError (t , err )
41
43
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
43
49
require .NoError (t , err )
44
50
msg , err := disc .waitMessage (time .Millisecond * 100 )
45
51
require .Error (t , err )
46
52
require .Nil (t , msg )
47
53
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
49
55
require .NoError (t , err )
50
56
51
57
msg , err = disc .waitMessage (time .Millisecond * 100 )
@@ -57,7 +63,7 @@ func TestDiscoveryStdioHandling(t *testing.T) {
57
63
require .Error (t , err )
58
64
require .Nil (t , msg )
59
65
60
- _ , err = disc . outgoingCommandsPipe .Write ([]byte (`"eventType":"ev2" }` )) // complete previous json
66
+ _ , err = conn .Write ([]byte (`"eventType":"ev2" }` )) // complete previous json
61
67
require .NoError (t , err )
62
68
63
69
msg , err = disc .waitMessage (time .Millisecond * 100 )
@@ -67,9 +73,9 @@ func TestDiscoveryStdioHandling(t *testing.T) {
67
73
68
74
require .True (t , disc .Alive ())
69
75
70
- err = disc . outgoingCommandsPipe .(io. ReadCloser ) .Close ()
76
+ err = conn .Close ()
71
77
require .NoError (t , err )
72
- time .Sleep (time .Millisecond * 100 )
78
+ time .Sleep (time .Millisecond * 500 )
73
79
74
80
require .False (t , disc .Alive ())
75
81
}
0 commit comments