From 02a4b51d98d0545406904e611f1e92eb04b95ab9 Mon Sep 17 00:00:00 2001 From: RafilxTenfen Date: Tue, 30 Jul 2024 08:35:50 -0300 Subject: [PATCH] fixme: failing upgrade due to btc headers json not found --- .../chain/queries_btclightclient.go | 21 +++++++ test/e2e/configurer/config/constants.go | 5 +- test/e2e/e2e_test.go | 5 ++ ...software_upgrade_e2e_signet_launch_test.go | 62 +++++++++++++++++++ test/e2e/software_upgrade_e2e_test.go | 2 +- test/e2e/upgrades/signet-launch.json | 14 +++++ 6 files changed, 106 insertions(+), 3 deletions(-) create mode 100644 test/e2e/configurer/chain/queries_btclightclient.go create mode 100644 test/e2e/software_upgrade_e2e_signet_launch_test.go create mode 100644 test/e2e/upgrades/signet-launch.json diff --git a/test/e2e/configurer/chain/queries_btclightclient.go b/test/e2e/configurer/chain/queries_btclightclient.go new file mode 100644 index 000000000..2c4cfb570 --- /dev/null +++ b/test/e2e/configurer/chain/queries_btclightclient.go @@ -0,0 +1,21 @@ +package chain + +import ( + "net/url" + + "github.com/stretchr/testify/require" + + "github.com/babylonlabs-io/babylon/test/e2e/util" + btclighttypes "github.com/babylonlabs-io/babylon/x/btclightclient/types" +) + +func (n *NodeConfig) QueryBtcLightClientMainchain() []*btclighttypes.BTCHeaderInfoResponse { + bz, err := n.QueryGRPCGateway("/babylon/btclightclient/v1/mainchain", url.Values{}) + require.NoError(n.t, err) + + var resp btclighttypes.QueryMainChainResponse + err = util.Cdc.UnmarshalJSON(bz, &resp) + require.NoError(n.t, err) + + return resp.Headers +} diff --git a/test/e2e/configurer/config/constants.go b/test/e2e/configurer/config/constants.go index 72ee9e9b4..11a48e48d 100644 --- a/test/e2e/configurer/config/constants.go +++ b/test/e2e/configurer/config/constants.go @@ -15,6 +15,7 @@ const ( MaxRetries = 60 // PropSubmitBlocks estimated number of blocks it takes to submit for a proposal PropSubmitBlocks float32 = 1 - // VanillaUpgradeFilePath upgrade vanilla testing - VanillaUpgradeFilePath = "/upgrades/vanilla.json" + // UpgradeVanillaFilePath upgrade vanilla testing + UpgradeVanillaFilePath = "/upgrades/vanilla.json" + UpgradeSignetLaunchFilePath = "/upgrades/signet-launch.json" ) diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index cc78d6b15..801e6d511 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -40,3 +40,8 @@ func TestBTCStakingTestSuite(t *testing.T) { func TestSoftwareUpgradeTestSuite(t *testing.T) { suite.Run(t, new(SoftwareUpgradeVanillaTestSuite)) } + +// TestSoftwareUpgradeSignetLaunchTestSuite tests software upgrade of signet launch end-to-end +func TestSoftwareUpgradeSignetLaunchTestSuite(t *testing.T) { + suite.Run(t, new(SoftwareUpgradeSignetLaunchTestSuite)) +} diff --git a/test/e2e/software_upgrade_e2e_signet_launch_test.go b/test/e2e/software_upgrade_e2e_signet_launch_test.go new file mode 100644 index 000000000..c18b0786c --- /dev/null +++ b/test/e2e/software_upgrade_e2e_signet_launch_test.go @@ -0,0 +1,62 @@ +package e2e + +import ( + "github.com/stretchr/testify/suite" + + v1 "github.com/babylonlabs-io/babylon/app/upgrades/signetlaunch" + "github.com/babylonlabs-io/babylon/test/e2e/configurer" + "github.com/babylonlabs-io/babylon/test/e2e/configurer/config" +) + +type SoftwareUpgradeSignetLaunchTestSuite struct { + suite.Suite + + configurer configurer.Configurer +} + +func (s *SoftwareUpgradeSignetLaunchTestSuite) SetupSuite() { + s.T().Log("setting up e2e integration test suite...") + var err error + + s.configurer, err = configurer.NewSoftwareUpgradeConfigurer(s.T(), false, config.UpgradeSignetLaunchFilePath) + s.NoError(err) + err = s.configurer.ConfigureChains() + s.NoError(err) + err = s.configurer.RunSetup() // upgrade happens at the setup of configurer. + s.NoError(err) +} + +func (s *SoftwareUpgradeSignetLaunchTestSuite) TearDownSuite() { + err := s.configurer.ClearResources() + s.Require().NoError(err) +} + +// TestUpgradeSignetLaunch Checks if the BTC Headers were inserted. +func (s *SoftwareUpgradeSignetLaunchTestSuite) TestUpgradeSignetLaunch() { + // chain is already upgraded, only checks for differences in state are expected + chainA := s.configurer.GetChainConfig(0) + chainA.WaitUntilHeight(30) // five blocks more than upgrade + + n, err := chainA.GetDefaultNode() + s.NoError(err) + + expectedUpgradeHeight := int64(25) + + // makes sure that the upgrade was actually executed + resp := n.QueryAppliedPlan("vanilla") + s.EqualValues(expectedUpgradeHeight, resp.Height, "the plan should be applied at the height 25") + + allBtcHeaders := n.QueryBtcLightClientMainchain() + + btcHeadersFromFile, err := v1.LoadBTCHeadersFromData() + s.NoError(err) + + lenHeadersInserted := len(btcHeadersFromFile) + oldHeadersLen := 1 // only block zero is set by default in e2e test + + newHeadersLen := len(allBtcHeaders) + s.Equal(newHeadersLen, oldHeadersLen+lenHeadersInserted) + + // ensure the headers were inserted at the end + s.Equal(allBtcHeaders[newHeadersLen-lenHeadersInserted:], btcHeadersFromFile) +} diff --git a/test/e2e/software_upgrade_e2e_test.go b/test/e2e/software_upgrade_e2e_test.go index 3cac9f9c9..0173d9e51 100644 --- a/test/e2e/software_upgrade_e2e_test.go +++ b/test/e2e/software_upgrade_e2e_test.go @@ -17,7 +17,7 @@ func (s *SoftwareUpgradeVanillaTestSuite) SetupSuite() { s.T().Log("setting up e2e integration test suite...") var err error - s.configurer, err = configurer.NewSoftwareUpgradeConfigurer(s.T(), false, config.VanillaUpgradeFilePath) + s.configurer, err = configurer.NewSoftwareUpgradeConfigurer(s.T(), false, config.UpgradeVanillaFilePath) s.NoError(err) err = s.configurer.ConfigureChains() s.NoError(err) diff --git a/test/e2e/upgrades/signet-launch.json b/test/e2e/upgrades/signet-launch.json new file mode 100644 index 000000000..de4638b31 --- /dev/null +++ b/test/e2e/upgrades/signet-launch.json @@ -0,0 +1,14 @@ +{ + "title": "any title", + "summary": "any summary", + "messages": [ + { + "@type": "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", + "authority": "bbn10d07y265gmmuvt4z0w9aw880jnsr700jduz5f2", + "plan": { "name": "signet-launch", "info": "Msg info", "height": 25 } + } + ], + "deposit": "500000000ubbn", + "initial_deposit": "500000000ubbn", + "initialDeposit": "500000000ubbn" +} \ No newline at end of file