From 6bd4a6ddb2f1d5e0fde9d803b2bf6f4d1b95bbf6 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet Date: Sat, 27 Dec 2014 22:59:35 -0800 Subject: [PATCH] epictest: fix mn.Peers() setup race @maybebtc the error was not inside mocknet. the error is in assuming the peers / nets returned follow the same order. See: - https://github.com/jbenet/go-ipfs/blob/master/epictest/addcat_test.go#L100 - https://gist.github.com/jbenet/a39bb9d2f16532a03bb8 if you want the results to be sorted by peer.ID before they are returned, we can totally do that, but that's probably an unsafe assumption to make in general-- if you do your initialization async, the number of networks or peers may have changed between the two calls. LMK what you prefer. (thank you golang map chaosmonkey ;) --- epictest/addcat_test.go | 8 +++++--- epictest/three_legged_cat_test.go | 9 +++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/epictest/addcat_test.go b/epictest/addcat_test.go index 7c028135a..c9ccb931a 100644 --- a/epictest/addcat_test.go +++ b/epictest/addcat_test.go @@ -94,14 +94,16 @@ func DirectAddCat(data []byte, conf Config) error { Bandwidth: math.MaxInt32, }) - if len(mn.Peers()) < numPeers { + peers := mn.Peers() + if len(peers) < numPeers { return errors.New("test initialization error") } - adder, err := makeCore(ctx, MocknetTestRepo(mn.Peers()[0], mn.Net(mn.Peers()[0]), conf)) + + adder, err := makeCore(ctx, MocknetTestRepo(peers[0], mn.Net(peers[0]), conf)) if err != nil { return err } - catter, err := makeCore(ctx, MocknetTestRepo(mn.Peers()[1], mn.Net(mn.Peers()[1]), conf)) + catter, err := makeCore(ctx, MocknetTestRepo(peers[1], mn.Net(peers[1]), conf)) if err != nil { return err } diff --git a/epictest/three_legged_cat_test.go b/epictest/three_legged_cat_test.go index 40de2cae7..d66578305 100644 --- a/epictest/three_legged_cat_test.go +++ b/epictest/three_legged_cat_test.go @@ -38,18 +38,19 @@ func RunThreeLeggedCat(data []byte, conf Config) error { Bandwidth: math.MaxInt32, }) - if len(mn.Peers()) < numPeers { + peers := mn.Peers() + if len(peers) < numPeers { return errors.New("test initialization error") } - adder, err := makeCore(ctx, MocknetTestRepo(mn.Peers()[0], mn.Net(mn.Peers()[0]), conf)) + adder, err := makeCore(ctx, MocknetTestRepo(peers[0], mn.Net(peers[0]), conf)) if err != nil { return err } - catter, err := makeCore(ctx, MocknetTestRepo(mn.Peers()[1], mn.Net(mn.Peers()[1]), conf)) + catter, err := makeCore(ctx, MocknetTestRepo(peers[1], mn.Net(peers[1]), conf)) if err != nil { return err } - bootstrap, err := makeCore(ctx, MocknetTestRepo(mn.Peers()[2], mn.Net(mn.Peers()[2]), conf)) + bootstrap, err := makeCore(ctx, MocknetTestRepo(peers[2], mn.Net(peers[2]), conf)) if err != nil { return err }