From 89db4bfc2e02624ee9cb27f0b372bdc2d2518942 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 12 Nov 2024 10:36:58 -0500 Subject: [PATCH 01/24] Initial commit with gpp container starting with permissions from local --- .github/workflows/integration-tests-smoke.yml | 7 +- .github/workflows/integration-tests-soak.yml | 13 ++- integration-tests/common/test_common.go | 18 ++- .../testenv/gauntlet/gauntletplusplus.go | 110 ++++++++++++++++++ integration-tests/docker/testenv/stark.go | 2 +- 5 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 integration-tests/docker/testenv/gauntlet/gauntletplusplus.go diff --git a/.github/workflows/integration-tests-smoke.yml b/.github/workflows/integration-tests-smoke.yml index 1efe9c5eb..6ee0c3fd4 100644 --- a/.github/workflows/integration-tests-smoke.yml +++ b/.github/workflows/integration-tests-smoke.yml @@ -19,6 +19,7 @@ env: TEST_LOG_LEVEL: debug CL_ECR: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink ENV_JOB_IMAGE: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/chainlink-starknet-tests:${{ github.sha }} + GAUNTLET_PP_IMAGE: ${{ secrets.PROD_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.PROD_AWS_REGION }}.amazonaws.com/gauntlet-plus-plus:v2.5.0 jobs: build_chainlink_image: @@ -199,7 +200,7 @@ jobs: # shellcheck disable=SC2086 echo "BASE64_CONFIG_OVERRIDE=$BASE64_CONFIG_OVERRIDE" >> $GITHUB_ENV - name: Run Tests ${{ matrix.image.name }} - uses: smartcontractkit/.github/actions/ctf-run-tests@002596f65dc8eb807f5c8729dc1080921f7d0b24 # 0.2.1 + uses: smartcontractkit/.github/actions/ctf-run-tests@4229fea727f6eb36b4559c6eefbbf9f3825fa677 # 0.2.1 with: aws_registries: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }} test_command_to_run: nix develop -c sh -c "make test=${{ matrix.image.test-name }} test-integration-smoke-ci" @@ -211,7 +212,11 @@ jobs: QA_AWS_REGION: ${{ secrets.QA_AWS_REGION }} QA_AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }} QA_KUBECONFIG: ${{ secrets.QA_KUBECONFIG }} + PROD_AWS_ROLE_TO_ASSUME: ${{ secrets.AWS_OIDC_IAM_PROD_INTEGRATION_ROLE_ARN }} artifacts_location: /home/runner/work/chainlink-starknet/chainlink-starknet/integration-tests/smoke/logs + PROD_AWS_REGION: ${{ secrets.PROD_AWS_REGION}} + PROD_AWS_ACCOUNT_NUMBER: ${{ secrets.PROD_AWS_ACCOUNT_NUMBER }} + gauntlet_plus_plus_image: ${{ secrets.PROD_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.PROD_AWS_REGION }}.amazonaws.com/gauntlet-plus-plus:v2.5.0 gati_token: ${{ steps.setup-github-token.outputs.access-token }} env: KILLGRAVE_INTERNAL_IMAGE: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/friendsofgo/killgrave diff --git a/.github/workflows/integration-tests-soak.yml b/.github/workflows/integration-tests-soak.yml index 0d0a3ce63..4ff9cb2e9 100644 --- a/.github/workflows/integration-tests-soak.yml +++ b/.github/workflows/integration-tests-soak.yml @@ -55,6 +55,13 @@ jobs: nix_path: nixpkgs=channel:nixos-unstable - name: Install Cairo uses: ./.github/actions/install-cairo + - name: Setup GitHub Token + id: setup-github-token + uses: smartcontractkit/.github/actions/setup-github-token@9e7cc0779934cae4a9028b8588c9adb64d8ce68c # setup-github-token@0.1.2 + with: + aws-role-arn: ${{ secrets.AWS_OIDC_GLOBAL_READ_ONLY_TOKEN_ISSUER_ROLE_ARN }} + aws-lambda-url: ${{ secrets.GATI_RELENG_LAMBDA_URL }} + aws-region: ${{ secrets.QA_AWS_REGION }} - name: Build contracts run: | cd contracts && scarb --profile release build @@ -68,7 +75,7 @@ jobs: echo "::add-mask::$BASE64_CONFIG_OVERRIDE" echo "BASE64_CONFIG_OVERRIDE=$BASE64_CONFIG_OVERRIDE" >> "$GITHUB_ENV" - name: Run Tests - uses: smartcontractkit/.github/actions/ctf-run-tests@002596f65dc8eb807f5c8729dc1080921f7d0b24 # 0.2.1 + uses: smartcontractkit/.github/actions/ctf-run-tests@4229fea727f6eb36b4559c6eefbbf9f3825fa677 # 0.2.1 with: aws_registries: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }} test_command_to_run: cd ./integration-tests && go test -timeout 24h -count=1 -run TestOCRBasicSoak/embedded ./soak @@ -80,6 +87,10 @@ jobs: QA_AWS_ROLE_TO_ASSUME: ${{ secrets.QA_AWS_ROLE_TO_ASSUME }} QA_KUBECONFIG: ${{ secrets.QA_KUBECONFIG }} artifacts_location: /home/runner/work/chainlink-starknet/chainlink-starknet/integration-tests/soak/logs + PROD_AWS_REGION: ${{ secrets.PROD_AWS_REGION}} + PROD_AWS_ACCOUNT_NUMBER: ${{ secrets.PROD_AWS_ACCOUNT_NUMBER }} + gauntlet_plus_plus_image: ${{ secrets.PROD_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.PROD_AWS_REGION }}.amazonaws.com/gauntlet-plus-plus:v2.5.0 + gati_token: ${{ steps.setup-github-token.outputs.access-token }} env: KILLGRAVE_INTERNAL_IMAGE: ${{ secrets.QA_AWS_ACCOUNT_NUMBER }}.dkr.ecr.${{ secrets.QA_AWS_REGION }}.amazonaws.com/friendsofgo/killgrave CHAINLINK_IMAGE: ${{ env.CL_ECR }} diff --git a/integration-tests/common/test_common.go b/integration-tests/common/test_common.go index 976ad8ee8..36a37b631 100644 --- a/integration-tests/common/test_common.go +++ b/integration-tests/common/test_common.go @@ -26,6 +26,7 @@ import ( test_env_integrations "github.com/smartcontractkit/chainlink/integration-tests/docker/test_env" test_env_starknet "github.com/smartcontractkit/chainlink-starknet/integration-tests/docker/testenv" + test_env_gauntlet "github.com/smartcontractkit/chainlink-starknet/integration-tests/docker/testenv/gauntlet" "github.com/smartcontractkit/chainlink-starknet/integration-tests/testconfig" "github.com/smartcontractkit/chainlink-starknet/ops" @@ -136,7 +137,7 @@ func (m *OCRv2TestState) DeployCluster() { // When running soak we need to use K8S if *m.Common.TestConfig.Common.InsideK8s { m.DeployEnv() - + m.StartGppWithoutNetwork() if m.Common.Env.WillUseRemoteRunner() { return } @@ -159,6 +160,7 @@ func (m *OCRv2TestState) DeployCluster() { } else { // Otherwise use docker env, err := test_env_integrations.NewTestEnv() require.NoError(m.TestConfig.T, err) + m.StartGppWithNetwork(env.DockerNetwork.Name) stark := test_env_starknet.NewStarknet([]string{env.DockerNetwork.Name}, *m.Common.TestConfig.Common.DevnetImage) err = stark.StartContainer() require.NoError(m.TestConfig.T, err) @@ -235,6 +237,20 @@ func (m *OCRv2TestState) DeployCluster() { } } +// Starts GauntletPP Without a network +func (m *OCRv2TestState) StartGppWithoutNetwork() { + gpp := test_env_gauntlet.NewGauntletPlusPlus([]string{}, *m.Common.TestConfig.Common.GauntletPlusPlusImage) + err := gpp.StartContainer() + require.NoError(m.TestConfig.T, err) +} + +// Starts GauntletPP with a network +func (m *OCRv2TestState) StartGppWithNetwork(networkName string) { + gpp := test_env_gauntlet.NewGauntletPlusPlus([]string{networkName}, *m.Common.TestConfig.Common.GauntletPlusPlusImage) + err := gpp.StartContainer() + require.NoError(m.TestConfig.T, err) +} + // DeployEnv Deploys the environment func (m *OCRv2TestState) DeployEnv() { err := m.Common.Env.Run() diff --git a/integration-tests/docker/testenv/gauntlet/gauntletplusplus.go b/integration-tests/docker/testenv/gauntlet/gauntletplusplus.go new file mode 100644 index 000000000..8fdbb9ba2 --- /dev/null +++ b/integration-tests/docker/testenv/gauntlet/gauntletplusplus.go @@ -0,0 +1,110 @@ +package testenv + +import ( + "fmt" + "testing" + "time" + + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + + tc "github.com/testcontainers/testcontainers-go" + tcwait "github.com/testcontainers/testcontainers-go/wait" + + "github.com/smartcontractkit/chainlink-testing-framework/lib/docker/test_env" + "github.com/smartcontractkit/chainlink-testing-framework/lib/logging" + "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/testcontext" +) + +const ( + GauntletPlusPlusPort = "7530" +) + +type GauntletPlusPlus struct { + test_env.EnvComponent + ExternalHTTPURL string + InternalHTTPURL string + t *testing.T + l zerolog.Logger + Image string +} + +func NewGauntletPlusPlus(networks []string, image string, opts ...test_env.EnvComponentOption) *GauntletPlusPlus { + ms := &GauntletPlusPlus{ + Image: image, + EnvComponent: test_env.EnvComponent{ + ContainerName: "gauntlet-plus-plus", + Networks: networks, + }, + + l: log.Logger, + } + + for _, opt := range opts { + opt(&ms.EnvComponent) + } + return ms +} + +func (g *GauntletPlusPlus) WithTestLogger(t *testing.T) *GauntletPlusPlus { + g.l = logging.GetTestLogger(t) + g.t = t + return g +} + +func (g *GauntletPlusPlus) StartContainer() error { + l := tc.Logger + if g.t != nil { + l = logging.CustomT{ + T: g.t, + L: g.l, + } + } + cReq, err := g.getContainerRequest() + if err != nil { + return err + } + c, err := tc.GenericContainer(testcontext.Get(g.t), tc.GenericContainerRequest{ + ContainerRequest: *cReq, + Reuse: true, + Started: true, + Logger: l, + }) + if err != nil { + return fmt.Errorf("cannot start GauntletPlusPlus container: %w", err) + } + + g.Container = c + host, err := test_env.GetHost(testcontext.Get(g.t), c) + if err != nil { + return err + } + + httpPort, err := c.MappedPort(testcontext.Get(g.t), test_env.NatPort(GauntletPlusPlusPort)) + if err != nil { + return err + } + + g.ExternalHTTPURL = fmt.Sprintf("http://%s:%s", host, httpPort.Port()) + g.InternalHTTPURL = fmt.Sprintf("http://%s:%s", g.ContainerName, GauntletPlusPlusPort) + + g.l.Info(). + Any("ExternalHTTPURL", g.ExternalHTTPURL). + Any("ExternalHTTPURL", g.ExternalHTTPURL). + Str("containerName", g.ContainerName). + Msgf("Started Starknet container") + + return nil +} + +func (g *GauntletPlusPlus) getContainerRequest() (*tc.ContainerRequest, error) { + return &tc.ContainerRequest{ + Name: g.ContainerName, + Image: g.Image, + ExposedPorts: []string{test_env.NatPortFormat(GauntletPlusPlusPort)}, + Networks: g.Networks, + WaitingFor: tcwait.ForLog("Server listening at "). + WithStartupTimeout(30 * time.Second). + WithPollInterval(100 * time.Millisecond), + }, nil +} diff --git a/integration-tests/docker/testenv/stark.go b/integration-tests/docker/testenv/stark.go index 0377b03e6..a21e04b83 100644 --- a/integration-tests/docker/testenv/stark.go +++ b/integration-tests/docker/testenv/stark.go @@ -1,4 +1,4 @@ -package testenv +package gauntlet import ( "fmt" From c151a21a5912cf391035ca5f40b7951ebb10b7f5 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Mon, 25 Nov 2024 19:06:07 -0500 Subject: [PATCH 02/24] Added image url --- integration-tests/testconfig/default.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/testconfig/default.toml b/integration-tests/testconfig/default.toml index f47e53d37..8f9a16810 100644 --- a/integration-tests/testconfig/default.toml +++ b/integration-tests/testconfig/default.toml @@ -29,7 +29,7 @@ stateful_db = false devnet_image = "shardlabs/starknet-devnet-rs:a147b4cd72f9ce9d1fa665d871231370db0f51c7" postgres_version = "15.7" gauntlet_plus_plus_port = "5234" -gauntlet_plus_plus_image = "gauntlet-plus-plus:latest" +gauntlet_plus_plus_image = "804282218731.dkr.ecr.us-west-2.amazonaws.com/gauntlet-plus-plus:v2.5.0" [OCR2] node_count = 6 From 4a75ae79f9135ae4e323ddf226a29fd715eec474 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Sun, 1 Dec 2024 23:00:27 -0500 Subject: [PATCH 03/24] Refactored Legacy Gauntlet Commands to GPP Commnads --- integration-tests/common/gauntlet_common.go | 38 ++++-- .../common/gauntlet_plus_plus_common.go | 119 ++++++++++++++++++ integration-tests/common/test_common.go | 6 +- .../testenv/gauntlet/gauntletplusplus.go | 18 +-- integration-tests/smoke/ocr2_test.go | 10 +- integration-tests/soak/ocr2_test.go | 8 +- integration-tests/testconfig/testconfig.go | 2 +- ops/gauntlet/gauntlet_plus_plus_starknet.go | 54 +++++--- 8 files changed, 211 insertions(+), 44 deletions(-) diff --git a/integration-tests/common/gauntlet_common.go b/integration-tests/common/gauntlet_common.go index 173b64dc5..05c8544f4 100644 --- a/integration-tests/common/gauntlet_common.go +++ b/integration-tests/common/gauntlet_common.go @@ -5,7 +5,6 @@ import ( "errors" "fmt" "os" - "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" ) @@ -16,7 +15,8 @@ func (m *OCRv2TestState) fundNodes() ([]string, error) { if key.TXKey.Data.Attributes.StarkKey == "" { return nil, errors.New("stark key can't be empty") } - nAccount, err := m.Clients.GauntletClient.DeployAccountContract(100, key.TXKey.Data.Attributes.StarkKey) + //nAccount, err := m.Clients.GauntletClient.DeployAccountContract(100, key.TXKey.Data.Attributes.StarkKey) + nAccount, err := m.Clients.GauntletPPClient.DeployOzAccount(key.TXKey.Data.Attributes.StarkKey) if err != nil { return nil, err } @@ -27,7 +27,8 @@ func (m *OCRv2TestState) fundNodes() ([]string, error) { for _, key := range nAccounts { // We are not deploying in parallel here due to testnet limitations (429 too many requests) l.Debug().Msg(fmt.Sprintf("Funding node with address: %s", key)) - _, err := m.Clients.GauntletClient.TransferToken(m.Common.ChainDetails.StarkTokenAddress, key, "10000000000000000000") // Transferring 10 STRK to each node + //_, err := m.Clients.GauntletClient.TransferToken(m.Common.ChainDetails.StarkTokenAddress, key, "10000000000000000000") // Transferring 10 STRK to each node + err := m.Clients.GauntletPPClient.TransferToken(m.Common.ChainDetails.StarkTokenAddress, key, "10000000000000000000") if err != nil { return nil, err } @@ -109,26 +110,42 @@ func (m *OCRv2TestState) DeployGauntlet(minSubmissionValue int64, maxSubmissionV return err } - err = m.deployLinkToken() + err = m.deployLinkTokenWithGpp() if err != nil { return err } - - err = m.deployAccessController() + + err = m.deployAccessControllerWithGpp() if err != nil { return err } + // m.Contracts.OCRAddr, err = m.Clients.GauntletClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, m.Contracts.LinkTokenAddr) + // if err != nil { + // return err + // } - m.Contracts.OCRAddr, err = m.Clients.GauntletClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, m.Contracts.LinkTokenAddr) + m.Contracts.OCRAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, + m.Contracts.LinkTokenAddr, m.Account.Account, m.Contracts.AccessControllerAddr) if err != nil { return err } - m.Contracts.ProxyAddr, err = m.Clients.GauntletClient.DeployOCR2ProxyContract(m.Contracts.OCRAddr) + // m.Contracts.ProxyAddr, err = m.Clients.GauntletClient.DeployOCR2ProxyContract(m.Contracts.OCRAddr) + // if err != nil { + // return err + // } + + m.Contracts.ProxyAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerProxyContract(m.Account.Account, m.Contracts.OCRAddr) if err != nil { return err } - _, err = m.Clients.GauntletClient.AddAccess(m.Contracts.OCRAddr, m.Contracts.ProxyAddr) + + // _, err = m.Clients.GauntletClient.AddAccess(m.Contracts.OCRAddr, m.Contracts.ProxyAddr) + // if err != nil { + // return err + // } + + err = m.Clients.GauntletPPClient.AddAccess(m.Contracts.OCRAddr, m.Contracts.ProxyAddr) if err != nil { return err } @@ -137,7 +154,8 @@ func (m *OCRv2TestState) DeployGauntlet(minSubmissionValue int64, maxSubmissionV if err != nil { return err } - _, err = m.Clients.GauntletClient.SetOCRBilling(observationPaymentGjuels, transmissionPaymentGjuels, m.Contracts.OCRAddr) + + _, err = m.Clients.GauntletPPClient.SetOCRBilling(observationPaymentGjuels, transmissionPaymentGjuels, m.Contracts.OCRAddr) if err != nil { return err } diff --git a/integration-tests/common/gauntlet_plus_plus_common.go b/integration-tests/common/gauntlet_plus_plus_common.go index 79f745fe7..fabc80f22 100644 --- a/integration-tests/common/gauntlet_plus_plus_common.go +++ b/integration-tests/common/gauntlet_plus_plus_common.go @@ -2,11 +2,70 @@ package common import ( "encoding/json" + "errors" + "fmt" "os" + "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" ) +func (m *OCRv2TestState) fundNodesWithGPP() ([]string, error) { + l := utils.GetTestLogger(m.TestConfig.T) + var nAccounts []string + for _, key := range m.GetNodeKeys() { + if key.TXKey.Data.Attributes.StarkKey == "" { + return nil, errors.New("stark key can't be empty") + } + //nAccount, err := m.Clients.GauntletClient.DeployAccountContract(100, key.TXKey.Data.Attributes.StarkKey) + nAccount, err := m.Clients.GauntletPPClient.DeployOzAccount(key.TXKey.Data.Attributes.StarkKey) + if err != nil { + return nil, err + } + nAccounts = append(nAccounts, nAccount) + } + + if *m.Common.TestConfig.Common.Network == "testnet" { + for _, key := range nAccounts { + // We are not deploying in parallel here due to testnet limitations (429 too many requests) + l.Debug().Msg(fmt.Sprintf("Funding node with address: %s", key)) + //_, err := m.Clients.GauntletClient.TransferToken(m.Common.ChainDetails.StarkTokenAddress, key, "10000000000000000000") // Transferring 10 STRK to each node + err := m.Clients.GauntletPPClient.TransferToken(m.Common.ChainDetails.StarkTokenAddress, key, "10000000000000000000") + if err != nil { + return nil, err + } + } + } else { + // The starknet provided mint method does not work so we send a req directly + for _, key := range nAccounts { + res, err := m.TestConfig.Resty.R().SetBody(map[string]any{ + "address": key, + "amount": 900000000000000000, + }).Post("/mint") + if err != nil { + return nil, err + } + l.Info().Msg(fmt.Sprintf("Funding account (WEI): %s", string(res.Body()))) + res, err = m.TestConfig.Resty.R().SetBody(map[string]any{ + "address": key, + "amount": 900000000000000000, + "unit": m.Common.ChainDetails.TokenName, + }).Post("/mint") + if err != nil { + return nil, err + } + l.Info().Msg(fmt.Sprintf("Funding account (FRI): %s", string(res.Body()))) + } + } + + return nAccounts, nil +} + func (m *OCRv2TestState) deployAccessControllerWithGpp() error { var err error + err = m.Clients.GauntletPPClient.DeclareAccessControllerContract() + if err != nil { + return err + } + m.Contracts.AccessControllerAddr, err = m.Clients.GauntletPPClient.DeployAccessControllerContract(m.Account.Account) if err != nil { return err @@ -55,3 +114,63 @@ func (m *OCRv2TestState) setConfigDetailsWithGpp(ocrAddress string) error { _, err = m.Clients.GauntletPPClient.SetConfigDetails(string(parsedConfig), ocrAddress) return err } + +func (m *OCRv2TestState) DeployGauntletPP(minSubmissionValue int64, maxSubmissionValue int64, decimals int, name string, observationPaymentGjuels int64, transmissionPaymentGjuels int64) error { + err := m.Clients.GauntletClient.InstallDependencies() + if err != nil { + return err + } + + m.Clients.ChainlinkClient.AccountAddresses, err = m.fundNodesWithGPP() + if err != nil { + return err + } + + err = m.deployLinkTokenWithGpp() + if err != nil { + return err + } + + err = m.deployAccessControllerWithGpp() + if err != nil { + return err + } + + m.Contracts.OCRAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, + m.Contracts.LinkTokenAddr, m.Account.Account, m.Contracts.AccessControllerAddr) + if err != nil { + return err + } + + m.Contracts.ProxyAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerProxyContract(m.Account.Account, m.Contracts.OCRAddr) + if err != nil { + return err + } + + err = m.Clients.GauntletPPClient.AddAccess(m.Contracts.OCRAddr, m.Contracts.ProxyAddr) + if err != nil { + return err + } + + // _, err = m.Clients.GauntletClient.MintLinkToken(m.Contracts.LinkTokenAddr, m.Contracts.OCRAddr, "100000000000000000000") + // if err != nil { + // return err + // } + + // Gauntlet PP does not have a mint op. We will use devnet endpoint + _, err = m.TestConfig.Resty.R().SetBody(map[string]any{ + "address": m.Contracts.LinkTokenAddr, + "amount": 100000000000000000, + }).Post("/mint") + if err != nil { + return err + } + + _, err = m.Clients.GauntletPPClient.SetOCRBilling(observationPaymentGjuels, transmissionPaymentGjuels, m.Contracts.OCRAddr) + if err != nil { + return err + } + + err = m.setConfigDetailsWithGpp(m.Contracts.OCRAddr) + return err +} diff --git a/integration-tests/common/test_common.go b/integration-tests/common/test_common.go index 36a37b631..b874b1a4a 100644 --- a/integration-tests/common/test_common.go +++ b/integration-tests/common/test_common.go @@ -240,14 +240,16 @@ func (m *OCRv2TestState) DeployCluster() { // Starts GauntletPP Without a network func (m *OCRv2TestState) StartGppWithoutNetwork() { gpp := test_env_gauntlet.NewGauntletPlusPlus([]string{}, *m.Common.TestConfig.Common.GauntletPlusPlusImage) - err := gpp.StartContainer() + url, err := gpp.StartContainer() + m.TestConfig.TestConfig.Common.GauntletPlusPlusUrl = url require.NoError(m.TestConfig.T, err) } // Starts GauntletPP with a network func (m *OCRv2TestState) StartGppWithNetwork(networkName string) { gpp := test_env_gauntlet.NewGauntletPlusPlus([]string{networkName}, *m.Common.TestConfig.Common.GauntletPlusPlusImage) - err := gpp.StartContainer() + url, err := gpp.StartContainer() + m.TestConfig.TestConfig.Common.GauntletPlusPlusUrl = url require.NoError(m.TestConfig.T, err) } diff --git a/integration-tests/docker/testenv/gauntlet/gauntletplusplus.go b/integration-tests/docker/testenv/gauntlet/gauntletplusplus.go index 8fdbb9ba2..dcf9f51ca 100644 --- a/integration-tests/docker/testenv/gauntlet/gauntletplusplus.go +++ b/integration-tests/docker/testenv/gauntlet/gauntletplusplus.go @@ -17,7 +17,7 @@ import ( ) const ( - GauntletPlusPlusPort = "7530" + GauntletPlusPlusPort = "4444" ) type GauntletPlusPlus struct { @@ -52,7 +52,7 @@ func (g *GauntletPlusPlus) WithTestLogger(t *testing.T) *GauntletPlusPlus { return g } -func (g *GauntletPlusPlus) StartContainer() error { +func (g *GauntletPlusPlus) StartContainer() (string, error) { l := tc.Logger if g.t != nil { l = logging.CustomT{ @@ -62,7 +62,7 @@ func (g *GauntletPlusPlus) StartContainer() error { } cReq, err := g.getContainerRequest() if err != nil { - return err + return "", err } c, err := tc.GenericContainer(testcontext.Get(g.t), tc.GenericContainerRequest{ ContainerRequest: *cReq, @@ -71,18 +71,18 @@ func (g *GauntletPlusPlus) StartContainer() error { Logger: l, }) if err != nil { - return fmt.Errorf("cannot start GauntletPlusPlus container: %w", err) + return "", fmt.Errorf("cannot start GauntletPlusPlus container: %w", err) } g.Container = c host, err := test_env.GetHost(testcontext.Get(g.t), c) if err != nil { - return err + return "", err } httpPort, err := c.MappedPort(testcontext.Get(g.t), test_env.NatPort(GauntletPlusPlusPort)) if err != nil { - return err + return "", err } g.ExternalHTTPURL = fmt.Sprintf("http://%s:%s", host, httpPort.Port()) @@ -90,11 +90,11 @@ func (g *GauntletPlusPlus) StartContainer() error { g.l.Info(). Any("ExternalHTTPURL", g.ExternalHTTPURL). - Any("ExternalHTTPURL", g.ExternalHTTPURL). + Any("InternalHTTPURL", g.InternalHTTPURL). Str("containerName", g.ContainerName). - Msgf("Started Starknet container") + Msgf("Started Gauntlet Plus Plus container") - return nil + return g.ExternalHTTPURL, nil } func (g *GauntletPlusPlus) getContainerRequest() (*tc.ContainerRequest, error) { diff --git a/integration-tests/smoke/ocr2_test.go b/integration-tests/smoke/ocr2_test.go index 289465783..bde26a76f 100644 --- a/integration-tests/smoke/ocr2_test.go +++ b/integration-tests/smoke/ocr2_test.go @@ -74,16 +74,16 @@ func TestOCRBasic(t *testing.T) { } state.DeployCluster() // Setting up G++ Client - rpcURL := state.Common.RPCDetails.RPCL2External - gppPort := "http://localhost:" + *state.TestConfig.TestConfig.Common.GauntletPlusPlusPort - state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppPort, rpcURL, state.Account.Account, state.Account.PrivateKey) - require.NoError(t, err, "Setting up gauntlet ++ should not fail") + rpcURL := state.Common.RPCDetails.RPCL2Internal + gppUrl := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl + state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppUrl, rpcURL, state.Account.Account, state.Account.PrivateKey) + require.NoError(t, err, "Setting up gauntlet++ should not fail") state.Clients.GauntletClient, err = gauntlet.NewStarknetGauntlet(fmt.Sprintf("%s/", utils.ProjectRoot)) require.NoError(t, err, "Setting up gauntlet should not fail") err = state.Clients.GauntletClient.SetupNetwork(state.Common.RPCDetails.RPCL2External, state.Account.Account, state.Account.PrivateKey) require.NoError(t, err, "Setting up gauntlet network should not fail") - err = state.DeployGauntlet(0, 100000000000, decimals, "auto", 1, 1) + err = state.DeployGauntletPP(0, 100000000000, decimals, "auto", 1, 1) require.NoError(t, err, "Deploying contracts should not fail") state.SetUpNodes() diff --git a/integration-tests/soak/ocr2_test.go b/integration-tests/soak/ocr2_test.go index c0b0ffd45..2d96b44ac 100644 --- a/integration-tests/soak/ocr2_test.go +++ b/integration-tests/soak/ocr2_test.go @@ -78,11 +78,17 @@ func TestOCRBasicSoak(t *testing.T) { return } + // Setting up G++ Client + rpcURL := state.Common.RPCDetails.RPCL2Internal + gppUrl := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl + state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppUrl, rpcURL, state.Account.Account, state.Account.PrivateKey) + require.NoError(t, err, "Setting up gauntlet++ should not fail") + state.Clients.GauntletClient, err = gauntlet.NewStarknetGauntlet(fmt.Sprintf("%s/", utils.ProjectRoot)) require.NoError(t, err, "Setting up gauntlet should not fail") err = state.Clients.GauntletClient.SetupNetwork(state.Common.RPCDetails.RPCL2External, state.Account.Account, state.Account.PrivateKey) require.NoError(t, err, "Setting up gauntlet network should not fail") - err = state.DeployGauntlet(0, 100000000000, decimals, "auto", 1, 1) + err = state.DeployGauntletPP(0, 100000000000, decimals, "auto", 1, 1) require.NoError(t, err, "Deploying contracts should not fail") state.SetUpNodes() diff --git a/integration-tests/testconfig/testconfig.go b/integration-tests/testconfig/testconfig.go index 270608527..5b84c14a7 100644 --- a/integration-tests/testconfig/testconfig.go +++ b/integration-tests/testconfig/testconfig.go @@ -192,7 +192,7 @@ type Common struct { DevnetImage *string `toml:"devnet_image"` GauntletPlusPlusImage *string `toml:"gauntlet_plus_plus_image"` PostgresVersion *string `toml:"postgres_version"` - GauntletPlusPlusPort *string `toml:"gauntlet_plus_plus_port"` + GauntletPlusPlusUrl string } func (c *Common) Validate() error { diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index 368a208e6..095a63f37 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -5,7 +5,6 @@ import ( "encoding/json" "fmt" "net/http" - "github.com/rs/zerolog/log" g "github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet/client" ) @@ -92,8 +91,18 @@ func NewStarknetGauntletPlusPlus(gauntletPPEndpoint string, rpcURL string, addre func (sgpp *StarknetGauntletPlusPlus) ExtractValueFromResponseBody(report g.Report, key string) (string, error) { if report.Output != nil { + // Log the raw content of Output + outputJSON, err := json.Marshal(report.Output) + if err != nil { + log.Error().Err(err).Msg("Failed to marshal report.Output") + return "", err + } + log.Info().Str("Report.Output", string(outputJSON)).Msg("Gauntlet++") + // Attempt to assert the Output as a map if outputMap, ok := (*report.Output).(map[string]interface{}); ok { + log.Info().Interface("Report Response: ", outputMap).Msg("Gauntlet++") + if value, exists := outputMap[key]; exists { // Assert value to a string if strValue, ok := value.(string); ok { @@ -102,6 +111,9 @@ func (sgpp *StarknetGauntletPlusPlus) ExtractValueFromResponseBody(report g.Repo err := fmt.Errorf("parsed Value is not of type string") return "", err } + } else { + // Log a message if it’s not a map + log.Warn().Msg("Report.Output is not a map[string]interface{}") } } return "", nil @@ -134,7 +146,6 @@ func (sgpp *StarknetGauntletPlusPlus) execute(request *Request) error { // Show request body log.Info().Str("Request Body: ", string(tmp)).Msg("Gauntlet++") - headers := &g.PostExecuteParams{} response, err := sgpp.client.PostExecuteWithResponse(context.Background(), headers, *body) if err != nil { @@ -151,18 +162,30 @@ func (sgpp *StarknetGauntletPlusPlus) executeReturnsReport(request *Request) (g. tmp, err := json.Marshal(body) if err != nil { - return g.Report{}, err // Handle marshaling error + return g.Report{}, err // Handle marshaling error } // Show request body - log.Info().Str("Request Body: ", string(tmp)).Msg("Gauntlet++") + log.Info().Str("Request Body:", string(tmp)).Msg("Gauntlet++") + // Make the API call headers := &g.PostExecuteParams{} + response, err := sgpp.client.PostExecuteWithResponse(context.Background(), headers, *body) if err != nil { - return g.Report{}, err // Handle post execution error + return g.Report{}, err // Handle post execution error } + // Log the response body + responseJSON, err := json.Marshal(response.JSON200) // Marshal the JSON200 field to JSON string + if err != nil { + log.Error().Err(err).Msg("Failed to marshal response body") + return g.Report{}, err + } + + // Log the full response JSON + log.Info().Str("Response Body:", string(responseJSON)).Msg("Gauntlet++") + // Return the report from the response return *response.JSON200, nil } @@ -172,20 +195,22 @@ func (sgpp *StarknetGauntletPlusPlus) executeDeploy(request *Request) (string, e if err != nil { return "", err // Handle post execution error } + contractAddress, err := sgpp.ExtractValueFromResponseBody(report, "contractAddress") if err != nil { log.Err(err).Str("G++ Request returned with err", err.Error()).Msg("Gauntlet++") return "", err } + log.Info().Str("Contract Address Response: ", string(contractAddress)).Msg("Gauntlet++") return contractAddress, nil } -func (sgpp *StarknetGauntletPlusPlus) TransferToken(tokenAddress string, to string, from string) error { +func (sgpp *StarknetGauntletPlusPlus) TransferToken(tokenAddress string, to string, amount string) error { inputMap := map[string]interface{}{ - "to": to, - "from": from, "address": tokenAddress, + "to": to, + "amount": amount, } request := Request{ @@ -292,12 +317,6 @@ func (sgpp *StarknetGauntletPlusPlus) DeclareAccessControllerContract() error { } func (sgpp *StarknetGauntletPlusPlus) DeployAccessControllerContract(address string) (string, error) { - // Declare Contract first - err := sgpp.DeclareAccessControllerContract() - if err != nil { - return "", err - } - constructorCalldata := map[string]interface{}{ "owner": address, } @@ -306,7 +325,7 @@ func (sgpp *StarknetGauntletPlusPlus) DeployAccessControllerContract(address str } request := Request{ - Command: "starknet/token/link:declare", + Command: "starknet/data-feeds/access-controller@1.0.0:deploy", Input: inputMap, } return sgpp.executeDeploy(&request) @@ -330,10 +349,13 @@ func (sgpp *StarknetGauntletPlusPlus) DeployLinkTokenContract(address string) (s return "", err } - inputMap := map[string]interface{}{ + constructorCalldata := map[string]interface{}{ "minter": address, "owner": address, } + inputMap := map[string]interface{}{ + "constructorCalldata": &constructorCalldata, + } request := Request{ Command: "starknet/token/link:deploy", From 3fc6c3d7c83cbc6bb703ea9dafc5d76d5183a12a Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Sun, 1 Dec 2024 23:09:10 -0500 Subject: [PATCH 04/24] fixed linting --- ops/gauntlet/gauntlet_plus_plus_starknet.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index 095a63f37..b2bc05760 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "net/http" + "github.com/rs/zerolog/log" g "github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet/client" ) @@ -202,7 +203,7 @@ func (sgpp *StarknetGauntletPlusPlus) executeDeploy(request *Request) (string, e return "", err } - log.Info().Str("Contract Address Response: ", string(contractAddress)).Msg("Gauntlet++") + log.Info().Str("Contract Address Response: ", contractAddress).Msg("Gauntlet++") return contractAddress, nil } From 87d8b28d076d6afa0b41a4b668aaf6f6711d43dd Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Sun, 1 Dec 2024 23:15:29 -0500 Subject: [PATCH 05/24] Fixed imports for lint --- ops/gauntlet/gauntlet_plus_plus_starknet.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index b2bc05760..fed35ec28 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -5,8 +5,9 @@ import ( "encoding/json" "fmt" "net/http" - + "github.com/rs/zerolog/log" + g "github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet/client" ) From 0ca23bc6ab3259bc99b6e6631f79bee6046a01a5 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Sun, 1 Dec 2024 23:30:47 -0500 Subject: [PATCH 06/24] linting --- integration-tests/common/gauntlet_common.go | 6 +++--- .../common/gauntlet_plus_plus_common.go | 6 +++--- ops/gauntlet/gauntlet_plus_plus_starknet.go | 12 ++++++------ 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/integration-tests/common/gauntlet_common.go b/integration-tests/common/gauntlet_common.go index 05c8544f4..6d3b5255e 100644 --- a/integration-tests/common/gauntlet_common.go +++ b/integration-tests/common/gauntlet_common.go @@ -4,8 +4,8 @@ import ( "encoding/json" "errors" "fmt" - "os" "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" + "os" ) func (m *OCRv2TestState) fundNodes() ([]string, error) { @@ -114,7 +114,7 @@ func (m *OCRv2TestState) DeployGauntlet(minSubmissionValue int64, maxSubmissionV if err != nil { return err } - + err = m.deployAccessControllerWithGpp() if err != nil { return err @@ -125,7 +125,7 @@ func (m *OCRv2TestState) DeployGauntlet(minSubmissionValue int64, maxSubmissionV // } m.Contracts.OCRAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, - m.Contracts.LinkTokenAddr, m.Account.Account, m.Contracts.AccessControllerAddr) + m.Contracts.LinkTokenAddr, m.Account.Account, m.Contracts.AccessControllerAddr) if err != nil { return err } diff --git a/integration-tests/common/gauntlet_plus_plus_common.go b/integration-tests/common/gauntlet_plus_plus_common.go index fabc80f22..f0c992c7d 100644 --- a/integration-tests/common/gauntlet_plus_plus_common.go +++ b/integration-tests/common/gauntlet_plus_plus_common.go @@ -4,8 +4,8 @@ import ( "encoding/json" "errors" "fmt" - "os" "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" + "os" ) func (m *OCRv2TestState) fundNodesWithGPP() ([]string, error) { @@ -130,14 +130,14 @@ func (m *OCRv2TestState) DeployGauntletPP(minSubmissionValue int64, maxSubmissio if err != nil { return err } - + err = m.deployAccessControllerWithGpp() if err != nil { return err } m.Contracts.OCRAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, - m.Contracts.LinkTokenAddr, m.Account.Account, m.Contracts.AccessControllerAddr) + m.Contracts.LinkTokenAddr, m.Account.Account, m.Contracts.AccessControllerAddr) if err != nil { return err } diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index fed35ec28..085a7994c 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -164,7 +164,7 @@ func (sgpp *StarknetGauntletPlusPlus) executeReturnsReport(request *Request) (g. tmp, err := json.Marshal(body) if err != nil { - return g.Report{}, err // Handle marshaling error + return g.Report{}, err // Handle marshaling error } // Show request body @@ -175,16 +175,16 @@ func (sgpp *StarknetGauntletPlusPlus) executeReturnsReport(request *Request) (g. response, err := sgpp.client.PostExecuteWithResponse(context.Background(), headers, *body) if err != nil { - return g.Report{}, err // Handle post execution error + return g.Report{}, err // Handle post execution error } // Log the response body responseJSON, err := json.Marshal(response.JSON200) // Marshal the JSON200 field to JSON string if err != nil { - log.Error().Err(err).Msg("Failed to marshal response body") - return g.Report{}, err + log.Error().Err(err).Msg("Failed to marshal response body") + return g.Report{}, err } - + // Log the full response JSON log.Info().Str("Response Body:", string(responseJSON)).Msg("Gauntlet++") // Return the report from the response @@ -212,7 +212,7 @@ func (sgpp *StarknetGauntletPlusPlus) TransferToken(tokenAddress string, to stri inputMap := map[string]interface{}{ "address": tokenAddress, "to": to, - "amount": amount, + "amount": amount, } request := Request{ From bcaa5419d134feeef81d9159076caf1c72615e55 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Mon, 2 Dec 2024 00:14:02 -0500 Subject: [PATCH 07/24] Fixed type for set billing --- ops/gauntlet/gauntlet_plus_plus_starknet.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index 085a7994c..a9faa594d 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -389,8 +389,8 @@ func (sgpp *StarknetGauntletPlusPlus) SetOCRBilling(observationPaymentGjuels int txArgs := map[string]interface{}{ "transmissionPaymentGjuels": transmissionPaymentGjuels, "observationPaymentGjuels": observationPaymentGjuels, - "gasPerSignature": "0", - "gasBase": "0", + "gasPerSignature": 0, + "gasBase": 0, } inputMap := map[string]interface{}{ "address": ocrAddress, From 29f997502d1d5f5e1fe2c378a07945a3ca317962 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Mon, 2 Dec 2024 14:05:29 -0500 Subject: [PATCH 08/24] Aligning some things with G++ --- integration-tests/common/test_common.go | 19 +++++-- ops/gauntlet/gauntlet_plus_plus_starknet.go | 10 ++-- ops/test_helpers.go | 59 +++++++++++---------- 3 files changed, 54 insertions(+), 34 deletions(-) diff --git a/integration-tests/common/test_common.go b/integration-tests/common/test_common.go index b874b1a4a..f3f706f75 100644 --- a/integration-tests/common/test_common.go +++ b/integration-tests/common/test_common.go @@ -6,6 +6,7 @@ import ( "math/big" "net/http" "os" + "strings" "testing" "time" @@ -267,13 +268,14 @@ func (m *OCRv2TestState) LoadOCR2Config() (*ops.OCR2Config, error) { var txKeys []string var cfgKeys []string for i, key := range m.Clients.ChainlinkClient.NKeys { - offChaiNKeys = append(offChaiNKeys, key.OCR2Key.Data.Attributes.OffChainPublicKey) + // need to remove the prefix since legacy gauntlet did it pre op + // https://github.com/smartcontractkit/chainlink-starknet/blob/develop/packages-ts/starknet-gauntlet-ocr2/src/commands/ocr2/setConfig.ts#L124 + offChaiNKeys = append(offChaiNKeys, m.removeOCR2PrefixAndAddPrefix(key.OCR2Key.Data.Attributes.OffChainPublicKey, "ocr2off_starknet_", "")) peerIDs = append(peerIDs, key.PeerID) txKeys = append(txKeys, m.Clients.ChainlinkClient.AccountAddresses[i]) - onChaiNKeys = append(onChaiNKeys, key.OCR2Key.Data.Attributes.OnChainPublicKey) + onChaiNKeys = append(onChaiNKeys, m.removeOCR2PrefixAndAddPrefix(key.OCR2Key.Data.Attributes.OnChainPublicKey, "ocr2on_starknet_", "0x")) cfgKeys = append(cfgKeys, key.OCR2Key.Data.Attributes.ConfigPublicKey) } - var payload = ops.TestOCR2Config payload.Signers = onChaiNKeys payload.Transmitters = txKeys @@ -284,6 +286,16 @@ func (m *OCRv2TestState) LoadOCR2Config() (*ops.OCR2Config, error) { return &payload, nil } +func (m *OCRv2TestState) removeOCR2PrefixAndAddPrefix(k string, prefix string, newPrefix string) string { + // Print k for debugging before the modification + if strings.HasPrefix(k, prefix) { + fmt.Println("After:", newPrefix+k[len(prefix):]) + return newPrefix + k[len(prefix):] + } + + return k +} + func (m *OCRv2TestState) SetUpNodes() { err := m.Common.CreateJobsForContract(m.GetChainlinkClient(), m.Contracts.ObservationSource, m.Contracts.JuelsPerFeeCoinSource, m.Contracts.OCRAddr, m.Clients.ChainlinkClient.AccountAddresses) require.NoError(m.TestConfig.T, err, "Creating jobs should not fail") @@ -345,6 +357,7 @@ func (m *OCRv2TestState) ValidateRounds(rounds int, isSoak bool) error { if err != nil { return err } + resLINK, errLINK := m.Clients.StarknetClient.CallContract(ctx, starknet.CallOps{ ContractAddress: linkContractAddress, Selector: starknetutils.GetSelectorFromNameFelt("balance_of"), diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index a9faa594d..db3bdbb88 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -5,7 +5,7 @@ import ( "encoding/json" "fmt" "net/http" - + "time" "github.com/rs/zerolog/log" g "github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet/client" @@ -184,10 +184,13 @@ func (sgpp *StarknetGauntletPlusPlus) executeReturnsReport(request *Request) (g. log.Error().Err(err).Msg("Failed to marshal response body") return g.Report{}, err } + if (response.JSON200 == nil || response.JSON200.Id == "" || response == nil) { + time.Sleep(20*time.Minute) + } // Log the full response JSON log.Info().Str("Response Body:", string(responseJSON)).Msg("Gauntlet++") - // Return the report from the response + return *response.JSON200, nil } @@ -382,7 +385,8 @@ func (sgpp *StarknetGauntletPlusPlus) SetConfigDetails(cfg string, ocrAddress st Command: "starknet/data-feeds/aggregator@1.0.0:set-config", Input: inputMap, } - return sgpp.executeReturnsReport(&request) + test, testerr := sgpp.executeReturnsReport(&request) + return test, testerr } func (sgpp *StarknetGauntletPlusPlus) SetOCRBilling(observationPaymentGjuels int64, transmissionPaymentGjuels int64, ocrAddress string) (g.Report, error) { diff --git a/ops/test_helpers.go b/ops/test_helpers.go index 1264487b8..2fc70a169 100644 --- a/ops/test_helpers.go +++ b/ops/test_helpers.go @@ -12,22 +12,23 @@ type OCR2Config struct { } type OffchainConfig struct { - DeltaProgressNanoseconds int64 `json:"deltaProgressNanoseconds"` - DeltaResendNanoseconds int64 `json:"deltaResendNanoseconds"` - DeltaRoundNanoseconds int64 `json:"deltaRoundNanoseconds"` - DeltaGraceNanoseconds int `json:"deltaGraceNanoseconds"` - DeltaStageNanoseconds int64 `json:"deltaStageNanoseconds"` - RMax int `json:"rMax"` - S []int `json:"s"` - OffchainPublicKeys []string `json:"offchainPublicKeys"` - PeerIDs []string `json:"peerIds"` - ReportingPluginConfig *ReportingPluginConfig `json:"reportingPluginConfig"` - MaxDurationQueryNanoseconds int `json:"maxDurationQueryNanoseconds"` - MaxDurationObservationNanoseconds int `json:"maxDurationObservationNanoseconds"` - MaxDurationReportNanoseconds int `json:"maxDurationReportNanoseconds"` - MaxDurationShouldAcceptFinalizedReportNanoseconds int `json:"maxDurationShouldAcceptFinalizedReportNanoseconds"` - MaxDurationShouldTransmitAcceptedReportNanoseconds int `json:"maxDurationShouldTransmitAcceptedReportNanoseconds"` - ConfigPublicKeys []string `json:"configPublicKeys"` + DeltaProgress string `json:"deltaProgress"` + DeltaResend string `json:"deltaResend"` + DeltaRound string `json:"deltaRound"` + DeltaGrace string `json:"deltaGrace"` + DeltaStage string `json:"deltaStage"` + RMax int `json:"rMax"` + S []int `json:"s"` + OffchainPublicKeys []string `json:"offchainPublicKeys"` + PeerIDs []string `json:"peerIds"` + ReportingPluginConfig *ReportingPluginConfig `json:"reportingPluginConfig"` + MaxDurationQuery string `json:"maxDurationQuery"` + MaxDurationObservation string `json:"maxDurationObservation"` + MaxDurationReport string `json:"maxDurationReport"` + MaxDurationShouldAcceptFinalizedReport string `json:"maxDurationShouldAcceptFinalizedReport"` + MaxDurationShouldTransmitAcceptedReport string `json:"maxDurationShouldTransmitAcceptedReport"` + ConfigPublicKeys []string `json:"configPublicKeys"` + ConfigEncodingSecret string `json:"configEncodingSecret"` } type ReportingPluginConfig struct { @@ -45,13 +46,13 @@ var TestOCR2Config = OCR2Config{ OnchainConfig: "", OffchainConfig: &OffchainConfig{ // todo: increase delta round but decrease delta stage - DeltaProgressNanoseconds: 150000000000, // 120s - DeltaResendNanoseconds: 150000000000, // 150s - DeltaRoundNanoseconds: 90000000000, // 90s - DeltaGraceNanoseconds: 5000000000, // 5s - DeltaStageNanoseconds: 30000000000, // 20s - RMax: 5, - S: []int{1, 1}, // Needs to array with length of transmitting nodes + DeltaProgress: "120s", // 120s + DeltaResend: "150s", // 150s + DeltaRound: "90s", // 90s + DeltaGrace: "5s", // 5s + DeltaStage: "20s", // 20s + RMax: 5, + S: []int{1, 1}, // Needs to array with length of transmitting nodes // OffchainPublicKeys: offChainKeys, // user defined // PeerIDs: peerIds, // user defined ReportingPluginConfig: &ReportingPluginConfig{ @@ -61,12 +62,14 @@ var TestOCR2Config = OCR2Config{ AlphaAcceptPpb: 0, DeltaCNanoseconds: 1000000000, }, - MaxDurationQueryNanoseconds: 2000000000, - MaxDurationObservationNanoseconds: 1000000000, - MaxDurationReportNanoseconds: 2000000000, - MaxDurationShouldAcceptFinalizedReportNanoseconds: 2000000000, - MaxDurationShouldTransmitAcceptedReportNanoseconds: 2000000000, + MaxDurationQuery: "20s", + MaxDurationObservation: "10s", + MaxDurationReport: "20s", + MaxDurationShouldAcceptFinalizedReport: "20s", + MaxDurationShouldTransmitAcceptedReport: "20s", // ConfigPublicKeys: cfgKeys, // user defined + // https://github.com/smartcontractkit/gauntlet-plus-plus/blob/5faf35e1d372e3ae5388c295554aa4f87bc0ece0/packages-starknet/operations-data-feeds/tests/fixtures/offchain-config.fixture.ts#L23 + ConfigEncodingSecret: "abandon ability able about above absent absorb abstract absurd abuse access accident", }, OffchainConfigVersion: 2, Secret: "awe accuse polygon tonic depart acuity onyx inform bound gilbert expire", From 4b58ef7bb4d27cacdebe9bc186c99fd20f2127d4 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Mon, 2 Dec 2024 18:43:47 -0500 Subject: [PATCH 09/24] Keeping original mint token --- .../common/gauntlet_plus_plus_common.go | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/integration-tests/common/gauntlet_plus_plus_common.go b/integration-tests/common/gauntlet_plus_plus_common.go index f0c992c7d..94e076baf 100644 --- a/integration-tests/common/gauntlet_plus_plus_common.go +++ b/integration-tests/common/gauntlet_plus_plus_common.go @@ -60,7 +60,10 @@ func (m *OCRv2TestState) fundNodesWithGPP() ([]string, error) { } func (m *OCRv2TestState) deployAccessControllerWithGpp() error { - var err error + err := m.Clients.GauntletClient.InstallDependencies() + if err != nil { + return err + } err = m.Clients.GauntletPPClient.DeclareAccessControllerContract() if err != nil { return err @@ -152,20 +155,21 @@ func (m *OCRv2TestState) DeployGauntletPP(minSubmissionValue int64, maxSubmissio return err } - // _, err = m.Clients.GauntletClient.MintLinkToken(m.Contracts.LinkTokenAddr, m.Contracts.OCRAddr, "100000000000000000000") - // if err != nil { - // return err - // } - - // Gauntlet PP does not have a mint op. We will use devnet endpoint - _, err = m.TestConfig.Resty.R().SetBody(map[string]any{ - "address": m.Contracts.LinkTokenAddr, - "amount": 100000000000000000, - }).Post("/mint") + _, err = m.Clients.GauntletClient.MintLinkToken(m.Contracts.LinkTokenAddr, m.Contracts.OCRAddr, "100000000000000000000") if err != nil { return err } + // Gauntlet PP does not have a mint op. We will use devnet endpoint + // _, err = m.TestConfig.Resty.R().SetBody(map[string]any{ + // "address": m.Contracts.OCRAddr, + // "amount": 100000000000000000, + // "unit": "LINK", + // }).Post("/mint") + // if err != nil { + // return err + // } + _, err = m.Clients.GauntletPPClient.SetOCRBilling(observationPaymentGjuels, transmissionPaymentGjuels, m.Contracts.OCRAddr) if err != nil { return err From 98784d1cf09c4222bb45e2af01e6cac18cf12052 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 17:36:39 -0500 Subject: [PATCH 10/24] go mod and go sum to fix builds --- integration-tests/go.mod | 12 ++--- integration-tests/go.sum | 111 +++++++++++++++++++++++++++++++++++---- 2 files changed, 107 insertions(+), 16 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 974deaabd..3219f1358 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -13,12 +13,12 @@ require ( github.com/rs/zerolog v1.33.0 github.com/smartcontractkit/chainlink-common v0.3.1-0.20241127162636-07aa781ee1f4 github.com/smartcontractkit/chainlink-starknet/ops v0.0.0-20231205180940-ea2e3e916725 - github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202173512-57f57550ed4b + github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8 github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202173728-7a34cbe754c3 github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202173728-7a34cbe754c3 - github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202173728-7a34cbe754c3 + github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 go.uber.org/zap v1.27.0 @@ -305,7 +305,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect - github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a // indirect + github.com/leanovate/gopter v0.2.11 // indirect github.com/leodido/go-urn v1.4.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -397,9 +397,9 @@ require ( github.com/slack-go/slack v0.15.0 // indirect github.com/smartcontractkit/chain-selectors v1.0.31 // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241126213415-2f00a319d84b // indirect - github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202172838-adfb51eeee13 // indirect - github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241114154055-8d29ea018b57 // indirect + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241128080738-06bef8620ac6 // indirect + github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e // indirect + github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.0 // indirect github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 7dbc0dfc2..678db303e 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -16,6 +16,11 @@ cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKV cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= cloud.google.com/go/auth v0.10.1 h1:TnK46qldSfHWt2a0b/hciaiVJsmDXWy9FqyUan0uYiI= @@ -257,6 +262,7 @@ github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsy github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJRUA0wFAVE= github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= @@ -319,6 +325,7 @@ github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJ github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20 h1:N+3sFI5GUjRKBi+i0TxYVST9h4Ie192jJWpHvthBBgg= github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= @@ -367,6 +374,7 @@ github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= @@ -469,7 +477,9 @@ github.com/emicklei/go-restful/v3 v3.12.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRr github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.13.0 h1:HzkeUz1Knt+3bK+8LG1bxOO/jzWZmdxpwC51i202les= github.com/envoyproxy/go-control-plane v0.13.0/go.mod h1:GRaKG3dwvFoTg4nj7aXdZnvMg4d7nvT/wl9WgVXn3Q8= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= @@ -660,6 +670,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -722,6 +733,7 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -731,6 +743,10 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA= github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= @@ -754,6 +770,7 @@ github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07 github.com/gophercloud/gophercloud v1.13.0 h1:8iY9d1DAbzMW6Vok1AxbbK5ZaUjzMp0tdyt4fX9IeJ0= github.com/gophercloud/gophercloud v1.13.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4= @@ -1025,6 +1042,7 @@ github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -1037,8 +1055,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a h1:dHCfT5W7gghzPtfsW488uPmEOm85wewI+ypUwibyTdU= -github.com/leanovate/gopter v0.2.10-0.20210127095200-9abe2343507a/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= +github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= +github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= @@ -1062,6 +1080,7 @@ github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/z github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= @@ -1179,6 +1198,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20200213170602-2833bce08e4c/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E= github.com/nsf/jsondiff v0.0.0-20230430225905-43f6cf3098c1 h1:dOYG7LS/WK00RWZc8XGgcUTlTxpp3mKhdR2Q9z9HbXM= @@ -1237,6 +1258,7 @@ github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTK github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= @@ -1258,6 +1280,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1377,11 +1400,15 @@ github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFR github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= +github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/slack-go/slack v0.15.0 h1:LE2lj2y9vqqiOf+qIIy0GvEoxgF1N5yLGZffmEZykt0= @@ -1390,14 +1417,14 @@ github.com/smartcontractkit/chain-selectors v1.0.31 h1:oRHyK88KnsCh4OdU2hr0u70pm github.com/smartcontractkit/chain-selectors v1.0.31/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241126213415-2f00a319d84b h1:PRknL5FVq1raLtRKpgTaz4ru/BW4xCYRwGL8GwyR7iI= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241126213415-2f00a319d84b/go.mod h1:w0ryf2zD9DiXdXkD/KYPHu1vZnvoau2+gS84YQ0btcc= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241128080738-06bef8620ac6 h1:A/qi1YCY/9V9i/sthhizZCA0EECAcBfDKeA2w27H5fo= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241128080738-06bef8620ac6/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241127162636-07aa781ee1f4 h1:atCZ1jol7a+tdtgU/wNqXgliBun5H7BjGBicGL8Tj6o= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241127162636-07aa781ee1f4/go.mod h1:bQktEJf7sJ0U3SmIcXvbGUox7SmXcnSEZ4kUbT8R5Nk= -github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202172838-adfb51eeee13 h1:q33+qGVoGXe9kITZy9svfX2F1P3yj+ZKpLaCXmeZ4cE= -github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202172838-adfb51eeee13/go.mod h1:mUh5/woemsVaHgTorA080hrYmO3syBCmPdnWc/5dOqk= -github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241114154055-8d29ea018b57 h1:1BMTG66HnCIz+KMBWGvyzELNM6VHGwv2WKFhN7H49Sg= -github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241114154055-8d29ea018b57/go.mod h1:QPiorgpbLv4+Jn4YO6xxU4ftTu4T3QN8HwX3ImP59DE= +github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= +github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e/go.mod h1:mUh5/woemsVaHgTorA080hrYmO3syBCmPdnWc/5dOqk= +github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db h1:N1RH1hSr2ACzOFc9hkCcjE8pRBTdcU3p8nsTJByaLes= +github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db/go.mod h1:yjb9d4q7+m8aGbjfTbkNoNuA4PeSxcUszsSZHDrvS0E= github.com/smartcontractkit/chainlink-feeds v0.1.1 h1:JzvUOM/OgGQA1sOqTXXl52R6AnNt+Wg64sVG+XSA49c= github.com/smartcontractkit/chainlink-feeds v0.1.1/go.mod h1:55EZ94HlKCfAsUiKUTNI7QlE/3d3IwTlsU3YNa/nBb4= github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.0 h1:PBUaFfPLm+Efq7H9kdfGBivH+QhJ6vB5EZTR/sCZsxI= @@ -1416,8 +1443,8 @@ github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202173728-7a34cbe75 github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202173728-7a34cbe754c3/go.mod h1:kVkMVL2lwJqZaj6yaqHzuvSy4B2oarpHY/TDPeAs5c8= github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202173728-7a34cbe754c3 h1:+mwJ2jzjMpmHpBnQwg9JgVFoQzn/MezHALBE99kSPiM= github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202173728-7a34cbe754c3/go.mod h1:/eHHouA680YWTrJTAgwljKhSMbbcxXRu1p1/i80hGIU= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202173728-7a34cbe754c3 h1:XczUjekdOjARID4CeNN/cEJNxjkQs3qtkMt3BPe7hgA= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202173728-7a34cbe754c3/go.mod h1:jg5UiLc/v+IH6eWW1HZj56AFkViXXCEZB+sTmiMkQeY= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef h1:7hoCUObF3xsIfQ2Xi5Gv/F6yVxjPpLH9X2nfdazbpsw= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef/go.mod h1:ZcbO52Yt5ijSzPQQkb+WkQGBXpdtq1/7tL9iMQG/JdE= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3 h1:RIApVijvhHI6iW9pyT35Nk39rPGEC4TwVe/f+YA1G5k= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3/go.mod h1:oiUkQxoi0kZzbW125oIt4lr/pqaRSDol1rWHLCyqmNQ= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= @@ -1430,8 +1457,10 @@ github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20241009055228-33d0c0bf38de h1:6 github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20241009055228-33d0c0bf38de/go.mod h1:NSc7hgOQbXG3DAwkOdWnZzLTZENXSwDJ7Va1nBp0YU0= github.com/smartcontractkit/wsrpc v0.8.2 h1:XB/xcn/MMseHW+8JE8+a/rceA86ck7Ur6cEa9LiUC8M= github.com/smartcontractkit/wsrpc v0.8.2/go.mod h1:2u/wfnhl5R4RlSXseN4n6HHIWk8w1Am3AT6gWftQbNg= +github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= @@ -1443,6 +1472,7 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= @@ -1450,14 +1480,17 @@ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= @@ -1593,10 +1626,13 @@ go.dedis.ch/protobuf v1.0.11/go.mod h1:97QR256dnkimeNdfmURz0wAMNVbd1VmLXhG1CrTYr go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.14 h1:vHObSCxyB9zlF60w7qzAdTcGaglbJOpSj1Xj9+WGxq0= go.etcd.io/etcd/api/v3 v3.5.14/go.mod h1:BmtWcRlQvwa1h3G2jvKYwIQy4PkHlDej5t7uLMUdJUU= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.14 h1:SaNH6Y+rVEdxfpA2Jr5wkEvN6Zykme5+YnbCkxvuWxQ= go.etcd.io/etcd/client/pkg/v3 v3.5.14/go.mod h1:8uMgAokyG1czCtIdsq+AGyYQMvpIKnSvPjFMunkgeZI= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v3 v3.5.14 h1:CWfRs4FDaDoSz81giL7zPpZH2Z35tbOrAJkkjMqOupg= go.etcd.io/etcd/client/v3 v3.5.14/go.mod h1:k3XfdV/VIHy/97rqWjoUzrj9tk7GgJGH9J8L4dNXmAk= go.mongodb.org/mongo-driver v1.11.0/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= @@ -1609,6 +1645,7 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/collector/pdata v1.12.0 h1:Xx5VK1p4VO0md8MWm2icwC1MnJ7f8EimKItMWw46BmA= @@ -1686,6 +1723,7 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= @@ -1744,6 +1782,7 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -1752,9 +1791,12 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1794,8 +1836,11 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= @@ -1809,6 +1854,7 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= @@ -1817,6 +1863,13 @@ golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -1883,17 +1936,23 @@ golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210331175145-43e1dd70ce54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1929,6 +1988,7 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= @@ -1944,6 +2004,7 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= @@ -2004,12 +2065,19 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -2042,6 +2110,12 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.205.0 h1:LFaxkAIpDb/GsrWV20dMMo5MR0h8UARTbn24LmD+0Pg= google.golang.org/api v0.205.0/go.mod h1:NrK1EMqO8Xk6l6QwRAmrXXg2v6dzukhlOyvkYtnvUuc= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -2087,7 +2161,18 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38 h1:Q3nlH8iSQSRUwOskjbcSMcF2jiYMNiQYZ0c2KEJLKKU= google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38/go.mod h1:xBI+tzfqGGN2JBeSebfKXFSdBpWVQ7sLW40PTupVRm4= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= @@ -2109,9 +2194,14 @@ google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKa google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/stats/opentelemetry v0.0.0-20241022174616-4bb0170ac65f h1:TsfHqsKI7qhOoYugDRyFDSKAuzegDVmkSCpjUyLkb+8= @@ -2147,6 +2237,7 @@ gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:a gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= From 4eacd4b5431e21699d2328d556161b8226725992 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 18:00:12 -0500 Subject: [PATCH 11/24] removed legacy gauntlet --- integration-tests/common/gauntlet_common.go | 165 -------------------- ops/gauntlet/gauntlet_starknet.go | 108 ------------- 2 files changed, 273 deletions(-) delete mode 100644 integration-tests/common/gauntlet_common.go diff --git a/integration-tests/common/gauntlet_common.go b/integration-tests/common/gauntlet_common.go deleted file mode 100644 index 6d3b5255e..000000000 --- a/integration-tests/common/gauntlet_common.go +++ /dev/null @@ -1,165 +0,0 @@ -package common - -import ( - "encoding/json" - "errors" - "fmt" - "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" - "os" -) - -func (m *OCRv2TestState) fundNodes() ([]string, error) { - l := utils.GetTestLogger(m.TestConfig.T) - var nAccounts []string - for _, key := range m.GetNodeKeys() { - if key.TXKey.Data.Attributes.StarkKey == "" { - return nil, errors.New("stark key can't be empty") - } - //nAccount, err := m.Clients.GauntletClient.DeployAccountContract(100, key.TXKey.Data.Attributes.StarkKey) - nAccount, err := m.Clients.GauntletPPClient.DeployOzAccount(key.TXKey.Data.Attributes.StarkKey) - if err != nil { - return nil, err - } - nAccounts = append(nAccounts, nAccount) - } - - if *m.Common.TestConfig.Common.Network == "testnet" { - for _, key := range nAccounts { - // We are not deploying in parallel here due to testnet limitations (429 too many requests) - l.Debug().Msg(fmt.Sprintf("Funding node with address: %s", key)) - //_, err := m.Clients.GauntletClient.TransferToken(m.Common.ChainDetails.StarkTokenAddress, key, "10000000000000000000") // Transferring 10 STRK to each node - err := m.Clients.GauntletPPClient.TransferToken(m.Common.ChainDetails.StarkTokenAddress, key, "10000000000000000000") - if err != nil { - return nil, err - } - } - } else { - // The starknet provided mint method does not work so we send a req directly - for _, key := range nAccounts { - res, err := m.TestConfig.Resty.R().SetBody(map[string]any{ - "address": key, - "amount": 900000000000000000, - }).Post("/mint") - if err != nil { - return nil, err - } - l.Info().Msg(fmt.Sprintf("Funding account (WEI): %s", string(res.Body()))) - res, err = m.TestConfig.Resty.R().SetBody(map[string]any{ - "address": key, - "amount": 900000000000000000, - "unit": m.Common.ChainDetails.TokenName, - }).Post("/mint") - if err != nil { - return nil, err - } - l.Info().Msg(fmt.Sprintf("Funding account (FRI): %s", string(res.Body()))) - } - } - - return nAccounts, nil -} - -func (m *OCRv2TestState) deployLinkToken() error { - var err error - m.Contracts.LinkTokenAddr, err = m.Clients.GauntletClient.DeployLinkTokenContract() - if err != nil { - return err - } - err = os.Setenv("LINK", m.Contracts.LinkTokenAddr) - if err != nil { - return err - } - return nil -} - -func (m *OCRv2TestState) deployAccessController() error { - var err error - m.Contracts.AccessControllerAddr, err = m.Clients.GauntletClient.DeployAccessControllerContract() - if err != nil { - return err - } - err = os.Setenv("BILLING_ACCESS_CONTROLLER", m.Contracts.AccessControllerAddr) - if err != nil { - return err - } - return nil -} - -func (m *OCRv2TestState) setConfigDetails(ocrAddress string) error { - cfg, err := m.LoadOCR2Config() - if err != nil { - return err - } - var parsedConfig []byte - parsedConfig, err = json.Marshal(cfg) - if err != nil { - return err - } - _, err = m.Clients.GauntletClient.SetConfigDetails(string(parsedConfig), ocrAddress) - return err -} - -func (m *OCRv2TestState) DeployGauntlet(minSubmissionValue int64, maxSubmissionValue int64, decimals int, name string, observationPaymentGjuels int64, transmissionPaymentGjuels int64) error { - err := m.Clients.GauntletClient.InstallDependencies() - if err != nil { - return err - } - - m.Clients.ChainlinkClient.AccountAddresses, err = m.fundNodes() - if err != nil { - return err - } - - err = m.deployLinkTokenWithGpp() - if err != nil { - return err - } - - err = m.deployAccessControllerWithGpp() - if err != nil { - return err - } - // m.Contracts.OCRAddr, err = m.Clients.GauntletClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, m.Contracts.LinkTokenAddr) - // if err != nil { - // return err - // } - - m.Contracts.OCRAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerContract(minSubmissionValue, maxSubmissionValue, decimals, name, - m.Contracts.LinkTokenAddr, m.Account.Account, m.Contracts.AccessControllerAddr) - if err != nil { - return err - } - - // m.Contracts.ProxyAddr, err = m.Clients.GauntletClient.DeployOCR2ProxyContract(m.Contracts.OCRAddr) - // if err != nil { - // return err - // } - - m.Contracts.ProxyAddr, err = m.Clients.GauntletPPClient.DeployOCR2ControllerProxyContract(m.Account.Account, m.Contracts.OCRAddr) - if err != nil { - return err - } - - // _, err = m.Clients.GauntletClient.AddAccess(m.Contracts.OCRAddr, m.Contracts.ProxyAddr) - // if err != nil { - // return err - // } - - err = m.Clients.GauntletPPClient.AddAccess(m.Contracts.OCRAddr, m.Contracts.ProxyAddr) - if err != nil { - return err - } - - _, err = m.Clients.GauntletClient.MintLinkToken(m.Contracts.LinkTokenAddr, m.Contracts.OCRAddr, "100000000000000000000") - if err != nil { - return err - } - - _, err = m.Clients.GauntletPPClient.SetOCRBilling(observationPaymentGjuels, transmissionPaymentGjuels, m.Contracts.OCRAddr) - if err != nil { - return err - } - - err = m.setConfigDetails(m.Contracts.OCRAddr) - return err -} diff --git a/ops/gauntlet/gauntlet_starknet.go b/ops/gauntlet/gauntlet_starknet.go index ee0145ec0..dfb27cb9a 100644 --- a/ops/gauntlet/gauntlet_starknet.go +++ b/ops/gauntlet/gauntlet_starknet.go @@ -94,30 +94,6 @@ func (sg *StarknetGauntlet) InstallDependencies() error { return nil } -func (sg *StarknetGauntlet) DeployAccountContract(salt int64, pubKey string) (string, error) { - _, err := sg.G.ExecCommand([]string{"account:deploy", fmt.Sprintf("--salt=%d", salt), fmt.Sprintf("--publicKey=%s", pubKey)}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - -func (sg *StarknetGauntlet) DeployLinkTokenContract() (string, error) { - _, err := sg.G.ExecCommand([]string{"token:deploy", "--link"}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - func (sg *StarknetGauntlet) MintLinkToken(token, to, amount string) (string, error) { _, err := sg.G.ExecCommand([]string{"token:mint", fmt.Sprintf("--recipient=%s", to), fmt.Sprintf("--amount=%s", amount), token}, *sg.options) if err != nil { @@ -129,87 +105,3 @@ func (sg *StarknetGauntlet) MintLinkToken(token, to, amount string) (string, err } return sg.gr.Responses[0].Contract, nil } - -func (sg *StarknetGauntlet) TransferToken(token, to, amount string) (string, error) { - _, err := sg.G.ExecCommand([]string{"token:transfer", fmt.Sprintf("--recipient=%s", to), fmt.Sprintf("--amount=%s", amount), token}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - -func (sg *StarknetGauntlet) DeployOCR2ControllerContract(minSubmissionValue int64, maxSubmissionValue int64, decimals int, name string, linkTokenAddress string) (string, error) { - _, err := sg.G.ExecCommand([]string{"ocr2:deploy", fmt.Sprintf("--minSubmissionValue=%d", minSubmissionValue), fmt.Sprintf("--maxSubmissionValue=%d", maxSubmissionValue), fmt.Sprintf("--decimals=%d", decimals), fmt.Sprintf("--name=%s", name), fmt.Sprintf("--link=%s", linkTokenAddress)}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - -func (sg *StarknetGauntlet) DeployAccessControllerContract() (string, error) { - _, err := sg.G.ExecCommand([]string{"access_controller:deploy"}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - -func (sg *StarknetGauntlet) DeployOCR2ProxyContract(aggregator string) (string, error) { - _, err := sg.G.ExecCommand([]string{"proxy:deploy", fmt.Sprintf("--address=%s", aggregator)}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - -func (sg *StarknetGauntlet) SetOCRBilling(observationPaymentGjuels int64, transmissionPaymentGjuels int64, ocrAddress string) (string, error) { - _, err := sg.G.ExecCommand([]string{"ocr2:set_billing", fmt.Sprintf("--observationPaymentGjuels=%d", observationPaymentGjuels), fmt.Sprintf("--transmissionPaymentGjuels=%d", transmissionPaymentGjuels), ocrAddress}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - -func (sg *StarknetGauntlet) SetConfigDetails(cfg string, ocrAddress string) (string, error) { - _, err := sg.G.ExecCommand([]string{"ocr2:set_config", "--input=" + cfg, ocrAddress}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} - -func (sg *StarknetGauntlet) AddAccess(aggregator, address string) (string, error) { - _, err := sg.G.ExecCommand([]string{"ocr2:add_access", fmt.Sprintf("--address=%s", address), aggregator}, *sg.options) - if err != nil { - return "", err - } - sg.gr, err = sg.FetchGauntletJSONOutput() - if err != nil { - return "", err - } - return sg.gr.Responses[0].Contract, nil -} From 67510267aa36ece1346479882f05312b4efc4543 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 18:11:36 -0500 Subject: [PATCH 12/24] Bumped chainlink versions --- integration-tests/go.mod | 11 +++++------ integration-tests/go.sum | 13 ++++++++----- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 3219f1358..f9fbbf4e5 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -16,8 +16,8 @@ require ( github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8 github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 - github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202173728-7a34cbe754c3 - github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202173728-7a34cbe754c3 + github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202214607-fa346afd62ef + github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 @@ -27,6 +27,9 @@ require ( ) require ( + cloud.google.com/go/auth v0.10.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect + cloud.google.com/go/compute/metadata v0.5.2 // indirect contrib.go.opencensus.io/exporter/stackdriver v0.13.5 // indirect cosmossdk.io/api v0.3.1 // indirect cosmossdk.io/core v0.5.1 // indirect @@ -48,8 +51,6 @@ require ( github.com/CosmWasm/wasmd v0.40.1 // indirect github.com/CosmWasm/wasmvm v1.2.4 // indirect github.com/DataDog/zstd v1.5.2 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0 // indirect github.com/Khan/genqlient v0.7.0 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect @@ -227,7 +228,6 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/gax-go/v2 v2.14.0 // indirect github.com/gorilla/context v1.1.1 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/securecookie v1.1.2 // indirect @@ -502,7 +502,6 @@ require ( golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect gonum.org/v1/gonum v0.15.1 // indirect - google.golang.org/api v0.205.0 // indirect google.golang.org/genproto v0.0.0-20241021214115-324edc3d5d38 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 678db303e..8b56c9134 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -33,7 +33,6 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.28.1 h1:XwPcZjgMCnU2tkwY10VleUjSAfpTj9RDn+kGrbYsi8o= cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= @@ -1413,6 +1412,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/slack-go/slack v0.15.0 h1:LE2lj2y9vqqiOf+qIIy0GvEoxgF1N5yLGZffmEZykt0= github.com/slack-go/slack v0.15.0/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= +github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240926212305-a6deabdfce86 h1:qQH6fZZe31nBAG6INHph3z5ysDTPptyu0TR9uoJ1+ok= +github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240926212305-a6deabdfce86/go.mod h1:WtWOoVQQEHxRHL2hNmuRrvDfYfQG/CioFNoa9Rr2mBE= github.com/smartcontractkit/chain-selectors v1.0.31 h1:oRHyK88KnsCh4OdU2hr0u70pm3KUgyMDyK0v0aOtUk4= github.com/smartcontractkit/chain-selectors v1.0.31/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= @@ -1427,6 +1428,8 @@ github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db/go.mod h1:yjb9d4q7+m8aGbjfTbkNoNuA4PeSxcUszsSZHDrvS0E= github.com/smartcontractkit/chainlink-feeds v0.1.1 h1:JzvUOM/OgGQA1sOqTXXl52R6AnNt+Wg64sVG+XSA49c= github.com/smartcontractkit/chainlink-feeds v0.1.1/go.mod h1:55EZ94HlKCfAsUiKUTNI7QlE/3d3IwTlsU3YNa/nBb4= +github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 h1:0ewLMbAz3rZrovdRUCgd028yOXX8KigB4FndAUdI2kM= +github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0/go.mod h1:/dVVLXrsp+V0AbcYGJo3XMzKg3CkELsweA/TTopCsKE= github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.0 h1:PBUaFfPLm+Efq7H9kdfGBivH+QhJ6vB5EZTR/sCZsxI= github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.0/go.mod h1:m/A3lqD7ms/RsQ9BT5P2uceYY0QX5mIt4KQxT2G6qEo= github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525 h1:eiiNAGa5aa6EpE3JxQN2OFa7bD+s1rcYxSJYhNDpTmI= @@ -1439,10 +1442,10 @@ github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 h1:yB1x5UXv github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9/go.mod h1:lJk0atEJ5Zyo3Tqrmf1Pl9jUEe79EgDb9bD3K5OTUBI= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2 h1:7bCdbTUWzyczQg+kwHCxlx6y07zE8HNB8+ntTne6qd8= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2/go.mod h1:MltlNu3jcXm/DyLN98I5TFNtu/o1NNAcaPAFKMXWk70= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202173728-7a34cbe754c3 h1:1lCOspr67wsSGED7hdz09yIii8p5JzcksG93TpYPChg= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202173728-7a34cbe754c3/go.mod h1:kVkMVL2lwJqZaj6yaqHzuvSy4B2oarpHY/TDPeAs5c8= -github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202173728-7a34cbe754c3 h1:+mwJ2jzjMpmHpBnQwg9JgVFoQzn/MezHALBE99kSPiM= -github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202173728-7a34cbe754c3/go.mod h1:/eHHouA680YWTrJTAgwljKhSMbbcxXRu1p1/i80hGIU= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202214607-fa346afd62ef h1:ST4Vs9YuYxcV8G+U7CbSwT3kfN9x/6Vloz1bhlLgysw= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202214607-fa346afd62ef/go.mod h1:b8hru6qpmVpMwG2bKGPNc1cVjKsQX6HkD2WDgTPpXd4= +github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef h1:wXQwYOEYZHyZ9F3yCkGD1wFW3tJoI1LaRyyPxK0+PsE= +github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef/go.mod h1:gZngC8xjWzpTxzIbgtnzAMk9yYajmhP/iOQ5MFNqLbY= github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef h1:7hoCUObF3xsIfQ2Xi5Gv/F6yVxjPpLH9X2nfdazbpsw= github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef/go.mod h1:ZcbO52Yt5ijSzPQQkb+WkQGBXpdtq1/7tL9iMQG/JdE= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3 h1:RIApVijvhHI6iW9pyT35Nk39rPGEC4TwVe/f+YA1G5k= From 33c9cd7d6fc4e1d1bf78b1fee23425a22cea13b0 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 18:39:48 -0500 Subject: [PATCH 13/24] bump versions --- integration-tests/go.mod | 6 +++--- integration-tests/go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index f9fbbf4e5..5d210fc50 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -16,9 +16,9 @@ require ( github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8 github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 - github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202214607-fa346afd62ef + github.com/smartcontractkit/chainlink/deployment v0.0.0-20241203233234-baf88355a2d3 github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef - github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef + github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241203233234-baf88355a2d3 github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 go.uber.org/zap v1.27.0 @@ -397,7 +397,7 @@ require ( github.com/slack-go/slack v0.15.0 // indirect github.com/smartcontractkit/chain-selectors v1.0.31 // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241128080738-06bef8620ac6 // indirect + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241203195251-42088b33c826 // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 8b56c9134..0da4b73f2 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1418,8 +1418,8 @@ github.com/smartcontractkit/chain-selectors v1.0.31 h1:oRHyK88KnsCh4OdU2hr0u70pm github.com/smartcontractkit/chain-selectors v1.0.31/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241128080738-06bef8620ac6 h1:A/qi1YCY/9V9i/sthhizZCA0EECAcBfDKeA2w27H5fo= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241128080738-06bef8620ac6/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241203195251-42088b33c826 h1:AvqLYQTwoarnPDuBuvjQo0yJSXIcQErWA9UFTeaahlo= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241203195251-42088b33c826/go.mod h1:80vGBbOfertJig0xFKsRfm+i17FkjdKkk1dAaGE45Os= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241127162636-07aa781ee1f4 h1:atCZ1jol7a+tdtgU/wNqXgliBun5H7BjGBicGL8Tj6o= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241127162636-07aa781ee1f4/go.mod h1:bQktEJf7sJ0U3SmIcXvbGUox7SmXcnSEZ4kUbT8R5Nk= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= @@ -1442,12 +1442,12 @@ github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 h1:yB1x5UXv github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9/go.mod h1:lJk0atEJ5Zyo3Tqrmf1Pl9jUEe79EgDb9bD3K5OTUBI= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2 h1:7bCdbTUWzyczQg+kwHCxlx6y07zE8HNB8+ntTne6qd8= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2/go.mod h1:MltlNu3jcXm/DyLN98I5TFNtu/o1NNAcaPAFKMXWk70= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202214607-fa346afd62ef h1:ST4Vs9YuYxcV8G+U7CbSwT3kfN9x/6Vloz1bhlLgysw= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241202214607-fa346afd62ef/go.mod h1:b8hru6qpmVpMwG2bKGPNc1cVjKsQX6HkD2WDgTPpXd4= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241203233234-baf88355a2d3 h1:S5TG7SoXQfT8KSfhBWAP8iqJsenHcFFQ51ncGImK++c= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241203233234-baf88355a2d3/go.mod h1:67nVlJjxzVi3F8T++NWsGjbs7M+PmJcgYQ6wYbXuJM0= github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef h1:wXQwYOEYZHyZ9F3yCkGD1wFW3tJoI1LaRyyPxK0+PsE= github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef/go.mod h1:gZngC8xjWzpTxzIbgtnzAMk9yYajmhP/iOQ5MFNqLbY= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef h1:7hoCUObF3xsIfQ2Xi5Gv/F6yVxjPpLH9X2nfdazbpsw= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241202214607-fa346afd62ef/go.mod h1:ZcbO52Yt5ijSzPQQkb+WkQGBXpdtq1/7tL9iMQG/JdE= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241203233234-baf88355a2d3 h1:CHW3xP7/VCDc2qKLj3s04Pz2A0g+Zrtl7YywCj7hYb4= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241203233234-baf88355a2d3/go.mod h1:iAMDO71kQEq9Spz2GVR50lKsWwVeaocRFs/BQNZ5KHQ= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3 h1:RIApVijvhHI6iW9pyT35Nk39rPGEC4TwVe/f+YA1G5k= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3/go.mod h1:oiUkQxoi0kZzbW125oIt4lr/pqaRSDol1rWHLCyqmNQ= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= From 7a3f63cf6fcf8730c8bce1df019a1f8a649ee835 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 18:47:57 -0500 Subject: [PATCH 14/24] linting --- ops/gauntlet/gauntlet_plus_plus_starknet.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index db3bdbb88..a54b2e4a6 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -6,6 +6,7 @@ import ( "fmt" "net/http" "time" + "github.com/rs/zerolog/log" g "github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet/client" @@ -184,8 +185,8 @@ func (sgpp *StarknetGauntletPlusPlus) executeReturnsReport(request *Request) (g. log.Error().Err(err).Msg("Failed to marshal response body") return g.Report{}, err } - if (response.JSON200 == nil || response.JSON200.Id == "" || response == nil) { - time.Sleep(20*time.Minute) + if response.JSON200 == nil || response.JSON200.Id == "" || response == nil { + time.Sleep(20 * time.Minute) } // Log the full response JSON From b6f3b6656c216b8d8840bafe42a63038df5da027 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 18:52:10 -0500 Subject: [PATCH 15/24] removed comment --- integration-tests/common/gauntlet_plus_plus_common.go | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/integration-tests/common/gauntlet_plus_plus_common.go b/integration-tests/common/gauntlet_plus_plus_common.go index 94e076baf..8d95cdf7d 100644 --- a/integration-tests/common/gauntlet_plus_plus_common.go +++ b/integration-tests/common/gauntlet_plus_plus_common.go @@ -155,21 +155,12 @@ func (m *OCRv2TestState) DeployGauntletPP(minSubmissionValue int64, maxSubmissio return err } + // Gauntlet PP does not have a mint op. We will use legacy gauntlet until we implement one _, err = m.Clients.GauntletClient.MintLinkToken(m.Contracts.LinkTokenAddr, m.Contracts.OCRAddr, "100000000000000000000") if err != nil { return err } - // Gauntlet PP does not have a mint op. We will use devnet endpoint - // _, err = m.TestConfig.Resty.R().SetBody(map[string]any{ - // "address": m.Contracts.OCRAddr, - // "amount": 100000000000000000, - // "unit": "LINK", - // }).Post("/mint") - // if err != nil { - // return err - // } - _, err = m.Clients.GauntletPPClient.SetOCRBilling(observationPaymentGjuels, transmissionPaymentGjuels, m.Contracts.OCRAddr) if err != nil { return err From 97aef918be884862685dbc0bb1997dce1f043bca Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 19:09:01 -0500 Subject: [PATCH 16/24] Linting --- integration-tests/common/gauntlet_plus_plus_common.go | 3 ++- integration-tests/smoke/ocr2_test.go | 4 ++-- integration-tests/soak/ocr2_test.go | 4 ++-- integration-tests/testconfig/testconfig.go | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/integration-tests/common/gauntlet_plus_plus_common.go b/integration-tests/common/gauntlet_plus_plus_common.go index 8d95cdf7d..bf002d0db 100644 --- a/integration-tests/common/gauntlet_plus_plus_common.go +++ b/integration-tests/common/gauntlet_plus_plus_common.go @@ -4,8 +4,9 @@ import ( "encoding/json" "errors" "fmt" - "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" "os" + + "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" ) func (m *OCRv2TestState) fundNodesWithGPP() ([]string, error) { diff --git a/integration-tests/smoke/ocr2_test.go b/integration-tests/smoke/ocr2_test.go index bde26a76f..5f8c6ceb7 100644 --- a/integration-tests/smoke/ocr2_test.go +++ b/integration-tests/smoke/ocr2_test.go @@ -75,8 +75,8 @@ func TestOCRBasic(t *testing.T) { state.DeployCluster() // Setting up G++ Client rpcURL := state.Common.RPCDetails.RPCL2Internal - gppUrl := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl - state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppUrl, rpcURL, state.Account.Account, state.Account.PrivateKey) + gppURL := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl + state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppURL, rpcURL, state.Account.Account, state.Account.PrivateKey) require.NoError(t, err, "Setting up gauntlet++ should not fail") state.Clients.GauntletClient, err = gauntlet.NewStarknetGauntlet(fmt.Sprintf("%s/", utils.ProjectRoot)) diff --git a/integration-tests/soak/ocr2_test.go b/integration-tests/soak/ocr2_test.go index 2d96b44ac..c787bca98 100644 --- a/integration-tests/soak/ocr2_test.go +++ b/integration-tests/soak/ocr2_test.go @@ -80,8 +80,8 @@ func TestOCRBasicSoak(t *testing.T) { // Setting up G++ Client rpcURL := state.Common.RPCDetails.RPCL2Internal - gppUrl := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl - state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppUrl, rpcURL, state.Account.Account, state.Account.PrivateKey) + gppURL := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl + state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppURL, rpcURL, state.Account.Account, state.Account.PrivateKey) require.NoError(t, err, "Setting up gauntlet++ should not fail") state.Clients.GauntletClient, err = gauntlet.NewStarknetGauntlet(fmt.Sprintf("%s/", utils.ProjectRoot)) diff --git a/integration-tests/testconfig/testconfig.go b/integration-tests/testconfig/testconfig.go index 5b84c14a7..c5c629e4d 100644 --- a/integration-tests/testconfig/testconfig.go +++ b/integration-tests/testconfig/testconfig.go @@ -192,7 +192,7 @@ type Common struct { DevnetImage *string `toml:"devnet_image"` GauntletPlusPlusImage *string `toml:"gauntlet_plus_plus_image"` PostgresVersion *string `toml:"postgres_version"` - GauntletPlusPlusUrl string + GauntletPlusPlusUrl string } func (c *Common) Validate() error { From c3d22e74c8bcba8e03ffbc43bda731f7e7d6a0f6 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 21:33:54 -0500 Subject: [PATCH 17/24] Better error catching --- .../common/gauntlet_plus_plus_common.go | 2 +- integration-tests/common/test_common.go | 5 +- integration-tests/smoke/ocr2_test.go | 2 +- integration-tests/soak/ocr2_test.go | 2 +- integration-tests/testconfig/testconfig.go | 2 +- ops/gauntlet/gauntlet_plus_plus_starknet.go | 60 ++++++++++++++----- 6 files changed, 51 insertions(+), 22 deletions(-) diff --git a/integration-tests/common/gauntlet_plus_plus_common.go b/integration-tests/common/gauntlet_plus_plus_common.go index bf002d0db..e0dafe710 100644 --- a/integration-tests/common/gauntlet_plus_plus_common.go +++ b/integration-tests/common/gauntlet_plus_plus_common.go @@ -5,7 +5,7 @@ import ( "errors" "fmt" "os" - + "github.com/smartcontractkit/chainlink-starknet/integration-tests/utils" ) diff --git a/integration-tests/common/test_common.go b/integration-tests/common/test_common.go index f3f706f75..3905451ae 100644 --- a/integration-tests/common/test_common.go +++ b/integration-tests/common/test_common.go @@ -242,7 +242,7 @@ func (m *OCRv2TestState) DeployCluster() { func (m *OCRv2TestState) StartGppWithoutNetwork() { gpp := test_env_gauntlet.NewGauntletPlusPlus([]string{}, *m.Common.TestConfig.Common.GauntletPlusPlusImage) url, err := gpp.StartContainer() - m.TestConfig.TestConfig.Common.GauntletPlusPlusUrl = url + m.TestConfig.TestConfig.Common.GauntletPlusPlusURL = url require.NoError(m.TestConfig.T, err) } @@ -250,7 +250,7 @@ func (m *OCRv2TestState) StartGppWithoutNetwork() { func (m *OCRv2TestState) StartGppWithNetwork(networkName string) { gpp := test_env_gauntlet.NewGauntletPlusPlus([]string{networkName}, *m.Common.TestConfig.Common.GauntletPlusPlusImage) url, err := gpp.StartContainer() - m.TestConfig.TestConfig.Common.GauntletPlusPlusUrl = url + m.TestConfig.TestConfig.Common.GauntletPlusPlusURL = url require.NoError(m.TestConfig.T, err) } @@ -289,7 +289,6 @@ func (m *OCRv2TestState) LoadOCR2Config() (*ops.OCR2Config, error) { func (m *OCRv2TestState) removeOCR2PrefixAndAddPrefix(k string, prefix string, newPrefix string) string { // Print k for debugging before the modification if strings.HasPrefix(k, prefix) { - fmt.Println("After:", newPrefix+k[len(prefix):]) return newPrefix + k[len(prefix):] } diff --git a/integration-tests/smoke/ocr2_test.go b/integration-tests/smoke/ocr2_test.go index 5f8c6ceb7..d186383f1 100644 --- a/integration-tests/smoke/ocr2_test.go +++ b/integration-tests/smoke/ocr2_test.go @@ -75,7 +75,7 @@ func TestOCRBasic(t *testing.T) { state.DeployCluster() // Setting up G++ Client rpcURL := state.Common.RPCDetails.RPCL2Internal - gppURL := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl + gppURL := state.TestConfig.TestConfig.Common.GauntletPlusPlusURL state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppURL, rpcURL, state.Account.Account, state.Account.PrivateKey) require.NoError(t, err, "Setting up gauntlet++ should not fail") diff --git a/integration-tests/soak/ocr2_test.go b/integration-tests/soak/ocr2_test.go index c787bca98..a6f0bf908 100644 --- a/integration-tests/soak/ocr2_test.go +++ b/integration-tests/soak/ocr2_test.go @@ -80,7 +80,7 @@ func TestOCRBasicSoak(t *testing.T) { // Setting up G++ Client rpcURL := state.Common.RPCDetails.RPCL2Internal - gppURL := state.TestConfig.TestConfig.Common.GauntletPlusPlusUrl + gppURL := state.TestConfig.TestConfig.Common.GauntletPlusPlusURL state.Clients.GauntletPPClient, err = gauntlet.NewStarknetGauntletPlusPlus(gppURL, rpcURL, state.Account.Account, state.Account.PrivateKey) require.NoError(t, err, "Setting up gauntlet++ should not fail") diff --git a/integration-tests/testconfig/testconfig.go b/integration-tests/testconfig/testconfig.go index c5c629e4d..ddb0559c7 100644 --- a/integration-tests/testconfig/testconfig.go +++ b/integration-tests/testconfig/testconfig.go @@ -192,7 +192,7 @@ type Common struct { DevnetImage *string `toml:"devnet_image"` GauntletPlusPlusImage *string `toml:"gauntlet_plus_plus_image"` PostgresVersion *string `toml:"postgres_version"` - GauntletPlusPlusUrl string + GauntletPlusPlusURL string } func (c *Common) Validate() error { diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index a54b2e4a6..6437309d8 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -95,12 +95,11 @@ func NewStarknetGauntletPlusPlus(gauntletPPEndpoint string, rpcURL string, addre func (sgpp *StarknetGauntletPlusPlus) ExtractValueFromResponseBody(report g.Report, key string) (string, error) { if report.Output != nil { // Log the raw content of Output - outputJSON, err := json.Marshal(report.Output) + _, err := json.Marshal(report.Output) if err != nil { log.Error().Err(err).Msg("Failed to marshal report.Output") return "", err } - log.Info().Str("Report.Output", string(outputJSON)).Msg("Gauntlet++") // Attempt to assert the Output as a map if outputMap, ok := (*report.Output).(map[string]interface{}); ok { @@ -110,9 +109,10 @@ func (sgpp *StarknetGauntletPlusPlus) ExtractValueFromResponseBody(report g.Repo // Assert value to a string if strValue, ok := value.(string); ok { return strValue, nil - } + } else { err := fmt.Errorf("parsed Value is not of type string") return "", err + } } } else { // Log a message if it’s not a map @@ -140,23 +140,48 @@ func (sgpp *StarknetGauntletPlusPlus) BuildRequestBody(request Request) *g.PostE } func (sgpp *StarknetGauntletPlusPlus) execute(request *Request) error { - body := sgpp.BuildRequestBody(*request) + report, err := sgpp.executeReturnsReport(request) - tmp, err := json.Marshal(body) - if err != nil { - return err // Handle marshaling error - } - - // Show request body - log.Info().Str("Request Body: ", string(tmp)).Msg("Gauntlet++") - headers := &g.PostExecuteParams{} - response, err := sgpp.client.PostExecuteWithResponse(context.Background(), headers, *body) if err != nil { return err // Handle post execution error } - // Show Response Status - log.Info().Str("Response Status:", response.Status()).Msg("Gauntlet++") + if report.Output != nil { + _, err := json.Marshal(report.Output) + if err != nil { + log.Error().Err(err).Msg("Failed to marshal report.Output") + return err + } + + // Attempt to assert the Output as a map + if outputMap, ok := (*report.Output).(map[string]interface{}); ok { + log.Info().Interface("Report Response: ", outputMap).Msg("Gauntlet++") + + // Access the 'output' field and then the 'receipt' field + if output, exists := outputMap["receipt"]; exists { + if receiptMap, ok := output.(map[string]interface{}); ok { + log.Info().Interface("Receipt Map: ", receiptMap).Msg("Gauntlet++") + // Access 'execution_status' inside the 'receipt' field + if executionStatus, exists := receiptMap["execution_status"]; exists { + + // Assert value to a string + if strExecutionStatus, ok := executionStatus.(string); ok { + if strExecutionStatus != "SUCCEEDED" { + err := fmt.Errorf("Op was not successful") + return err + } + } else { + err := fmt.Errorf("execution_status is not of type string") + return err + } + } + } + } + } else { + // Log a message if it’s not a map + log.Warn().Msg("Report.Output is not a map[string]interface{}") + } + } return nil } @@ -208,6 +233,11 @@ func (sgpp *StarknetGauntletPlusPlus) executeDeploy(request *Request) (string, e return "", err } + if contractAddress == "" { + log.Err(err).Str("G++ Deploy Requets returned with empty contractAddress", err.Error()).Msg("Gauntlet++") + return "", err + } + log.Info().Str("Contract Address Response: ", contractAddress).Msg("Gauntlet++") return contractAddress, nil } From 5af30c26f5a6c7010c7946706ef3f0018e91b202 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 21:53:53 -0500 Subject: [PATCH 18/24] bump --- integration-tests/go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 5d210fc50..abeec38e6 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -17,7 +17,7 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 github.com/smartcontractkit/chainlink/deployment v0.0.0-20241203233234-baf88355a2d3 - github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef + github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241203233234-baf88355a2d3 github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241203233234-baf88355a2d3 github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 From 96dbe4601f9c35148436525ebc8f50906a74d35e Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 22:06:02 -0500 Subject: [PATCH 19/24] bump version --- integration-tests/go.mod | 10 +++++----- integration-tests/go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index abeec38e6..61b98d8fd 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -16,9 +16,9 @@ require ( github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8 github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 - github.com/smartcontractkit/chainlink/deployment v0.0.0-20241203233234-baf88355a2d3 - github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241203233234-baf88355a2d3 - github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241203233234-baf88355a2d3 + github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204025900-395f27a676a0 + github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204025900-395f27a676a0 + github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204025900-395f27a676a0 github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 go.uber.org/zap v1.27.0 @@ -397,11 +397,11 @@ require ( github.com/slack-go/slack v0.15.0 // indirect github.com/smartcontractkit/chain-selectors v1.0.31 // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241203195251-42088b33c826 // indirect + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241204015713-8956bb614e9e // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect - github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.0 // indirect + github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2 // indirect github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525 // indirect github.com/smartcontractkit/chainlink-testing-framework/lib/grafana v1.50.0 // indirect github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 0da4b73f2..9b3ca8e76 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1418,8 +1418,8 @@ github.com/smartcontractkit/chain-selectors v1.0.31 h1:oRHyK88KnsCh4OdU2hr0u70pm github.com/smartcontractkit/chain-selectors v1.0.31/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241203195251-42088b33c826 h1:AvqLYQTwoarnPDuBuvjQo0yJSXIcQErWA9UFTeaahlo= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241203195251-42088b33c826/go.mod h1:80vGBbOfertJig0xFKsRfm+i17FkjdKkk1dAaGE45Os= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241204015713-8956bb614e9e h1:GnM6ZWV6vlk2+n6c6o+v/R1LtXzBGVVx7r37nt/h6Uc= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241204015713-8956bb614e9e/go.mod h1:80vGBbOfertJig0xFKsRfm+i17FkjdKkk1dAaGE45Os= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241127162636-07aa781ee1f4 h1:atCZ1jol7a+tdtgU/wNqXgliBun5H7BjGBicGL8Tj6o= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241127162636-07aa781ee1f4/go.mod h1:bQktEJf7sJ0U3SmIcXvbGUox7SmXcnSEZ4kUbT8R5Nk= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241202195413-82468150ac1e h1:PRoeby6ZlTuTkv2f+7tVU4+zboTfRzI+beECynF4JQ0= @@ -1430,8 +1430,8 @@ github.com/smartcontractkit/chainlink-feeds v0.1.1 h1:JzvUOM/OgGQA1sOqTXXl52R6An github.com/smartcontractkit/chainlink-feeds v0.1.1/go.mod h1:55EZ94HlKCfAsUiKUTNI7QlE/3d3IwTlsU3YNa/nBb4= github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 h1:0ewLMbAz3rZrovdRUCgd028yOXX8KigB4FndAUdI2kM= github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0/go.mod h1:/dVVLXrsp+V0AbcYGJo3XMzKg3CkELsweA/TTopCsKE= -github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.0 h1:PBUaFfPLm+Efq7H9kdfGBivH+QhJ6vB5EZTR/sCZsxI= -github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.0/go.mod h1:m/A3lqD7ms/RsQ9BT5P2uceYY0QX5mIt4KQxT2G6qEo= +github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2 h1:onBe3DqNrbtOAzKS4PrPIiJX65BGo1aYiYZxFVEW+jc= +github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2/go.mod h1:m/A3lqD7ms/RsQ9BT5P2uceYY0QX5mIt4KQxT2G6qEo= github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525 h1:eiiNAGa5aa6EpE3JxQN2OFa7bD+s1rcYxSJYhNDpTmI= github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525/go.mod h1:p8aUDfJeley6oer7y+Ucd3edOtRlMTnWg3mN6rhaLWo= github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 h1:Fw2F8fKa5QdOUzLAj6Y/EB6XFC0QtK2pw5bqQSatL4A= @@ -1442,12 +1442,12 @@ github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 h1:yB1x5UXv github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9/go.mod h1:lJk0atEJ5Zyo3Tqrmf1Pl9jUEe79EgDb9bD3K5OTUBI= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2 h1:7bCdbTUWzyczQg+kwHCxlx6y07zE8HNB8+ntTne6qd8= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2/go.mod h1:MltlNu3jcXm/DyLN98I5TFNtu/o1NNAcaPAFKMXWk70= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241203233234-baf88355a2d3 h1:S5TG7SoXQfT8KSfhBWAP8iqJsenHcFFQ51ncGImK++c= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241203233234-baf88355a2d3/go.mod h1:67nVlJjxzVi3F8T++NWsGjbs7M+PmJcgYQ6wYbXuJM0= -github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef h1:wXQwYOEYZHyZ9F3yCkGD1wFW3tJoI1LaRyyPxK0+PsE= -github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241202214607-fa346afd62ef/go.mod h1:gZngC8xjWzpTxzIbgtnzAMk9yYajmhP/iOQ5MFNqLbY= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241203233234-baf88355a2d3 h1:CHW3xP7/VCDc2qKLj3s04Pz2A0g+Zrtl7YywCj7hYb4= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241203233234-baf88355a2d3/go.mod h1:iAMDO71kQEq9Spz2GVR50lKsWwVeaocRFs/BQNZ5KHQ= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204025900-395f27a676a0 h1:+gpmmHgrvPMR5nSDwCkasmZ3CaGTdyb844D6CGIgb3s= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204025900-395f27a676a0/go.mod h1:NpJO3zt6cq8uT9jo5LbuHr11q0APGxHqsBHLVl/svSs= +github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204025900-395f27a676a0 h1:+QzDp4U5JYahFzMVsem3H6vrHU21cNSq1eNPZDh7y3g= +github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204025900-395f27a676a0/go.mod h1:xCJuze3GgG6Ec/gLMAS/47FC/SzEa/Y+YiD5g4wvYTM= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204025900-395f27a676a0 h1:xQF1eQUMJy0b32HWbyYnRo/6REQG8IWT/iSWQKfUcLw= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204025900-395f27a676a0/go.mod h1:ofC2S3XuOMdqEew73eCNmV7jgWxayBayuEOLELR1CBM= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3 h1:RIApVijvhHI6iW9pyT35Nk39rPGEC4TwVe/f+YA1G5k= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3/go.mod h1:oiUkQxoi0kZzbW125oIt4lr/pqaRSDol1rWHLCyqmNQ= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= From e48e9f342d0be4d7a6786fc34e6fb4eb2e6b6c3a Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 22:30:15 -0500 Subject: [PATCH 20/24] Fixed linting errors --- ops/gauntlet/gauntlet_plus_plus_starknet.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index 6437309d8..3dd40d510 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -109,10 +109,9 @@ func (sgpp *StarknetGauntletPlusPlus) ExtractValueFromResponseBody(report g.Repo // Assert value to a string if strValue, ok := value.(string); ok { return strValue, nil - } else { + } err := fmt.Errorf("parsed Value is not of type string") return "", err - } } } else { // Log a message if it’s not a map @@ -162,16 +161,17 @@ func (sgpp *StarknetGauntletPlusPlus) execute(request *Request) error { if receiptMap, ok := output.(map[string]interface{}); ok { log.Info().Interface("Receipt Map: ", receiptMap).Msg("Gauntlet++") // Access 'execution_status' inside the 'receipt' field - if executionStatus, exists := receiptMap["execution_status"]; exists { - - // Assert value to a string + if executionStatus, exists := receiptMap["execution_status"]; !exists { + err := fmt.Errorf("execution_status does not exist") + return err + } else { if strExecutionStatus, ok := executionStatus.(string); ok { if strExecutionStatus != "SUCCEEDED" { err := fmt.Errorf("Op was not successful") return err } } else { - err := fmt.Errorf("execution_status is not of type string") + err := fmt.Errorf("execution_status is not successfuly") return err } } From b00e6ede2beb288d113b00a74e28d54148fac3d0 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Tue, 3 Dec 2024 23:08:54 -0500 Subject: [PATCH 21/24] Refactoring for better readability --- ops/gauntlet/gauntlet_plus_plus_starknet.go | 110 +++++++++++++------- 1 file changed, 70 insertions(+), 40 deletions(-) diff --git a/ops/gauntlet/gauntlet_plus_plus_starknet.go b/ops/gauntlet/gauntlet_plus_plus_starknet.go index 3dd40d510..43c0b88dc 100644 --- a/ops/gauntlet/gauntlet_plus_plus_starknet.go +++ b/ops/gauntlet/gauntlet_plus_plus_starknet.go @@ -27,17 +27,6 @@ type StarknetGauntletPlusPlus struct { providers *[]g.Provider } -func toPointerMap(input map[string]interface{}) map[string]*interface{} { - result := make(map[string]*interface{}) - for k, v := range input { - // Create a new variable to hold the value - valueCopy := v - // Store the pointer to the new variable - result[k] = &valueCopy - } - return result -} - func (sgpp *StarknetGauntletPlusPlus) BuildProviders(address string, rpcURL string, privateKey string) *[]g.Provider { accountProviderInput := map[string]interface{}{ "address": address, @@ -151,35 +140,10 @@ func (sgpp *StarknetGauntletPlusPlus) execute(request *Request) error { log.Error().Err(err).Msg("Failed to marshal report.Output") return err } - - // Attempt to assert the Output as a map - if outputMap, ok := (*report.Output).(map[string]interface{}); ok { - log.Info().Interface("Report Response: ", outputMap).Msg("Gauntlet++") - - // Access the 'output' field and then the 'receipt' field - if output, exists := outputMap["receipt"]; exists { - if receiptMap, ok := output.(map[string]interface{}); ok { - log.Info().Interface("Receipt Map: ", receiptMap).Msg("Gauntlet++") - // Access 'execution_status' inside the 'receipt' field - if executionStatus, exists := receiptMap["execution_status"]; !exists { - err := fmt.Errorf("execution_status does not exist") - return err - } else { - if strExecutionStatus, ok := executionStatus.(string); ok { - if strExecutionStatus != "SUCCEEDED" { - err := fmt.Errorf("Op was not successful") - return err - } - } else { - err := fmt.Errorf("execution_status is not successfuly") - return err - } - } - } - } - } else { - // Log a message if it’s not a map - log.Warn().Msg("Report.Output is not a map[string]interface{}") + err = processReport(&report) + if err != nil { + log.Error().Err(err).Msg("Failed to process Op report") + return err } } return nil @@ -470,3 +434,69 @@ func (sgpp *StarknetGauntletPlusPlus) DeployOzAccount(publicKey string) (string, return sgpp.executeDeploy(&request) } + +func toPointerMap(input map[string]interface{}) map[string]*interface{} { + result := make(map[string]*interface{}) + for k, v := range input { + // Create a new variable to hold the value + valueCopy := v + // Store the pointer to the new variable + result[k] = &valueCopy + } + return result +} + +func processReport(report *g.Report) error { + // Ensure Output is a map + outputMap, ok := (*report.Output).(map[string]interface{}) + if !ok { + log.Warn().Msg("Report.Output is not a map[string]interface{}") + return fmt.Errorf("Report.Output is not a map") + } + + log.Info().Interface("Report Response: ", outputMap).Msg("Gauntlet++") + + // Access the 'receipt' field + receiptMap, err := getReceiptMap(outputMap) + if err != nil { + return err + } + + // Check 'execution_status' inside the 'receipt' field + return checkExecutionStatus(receiptMap) +} + +// Helper function to extract the receipt map +func getReceiptMap(outputMap map[string]interface{}) (map[string]interface{}, error) { + output, exists := outputMap["receipt"] + if !exists { + return nil, fmt.Errorf("receipt does not exist") + } + + receiptMap, ok := output.(map[string]interface{}) + if !ok { + return nil, fmt.Errorf("receipt is not a map") + } + + log.Info().Interface("Receipt Map: ", receiptMap).Msg("Gauntlet++") + return receiptMap, nil +} + +// Helper function to check the execution status +func checkExecutionStatus(receiptMap map[string]interface{}) error { + executionStatus, exists := receiptMap["execution_status"] + if !exists { + return fmt.Errorf("execution_status does not exist") + } + + strExecutionStatus, ok := executionStatus.(string) + if !ok { + return fmt.Errorf("execution_status is not a string") + } + + if strExecutionStatus != "SUCCEEDED" { + return fmt.Errorf("Op was not successful") + } + + return nil +} From e4b3dbaab7e2677eb0b2204e15cf4b098dee5f2d Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Wed, 4 Dec 2024 09:44:35 -0500 Subject: [PATCH 22/24] Logging to see address --- integration-tests/common/test_common.go | 1 + 1 file changed, 1 insertion(+) diff --git a/integration-tests/common/test_common.go b/integration-tests/common/test_common.go index 3905451ae..7a6138c05 100644 --- a/integration-tests/common/test_common.go +++ b/integration-tests/common/test_common.go @@ -380,6 +380,7 @@ func (m *OCRv2TestState) ValidateRounds(rounds int, isSoak bool) error { for start := time.Now(); time.Since(start) < m.Common.TestEnvDetails.TestDuration; { m.TestConfig.L.Info().Msg(fmt.Sprintf("Elapsed time: %s, Round wait: %s ", time.Since(start), m.Common.TestEnvDetails.TestDuration)) + m.TestConfig.L.Info().Msg(fmt.Sprintf("fetching Latest Transmission Details from: %s", contractAddress)) res, err2 := m.Clients.OCR2Client.LatestTransmissionDetails(ctx, contractAddress) require.NoError(m.TestConfig.T, err2, "Failed to get latest transmission details") // end condition: enough rounds have occurred From d445bea04a95142c57de1657fedf0838aaa99424 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Wed, 4 Dec 2024 16:31:24 -0500 Subject: [PATCH 23/24] Bump version --- integration-tests/go.mod | 8 ++++---- integration-tests/go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 61b98d8fd..87b8a33ba 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -16,9 +16,9 @@ require ( github.com/smartcontractkit/chainlink-starknet/relayer v0.1.1-0.20241202202529-2033490e77b8 github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 - github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204025900-395f27a676a0 - github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204025900-395f27a676a0 - github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204025900-395f27a676a0 + github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204195725-03207929cc9f + github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204195725-03207929cc9f + github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204195725-03207929cc9f github.com/stretchr/testify v1.9.0 github.com/testcontainers/testcontainers-go v0.34.0 go.uber.org/zap v1.27.0 @@ -402,7 +402,7 @@ require ( github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241202141438-a90db35252db // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2 // indirect - github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525 // indirect + github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241204153209-c3a71b0eef99 // indirect github.com/smartcontractkit/chainlink-testing-framework/lib/grafana v1.50.0 // indirect github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2 // indirect github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 9b3ca8e76..cfab9258c 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1432,8 +1432,8 @@ github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0 h1:0ewLMbAz3 github.com/smartcontractkit/chainlink-protos/job-distributor v0.6.0/go.mod h1:/dVVLXrsp+V0AbcYGJo3XMzKg3CkELsweA/TTopCsKE= github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2 h1:onBe3DqNrbtOAzKS4PrPIiJX65BGo1aYiYZxFVEW+jc= github.com/smartcontractkit/chainlink-protos/orchestrator v0.3.2/go.mod h1:m/A3lqD7ms/RsQ9BT5P2uceYY0QX5mIt4KQxT2G6qEo= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525 h1:eiiNAGa5aa6EpE3JxQN2OFa7bD+s1rcYxSJYhNDpTmI= -github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241127210503-88cca3779525/go.mod h1:p8aUDfJeley6oer7y+Ucd3edOtRlMTnWg3mN6rhaLWo= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241204153209-c3a71b0eef99 h1:lvn9Yxah+QD1/PcgijLO0dNRa28HuQWZl8Kkxh46KJc= +github.com/smartcontractkit/chainlink-solana v1.1.1-0.20241204153209-c3a71b0eef99/go.mod h1:p8aUDfJeley6oer7y+Ucd3edOtRlMTnWg3mN6rhaLWo= github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17 h1:Fw2F8fKa5QdOUzLAj6Y/EB6XFC0QtK2pw5bqQSatL4A= github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.17/go.mod h1:NwmlNKqrb02v4Sci4b5KW644nfH2BW+FrKbWwTN5r6M= github.com/smartcontractkit/chainlink-testing-framework/lib/grafana v1.50.0 h1:VIxK8u0Jd0Q/VuhmsNm6Bls6Tb31H/sA3A/rbc5hnhg= @@ -1442,12 +1442,12 @@ github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9 h1:yB1x5UXv github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.9/go.mod h1:lJk0atEJ5Zyo3Tqrmf1Pl9jUEe79EgDb9bD3K5OTUBI= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2 h1:7bCdbTUWzyczQg+kwHCxlx6y07zE8HNB8+ntTne6qd8= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.50.2/go.mod h1:MltlNu3jcXm/DyLN98I5TFNtu/o1NNAcaPAFKMXWk70= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204025900-395f27a676a0 h1:+gpmmHgrvPMR5nSDwCkasmZ3CaGTdyb844D6CGIgb3s= -github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204025900-395f27a676a0/go.mod h1:NpJO3zt6cq8uT9jo5LbuHr11q0APGxHqsBHLVl/svSs= -github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204025900-395f27a676a0 h1:+QzDp4U5JYahFzMVsem3H6vrHU21cNSq1eNPZDh7y3g= -github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204025900-395f27a676a0/go.mod h1:xCJuze3GgG6Ec/gLMAS/47FC/SzEa/Y+YiD5g4wvYTM= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204025900-395f27a676a0 h1:xQF1eQUMJy0b32HWbyYnRo/6REQG8IWT/iSWQKfUcLw= -github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204025900-395f27a676a0/go.mod h1:ofC2S3XuOMdqEew73eCNmV7jgWxayBayuEOLELR1CBM= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204195725-03207929cc9f h1:i+LUcLmVFWvrNG+8ZEZPNkS2O32HB4dK397hxXY8DU8= +github.com/smartcontractkit/chainlink/deployment v0.0.0-20241204195725-03207929cc9f/go.mod h1:jz4/Ko0lL7fhiuiBsVB53MNX2lEWK0VRfsxz232XRGA= +github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204195725-03207929cc9f h1:HqrxWBoyONst3FOPEv2DO0x07kxoR8gDrXbhqx1DBkk= +github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20241204195725-03207929cc9f/go.mod h1:T/JxR0RtOeEsFBlfo6T2bSD5tK/cD5AoSRc671UOgQI= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204195725-03207929cc9f h1:M7jmoN3pSNCo64q9ToERfKP7RI8TXRKMa4Oq4jlKgCw= +github.com/smartcontractkit/chainlink/v2 v2.14.0-mercury-20240807.0.20241204195725-03207929cc9f/go.mod h1:r2inuDnmNVZzUD/AsqgBs9exi9mIYwg8BgAnT+PyXU4= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3 h1:RIApVijvhHI6iW9pyT35Nk39rPGEC4TwVe/f+YA1G5k= github.com/smartcontractkit/gauntlet-plus-plus/sdks/go-gauntlet v1.1.3/go.mod h1:oiUkQxoi0kZzbW125oIt4lr/pqaRSDol1rWHLCyqmNQ= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= From 186d6bef7d6c6ed0debc6957d8df1b1b7fad3512 Mon Sep 17 00:00:00 2001 From: chray-zhang Date: Fri, 6 Dec 2024 13:18:45 +0800 Subject: [PATCH 24/24] Matched G++ Configs --- .../common/gauntlet_plus_plus_common.go | 15 +----- integration-tests/common/test_common.go | 6 +-- ops/test_helpers.go | 47 +++++++++++-------- 3 files changed, 31 insertions(+), 37 deletions(-) diff --git a/integration-tests/common/gauntlet_plus_plus_common.go b/integration-tests/common/gauntlet_plus_plus_common.go index e0dafe710..8086b0aef 100644 --- a/integration-tests/common/gauntlet_plus_plus_common.go +++ b/integration-tests/common/gauntlet_plus_plus_common.go @@ -61,11 +61,7 @@ func (m *OCRv2TestState) fundNodesWithGPP() ([]string, error) { } func (m *OCRv2TestState) deployAccessControllerWithGpp() error { - err := m.Clients.GauntletClient.InstallDependencies() - if err != nil { - return err - } - err = m.Clients.GauntletPPClient.DeclareAccessControllerContract() + err := m.Clients.GauntletPPClient.DeclareAccessControllerContract() if err != nil { return err } @@ -81,15 +77,6 @@ func (m *OCRv2TestState) deployAccessControllerWithGpp() error { return nil } -func (m *OCRv2TestState) declareLinkToken() error { - err := m.Clients.GauntletPPClient.DeclareLinkTokenContract() - if err != nil { - return err - } - - return nil -} - func (m *OCRv2TestState) deployLinkTokenWithGpp() error { var err error m.Contracts.LinkTokenAddr, err = m.Clients.GauntletPPClient.DeployLinkTokenContract(m.Account.Account) diff --git a/integration-tests/common/test_common.go b/integration-tests/common/test_common.go index 7a6138c05..a28c46b97 100644 --- a/integration-tests/common/test_common.go +++ b/integration-tests/common/test_common.go @@ -269,8 +269,9 @@ func (m *OCRv2TestState) LoadOCR2Config() (*ops.OCR2Config, error) { var cfgKeys []string for i, key := range m.Clients.ChainlinkClient.NKeys { // need to remove the prefix since legacy gauntlet did it pre op - // https://github.com/smartcontractkit/chainlink-starknet/blob/develop/packages-ts/starknet-gauntlet-ocr2/src/commands/ocr2/setConfig.ts#L124 - offChaiNKeys = append(offChaiNKeys, m.removeOCR2PrefixAndAddPrefix(key.OCR2Key.Data.Attributes.OffChainPublicKey, "ocr2off_starknet_", "")) + // In G++ only signers have prefix removed + // https://github.com/smartcontractkit/gauntlet-plus-plus/blob/main/packages-starknet/operations-data-feeds/tests/fixtures/offchain-config.fixture.ts + offChaiNKeys = append(offChaiNKeys, key.OCR2Key.Data.Attributes.OffChainPublicKey) peerIDs = append(peerIDs, key.PeerID) txKeys = append(txKeys, m.Clients.ChainlinkClient.AccountAddresses[i]) onChaiNKeys = append(onChaiNKeys, m.removeOCR2PrefixAndAddPrefix(key.OCR2Key.Data.Attributes.OnChainPublicKey, "ocr2on_starknet_", "0x")) @@ -287,7 +288,6 @@ func (m *OCRv2TestState) LoadOCR2Config() (*ops.OCR2Config, error) { } func (m *OCRv2TestState) removeOCR2PrefixAndAddPrefix(k string, prefix string, newPrefix string) string { - // Print k for debugging before the modification if strings.HasPrefix(k, prefix) { return newPrefix + k[len(prefix):] } diff --git a/ops/test_helpers.go b/ops/test_helpers.go index 2fc70a169..76310baaa 100644 --- a/ops/test_helpers.go +++ b/ops/test_helpers.go @@ -32,11 +32,14 @@ type OffchainConfig struct { } type ReportingPluginConfig struct { - AlphaReportInfinite bool `json:"alphaReportInfinite"` - AlphaReportPpb int `json:"alphaReportPpb"` - AlphaAcceptInfinite bool `json:"alphaAcceptInfinite"` - AlphaAcceptPpb int `json:"alphaAcceptPpb"` - DeltaCNanoseconds int `json:"deltaCNanoseconds"` + SourceFinalityDepth int `json:"sourceFinalityDepth"` + DestFinalityDepth int `json:"destFinalityDepth"` + MaxGasPrice string `json:"maxGasPrice"` + RelativeBoostPerWaitHour string `json:"relativeBoostPerWaitHour"` + InflightCacheExpiry string `json:"inflightCacheExpiry"` + RootSnoozeTime string `json:"rootSnoozeTime"` + DestOptimisticConfirmations int `json:"DestOptimisticConfirmations"` + BatchGasLimit int `json:"batchGasLimit"` } var TestOCR2Config = OCR2Config{ @@ -44,29 +47,33 @@ var TestOCR2Config = OCR2Config{ // Signers: onChainKeys, // user defined // Transmitters: txKeys, // user defined OnchainConfig: "", + // https://github.com/smartcontractkit/gauntlet-plus-plus/blob/main/packages-starknet/operations-data-feeds/tests/fixtures/offchain-config.fixture.ts OffchainConfig: &OffchainConfig{ // todo: increase delta round but decrease delta stage - DeltaProgress: "120s", // 120s - DeltaResend: "150s", // 150s - DeltaRound: "90s", // 90s - DeltaGrace: "5s", // 5s - DeltaStage: "20s", // 20s + DeltaProgress: "120000000000ns", // 120s + DeltaResend: "5000000000ns", // 150s + DeltaRound: "60000000000ns", // 90s + DeltaGrace: "5000000000ns", // 5s + DeltaStage: "180000000000ns", // 20s RMax: 5, S: []int{1, 1}, // Needs to array with length of transmitting nodes // OffchainPublicKeys: offChainKeys, // user defined // PeerIDs: peerIds, // user defined ReportingPluginConfig: &ReportingPluginConfig{ - AlphaReportInfinite: false, - AlphaReportPpb: 0, - AlphaAcceptInfinite: false, - AlphaAcceptPpb: 0, - DeltaCNanoseconds: 1000000000, + SourceFinalityDepth: 5, + DestFinalityDepth: 15, + MaxGasPrice: "300000000000", + RelativeBoostPerWaitHour: "300000000000", + InflightCacheExpiry: "3m0s", + RootSnoozeTime: "3m0s", + DestOptimisticConfirmations: 1, + BatchGasLimit: 1, }, - MaxDurationQuery: "20s", - MaxDurationObservation: "10s", - MaxDurationReport: "20s", - MaxDurationShouldAcceptFinalizedReport: "20s", - MaxDurationShouldTransmitAcceptedReport: "20s", + MaxDurationQuery: "100000000ns", + MaxDurationObservation: "35000000000ns", + MaxDurationReport: "10000000000ns", + MaxDurationShouldAcceptFinalizedReport: "5000000000ns", + MaxDurationShouldTransmitAcceptedReport: "10000000000ns", // ConfigPublicKeys: cfgKeys, // user defined // https://github.com/smartcontractkit/gauntlet-plus-plus/blob/5faf35e1d372e3ae5388c295554aa4f87bc0ece0/packages-starknet/operations-data-feeds/tests/fixtures/offchain-config.fixture.ts#L23 ConfigEncodingSecret: "abandon ability able about above absent absorb abstract absurd abuse access accident",