diff --git a/ipam/allocator_test.go b/ipam/allocator_test.go index 300a147e..4ec4a223 100644 --- a/ipam/allocator_test.go +++ b/ipam/allocator_test.go @@ -153,9 +153,9 @@ func TestAllocatorClaim(t *testing.T) { testAddr2 = "10.0.4.2/24" ) - allocs, _, subnet := makeNetworkOfAllocators(2, universe) + allocs, router, subnet := makeNetworkOfAllocators(2, universe) + defer stopNetworkOfAllocators(allocs, router) alloc := allocs[1] - defer alloc.Stop() addr1, _ := address.ParseCIDR(testAddr1) // First claim should trigger "dunno, I'm going to wait" @@ -322,6 +322,7 @@ func TestTransfer(t *testing.T) { cidr = "10.0.1.7/22" ) allocs, router, subnet := makeNetworkOfAllocators(3, cidr) + defer stopNetworkOfAllocators(allocs, router) alloc1 := allocs[0] alloc2 := allocs[1] alloc3 := allocs[2] // This will be 'master' and get the first range @@ -361,8 +362,8 @@ func TestFakeRouterSimple(t *testing.T) { const ( cidr = "10.0.1.7/22" ) - allocs, _, subnet := makeNetworkOfAllocators(2, cidr) - defer stopNetworkOfAllocators(allocs) + allocs, router, subnet := makeNetworkOfAllocators(2, cidr) + defer stopNetworkOfAllocators(allocs, router) alloc1 := allocs[0] //alloc2 := allocs[1] @@ -380,8 +381,8 @@ func TestAllocatorFuzz(t *testing.T) { concurrency = 5 cidr = "10.0.1.7/22" ) - allocs, _, subnet := makeNetworkOfAllocators(nodes, cidr) - defer stopNetworkOfAllocators(allocs) + allocs, router, subnet := makeNetworkOfAllocators(nodes, cidr) + defer stopNetworkOfAllocators(allocs, router) // Test state // For each IP issued we store the allocator @@ -588,9 +589,9 @@ func TestSpaceRequest(t *testing.T) { container2 = "cont-2" universe = "10.32.0.0/12" ) - allocs, gossipRouter, subnet := makeNetworkOfAllocators(1, universe) + allocs, router, subnet := makeNetworkOfAllocators(1, universe) + defer stopNetworkOfAllocators(allocs, router) alloc1 := allocs[0] - defer alloc1.Stop() addr, err := alloc1.Allocate(container1, subnet, returnFalse) require.Nil(t, err, "") @@ -601,7 +602,7 @@ func TestSpaceRequest(t *testing.T) { // Start a new peer alloc2, _ := makeAllocator("02:00:00:02:00:00", universe, 2) - alloc2.SetInterfaces(gossipRouter.Connect(alloc2.ourName, alloc2)) + alloc2.SetInterfaces(router.Connect(alloc2.ourName, alloc2)) alloc2.Start() defer alloc2.Stop() alloc2.Allocate(container2, subnet, returnFalse) diff --git a/ipam/testutils_test.go b/ipam/testutils_test.go index 6e6b374a..b665771b 100644 --- a/ipam/testutils_test.go +++ b/ipam/testutils_test.go @@ -232,7 +232,10 @@ func makeNetworkOfAllocators(size int, cidr string) ([]*Allocator, *gossip.TestR return allocs, gossipRouter, subnet } -func stopNetworkOfAllocators(allocs []*Allocator) { +func stopNetworkOfAllocators(allocs []*Allocator, gossipRouter *gossip.TestRouter) { + // NB: We must stop the router first since ipam gossip makes + // synchronous calls into the allocator. + gossipRouter.Stop() for _, alloc := range allocs { alloc.Stop() }