update upgrade harness to work with the new changes

This commit is contained in:
Callum Waters
2022-07-25 12:04:38 +02:00
parent b45717e2ba
commit 7391b6c8f1
6 changed files with 31 additions and 12 deletions

View File

@@ -6,7 +6,7 @@ ifneq (,$(VERSION))
docker build --tag tendermint/e2e-node:$(VERSION) -f docker/Dockerfile ../..
git worktree remove e2e-node
else
docker build --tag tendermint/e2e-node:$(shell git symbolic-ref -q --short HEAD) -f docker/Dockerfile ../..
docker build --tag tendermint/e2e-node -f docker/Dockerfile ../..
endif
node:

View File

@@ -0,0 +1,6 @@
version="v0.36.x"
[node.validator01]
[node.validator02]
[node.validator03]
[node.validator04]

View File

@@ -67,4 +67,3 @@ services:
}
return buf.Bytes(), nil
}

View File

@@ -27,10 +27,10 @@ const (
proxyPortFirst uint32 = 5701
networkIPv4 = "10.186.73.0/24"
networkIPv6 = "fd80:b10c::/48"
defaultVersion = "master"
defaultVersion = "latest"
)
var IsVersionValid = regexp.MustCompile(`master|v0.3[4-6]+.([0-9]+|x)`)
var IsVersionValid = regexp.MustCompile(`latest|master|v0.3[4-6]+.([0-9]+|x)`)
type Mode string
type Protocol string

View File

@@ -384,7 +384,7 @@ Does not run any perbutations.
Use: "upgrade",
Short: "Runs a testnet through an upgrade process from the specified version to the current version",
RunE: func(cmd *cobra.Command, args []string) error {
return Upgrade(cmd.Context(), cli.testnet, logger)
return Upgrade(cmd.Context(), logger, cli.testnet, cli.infra)
},
})

View File

@@ -4,10 +4,13 @@ import (
"context"
"fmt"
"math/rand"
"path/filepath"
"strings"
"github.com/tendermint/tendermint/internal/libs/confix"
"github.com/tendermint/tendermint/libs/log"
e2e "github.com/tendermint/tendermint/test/e2e/pkg"
"github.com/tendermint/tendermint/test/e2e/pkg/infra"
"github.com/tendermint/tendermint/scripts/keymigrate"
"github.com/tendermint/tendermint/scripts/scmigrate"
@@ -15,12 +18,12 @@ import (
"github.com/tendermint/tendermint/version"
)
func Upgrade(ctx context.Context, testnet *e2e.Testnet, logger log.Logger) error {
if err := Cleanup(logger, testnet); err != nil {
func Upgrade(ctx context.Context, logger log.Logger, testnet *e2e.Testnet, ti infra.TestnetInfra) error {
if err := Cleanup(ctx, logger, testnet.Dir, ti); err != nil {
return err
}
if err := Setup(logger, testnet); err != nil {
if err := Setup(ctx, logger, testnet, ti); err != nil {
return err
}
@@ -34,7 +37,7 @@ func Upgrade(ctx context.Context, testnet *e2e.Testnet, logger log.Logger) error
chLoadResult <- Load(lctx, logger, r, testnet)
}()
if err := Start(ctx, logger, testnet); err != nil {
if err := Start(ctx, logger, testnet, ti); err != nil {
return err
}
@@ -48,15 +51,18 @@ func Upgrade(ctx context.Context, testnet *e2e.Testnet, logger log.Logger) error
}
// stop the network
if err := execCompose(testnet.Dir, "down"); err != nil {
if err := ti.Stop(ctx); err != nil {
return err
}
logger.Info("Migrating network...")
// migrate to the current version
if err := Migrate(ctx, logger, testnet); err != nil {
return err
}
if err := Start(ctx, logger, testnet); err != nil {
if err := Start(ctx, logger, testnet, ti); err != nil {
return err
}
@@ -64,6 +70,7 @@ func Upgrade(ctx context.Context, testnet *e2e.Testnet, logger log.Logger) error
}
func Migrate(ctx context.Context, logger log.Logger, testnet *e2e.Testnet) error {
stores := []string{
"tx_index",
"light",
@@ -72,6 +79,13 @@ func Migrate(ctx context.Context, logger log.Logger, testnet *e2e.Testnet) error
"evidence",
}
for _, node := range testnet.Nodes {
// update the config file
configFilePath := filepath.Join(node.Dir(), "config")
if err := confix.Upgrade(ctx, configFilePath, configFilePath); err != nil {
return fmt.Errorf("Upgrading config: %w", err)
}
// perform a database migration if going from v0.34 to a version gte v0.35
if strings.HasPrefix(testnet.Version, "v0.34") && version.TMVersion > "v0.35" {
for _, store := range stores {
db, err := node.DB(store)
@@ -79,7 +93,7 @@ func Migrate(ctx context.Context, logger log.Logger, testnet *e2e.Testnet) error
return fmt.Errorf("migrating db: %w", err)
}
if err = keymigrate.Migrate(ctx, db); err != nil {
if err = keymigrate.Migrate(ctx, store, db); err != nil {
return fmt.Errorf("running migration for context %q: %w",
store, err)
}