From 94bddd4c589b27809160f4ff7cb637400b81790e Mon Sep 17 00:00:00 2001 From: Fabio Barone Date: Thu, 8 Mar 2018 17:03:48 -0500 Subject: [PATCH] swarm: parametrized sync tests for live and history --- swarm/network/stream/common_test.go | 28 +++++---------- swarm/network/stream/delivery_test.go | 15 ++++---- swarm/network/stream/snapshot_sync_test.go | 42 ++++++++++++++++------ 3 files changed, 46 insertions(+), 39 deletions(-) diff --git a/swarm/network/stream/common_test.go b/swarm/network/stream/common_test.go index e384c0f707..8a8b7bce6a 100644 --- a/swarm/network/stream/common_test.go +++ b/swarm/network/stream/common_test.go @@ -44,8 +44,12 @@ import ( ) var ( - adapter = flag.String("adapter", "socket", "type of simulation: sim|socket|exec|docker") - loglevel = flag.Int("loglevel", 4, "verbosity of logs") + deliveries map[discover.NodeID]*Delivery + stores map[discover.NodeID]storage.ChunkStore + toAddr func(discover.NodeID) *network.BzzAddr + peerCount func(discover.NodeID) int + adapter = flag.String("adapter", "socket", "type of simulation: sim|socket|exec|docker") + loglevel = flag.Int("loglevel", 4, "verbosity of logs") ) var ( @@ -53,6 +57,7 @@ var ( waitPeerErrC chan error chunkSize = 4096 registries map[discover.NodeID]*TestRegistry + createStoreFunc func(id discover.NodeID, addr *network.BzzAddr) (storage.ChunkStore, error) ) var services = adapters.Services{ @@ -76,7 +81,7 @@ func NewStreamerService(ctx *adapters.ServiceContext) (node.Service, error) { id := ctx.Config.ID addr := toAddr(id) kad := network.NewKademlia(addr.Over(), network.NewKadParams()) - stores[id], err = createTestLocalStorageForId(id, addr) + stores[id], err = createStoreFunc(id, addr) if err != nil { return nil, err } @@ -98,23 +103,6 @@ func NewStreamerService(ctx *adapters.ServiceContext) (node.Service, error) { return testRegistry, nil } -//create a local store for the given node -func createTestLocalStorageForId(id discover.NodeID, addr *network.BzzAddr) (storage.ChunkStore, error) { - var datadir string - var err error - datadir, err = ioutil.TempDir("", fmt.Sprintf("syncer-test-%s", id.TerminalString())) - if err != nil { - return nil, err - } - datadirs[id] = datadir - var store storage.ChunkStore - store, err = storage.NewTestLocalStoreForAddr(datadir, addr.Over()) - if err != nil { - return nil, err - } - return store, nil -} - func datadirsCleanup() { for _, id := range ids { os.RemoveAll(datadirs[id]) diff --git a/swarm/network/stream/delivery_test.go b/swarm/network/stream/delivery_test.go index c5b791bd50..0d92b040da 100644 --- a/swarm/network/stream/delivery_test.go +++ b/swarm/network/stream/delivery_test.go @@ -36,13 +36,6 @@ import ( "github.com/ethereum/go-ethereum/swarm/storage" ) -var ( - deliveries map[discover.NodeID]*Delivery - stores map[discover.NodeID]storage.ChunkStore - toAddr func(discover.NodeID) *network.BzzAddr - peerCount func(discover.NodeID) int -) - func TestStreamerRetrieveRequest(t *testing.T) { tester, streamer, _, teardown, err := newStreamerTester(t) defer teardown() @@ -314,6 +307,7 @@ func TestDeliveryFromNodes(t *testing.T) { func testDeliveryFromNodes(t *testing.T, nodes, conns, chunkCount int, skipCheck bool) { defaultSkipCheck = skipCheck toAddr = network.NewAddrFromNodeID + createStoreFunc = createTestLocalStorageFromSim conf := &streamTesting.RunConfig{ Adapter: *adapter, NodeCount: nodes, @@ -329,10 +323,11 @@ func testDeliveryFromNodes(t *testing.T, nodes, conns, chunkCount int, skipCheck t.Fatal(err.Error()) } stores = make(map[discover.NodeID]storage.ChunkStore) - deliveries = make(map[discover.NodeID]*Delivery) for i, id := range sim.IDs { stores[id] = sim.Stores[i] } + registries = make(map[discover.NodeID]*TestRegistry) + deliveries = make(map[discover.NodeID]*Delivery) peerCount = func(id discover.NodeID) int { if sim.IDs[0] == id || sim.IDs[nodes-1] == id { return 1 @@ -674,3 +669,7 @@ Loop: b.Fatalf("expected no error. got %v", err) } } + +func createTestLocalStorageFromSim(id discover.NodeID, addr *network.BzzAddr) (storage.ChunkStore, error) { + return stores[id], nil +} diff --git a/swarm/network/stream/snapshot_sync_test.go b/swarm/network/stream/snapshot_sync_test.go index abb7bf0a0d..b4c8744ea7 100644 --- a/swarm/network/stream/snapshot_sync_test.go +++ b/swarm/network/stream/snapshot_sync_test.go @@ -69,7 +69,7 @@ type synctestConfig struct { func init() { rand.Seed(time.Now().Unix()) - initSyncTest() + //initSyncTest() } //common_test needs to initialize the test in a init() func @@ -84,6 +84,7 @@ func initSyncTest() { return addr } + createStoreFunc = createTestLocalStorageForId //local stores stores = make(map[discover.NodeID]storage.ChunkStore) //data directories for each node and store @@ -134,20 +135,23 @@ func TestSyncing_1024_16(t *testing.T) { testSyncing(t, 1024, 16) } //The following tests have been disabled because they seem to hit resource limits //on developer machines and/or are long running -func TestSyncing_256_64(t *testing.T) { testSyncing(t, 256, 64) } -func TestSyncing_8_256(t *testing.T) { testSyncing(t, 8, 256) } -func TestSyncing_32_256(t *testing.T) { testSyncing(t, 32, 256) } -func TestSyncing_32_128(t *testing.T) { testSyncing(t, 32, 128) } -func TestSyncing_256_128(t *testing.T) { testSyncing(t, 256, 128) } -func TestSyncing_128_128(t *testing.T) { testSyncing(t, 128, 128) } +/* +func TestSyncing_256_64(t *testing.T) { testSyncing(t, 256, 64) } +func TestSyncing_8_256(t *testing.T) { testSyncing(t, 8, 256) } +func TestSyncing_32_256(t *testing.T) { testSyncing(t, 32, 256) } +func TestSyncing_32_128(t *testing.T) { testSyncing(t, 32, 128) } +func TestSyncing_256_128(t *testing.T) { testSyncing(t, 256, 128) } +func TestSyncing_128_128(t *testing.T) { testSyncing(t, 128, 128) } func TestSyncing_256_256(t *testing.T) { testSyncing(t, 256, 256) } -func TestSyncing_128_256(t *testing.T) { testSyncing(t, 128, 256) } -func TestSyncing_1024_32(t *testing.T) { testSyncing(t, 1024, 32) } -func TestSyncing_1024_64(t *testing.T) { testSyncing(t, 1024, 64) } +func TestSyncing_128_256(t *testing.T) { testSyncing(t, 128, 256) } +func TestSyncing_1024_32(t *testing.T) { testSyncing(t, 1024, 32) } +func TestSyncing_1024_64(t *testing.T) { testSyncing(t, 1024, 64) } func TestSyncing_1024_128(t *testing.T) { testSyncing(t, 1024, 128) } func TestSyncing_1024_256(t *testing.T) { testSyncing(t, 1024, 256) } +*/ func testSyncing(t *testing.T, chunkCount int, nodeCount int) { + initSyncTest() ids = make([]discover.NodeID, nodeCount) //test live and NO history @@ -173,7 +177,6 @@ func testSyncing(t *testing.T, chunkCount int, nodeCount int) { if err != nil { t.Fatal(err) } - } /* @@ -708,3 +711,20 @@ func watchSubscriptionEvents(ctx context.Context, id discover.NodeID, client *rp }() return } + +//create a local store for the given node +func createTestLocalStorageForId(id discover.NodeID, addr *network.BzzAddr) (storage.ChunkStore, error) { + var datadir string + var err error + datadir, err = ioutil.TempDir("", fmt.Sprintf("syncer-test-%s", id.TerminalString())) + if err != nil { + return nil, err + } + datadirs[id] = datadir + var store storage.ChunkStore + store, err = storage.NewTestLocalStoreForAddr(datadir, addr.Over()) + if err != nil { + return nil, err + } + return store, nil +}