Skip to content

Commit 196fd09

Browse files
committed
fixup: Respond to review feedback
1 parent 63b7047 commit 196fd09

File tree

9 files changed

+67
-51
lines changed

9 files changed

+67
-51
lines changed

tests/fixture/e2e/env.go

+13-11
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,11 @@ func NewTestEnvironment(tc tests.TestContext, flagVars *FlagVars, desiredNetwork
8484

8585
var network *tmpnet.Network
8686

87+
networkCmd, err := flagVars.NetworkCmd()
88+
require.NoError(err)
89+
8790
// Consider monitoring flags for any command but stop
88-
if !flagVars.StopNetwork() {
91+
if networkCmd != StopNetworkCmd {
8992
if flagVars.StartCollectors() {
9093
require.NoError(tmpnet.StartCollectors(tc.DefaultContext(), tc.Log()))
9194
}
@@ -103,8 +106,8 @@ func NewTestEnvironment(tc tests.TestContext, flagVars *FlagVars, desiredNetwork
103106
}
104107
}
105108

106-
// Need to load the network if it is being stopped or reused
107-
if flagVars.StopNetwork() || flagVars.ReuseNetwork() {
109+
// Attempt to load the network if it may already be running
110+
if networkCmd == StopNetworkCmd || networkCmd == ReuseNetworkCmd || networkCmd == RestartNetworkCmd {
108111
networkDir := flagVars.NetworkDir()
109112
var networkSymlink string // If populated, prompts removal of the referenced symlink if --stop-network is specified
110113
if len(networkDir) == 0 {
@@ -130,7 +133,7 @@ func NewTestEnvironment(tc tests.TestContext, flagVars *FlagVars, desiredNetwork
130133
)
131134
}
132135

133-
if flagVars.StopNetwork() {
136+
if networkCmd == StopNetworkCmd {
134137
if len(networkSymlink) > 0 {
135138
// Remove the symlink to avoid attempts to reuse the stopped network
136139
tc.Log().Info("removing symlink",
@@ -147,8 +150,9 @@ func NewTestEnvironment(tc tests.TestContext, flagVars *FlagVars, desiredNetwork
147150
tc.Log().Warn("no network to stop")
148151
}
149152
os.Exit(0)
150-
} else if network != nil && flagVars.RestartNetwork() {
151-
// A network is only restarted if it is already running and stop was not requested
153+
}
154+
155+
if network != nil && networkCmd == RestartNetworkCmd {
152156
require.NoError(network.Restart(tc.DefaultContext(), tc.Log()))
153157
}
154158
}
@@ -168,8 +172,7 @@ func NewTestEnvironment(tc tests.TestContext, flagVars *FlagVars, desiredNetwork
168172
network,
169173
flagVars.RootNetworkDir(),
170174
flagVars.NetworkShutdownDelay(),
171-
flagVars.StartNetwork(),
172-
flagVars.ReuseNetwork(),
175+
networkCmd,
173176
)
174177
}
175178

@@ -178,7 +181,7 @@ func NewTestEnvironment(tc tests.TestContext, flagVars *FlagVars, desiredNetwork
178181
require.NoError(tmpnet.WaitForPromtailReadiness(tc.DefaultContext(), tc.Log()))
179182
}
180183

181-
if flagVars.StartNetwork() {
184+
if networkCmd == StartNetworkCmd {
182185
os.Exit(0)
183186
}
184187

@@ -241,7 +244,6 @@ func (te *TestEnvironment) StartPrivateNetwork(network *tmpnet.Network) {
241244
network,
242245
te.RootNetworkDir,
243246
te.PrivateNetworkShutdownDelay,
244-
false, /* skipShutdown */
245-
false, /* reuseNetwork */
247+
EmptyNetworkCmd,
246248
)
247249
}

tests/fixture/e2e/flags.go

+40-19
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package e2e
55

66
import (
7+
"errors"
78
"flag"
89
"fmt"
910
"os"
@@ -15,6 +16,16 @@ import (
1516
"github.com/ava-labs/avalanchego/tests/fixture/tmpnet/flags"
1617
)
1718

19+
type NetworkCmd int
20+
21+
const (
22+
EmptyNetworkCmd NetworkCmd = iota
23+
StartNetworkCmd
24+
StopNetworkCmd
25+
RestartNetworkCmd
26+
ReuseNetworkCmd
27+
)
28+
1829
type FlagVars struct {
1930
startNetwork bool
2031
startNetworkVars *flags.StartNetworkVars
@@ -24,14 +35,36 @@ type FlagVars struct {
2435

2536
networkDir string
2637
reuseNetwork bool
27-
restartNetwork bool
2838
stopNetwork bool
39+
restartNetwork bool
2940

3041
activateFortuna bool
3142
}
3243

33-
func (v *FlagVars) StartNetwork() bool {
34-
return v.startNetwork
44+
func (v *FlagVars) NetworkCmd() (NetworkCmd, error) {
45+
cmd := EmptyNetworkCmd
46+
count := 0
47+
if v.startNetwork {
48+
cmd = StartNetworkCmd
49+
count++
50+
}
51+
if v.stopNetwork {
52+
cmd = StopNetworkCmd
53+
count++
54+
}
55+
if v.restartNetwork {
56+
cmd = RestartNetworkCmd
57+
count++
58+
}
59+
if v.reuseNetwork {
60+
cmd = ReuseNetworkCmd
61+
count++
62+
}
63+
if count > 1 {
64+
return EmptyNetworkCmd, errors.New("only one of --start-network, --stop-network, --restart-network, or --reuse-network can be specified")
65+
}
66+
67+
return cmd, nil
3568
}
3669

3770
func (v *FlagVars) RootNetworkDir() string {
@@ -68,18 +101,6 @@ func (v *FlagVars) NetworkDir() string {
68101
return os.Getenv(tmpnet.NetworkDirEnvName)
69102
}
70103

71-
func (v *FlagVars) ReuseNetwork() bool {
72-
return v.reuseNetwork
73-
}
74-
75-
func (v *FlagVars) RestartNetwork() bool {
76-
return v.restartNetwork
77-
}
78-
79-
func (v *FlagVars) StopNetwork() bool {
80-
return v.stopNetwork
81-
}
82-
83104
func (v *FlagVars) NetworkShutdownDelay() time.Duration {
84105
if v.startCollectors {
85106
// Only return a non-zero value if we want to ensure the collectors have
@@ -104,7 +125,7 @@ func RegisterFlagsWithDefaultOwner(defaultOwner string) *FlagVars {
104125
&vars.startNetwork,
105126
"start-network",
106127
false,
107-
"[optional] start a new network and exit without executing any tests. The new network cannot be reused with --reuse-network. Ignored if either --reuse-network or --stop-network is provided.",
128+
"[optional] start a new network and exit without executing any tests. The new network cannot be reused with --reuse-network.",
108129
)
109130

110131
vars.startNetworkVars = flags.NewStartNetworkFlagVars(defaultOwner)
@@ -117,22 +138,22 @@ func RegisterFlagsWithDefaultOwner(defaultOwner string) *FlagVars {
117138
flag.StringVar(
118139
&vars.networkDir,
119140
"network-dir",
120-
"",
141+
tmpnet.GetEnvWithDefault(tmpnet.NetworkDirEnvName, ""),
121142
fmt.Sprintf("[optional] the dir containing the configuration of an existing network. Will only be used if --reuse-network, --restart-network or --stop-network are specified. Also possible to configure via the %s env variable.", tmpnet.NetworkDirEnvName),
122143
)
123144

124145
flag.BoolVar(
125146
&vars.reuseNetwork,
126147
"reuse-network",
127148
false,
128-
"[optional] reuse an existing network previously started with --reuse-network. If a network is not already running, create a new one and leave it running for subsequent usage. Ignored if --stop-network is provided.",
149+
"[optional] run tests against an existing network previously started with --reuse-network. If a network is not already running, create a new one and leave it running for subsequent usage.",
129150
)
130151

131152
flag.BoolVar(
132153
&vars.restartNetwork,
133154
"restart-network",
134155
false,
135-
"[optional] restart an existing network previously started with --reuse-network. Useful for ensuring a network is running with the current state of binaries on disk. Ignored if a network is not already running or --stop-network is provided.",
156+
"[optional] like --reuse-network except an already running network is restarted before running tests to ensure the network represents the current state of binaries on disk.",
136157
)
137158

138159
flag.BoolVar(

tests/fixture/e2e/helpers.go

+5-6
Original file line numberDiff line numberDiff line change
@@ -270,8 +270,7 @@ func StartNetwork(
270270
network *tmpnet.Network,
271271
rootNetworkDir string,
272272
shutdownDelay time.Duration,
273-
skipShutdown bool,
274-
reuseNetwork bool,
273+
networkCmd NetworkCmd,
275274
) {
276275
require := require.New(tc)
277276

@@ -296,7 +295,7 @@ func StartNetwork(
296295
symlinkPath, err := tmpnet.GetReusableNetworkPathForOwner(network.Owner)
297296
require.NoError(err)
298297

299-
if reuseNetwork {
298+
if networkCmd == ReuseNetworkCmd || networkCmd == RestartNetworkCmd {
300299
// Symlink the path of the created network to the default owner path (e.g. latest_avalanchego-e2e)
301300
// to enable easy discovery for reuse.
302301
require.NoError(os.Symlink(network.Dir, symlinkPath))
@@ -307,16 +306,16 @@ func StartNetwork(
307306
}
308307

309308
tc.DeferCleanup(func() {
310-
if reuseNetwork {
309+
if networkCmd == ReuseNetworkCmd || networkCmd == RestartNetworkCmd {
311310
tc.Log().Info("skipping shutdown for network intended for reuse",
312311
zap.String("networkDir", network.Dir),
313312
zap.String("symlinkPath", symlinkPath),
314313
)
315314
return
316315
}
317316

318-
if skipShutdown {
319-
tc.Log().Info("skipping shutdown for network",
317+
if networkCmd == StartNetworkCmd {
318+
tc.Log().Info("skipping shutdown for --start-network",
320319
zap.String("networkDir", network.Dir),
321320
)
322321
return

tests/fixture/tmpnet/flags/common.go

+4-9
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,7 @@
33

44
package flags
55

6-
// The following function signatures are common across flag and
7-
// spf13/pflag. They can be used to define a single registration method that
8-
// supports both flag libraries.
9-
10-
type stringVarFunc func(p *string, name string, value string, usage string)
11-
12-
type boolVarFunc func(p *bool, name string, value bool, usage string)
13-
14-
type intVarFunc func(p *int, name string, value int, usage string)
6+
// The following function signature is common across flag and
7+
// spf13/pflag. It can be used to define a single registration method
8+
// that supports both flag libraries.
9+
type varFunc[T any] func(p *T, name string, value T, usage string)

tests/fixture/tmpnet/flags/process_runtime.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (v *processRuntimeVars) registerWithFlagSet(flagSet *pflag.FlagSet) {
3535
v.register(flagSet.StringVar, flagSet.BoolVar)
3636
}
3737

38-
func (v *processRuntimeVars) register(stringVar stringVarFunc, boolVar boolVarFunc) {
38+
func (v *processRuntimeVars) register(stringVar varFunc[string], boolVar varFunc[bool]) {
3939
stringVar(
4040
&v.config.AvalancheGoPath,
4141
avalanchegoPathFlag,

tests/fixture/tmpnet/flags/runtime.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func NewRuntimeConfigFlagSetVars(flagSet *pflag.FlagSet) *RuntimeConfigVars {
3737
return v
3838
}
3939

40-
func (v *RuntimeConfigVars) register(stringVar stringVarFunc) {
40+
func (v *RuntimeConfigVars) register(stringVar varFunc[string]) {
4141
stringVar(
4242
&v.runtime,
4343
"runtime",

tests/fixture/tmpnet/flags/start_network.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func NewStartNetworkFlagSetVars(flagSet *pflag.FlagSet, defaultNetworkOwner stri
3838
return v
3939
}
4040

41-
func (v *StartNetworkVars) register(stringVar stringVarFunc, intVar intVarFunc) {
41+
func (v *StartNetworkVars) register(stringVar varFunc[string], intVar varFunc[int]) {
4242
stringVar(
4343
&v.RootNetworkDir,
4444
"root-network-dir",

tests/fixture/tmpnet/tmpnetctl/main.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func main() {
109109
return nil
110110
},
111111
}
112-
startNetworkVars = flags.NewStartNetworkFlagSetVars(startNetworkCmd.PersistentFlags(), "")
112+
startNetworkVars = flags.NewStartNetworkFlagSetVars(startNetworkCmd.PersistentFlags(), "" /* defaultNetworkOwner */)
113113
rootCmd.AddCommand(startNetworkCmd)
114114

115115
stopNetworkCmd := &cobra.Command{

tests/upgrade/upgrade_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ var _ = ginkgo.Describe("[Upgrade]", func() {
8585
network,
8686
"", /* rootNetworkDir */
8787
shutdownDelay,
88-
false, /* skipShutdown */
89-
false, /* reuseNetwork */
88+
e2e.EmptyNetworkCmd,
9089
)
9190

9291
tc.By(fmt.Sprintf("restarting all nodes with %q binary", avalancheGoExecPathToUpgradeTo))

0 commit comments

Comments
 (0)