From 69d3e0877615dd28293773e370264ad79b4f2ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Magiera?= Date: Sat, 27 May 2017 18:09:00 +0200 Subject: [PATCH] Corenet API: Some more tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit License: MIT Signed-off-by: Ɓukasz Magiera --- test/dependencies/ma-pipe-unidir/main.go | 37 +++++++++--- test/sharness/t0180-corenet.sh | 77 +++++++++++++++++++++++- 2 files changed, 104 insertions(+), 10 deletions(-) diff --git a/test/dependencies/ma-pipe-unidir/main.go b/test/dependencies/ma-pipe-unidir/main.go index e3ea7e3de..1f215786a 100644 --- a/test/dependencies/ma-pipe-unidir/main.go +++ b/test/dependencies/ma-pipe-unidir/main.go @@ -4,22 +4,26 @@ import ( "flag" "fmt" "io" + "io/ioutil" "os" + "strconv" ma "gx/ipfs/QmcyqRMCAXVtYPS4DiBrA7sezL9rRGfW8Ctx7cywL4TXJj/go-multiaddr" manet "gx/ipfs/Qmf1Gq7N45Rpuw7ev47uWgH6dLPtdnvcMRNPkVBwqjLJg2/go-multiaddr-net" ) -const USAGE = "ma-pipe-unidir [-l|--listen] [-h|--help] \n" +const USAGE = "ma-pipe-unidir [-l|--listen] [--pidFile=path] [-h|--help] \n" type Opts struct { - Listen bool + Listen bool + PidFile string } -func main() { +func app() int { opts := Opts{} flag.BoolVar(&opts.Listen, "l", false, "") flag.BoolVar(&opts.Listen, "listen", false, "") + flag.StringVar(&opts.PidFile, "pidFile", "", "") flag.Usage = func() { fmt.Print(USAGE) } @@ -28,15 +32,25 @@ func main() { if len(args) < 2 { // fmt.Print(USAGE) - return + return 1 } mode := args[0] addr := args[1] + if len(opts.PidFile) > 0 { + data := []byte(strconv.Itoa(os.Getpid())) + err := ioutil.WriteFile(opts.PidFile, data, 0644) + if err != nil { + return 1 + } + + defer os.Remove(opts.PidFile) + } + maddr, err := ma.NewMultiaddr(addr) if err != nil { - return + return 1 } var conn manet.Conn @@ -44,18 +58,18 @@ func main() { if opts.Listen { listener, err := manet.Listen(maddr) if err != nil { - return + return 1 } conn, err = listener.Accept() if err != nil { - return + return 1 } } else { var err error conn, err = manet.Dial(maddr) if err != nil { - return + return 1 } } @@ -68,6 +82,11 @@ func main() { default: //TODO: a bit late fmt.Print(USAGE) - return + return 1 } + return 0 +} + +func main() { + os.Exit(app()) } diff --git a/test/sharness/t0180-corenet.sh b/test/sharness/t0180-corenet.sh index c11df7409..0f7890bb5 100755 --- a/test/sharness/t0180-corenet.sh +++ b/test/sharness/t0180-corenet.sh @@ -42,7 +42,6 @@ test_expect_success 'Test server to client communications' ' test_expect_success 'Test client to server communications' ' ma-pipe-unidir --listen recv /ip4/127.0.0.1/tcp/10101 > server.out & SERVER_PID=$! - #sleep 0.5 && ipfsi 1 exp corenet dial $PEERID_0 corenet-test /ip4/127.0.0.1/tcp/10102 2>&1 > dialer-stdouterr.log && 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' ' test_cmp server.out corenet1.bin ' +test_expect_success "'ipfs corenet ls' succeeds" ' + echo "/ip4/127.0.0.1/tcp/10101 /app/corenet-test" > expected && + ipfsi 0 exp corenet ls > actual +' + +test_expect_success "'ipfs corenet ls' output looks good" ' + test_cmp expected actual +' + +test_expect_success "Cannot re-register app handler" ' + (! ipfsi 0 exp corenet listen corenet-test /ip4/127.0.0.1/tcp/10101) +' + +test_expect_success "'ipfs corenet streams' output is empty" ' + ipfsi 0 exp corenet streams > actual && + test_must_be_empty actual +' + +test_expect_success "Setup: Idle stream" ' + ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 & + + ipfsi 1 exp corenet dial $PEERID_0 corenet-test /ip4/127.0.0.1/tcp/10102 2>&1 > dialer-stdouterr.log && + ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 & + + go-sleep 500ms && + kill -0 $(cat listener.pid) && kill -0 $(cat client.pid) +' + +test_expect_success "'ipfs corenet streams' succeeds" ' + echo "2 /app/corenet-test /ip4/127.0.0.1/tcp/10101 $PEERID_1" > expected + ipfsi 0 exp corenet streams > actual +' + +test_expect_success "'ipfs corenet streams' output looks good" ' + test_cmp expected actual +' + +test_expect_success "'ipfs corenet close' closes stream" ' + ipfsi 0 exp corenet close 2 && + ipfsi 0 exp corenet streams > actual && + [ ! -f listener.pid ] && [ ! -f client.pid ] && + test_must_be_empty actual +' + +test_expect_success "'ipfs corenet close' closes app handler" ' + ipfsi 0 exp corenet close corenet-test && + ipfsi 0 exp corenet ls > actual && + test_must_be_empty actual +' + +test_expect_success "Setup: Idle stream(2)" ' + ma-pipe-unidir --listen --pidFile=listener.pid recv /ip4/127.0.0.1/tcp/10101 & + + ipfsi 0 exp corenet listen corenet-test2 /ip4/127.0.0.1/tcp/10101 2>&1 > listener-stdouterr.log && + ipfsi 1 exp corenet dial $PEERID_0 corenet-test2 /ip4/127.0.0.1/tcp/10102 2>&1 > dialer-stdouterr.log && + ma-pipe-unidir --pidFile=client.pid recv /ip4/127.0.0.1/tcp/10102 & + + go-sleep 500ms && + kill -0 $(cat listener.pid) && kill -0 $(cat client.pid) +' + +test_expect_success "'ipfs corenet streams' succeeds(2)" ' + echo "3 /app/corenet-test2 /ip4/127.0.0.1/tcp/10101 $PEERID_1" > expected + ipfsi 0 exp corenet streams > actual + test_cmp expected actual +' + +test_expect_success "'ipfs corenet close -a' closes streams and app handlers" ' + ipfsi 0 exp corenet close -a && + ipfsi 0 exp corenet streams > actual && + [ ! -f listener.pid ] && [ ! -f client.pid ] && + test_must_be_empty actual && + ipfsi 0 exp corenet ls > actual && + test_must_be_empty actual +' + test_expect_success 'stop iptb' ' iptb stop '