diff options
author | Ferenc Szabo <frncmx@gmail.com> | 2019-02-21 05:57:42 +0800 |
---|---|---|
committer | Viktor TrĂ³n <viktor.tron@gmail.com> | 2019-02-21 05:57:42 +0800 |
commit | e38b227ce6400567f0f4e4ff9e1cce7f93a175ed (patch) | |
tree | ed148dc1df2a1f2a70f474f424ff2d656facf993 /swarm/network/stream/snapshot_sync_test.go | |
parent | d36e974ba303d12d79d769d0811dd5babcf6688f (diff) | |
download | go-tangerine-e38b227ce6400567f0f4e4ff9e1cce7f93a175ed.tar go-tangerine-e38b227ce6400567f0f4e4ff9e1cce7f93a175ed.tar.gz go-tangerine-e38b227ce6400567f0f4e4ff9e1cce7f93a175ed.tar.bz2 go-tangerine-e38b227ce6400567f0f4e4ff9e1cce7f93a175ed.tar.lz go-tangerine-e38b227ce6400567f0f4e4ff9e1cce7f93a175ed.tar.xz go-tangerine-e38b227ce6400567f0f4e4ff9e1cce7f93a175ed.tar.zst go-tangerine-e38b227ce6400567f0f4e4ff9e1cce7f93a175ed.zip |
Ci race detector handle failing tests (#19143)
* swarm/storage: increase mget timeout in common_test.go
TestDbStoreCorrect_1k sometimes timed out with -race on Travis.
--- FAIL: TestDbStoreCorrect_1k (24.63s)
common_test.go:194: testStore failed: timed out after 10s
* swarm: remove unused vars from TestSnapshotSyncWithServer
nodeCount and chunkCount is returned from setupSim and those values
we use.
* swarm: move race/norace helpers from stream to testutil
As we will need to use the flag in other packages, too.
* swarm: refactor TestSwarmNetwork case
Extract long running test cases for better visibility.
* swarm/network: skip TestSyncingViaGlobalSync with -race
As panics on Travis.
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x7e351b]
* swarm: run TestSwarmNetwork with fewer nodes with -race
As otherwise we always get test failure with `network_test.go:374:
context deadline exceeded` even with raised `Timeout`.
* swarm/network: run TestDeliveryFromNodes with fewer nodes with -race
Test on Travis times out with 8 or more nodes if -race flag is present.
* swarm/network: smaller node count for discovery tests with -race
TestDiscoveryPersistenceSimulationSimAdapters failed on Travis with
`-race` flag present. The failure was due to extensive memory usage,
coming from the CGO runtime. Using a smaller node count resolves the
issue.
=== RUN TestDiscoveryPersistenceSimulationSimAdapter
==7227==ERROR: ThreadSanitizer failed to allocate 0x80000 (524288) bytes of clock allocator (error code: 12)
FATAL: ThreadSanitizer CHECK failed: ./gotsan.cc:6976 "((0 && "unable to mmap")) != (0)" (0x0, 0x0)
FAIL github.com/ethereum/go-ethereum/swarm/network/simulations/discovery 804.826s
* swarm/network: run TestFileRetrieval with fewer nodes with -race
Otherwise we get a failure due to extensive memory usage, as the CGO
runtime cannot allocate more bytes.
=== RUN TestFileRetrieval
==7366==ERROR: ThreadSanitizer failed to allocate 0x80000 (524288) bytes of clock allocator (error code: 12)
FATAL: ThreadSanitizer CHECK failed: ./gotsan.cc:6976 "((0 && "unable to mmap")) != (0)" (0x0, 0x0)
FAIL github.com/ethereum/go-ethereum/swarm/network/stream 155.165s
* swarm/network: run TestRetrieval with fewer nodes with -race
Otherwise we get a failure due to extensive memory usage, as the CGO
runtime cannot allocate more bytes ("ThreadSanitizer failed to
allocate").
* swarm/network: skip flaky TestGetSubscriptionsRPC on Travis w/ -race
Test fails a lot with something like:
streamer_test.go:1332: Real subscriptions and expected amount don't match; real: 0, expected: 20
* swarm/storage: skip TestDB_SubscribePull* tests on Travis w/ -race
Travis just hangs...
ok github.com/ethereum/go-ethereum/swarm/storage/feed/lookup 1.307s
keepalive
keepalive
keepalive
or panics after a while.
Without these tests the race detector job is now stable. Let's
invetigate these tests in a separate issue:
https://github.com/ethersphere/go-ethereum/issues/1245
Diffstat (limited to 'swarm/network/stream/snapshot_sync_test.go')
-rw-r--r-- | swarm/network/stream/snapshot_sync_test.go | 55 |
1 files changed, 16 insertions, 39 deletions
diff --git a/swarm/network/stream/snapshot_sync_test.go b/swarm/network/stream/snapshot_sync_test.go index b45d0aed5..330f39712 100644 --- a/swarm/network/stream/snapshot_sync_test.go +++ b/swarm/network/stream/snapshot_sync_test.go @@ -19,7 +19,6 @@ import ( "context" "errors" "fmt" - "io/ioutil" "os" "runtime" "sync" @@ -42,8 +41,6 @@ import ( "github.com/ethereum/go-ethereum/swarm/testutil" ) -const MaxTimeout = 600 - type synctestConfig struct { addrs [][]byte hashes []storage.Address @@ -80,37 +77,31 @@ func TestSyncingViaGlobalSync(t *testing.T) { if runtime.GOOS == "darwin" && os.Getenv("TRAVIS") == "true" { t.Skip("Flaky on mac on travis") } + + if testutil.RaceEnabled { + t.Skip("Segfaults on Travis with -race") + } + //if nodes/chunks have been provided via commandline, //run the tests with these values if *nodes != 0 && *chunks != 0 { log.Info(fmt.Sprintf("Running test with %d chunks and %d nodes...", *chunks, *nodes)) testSyncingViaGlobalSync(t, *chunks, *nodes) } else { - var nodeCnt []int - var chnkCnt []int + chunkCounts := []int{4, 32} + nodeCounts := []int{32, 16} + //if the `longrunning` flag has been provided //run more test combinations if *longrunning { - chnkCnt = []int{1, 8, 32, 256, 1024} - nodeCnt = []int{16, 32, 64, 128, 256} - } else if raceTest { - // TestSyncingViaGlobalSync allocates a lot of memory - // with race detector. By reducing the number of chunks - // and nodes, memory consumption is lower and data races - // are still checked, while correctness of syncing is - // tested with more chunks and nodes in regular (!race) - // tests. - chnkCnt = []int{4} - nodeCnt = []int{16} - } else { - //default test - chnkCnt = []int{4, 32} - nodeCnt = []int{32, 16} + chunkCounts = []int{1, 8, 32, 256, 1024} + nodeCounts = []int{16, 32, 64, 128, 256} } - for _, chnk := range chnkCnt { - for _, n := range nodeCnt { - log.Info(fmt.Sprintf("Long running test with %d chunks and %d nodes...", chnk, n)) - testSyncingViaGlobalSync(t, chnk, n) + + for _, chunkCount := range chunkCounts { + for _, n := range nodeCounts { + log.Info(fmt.Sprintf("Long running test with %d chunks and %d nodes...", chunkCount, n)) + testSyncingViaGlobalSync(t, chunkCount, n) } } } @@ -123,21 +114,7 @@ var simServiceMap = map[string]simulation.ServiceFunc{ return nil, nil, err } - var dir string - var store *state.DBStore - if raceTest { - // Use on-disk DBStore to reduce memory consumption in race tests. - dir, err = ioutil.TempDir("", "swarm-stream-") - if err != nil { - return nil, nil, err - } - store, err = state.NewDBStore(dir) - if err != nil { - return nil, nil, err - } - } else { - store = state.NewInmemoryStore() - } + store := state.NewInmemoryStore() r := NewRegistry(addr.ID(), delivery, netStore, store, &RegistryOptions{ Retrieval: RetrievalDisabled, |