Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: e2e upgrade btc headers #4

Merged
merged 99 commits into from
Aug 9, 2024
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
6165490
chore: add e2e software upgrade
RafilxTenfen Jul 29, 2024
61cfcaa
chore: only add upgrade if build with e2e tag
RafilxTenfen Jul 29, 2024
c36b17d
feat: add launch upgrade
RafilxTenfen Jul 30, 2024
3a40a02
chore: move name to launch signet
RafilxTenfen Jul 30, 2024
5b01140
fix: import cycle
RafilxTenfen Jul 30, 2024
85e0275
chore: moved pkg name to signerlaunch
RafilxTenfen Jul 30, 2024
c27b89e
fix: lint, panic if propLaunch fails
RafilxTenfen Jul 30, 2024
02a4b51
fixme: failing upgrade due to btc headers json not found
RafilxTenfen Jul 30, 2024
4165173
chore: update to use v09 before upgrade
RafilxTenfen Jul 30, 2024
ec9e59e
chore: removed fetch origin
RafilxTenfen Jul 30, 2024
6785106
fix: fetch all
RafilxTenfen Jul 30, 2024
d1775a9
chore: add identifier name to networks
RafilxTenfen Jul 30, 2024
34252d0
Merge branch 'rafilx/e2e-upgrade' of github.com:babylonlabs-io/babylo…
RafilxTenfen Jul 30, 2024
3d58d6d
chore: moved new btc headers to str instead of json
RafilxTenfen Jul 30, 2024
ef16043
Merge branch 'dev' of github.com:babylonlabs-io/babylon into rafilx/e…
RafilxTenfen Jul 30, 2024
6f92d84
chore: update vanilla file name and check the values are equal in btc…
RafilxTenfen Jul 30, 2024
4e115b4
fix: comparison with inserted values
RafilxTenfen Jul 30, 2024
a8cbda5
fix: compare the response of btc headers
RafilxTenfen Jul 30, 2024
7fdc39e
fix: reverse from chain stored
RafilxTenfen Jul 30, 2024
f81da6a
fix: reverse index read from chain stored
RafilxTenfen Jul 30, 2024
a56f499
fix: run migrations before prop updates
RafilxTenfen Aug 1, 2024
801ac1f
chore: rollback licence babylon labs
RafilxTenfen Aug 1, 2024
3c9ae61
fix: make sure the headers form a correct chain of btc blocks in the …
RafilxTenfen Aug 1, 2024
4cae2df
chore: add option to start with specific headers in e2e test init cha…
RafilxTenfen Aug 2, 2024
e10c032
chore: update to use only btc header bytes to upgrade
RafilxTenfen Aug 2, 2024
8dd3deb
chore: increase timeout of e2e test to 30m
RafilxTenfen Aug 2, 2024
199d0dc
chore: add check for cases where btc headers are not needed to specify
RafilxTenfen Aug 2, 2024
0b50fe6
fix: use identifier for networks
RafilxTenfen Aug 2, 2024
2500087
chore: free disk space
RafilxTenfen Aug 2, 2024
d1ef810
chore: turn back to e2e testing
RafilxTenfen Aug 2, 2024
73c7585
chore: add free disk space as need
RafilxTenfen Aug 2, 2024
6083067
chore: remove free disk space
RafilxTenfen Aug 2, 2024
6c3a898
chore: insert headers without trigger hook and events
RafilxTenfen Aug 5, 2024
b8a4ea5
chore: remove command that was removing docker images before build
RafilxTenfen Aug 5, 2024
853952a
chore: free disk sapce before run
RafilxTenfen Aug 5, 2024
7b5908f
chore: remove free disk space
RafilxTenfen Aug 5, 2024
bd9263d
chore: wait for clear resources before remove all the directories
RafilxTenfen Aug 5, 2024
c3de831
chore: refactory insert of headers to avoid bool parameter
RafilxTenfen Aug 5, 2024
3c5e4f3
Merge branch 'dev' of github.com:babylonlabs-io/babylon into rafilx/e…
RafilxTenfen Aug 6, 2024
89da374
chore: add diskfree
RafilxTenfen Aug 6, 2024
37cd9b6
Merge branch 'dev' of github.com:babylonlabs-io/babylon into rafilx/e…
RafilxTenfen Aug 6, 2024
42a5424
chore: remove free disk space
RafilxTenfen Aug 6, 2024
07398de
chore: add free disk space
RafilxTenfen Aug 6, 2024
5bc73d2
chore: add free disk
RafilxTenfen Aug 6, 2024
e090d22
fix: 60m test-e2e
RafilxTenfen Aug 7, 2024
be7fddc
chore: disable docker pipeline
RafilxTenfen Aug 7, 2024
4185fcc
chore: remove template
RafilxTenfen Aug 7, 2024
71b4a96
chore: add needs to lint as well
RafilxTenfen Aug 7, 2024
9e7893e
chore: remove free-disk
RafilxTenfen Aug 7, 2024
7c2de61
fix: make mocks lint
RafilxTenfen Aug 7, 2024
3407f71
chore: add comment for needs
RafilxTenfen Aug 7, 2024
ea74d03
chore: reduce the dockerfile size by only fetch the needed tag
RafilxTenfen Aug 7, 2024
30b9fd4
fix: fetch tag of docker
RafilxTenfen Aug 7, 2024
f2a641b
fix: docker build tag
RafilxTenfen Aug 7, 2024
36546a9
chore: add freespace :/
RafilxTenfen Aug 7, 2024
43efd95
chore: reduce dowload of go mods
RafilxTenfen Aug 7, 2024
a647f8b
chore: simplify identifier name
RafilxTenfen Aug 7, 2024
bf79895
chore: inital parallel
RafilxTenfen Aug 7, 2024
6dfb5d3
chore: disk space free
RafilxTenfen Aug 7, 2024
4f056d3
chore: avoid template and reuse dockers
RafilxTenfen Aug 7, 2024
d501d5a
fix: add concurrency to stop older actions run
RafilxTenfen Aug 7, 2024
7eea9bc
fix: add docker-login
RafilxTenfen Aug 7, 2024
c9f9fe9
fix: add docker-login to run
RafilxTenfen Aug 7, 2024
6add643
Merge branch 'rafilx/e2e-improve' of github.com:babylonlabs-io/babylo…
RafilxTenfen Aug 7, 2024
d920983
chore: use identifier in container naming
RafilxTenfen Aug 7, 2024
5bbdd60
tryfix: build and run e2e
RafilxTenfen Aug 7, 2024
5a034d2
chore: add artifacts to run TestBTCTimestampingTestSuite separate
RafilxTenfen Aug 8, 2024
bbcfebf
chore: add need for unit test
RafilxTenfen Aug 8, 2024
b4c03b1
tryfix: add e2e-run-upgrade-vanilla
RafilxTenfen Aug 8, 2024
3e7695d
tryfix: docker load to /tmp
RafilxTenfen Aug 8, 2024
b2207a5
chore: add check if artifact exists
RafilxTenfen Aug 8, 2024
d4c4122
fix: e2e init chain
RafilxTenfen Aug 8, 2024
29dadd7
feat: add run of test-e2e-cache-btc-timestamping-phase-2-hermes
RafilxTenfen Aug 8, 2024
1d49c9a
chore: add run for e2e btc staking
RafilxTenfen Aug 8, 2024
fa287f2
chore: update go cache name
RafilxTenfen Aug 8, 2024
7fcfcbf
chore: remove upgrade e2e signet launch
RafilxTenfen Aug 8, 2024
1a54e90
chore: remove sudo from make test-e2e-cache-btc-timestamping
RafilxTenfen Aug 8, 2024
36d6584
fix: remove sudo to use cache from golang
RafilxTenfen Aug 8, 2024
017aced
chore: remove require no error on clear resources due to unlinkat /tm…
RafilxTenfen Aug 8, 2024
314ea08
Merge branch 'rafilx/e2e-improve-parallel' of github.com:babylonlabs-…
RafilxTenfen Aug 8, 2024
59eb0d7
chore: add identifier for each run
RafilxTenfen Aug 8, 2024
f34b3d3
chore: remove unecessary multistage parts
RafilxTenfen Aug 8, 2024
1d56154
Merge branch 'rafilx/e2e-improve' of github.com:babylonlabs-io/babylo…
RafilxTenfen Aug 8, 2024
8e8db82
chore: add logs for it
RafilxTenfen Aug 8, 2024
cc9c786
chore: cap identifier size
RafilxTenfen Aug 8, 2024
0ccb5f5
chore: remove artifact checker
RafilxTenfen Aug 8, 2024
7ff9ab3
chore: add logs to debug e2e upgrade
RafilxTenfen Aug 8, 2024
9afdd95
fix: use babylond with e2e tag for all e2e testing
RafilxTenfen Aug 8, 2024
e104607
chore: add ci template back for all cases except e2e test
RafilxTenfen Aug 8, 2024
2f7e46c
chore: remove debug comments and rollback to use network id
RafilxTenfen Aug 8, 2024
7b850aa
chore: update directive of dockerfile
RafilxTenfen Aug 8, 2024
9b3da6c
Merge branch 'rafilx/e2e-improve-docker-cache' of github.com:babylonl…
RafilxTenfen Aug 8, 2024
a2a76fe
chore: remove debug logs
RafilxTenfen Aug 8, 2024
67683f3
Merge branch 'rafilx/e2e-improve-docker-cache' of github.com:babylonl…
RafilxTenfen Aug 8, 2024
e6cbb29
chore: add run of signet test
RafilxTenfen Aug 8, 2024
0a79c38
Merge branch 'dev' of github.com:babylonlabs-io/babylon into rafilx/e…
RafilxTenfen Aug 9, 2024
2987907
chore: removed e2e test run on publish ci
RafilxTenfen Aug 9, 2024
6a4027d
chore: rename headerZero to headerGenesis
RafilxTenfen Aug 9, 2024
628c1a6
chore: fix concurrent map write
RafilxTenfen Aug 9, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.

Parameters

Licensor: Babylon Labs, Ltd.
Licensor: BabylonLabs, Ltd.
RafilxTenfen marked this conversation as resolved.
Show resolved Hide resolved

Licensed Work: Babylon
The Licensed Work is (c) 2023 Babylon Labs, Ltd.
The Licensed Work is (c) 2023 BabylonLabs, Ltd.

Additional Use Grant: None.

Expand Down
7 changes: 5 additions & 2 deletions app/e2e_include_upgrades.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

package app

import "github.com/babylonlabs-io/babylon/app/upgrades/vanilla"
import (
"github.com/babylonlabs-io/babylon/app/upgrades/signetlaunch"
"github.com/babylonlabs-io/babylon/app/upgrades/vanilla"
)

func init() {
Upgrades = append(Upgrades, vanilla.Upgrade)
Upgrades = append(Upgrades, vanilla.Upgrade, signetlaunch.Upgrade)
}
4 changes: 4 additions & 0 deletions app/upgrades/signetlaunch/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Signet Launch

This folder contains a software upgrade for testing purposes.
DO NOT USE IN PRODUCTION!
90 changes: 90 additions & 0 deletions app/upgrades/signetlaunch/data_btc_headers.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package signetlaunch

const NewBtcHeadersStr = `{
"btc_headers": [
{
"header": "0000002095156a30ef4e6c9764c0ce83fac51a37365b2092bd39bdbfd038f5b98f00000077f14ee2b34b7dcbb7e3fc624184b919b74cd047837728593140ee21e59cc5bee4c9a766644d011e4e202800",
"hash": "0000010a767aed4930b7cf4aa0f90b4cc23d8e5375142c0a626aba09ff411f06",
"height": 206500,
"work": "180357618"
},
{
"header": "00000020061f41ff09ba6a620a2c1475538e3dc24c0bf9a04acfb73049ed7a760a0100004a7b4cec7be4c56a3dfdb833e94a5ff5ce4bdf5b5b0a599a39ef717fffe914b4ecd0a766644d011e822f6102",
"hash": "0000000a36d6c67675cbbbf1f8dc5cafd5def468b5b5e063768ddc3147e065d7",
"height": 206501,
"work": "180357618"
},
{
"header": "00000020d765e04731dc8d7663e0b5b568f4ded5af5cdcf8f1bbcb7576c6d6360a000000fb1a404fe53effdb9c0769966614fbe7cd7d7d537068339fc38a4c41e14ed6b1bfd1a766644d011eddc8aa00",
"hash": "0000008a5a47ffe1e621ee2d4c8f4baeef953da8e915d6837ccbaa7a7b877d2c",
"height": 206502,
"work": "180357618"
},
{
"header": "000000202c7d877b7aaacb7c83d615e9a83d95efae4b8f4c2dee21e6e1ff475a8a000000aa2d38699ab5195fb8d75512e639f3467aacb0346bf5478d529c969c6aa398fb64d3a766644d011ee2dc5f01",
"hash": "000000c7b179e7283c8641d1d1ff6a0b202213a19463490a79163aef0ccfad1e",
"height": 206503,
"work": "180357618"
},
{
"header": "000000201eadcf0cef3a16790a496394a11322200b6affd1d141863c28e779b1c70000006b58a84c6d1ba0c1841592fd5855f54e354e2b2a4d9467f57c9a22cb7b8a6b4984d3a766644d011e50d96c01",
"hash": "000000fc83896a94e89aae093c648bac3841de08a0dbe4ab1719db22796442b8",
"height": 206504,
"work": "180357618"
},
{
"header": "00000020b842647922db1917abe4dba008de4138ac8b643c09ae9ae8946a8983fc0000001e2eafc39aed81b433b9dc5fbf4916460f414c9333ace37bb99a300950ff76241fd5a766644d011ecffa8c00",
"hash": "000000a839a452cfa49121973e1ecd17838b74fd3238abfc5e28a8d04fa76fd9",
"height": 206505,
"work": "180357618"
},
{
"header": "00000020d96fa74fd0a8285efcab3832fd748b8317cd1e3e972191a4cf52a439a800000092e19ee24b41b4debca252714de700a8573c610ad277866abd238ae527d899d40dd6a766644d011e053a5c00",
"hash": "000000edb41b0c424a7ffbbaf5704daf494d9209013ca10b3f76d66610d77d99",
"height": 206506,
"work": "180357618"
},
{
"header": "00000020997dd71066d6763f0ba13c0109924d49af4d70f5bafb7f4a420c1bb4ed000000fa2603a7097ff5d5fb2ca0b5dc33fce8ae8cdc44916b736cabdeef8abab05a7b38d6a766644d011ee7bbe900",
"hash": "0000006516e2ff853d1fc48e476df001420e7e5b740ea178b7edc5f557e27c58",
"height": 206507,
"work": "180357618"
},
{
"header": "00000020587ce257f5c5edb778a10e745b7e0e4201f06d478ec41f3d85ffe21665000000cde05d3c4355c5aef220d5b16ffb8339ae979c513f8af0bc5c74d21ac8a4fd2e45d7a766644d011eabacbe00",
"hash": "0000001ec310dc0a5113ae10f00d944f01562c0a4c50c8ee41ff00b164cb81cc",
"height": 206508,
"work": "180357618"
},
{
"header": "00000020cc81cb64b100ff41eec8504c0a2c56014f940df010ae13510adc10c31e0000006433905cd152679dc2620d09a44203589743d88c181a0342811225ff823b484f85d8a766644d011e077d7300",
"hash": "000000e04fd41669fac0a6fbf595e795d841ca1f1f3df82410b7be8d8956c0e0",
"height": 206509,
"work": "180357618"
},
{
"header": "00000020e0c056898dbeb71024f83d1f1fca41d895e795f5fba6c0fa6916d44fe0000000dfb1582ec3ecf5c35a7ca4a75624d17517373371923a19dc1729f62f24402f0371daa766644d011e605fcd00",
"hash": "000000dc9ea403aadca79175d75ab6a09f21178955e1aa92ad134d1f35639317",
"height": 206510,
"work": "180357618"
},
{
"header": "00000020179363351f4d13ad92aae1558917219fa0b65ad77591a7dcaa03a49edc0000007b03a2a905ac70c86e3568978c8a1e5f4aa720999d3dbd2e2bdfffbc3b7ecf6306dba766644d011ed6383600",
"hash": "0000008cb36ab72c793033a25ccb5ea266a63c6d8a3a8774db9574bd2f099a26",
"height": 206511,
"work": "180357618"
},
{
"header": "00000020269a092fbd7495db74873a8a6d3ca666a25ecb5ca23330792cb76ab38c000000d6ad13ceaa5c27b1e1e2d68b0080cc40b82b44faf895e3f819edfae1709aa74587dba766644d011e93fc8a00",
"hash": "000000e698603e02a0ae61186f6b6294f8f58732bcfb1bf7c5c8cc8c25b17134",
"height": 206512,
"work": "180357618"
},
{
"header": "000000203471b1258cccc8c5f71bfbbc3287f5f894626b6f1861aea0023e6098e60000002d05f3d038ee2535da13f928afa100e9dac12598c11afc19b0e952a22bc924d1ecdba766644d011e5eb27d00",
"hash": "0000001ea82bcd9bb5ada7c186a3f1b02413fd0e5d873e44825ca628e5511496",
"height": 206513,
"work": "180357618"
}
]
}`
104 changes: 104 additions & 0 deletions app/upgrades/signetlaunch/upgrades.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
// This code is only for testing purposes.
// DO NOT USE IN PRODUCTION!

package signetlaunch

import (
"bytes"
"context"
"errors"
"fmt"
"sort"

store "cosmossdk.io/store/types"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/btcsuite/btcd/chaincfg"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"

"github.com/babylonlabs-io/babylon/app/keepers"
appparams "github.com/babylonlabs-io/babylon/app/params"
"github.com/babylonlabs-io/babylon/app/upgrades"
btclightkeeper "github.com/babylonlabs-io/babylon/x/btclightclient/keeper"
btclighttypes "github.com/babylonlabs-io/babylon/x/btclightclient/types"
)

var Upgrade = upgrades.Upgrade{
UpgradeName: "signet-launch",
CreateUpgradeHandler: CreateUpgradeHandler,
StoreUpgrades: store.StoreUpgrades{},
}

// CreateUpgradeHandler upgrade handler for launch.
func CreateUpgradeHandler(
mm *module.Manager,
cfg module.Configurator,
app upgrades.BaseAppParamManager,
keepers *keepers.AppKeepers,
) upgradetypes.UpgradeHandler {
return func(context context.Context, _plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
ctx := sdk.UnwrapSDKContext(context)

if err := propLaunch(ctx, &keepers.BTCLightClientKeeper); err != nil {
panic(err)
}

return mm.RunMigrations(ctx, cfg, fromVM)
RafilxTenfen marked this conversation as resolved.
Show resolved Hide resolved
}
}

// propLaunch runs the proposal of launch that is meant to insert new BTC Headers.
func propLaunch(
ctx sdk.Context,
btcLigthK *btclightkeeper.Keeper,
) error {
newHeaders, err := LoadBTCHeadersFromData()
if err != nil {
return err
}

return insertBtcHeaders(ctx, btcLigthK, newHeaders)
}

// LoadBTCHeadersFromData returns the BTC headers load from the json string with the headers inside of it.
func LoadBTCHeadersFromData() ([]*btclighttypes.BTCHeaderInfo, error) {
cdc := appparams.DefaultEncodingConfig().Codec
buff := bytes.NewBufferString(NewBtcHeadersStr)

var gs btclighttypes.GenesisState
err := cdc.UnmarshalJSON(buff.Bytes(), &gs)
if err != nil {
return nil, err
}

return gs.BtcHeaders, nil
}

func insertBtcHeaders(
ctx sdk.Context,
k *btclightkeeper.Keeper,
headers []*btclighttypes.BTCHeaderInfo,
) error {
if len(headers) == 0 {
return errors.New("no headers to insert")
}

// sort by height to make sure it is deterministic
sort.Slice(headers, func(i, j int) bool {
return headers[i].Height > headers[j].Height
})

for _, header := range headers {
if err := header.Validate(); err != nil {
return err
}
}
k.InsertHeaderInfos(ctx, headers)
RafilxTenfen marked this conversation as resolved.
Show resolved Hide resolved

allBlocks := k.GetMainChainFromWithLimit(ctx, 0, 1)
isRetarget := btclighttypes.IsRetargetBlock(allBlocks[0], &chaincfg.SigNetParams)
if !isRetarget {
return fmt.Errorf("first header be a difficulty adjustment block")
}
return nil
}
105 changes: 105 additions & 0 deletions app/upgrades/signetlaunch/upgrades_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package signetlaunch_test

import (
"fmt"
"testing"
"time"

"cosmossdk.io/core/appmodule"
"cosmossdk.io/core/header"
"cosmossdk.io/x/upgrade"
upgradetypes "cosmossdk.io/x/upgrade/types"
"github.com/babylonlabs-io/babylon/app"
v1 "github.com/babylonlabs-io/babylon/app/upgrades/signetlaunch"
tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/suite"
)

const (
DummyUpgradeHeight = 5
)

type UpgradeTestSuite struct {
suite.Suite

ctx sdk.Context
app *app.BabylonApp
preModule appmodule.HasPreBlocker
}

func (s *UpgradeTestSuite) SetupTest() {
// add the upgrade plan
app.Upgrades = append(app.Upgrades, v1.Upgrade)

// set up app
s.app = app.Setup(s.T(), false)
s.ctx = s.app.BaseApp.NewContextLegacy(false, tmproto.Header{Height: 1, ChainID: "babylon-1", Time: time.Now().UTC()})
s.preModule = upgrade.NewAppModule(s.app.UpgradeKeeper, s.app.AccountKeeper.AddressCodec())
}

func TestKeeperTestSuite(t *testing.T) {
suite.Run(t, new(UpgradeTestSuite))
}

func (s *UpgradeTestSuite) TestUpgradePayments() {
oldHeadersLen := 0

testCases := []struct {
msg string
pre_update func()
update func()
post_update func()
}{
{
"Test launch software upgrade gov prop",
func() {
allBtcHeaders := s.app.BTCLightClientKeeper.GetMainChainFrom(s.ctx, 0)
oldHeadersLen = len(allBtcHeaders)
},
func() {
// inject upgrade plan
s.ctx = s.ctx.WithBlockHeight(DummyUpgradeHeight - 1)
plan := upgradetypes.Plan{Name: v1.Upgrade.UpgradeName, Height: DummyUpgradeHeight}
err := s.app.UpgradeKeeper.ScheduleUpgrade(s.ctx, plan)
s.NoError(err)

// ensure upgrade plan exists
actualPlan, err := s.app.UpgradeKeeper.GetUpgradePlan(s.ctx)
s.NoError(err)
s.Equal(plan, actualPlan)

// execute upgrade
s.ctx = s.ctx.WithHeaderInfo(header.Info{Height: DummyUpgradeHeight, Time: s.ctx.BlockTime().Add(time.Second)}).WithBlockHeight(DummyUpgradeHeight)
s.NotPanics(func() {
_, err := s.preModule.PreBlock(s.ctx)
s.NoError(err)
})
},
func() {
// ensure the btc headers were added
allBtcHeaders := s.app.BTCLightClientKeeper.GetMainChainFrom(s.ctx, 0)

btcHeaders, err := v1.LoadBTCHeadersFromData()
s.NoError(err)
lenHeadersInserted := len(btcHeaders)

newHeadersLen := len(allBtcHeaders)
s.Equal(newHeadersLen, oldHeadersLen+lenHeadersInserted)

// ensure the headers were inserted at the end
s.Equal(allBtcHeaders[newHeadersLen-lenHeadersInserted:], btcHeaders)
},
},
}

for _, tc := range testCases {
s.Run(fmt.Sprintf("Case %s", tc.msg), func() {
s.SetupTest() // reset

tc.pre_update()
tc.update()
tc.post_update()
})
}
}
26 changes: 1 addition & 25 deletions cmd/babylond/cmd/genhelpers/set_btc_headers.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,8 @@ package genhelpers

import (
"fmt"
"os"
"path/filepath"

cmtos "github.com/cometbft/cometbft/libs/os"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/codec"
"github.com/cosmos/cosmos-sdk/server"
"github.com/cosmos/cosmos-sdk/x/genutil"
genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
Expand Down Expand Up @@ -51,7 +47,7 @@ Possible content of 'btc_headers.json' is
config := server.GetServerContextFromCmd(cmd).Config
config.SetRoot(clientCtx.HomeDir)

inputBtcHeaders, err := getBtcLightGenStateFromFile(clientCtx.Codec, args[0])
inputBtcHeaders, err := btclighttypes.LoadBtcLightGenStateFromFile(clientCtx.Codec, args[0])
if err != nil {
return err
}
Expand Down Expand Up @@ -102,23 +98,3 @@ Possible content of 'btc_headers.json' is

return cmd
}

func getBtcLightGenStateFromFile(cdc codec.Codec, inputFilePath string) (*btclighttypes.GenesisState, error) {
filePath := filepath.Clean(inputFilePath)
if !cmtos.FileExists(filePath) {
return nil, fmt.Errorf("input file %s does not exists", filePath)
}

bz, err := os.ReadFile(filePath)
if err != nil {
return nil, err
}

var genState btclighttypes.GenesisState
err = cdc.UnmarshalJSON(bz, &genState)
if err != nil {
return nil, err
}

return &genState, nil
}
Loading