mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-06 13:26:23 +00:00
update upgrade harness to work with the new changes
This commit is contained in:
@@ -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:
|
||||
|
||||
6
test/e2e/networks/upgrade.toml
Normal file
6
test/e2e/networks/upgrade.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
version="v0.36.x"
|
||||
|
||||
[node.validator01]
|
||||
[node.validator02]
|
||||
[node.validator03]
|
||||
[node.validator04]
|
||||
@@ -67,4 +67,3 @@ services:
|
||||
}
|
||||
return buf.Bytes(), nil
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user