mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 09:53:48 +00:00
swarm: parametrized sync tests for live and history
This commit is contained in:
parent
de0ef13f75
commit
94bddd4c58
3 changed files with 46 additions and 39 deletions
|
|
@ -44,8 +44,12 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
adapter = flag.String("adapter", "socket", "type of simulation: sim|socket|exec|docker")
|
deliveries map[discover.NodeID]*Delivery
|
||||||
loglevel = flag.Int("loglevel", 4, "verbosity of logs")
|
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 (
|
var (
|
||||||
|
|
@ -53,6 +57,7 @@ var (
|
||||||
waitPeerErrC chan error
|
waitPeerErrC chan error
|
||||||
chunkSize = 4096
|
chunkSize = 4096
|
||||||
registries map[discover.NodeID]*TestRegistry
|
registries map[discover.NodeID]*TestRegistry
|
||||||
|
createStoreFunc func(id discover.NodeID, addr *network.BzzAddr) (storage.ChunkStore, error)
|
||||||
)
|
)
|
||||||
|
|
||||||
var services = adapters.Services{
|
var services = adapters.Services{
|
||||||
|
|
@ -76,7 +81,7 @@ func NewStreamerService(ctx *adapters.ServiceContext) (node.Service, error) {
|
||||||
id := ctx.Config.ID
|
id := ctx.Config.ID
|
||||||
addr := toAddr(id)
|
addr := toAddr(id)
|
||||||
kad := network.NewKademlia(addr.Over(), network.NewKadParams())
|
kad := network.NewKademlia(addr.Over(), network.NewKadParams())
|
||||||
stores[id], err = createTestLocalStorageForId(id, addr)
|
stores[id], err = createStoreFunc(id, addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -98,23 +103,6 @@ func NewStreamerService(ctx *adapters.ServiceContext) (node.Service, error) {
|
||||||
return testRegistry, nil
|
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() {
|
func datadirsCleanup() {
|
||||||
for _, id := range ids {
|
for _, id := range ids {
|
||||||
os.RemoveAll(datadirs[id])
|
os.RemoveAll(datadirs[id])
|
||||||
|
|
|
||||||
|
|
@ -36,13 +36,6 @@ import (
|
||||||
"github.com/ethereum/go-ethereum/swarm/storage"
|
"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) {
|
func TestStreamerRetrieveRequest(t *testing.T) {
|
||||||
tester, streamer, _, teardown, err := newStreamerTester(t)
|
tester, streamer, _, teardown, err := newStreamerTester(t)
|
||||||
defer teardown()
|
defer teardown()
|
||||||
|
|
@ -314,6 +307,7 @@ func TestDeliveryFromNodes(t *testing.T) {
|
||||||
func testDeliveryFromNodes(t *testing.T, nodes, conns, chunkCount int, skipCheck bool) {
|
func testDeliveryFromNodes(t *testing.T, nodes, conns, chunkCount int, skipCheck bool) {
|
||||||
defaultSkipCheck = skipCheck
|
defaultSkipCheck = skipCheck
|
||||||
toAddr = network.NewAddrFromNodeID
|
toAddr = network.NewAddrFromNodeID
|
||||||
|
createStoreFunc = createTestLocalStorageFromSim
|
||||||
conf := &streamTesting.RunConfig{
|
conf := &streamTesting.RunConfig{
|
||||||
Adapter: *adapter,
|
Adapter: *adapter,
|
||||||
NodeCount: nodes,
|
NodeCount: nodes,
|
||||||
|
|
@ -329,10 +323,11 @@ func testDeliveryFromNodes(t *testing.T, nodes, conns, chunkCount int, skipCheck
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
stores = make(map[discover.NodeID]storage.ChunkStore)
|
stores = make(map[discover.NodeID]storage.ChunkStore)
|
||||||
deliveries = make(map[discover.NodeID]*Delivery)
|
|
||||||
for i, id := range sim.IDs {
|
for i, id := range sim.IDs {
|
||||||
stores[id] = sim.Stores[i]
|
stores[id] = sim.Stores[i]
|
||||||
}
|
}
|
||||||
|
registries = make(map[discover.NodeID]*TestRegistry)
|
||||||
|
deliveries = make(map[discover.NodeID]*Delivery)
|
||||||
peerCount = func(id discover.NodeID) int {
|
peerCount = func(id discover.NodeID) int {
|
||||||
if sim.IDs[0] == id || sim.IDs[nodes-1] == id {
|
if sim.IDs[0] == id || sim.IDs[nodes-1] == id {
|
||||||
return 1
|
return 1
|
||||||
|
|
@ -674,3 +669,7 @@ Loop:
|
||||||
b.Fatalf("expected no error. got %v", err)
|
b.Fatalf("expected no error. got %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func createTestLocalStorageFromSim(id discover.NodeID, addr *network.BzzAddr) (storage.ChunkStore, error) {
|
||||||
|
return stores[id], nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ type synctestConfig struct {
|
||||||
func init() {
|
func init() {
|
||||||
rand.Seed(time.Now().Unix())
|
rand.Seed(time.Now().Unix())
|
||||||
|
|
||||||
initSyncTest()
|
//initSyncTest()
|
||||||
}
|
}
|
||||||
|
|
||||||
//common_test needs to initialize the test in a init() func
|
//common_test needs to initialize the test in a init() func
|
||||||
|
|
@ -84,6 +84,7 @@ func initSyncTest() {
|
||||||
return addr
|
return addr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
createStoreFunc = createTestLocalStorageForId
|
||||||
//local stores
|
//local stores
|
||||||
stores = make(map[discover.NodeID]storage.ChunkStore)
|
stores = make(map[discover.NodeID]storage.ChunkStore)
|
||||||
//data directories for each node and store
|
//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
|
//The following tests have been disabled because they seem to hit resource limits
|
||||||
//on developer machines and/or are long running
|
//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_256_64(t *testing.T) { testSyncing(t, 256, 64) }
|
||||||
func TestSyncing_32_256(t *testing.T) { testSyncing(t, 32, 256) }
|
func TestSyncing_8_256(t *testing.T) { testSyncing(t, 8, 256) }
|
||||||
func TestSyncing_32_128(t *testing.T) { testSyncing(t, 32, 128) }
|
func TestSyncing_32_256(t *testing.T) { testSyncing(t, 32, 256) }
|
||||||
func TestSyncing_256_128(t *testing.T) { testSyncing(t, 256, 128) }
|
func TestSyncing_32_128(t *testing.T) { testSyncing(t, 32, 128) }
|
||||||
func TestSyncing_128_128(t *testing.T) { testSyncing(t, 128, 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_256_256(t *testing.T) { testSyncing(t, 256, 256) }
|
||||||
func TestSyncing_128_256(t *testing.T) { testSyncing(t, 128, 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_32(t *testing.T) { testSyncing(t, 1024, 32) }
|
||||||
func TestSyncing_1024_64(t *testing.T) { testSyncing(t, 1024, 64) }
|
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_128(t *testing.T) { testSyncing(t, 1024, 128) }
|
||||||
func TestSyncing_1024_256(t *testing.T) { testSyncing(t, 1024, 256) }
|
func TestSyncing_1024_256(t *testing.T) { testSyncing(t, 1024, 256) }
|
||||||
|
*/
|
||||||
|
|
||||||
func testSyncing(t *testing.T, chunkCount int, nodeCount int) {
|
func testSyncing(t *testing.T, chunkCount int, nodeCount int) {
|
||||||
|
initSyncTest()
|
||||||
ids = make([]discover.NodeID, nodeCount)
|
ids = make([]discover.NodeID, nodeCount)
|
||||||
|
|
||||||
//test live and NO history
|
//test live and NO history
|
||||||
|
|
@ -173,7 +177,6 @@ func testSyncing(t *testing.T, chunkCount int, nodeCount int) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -708,3 +711,20 @@ func watchSubscriptionEvents(ctx context.Context, id discover.NodeID, client *rp
|
||||||
}()
|
}()
|
||||||
return
|
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
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue