mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-11 07:20:19 +00:00
* add multiversion flag to generator
* clarify flag comment
(cherry picked from commit ac48630fdb)
Co-authored-by: William Banfield <4561443+williambanfield@users.noreply.github.com>
This commit is contained in:
2
.github/workflows/e2e-manual.yml
vendored
2
.github/workflows/e2e-manual.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
- name: Generate testnets
|
||||
working-directory: test/e2e
|
||||
# When changing -g, also change the matrix groups above
|
||||
run: ./build/generator -g 4 -d networks/nightly/
|
||||
run: ./generator-multiversion.sh -g 4 -d networks/nightly/
|
||||
|
||||
- name: Run ${{ matrix.p2p }} p2p testnets
|
||||
working-directory: test/e2e
|
||||
|
||||
@@ -22,7 +22,9 @@ var (
|
||||
},
|
||||
"validators": {"genesis", "initchain"},
|
||||
}
|
||||
|
||||
nodeVersions = weightedChoice{
|
||||
"": 2,
|
||||
}
|
||||
// The following specify randomly chosen values for testnet nodes.
|
||||
nodeDatabases = uniformChoice{"goleveldb", "cleveldb", "rocksdb", "boltdb", "badgerdb"}
|
||||
ipv6 = uniformChoice{false, true}
|
||||
@@ -52,7 +54,10 @@ var (
|
||||
)
|
||||
|
||||
// Generate generates random testnets using the given RNG.
|
||||
func Generate(r *rand.Rand) ([]e2e.Manifest, error) {
|
||||
func Generate(r *rand.Rand, multiversion string) ([]e2e.Manifest, error) {
|
||||
if multiversion != "" {
|
||||
nodeVersions[multiversion] = 1
|
||||
}
|
||||
manifests := []e2e.Manifest{}
|
||||
for _, opt := range combinations(testnetCombinations) {
|
||||
manifest, err := generateTestnet(r, opt)
|
||||
@@ -206,6 +211,7 @@ func generateNode(
|
||||
r *rand.Rand, mode e2e.Mode, startAt int64, initialHeight int64, forceArchive bool,
|
||||
) *e2e.ManifestNode {
|
||||
node := e2e.ManifestNode{
|
||||
Version: nodeVersions.Choose(r).(string),
|
||||
Mode: string(mode),
|
||||
StartAt: startAt,
|
||||
Database: nodeDatabases.Choose(r).(string),
|
||||
|
||||
@@ -44,26 +44,32 @@ func NewCLI() *CLI {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return cli.generate(dir, groups)
|
||||
multiversion, err := cmd.Flags().GetString("multi-version")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return cli.generate(dir, groups, multiversion)
|
||||
},
|
||||
}
|
||||
|
||||
cli.root.PersistentFlags().StringP("dir", "d", "", "Output directory for manifests")
|
||||
_ = cli.root.MarkPersistentFlagRequired("dir")
|
||||
cli.root.PersistentFlags().StringP("multi-version", "m", "", "Include multi-version testing."+
|
||||
"If multi-version is not specified, then only the current Tendermint version will be used in generated testnets.")
|
||||
cli.root.PersistentFlags().IntP("groups", "g", 0, "Number of groups")
|
||||
|
||||
return cli
|
||||
}
|
||||
|
||||
// generate generates manifests in a directory.
|
||||
func (cli *CLI) generate(dir string, groups int) error {
|
||||
func (cli *CLI) generate(dir string, groups int, multiversion string) error {
|
||||
err := os.MkdirAll(dir, 0o755)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
//nolint:gosec // G404: Use of weak random number generator (math/rand instead of crypto/rand)
|
||||
manifests, err := Generate(rand.New(rand.NewSource(randomSeed)))
|
||||
manifests, err := Generate(rand.New(rand.NewSource(randomSeed)), multiversion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user