@cryptotaxi247 / kubo / commits / 69d3e0877

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 '