From d9013d84c3e2ca721474515eaad5d8c846c173ba Mon Sep 17 00:00:00 2001 From: Ferenc Szabo Date: Mon, 18 Feb 2019 11:59:22 +0100 Subject: [PATCH] swarm: refactor TestSwarmNetwork case Extract long running test cases for better visibility. --- swarm/network_test.go | 105 ++++++++++++++++++++++-------------------- 1 file changed, 54 insertions(+), 51 deletions(-) diff --git a/swarm/network_test.go b/swarm/network_test.go index 71d4b8f16a..d1843e0d87 100644 --- a/swarm/network_test.go +++ b/swarm/network_test.go @@ -36,7 +36,7 @@ import ( "github.com/ethereum/go-ethereum/swarm/api" "github.com/ethereum/go-ethereum/swarm/network/simulation" "github.com/ethereum/go-ethereum/swarm/storage" - colorable "github.com/mattn/go-colorable" + "github.com/mattn/go-colorable" ) var ( @@ -57,12 +57,7 @@ func init() { // static and dynamic Swarm nodes in network simulation, by // uploading files to every node and retrieving them. func TestSwarmNetwork(t *testing.T) { - for _, tc := range []struct { - name string - steps []testSwarmNetworkStep - options *testSwarmNetworkOptions - disabled bool - }{ + var tests = []testSwarmNetworkCase{ { name: "10_nodes", steps: []testSwarmNetworkStep{ @@ -86,6 +81,58 @@ func TestSwarmNetwork(t *testing.T) { SkipCheck: true, }, }, + { + name: "dec_inc_node_count", + steps: []testSwarmNetworkStep{ + { + nodeCount: 3, + }, + { + nodeCount: 1, + }, + { + nodeCount: 5, + }, + }, + options: &testSwarmNetworkOptions{ + Timeout: 90 * time.Second, + }, + }, + } + + if *longrunning { + tests = append(tests, longRunningCases()...) + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + testSwarmNetwork(t, tc.options, tc.steps...) + }) + } +} + +type testSwarmNetworkCase struct { + name string + steps []testSwarmNetworkStep + options *testSwarmNetworkOptions +} + +// testSwarmNetworkStep is the configuration +// for the state of the simulation network. +type testSwarmNetworkStep struct { + // number of swarm nodes that must be in the Up state + nodeCount int +} + +// testSwarmNetworkOptions contains optional parameters for running +// testSwarmNetwork. +type testSwarmNetworkOptions struct { + Timeout time.Duration + SkipCheck bool +} + +func longRunningCases() []testSwarmNetworkCase { + return []testSwarmNetworkCase{ { name: "50_nodes", steps: []testSwarmNetworkStep{ @@ -96,7 +143,6 @@ func TestSwarmNetwork(t *testing.T) { options: &testSwarmNetworkOptions{ Timeout: 3 * time.Minute, }, - disabled: !*longrunning, }, { name: "50_nodes_skip_check", @@ -109,7 +155,6 @@ func TestSwarmNetwork(t *testing.T) { Timeout: 3 * time.Minute, SkipCheck: true, }, - disabled: !*longrunning, }, { name: "inc_node_count", @@ -127,7 +172,6 @@ func TestSwarmNetwork(t *testing.T) { options: &testSwarmNetworkOptions{ Timeout: 90 * time.Second, }, - disabled: !*longrunning, }, { name: "dec_node_count", @@ -145,24 +189,6 @@ func TestSwarmNetwork(t *testing.T) { options: &testSwarmNetworkOptions{ Timeout: 90 * time.Second, }, - disabled: !*longrunning, - }, - { - name: "dec_inc_node_count", - steps: []testSwarmNetworkStep{ - { - nodeCount: 3, - }, - { - nodeCount: 1, - }, - { - nodeCount: 5, - }, - }, - options: &testSwarmNetworkOptions{ - Timeout: 90 * time.Second, - }, }, { name: "inc_dec_node_count", @@ -186,7 +212,6 @@ func TestSwarmNetwork(t *testing.T) { options: &testSwarmNetworkOptions{ Timeout: 5 * time.Minute, }, - disabled: !*longrunning, }, { name: "inc_dec_node_count_skip_check", @@ -211,25 +236,10 @@ func TestSwarmNetwork(t *testing.T) { Timeout: 5 * time.Minute, SkipCheck: true, }, - disabled: !*longrunning, }, - } { - if tc.disabled { - continue - } - t.Run(tc.name, func(t *testing.T) { - testSwarmNetwork(t, tc.options, tc.steps...) - }) } } -// testSwarmNetworkStep is the configuration -// for the state of the simulation network. -type testSwarmNetworkStep struct { - // number of swarm nodes that must be in the Up state - nodeCount int -} - // file represents the file uploaded on a particular node. type file struct { addr storage.Address @@ -244,13 +254,6 @@ type check struct { nodeID enode.ID } -// testSwarmNetworkOptions contains optional parameters for running -// testSwarmNetwork. -type testSwarmNetworkOptions struct { - Timeout time.Duration - SkipCheck bool -} - // testSwarmNetwork is a helper function used for testing different // static and dynamic Swarm network simulations. // It is responsible for: