Corenet API: Some more tests
License: MIT Signed-off-by: Łukasz Magiera <magik6k@gmail.com>
Łukasz Magiera committed
May 27, 2017 at 18:09 UTC
69d3e0877615dd28293773e370264ad79b4f2ec6
2 files changed
+104
-10
test/dependencies/ma-pipe-unidir/main.go
+28
-9
@@ -4,22 +4,26 @@ import (
4
"flag"
5
"fmt"
6
"io"
7
+ "io/ioutil"
8
"os"
9
+ "strconv"
10
11
ma "gx/ipfs/QmcyqRMCAXVtYPS4DiBrA7sezL9rRGfW8Ctx7cywL4TXJj/go-multiaddr"
12
manet "gx/ipfs/Qmf1Gq7N45Rpuw7ev47uWgH6dLPtdnvcMRNPkVBwqjLJg2/go-multiaddr-net"
13
)
14
13
-const USAGE = "ma-pipe-unidir [-l|--listen] [-h|--help] <send|recv> <multiaddr>\n"
15
+const USAGE = "ma-pipe-unidir [-l|--listen] [--pidFile=path] [-h|--help] <send|recv> <multiaddr>\n"
16
17
type Opts struct {
16
- Listen bool
18
+ Listen bool
19
+ PidFile string
20
}
21
19
-func main() {
22
+func app() int {
23
opts := Opts{}
24
flag.BoolVar(&opts.Listen, "l", false, "")
25
flag.BoolVar(&opts.Listen, "listen", false, "")
26
+ flag.StringVar(&opts.PidFile, "pidFile", "", "")
27
flag.Usage = func() {
28
fmt.Print(USAGE)
29
}
@@ -28,15 +32,25 @@ func main() {
32
33
if len(args) < 2 { // <mode> <addr>
34
fmt.Print(USAGE)
31
- return
35
+ return 1
36
}
37
38
mode := args[0]
39
addr := args[1]
40
41
+ if len(opts.PidFile) > 0 {
42
+ data := []byte(strconv.Itoa(os.Getpid()))
43
+ err := ioutil.WriteFile(opts.PidFile, data, 0644)
44
+ if err != nil {
45
+ return 1
46
+ }
47
+
48
+ defer os.Remove(opts.PidFile)
49
+ }
50
+
51
maddr, err := ma.NewMultiaddr(addr)
52
if err != nil {
39
- return
53
+ return 1
54
}
55
56
var conn manet.Conn
@@ -44,18 +58,18 @@ func main() {
58
if opts.Listen {
59
listener, err := manet.Listen(maddr)
60
if err != nil {
47
- return
61
+ return 1
62
}
63
64
conn, err = listener.Accept()
65
if err != nil {
52
- return
66
+ return 1
67
}
68
} else {
69
var err error
70
conn, err = manet.Dial(maddr)
71
if err != nil {
58
- return
72
+ return 1
73
}
74
}
75
@@ -68,6 +82,11 @@ func main() {
82
default:
83
//TODO: a bit late
84
fmt.Print(USAGE)
71
- return
85
+ return 1
86
}
87
+ return 0
88
+}
89
+
90
+func main() {
91
+ os.Exit(app())
92
}
test/sharness/t0180-corenet.sh
+76
-1
@@ -42,7 +42,6 @@ test_expect_success 'Test server to client communications' '
42
test_expect_success 'Test client to server communications' '
43
ma-pipe-unidir --listen recv /ip4/127.0.0.1/tcp/10101 > server.out &
44
SERVER_PID=$!
45
- #sleep 0.5 &&
45
46
ipfsi 1 exp corenet dial $PEERID_0 corenet-test /ip4/127.0.0.1/tcp/10102 2>&1 > dialer-stdouterr.log &&
47
ma-pipe-unidir send /ip4/127.0.0.1/tcp/10102 < corenet1.bin
@@ -57,6 +56,82 @@ test_expect_success 'client to server output looks good' '
56
test_cmp server.out corenet1.bin
57
'
58
59
+test_expect_success "'ipfs corenet ls' succeeds" '
60
+ echo "/ip4/127.0.0.1/tcp/10101 /app/corenet-test" > expected &&
61
+ ipfsi 0 exp corenet ls > actual
62
+'
63
+
64
+test_expect_success "'ipfs corenet ls' output looks good" '
65
+ test_cmp expected actual
66
+'
67
+
68
+test_expect_success "Cannot re-register app handler" '
69
+ (! ipfsi 0 exp corenet listen corenet-test /ip4/127.0.0.1/tcp/10101)
70
+'
71
+
72
+test_expect_success "'ipfs corenet streams' output is empty" '
73
+ ipfsi 0 exp corenet streams > actual &&
74
+ test_must_be_empty actual
75
+'
76
+
77
+test_expect_success "Setup: Idle stream" '
78
+ ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 &
79
+
80
+ ipfsi 1 exp corenet dial $PEERID_0 corenet-test /ip4/127.0.0.1/tcp/10102 2>&1 > dialer-stdouterr.log &&
81
+ ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 &
82
+
83
+ go-sleep 500ms &&
84
+ kill -0 $(cat listener.pid) && kill -0 $(cat client.pid)
85
+'
86
+
87
+test_expect_success "'ipfs corenet streams' succeeds" '
88
+ echo "2 /app/corenet-test /ip4/127.0.0.1/tcp/10101 $PEERID_1" > expected
89
+ ipfsi 0 exp corenet streams > actual
90
+'
91
+
92
+test_expect_success "'ipfs corenet streams' output looks good" '
93
+ test_cmp expected actual
94
+'
95
+
96
+test_expect_success "'ipfs corenet close' closes stream" '
97
+ ipfsi 0 exp corenet close 2 &&
98
+ ipfsi 0 exp corenet streams > actual &&
99
+ [ ! -f listener.pid ] && [ ! -f client.pid ] &&
100
+ test_must_be_empty actual
101
+'
102
+
103
+test_expect_success "'ipfs corenet close' closes app handler" '
104
+ ipfsi 0 exp corenet close corenet-test &&
105
+ ipfsi 0 exp corenet ls > actual &&
106
+ test_must_be_empty actual
107
+'
108
+
109
+test_expect_success "Setup: Idle stream(2)" '
110
+ ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 &
111
+
112
+ ipfsi 0 exp corenet listen corenet-test2 /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log &&
113
+ ipfsi 1 exp corenet dial $PEERID_0 corenet-test2 /ip4/127.0.0.1/tcp/10102 2>&1 > dialer-stdouterr.log &&
114
+ ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 &
115
+
116
+ go-sleep 500ms &&
117
+ kill -0 $(cat listener.pid) && kill -0 $(cat client.pid)
118
+'
119
+
120
+test_expect_success "'ipfs corenet streams' succeeds(2)" '
121
+ echo "3 /app/corenet-test2 /ip4/127.0.0.1/tcp/10101 $PEERID_1" > expected
122
+ ipfsi 0 exp corenet streams > actual
123
+ test_cmp expected actual
124
+'
125
+
126
+test_expect_success "'ipfs corenet close -a' closes streams and app handlers" '
127
+ ipfsi 0 exp corenet close -a &&
128
+ ipfsi 0 exp corenet streams > actual &&
129
+ [ ! -f listener.pid ] && [ ! -f client.pid ] &&
130
+ test_must_be_empty actual &&
131
+ ipfsi 0 exp corenet ls > actual &&
132
+ test_must_be_empty actual
133
+'
134
+
135
test_expect_success 'stop iptb' '
136
iptb stop
137
'