From 47366ba054d5348453b3bf009e7122f8b54a0a2e Mon Sep 17 00:00:00 2001 From: George Date: Wed, 18 Jun 2025 12:37:40 -0700 Subject: [PATCH 1/2] Migrate to use built-in RPC client, fix event expectations --- e2e.go | 238 ++++----------------- features/dapp_develop/dapp_develop_test.go | 20 +- features/dapp_develop/main.go | 6 +- go.mod | 24 ++- go.sum | 92 ++++---- 5 files changed, 124 insertions(+), 256 deletions(-) diff --git a/e2e.go b/e2e.go index d728db2..0ab6fc9 100644 --- a/e2e.go +++ b/e2e.go @@ -1,19 +1,18 @@ package e2e import ( - "bytes" - "encoding/json" + "context" "fmt" "io" - "net/http" "os" "strconv" "time" "github.com/go-cmd/cmd" - "github.com/stellar/go/strkey" "github.com/stellar/go/txnbuild" "github.com/stellar/go/xdr" + "github.com/stellar/stellar-rpc/client" + "github.com/stellar/stellar-rpc/protocol" ) type E2EConfig struct { @@ -33,72 +32,11 @@ type E2EConfig struct { FeaturePath string } -const ( - TX_SUCCESS = "SUCCESS" - TX_NOT_FOUND = "NOT_FOUND" -) - -type RPCError struct { - Code int64 `json:"code"` - Message string `json:"message"` - Data string `json:"data"` -} - type AccountInfo struct { ID string `json:"id"` Sequence int64 `json:"sequence,string"` } -type TransactionResponse struct { - ID string `json:"id"` - Status string `json:"status"` -} - -type RPCTransactionResponse struct { - Result TransactionResponse `json:"result"` - Error *RPCError `json:"error,omitempty"` -} - -type TransactionStatusResponse struct { - ID string `json:"id"` - Status string `json:"status"` - EnvelopeXdr string `json:"envelopeXdr,omitempty"` - ResultXdr string `json:"resultXdr,omitempty"` - ResultMetaXdr string `json:"resultMetaXdr,omitempty"` -} - -type RPCTransactionStatusResponse struct { - Result TransactionStatusResponse `json:"result"` - Error *RPCError `json:"error,omitempty"` -} - -type LedgerEntryResult struct { - XDR string `json:"xdr"` -} - -type LedgerEntriesResult struct { - Entries []LedgerEntryResult `json:"entries"` -} - -type RPCLedgerEntriesResponse struct { - Result LedgerEntriesResult `json:"result"` - Error *RPCError `json:"error,omitempty"` -} - -type LatestLedgerResult struct { - // Hash of the latest ledger as a hex-encoded string - Hash string `json:"id"` - // Stellar Core protocol version associated with the ledger. - ProtocolVersion uint32 `json:"protocolVersion"` - // Sequence number of the latest ledger. - Sequence uint32 `json:"sequence"` -} - -type RPCLatestLedgerResponse struct { - Result LatestLedgerResult `json:"result"` - Error *RPCError `json:"error,omitempty"` -} - const TestTmpDirectory = "test_tmp_workspace" func InitEnvironment() (*E2EConfig, error) { @@ -208,154 +146,64 @@ func (a *Asserter) Errorf(format string, args ...interface{}) { a.Err = fmt.Errorf(format, args...) } -func QueryNetworkState(e2eConfig *E2EConfig) (LatestLedgerResult, error) { - getLatestLedger := []byte(`{ - "jsonrpc": "2.0", - "id": 10235, - "method": "getLatestLedger" - }`) - - resp, err := http.Post(e2eConfig.TargetNetworkRPCURL, "application/json", bytes.NewBuffer(getLatestLedger)) - if err != nil { - return LatestLedgerResult{}, fmt.Errorf("soroban rpc get latest ledger had error %e", err) - } - - var rpcResponse RPCLatestLedgerResponse - decoder := json.NewDecoder(resp.Body) - err = decoder.Decode(&rpcResponse) - if err != nil { - return LatestLedgerResult{}, fmt.Errorf("soroban rpc get latest ledger, not able to parse response, %v, %e", resp, err) - } - if rpcResponse.Error != nil { - return LatestLedgerResult{}, fmt.Errorf("soroban rpc get latest ledger, error on response, %v, %e", resp, err) - } - - return rpcResponse.Result, nil - +func QueryNetworkState(e2eConfig *E2EConfig) (protocol.GetLatestLedgerResponse, error) { + cli := client.NewClient(e2eConfig.TargetNetworkRPCURL, nil) + return cli.GetLatestLedger(context.Background()) } func QueryAccount(e2eConfig *E2EConfig, publicKey string) (*AccountInfo, error) { - decoded, err := strkey.Decode(strkey.VersionByteAccountID, publicKey) - if err != nil { - return nil, fmt.Errorf("invalid account address: %v", err) - } - var key xdr.Uint256 - copy(key[:], decoded) - keyXdr, err := xdr.LedgerKey{ - Type: xdr.LedgerEntryTypeAccount, - Account: &xdr.LedgerKeyAccount{ - AccountId: xdr.AccountId(xdr.PublicKey{ - Type: xdr.PublicKeyTypePublicKeyTypeEd25519, - Ed25519: &key, - }), - }, - }.MarshalBinaryBase64() + accountId := xdr.MustAddress(publicKey) + key, err := accountId.LedgerKey() if err != nil { - return nil, fmt.Errorf("error encoding account ledger key xdr: %v", err) + return nil, fmt.Errorf("error transforming %s into LedgerKey: %v", publicKey, err) } - getAccountRequest := []byte(`{ - "jsonrpc": "2.0", - "id": 10235, - "method": "getLedgerEntries", - "params": { - "keys": [` + fmt.Sprintf("%q", keyXdr) + `] - } - }`) - - resp, err := http.Post(e2eConfig.TargetNetworkRPCURL, "application/json", bytes.NewBuffer(getAccountRequest)) + keyXdr, err := key.MarshalBinaryBase64() if err != nil { - return nil, fmt.Errorf("soroban rpc get account had error %e", err) + return nil, fmt.Errorf("error encoding account ledger key xdr: %v", err) } - var rpcResponse RPCLedgerEntriesResponse - decoder := json.NewDecoder(resp.Body) - err = decoder.Decode(&rpcResponse) + cli := client.NewClient(e2eConfig.TargetNetworkRPCURL, nil) + resp, err := cli.GetLedgerEntries(context.Background(), protocol.GetLedgerEntriesRequest{ + Keys: []string{keyXdr}, + }) if err != nil { - return nil, fmt.Errorf("soroban rpc get account, not able to parse ledger entry response, %v, %e", resp, err) - } - if rpcResponse.Error != nil { - return nil, fmt.Errorf("soroban rpc get account, error on ledger entry response, %v, %e", resp, err) + return nil, fmt.Errorf("getLedgerEntries failed: %w", err) } var entry xdr.LedgerEntryData - if len(rpcResponse.Result.Entries) == 0 { + if len(resp.Entries) == 0 { return nil, fmt.Errorf("unable to find account for key %v, %e", keyXdr, err) } - err = xdr.SafeUnmarshalBase64(rpcResponse.Result.Entries[0].XDR, &entry) + err = xdr.SafeUnmarshalBase64(resp.Entries[0].DataXDR, &entry) if err != nil { - return nil, fmt.Errorf("soroban rpc get account, not able to parse XDR from ledger entry response, %v, %e", rpcResponse.Result.Entries[0].XDR, err) + return nil, fmt.Errorf("failed to parse LedgerEntryData from getLedgerEntries: %w: %v", err, resp.Entries[0].DataXDR) } - return &AccountInfo{ID: entry.Account.AccountId.Address(), Sequence: int64(entry.Account.SeqNum)}, nil + return &AccountInfo{ + ID: entry.Account.AccountId.Address(), + Sequence: int64(entry.Account.SeqNum), + }, nil } -func QueryTxStatus(e2eConfig *E2EConfig, txHashId string) (*TransactionStatusResponse, error) { - getTxStatusRequest := []byte(`{ - "jsonrpc": "2.0", - "id": 10235, - "method": "getTransaction", - "params": { - "hash": "` + txHashId + `" - } - }`) - - resp, err := http.Post(e2eConfig.TargetNetworkRPCURL, "application/json", bytes.NewBuffer(getTxStatusRequest)) - if err != nil { - return nil, fmt.Errorf("soroban rpc get tx status had error %e", err) - } - - var rpcResponse RPCTransactionStatusResponse - decoder := json.NewDecoder(resp.Body) - err = decoder.Decode(&rpcResponse) - - if err != nil { - return nil, fmt.Errorf("soroban rpc get tx status, not able to parse response, %v, %e", resp.Body, err) - } - - if rpcResponse.Error != nil { - return nil, fmt.Errorf("soroban rpc get tx status, got error response, %v", rpcResponse) - } - - return &rpcResponse.Result, nil +func QueryTxStatus(e2eConfig *E2EConfig, txHashId string) (protocol.GetTransactionResponse, error) { + c := client.NewClient(e2eConfig.TargetNetworkRPCURL, nil) + return c.GetTransaction(context.Background(), protocol.GetTransactionRequest{ + Hash: txHashId, + }) } -func TxSub(e2eConfig *E2EConfig, tx *txnbuild.Transaction) (*TransactionStatusResponse, error) { +func TxSub(e2eConfig *E2EConfig, tx *txnbuild.Transaction) (protocol.GetTransactionResponse, error) { b64, err := tx.Base64() if err != nil { - return nil, fmt.Errorf("soroban rpc tx sub, not able to serialize tx, %v, %e", tx, err) - } - - txsubRequest := []byte(`{ - "jsonrpc": "2.0", - "id": 10235, - "method": "sendTransaction", - "params": { - "transaction": "` + b64 + `" - } - }`) - - resp, err := http.Post(e2eConfig.TargetNetworkRPCURL, "application/json", bytes.NewBuffer(txsubRequest)) - if err != nil { - return nil, fmt.Errorf("soroban rpc tx sub had error %e", err) - } - - var rpcResponse RPCTransactionResponse - decoder := json.NewDecoder(resp.Body) - - err = decoder.Decode(&rpcResponse) - if err != nil { - return nil, fmt.Errorf("soroban rpc tx sub, not able to parse response, %v, %e", resp.Body, err) + return protocol.GetTransactionResponse{}, fmt.Errorf( + "sendTransaction: failed to serialize tx (%v): %e", tx, err) } - if rpcResponse.Error != nil { - return nil, fmt.Errorf("soroban rpc tx sub, got bad submission response, %v", rpcResponse) - } - - txHashId, err := tx.HashHex(e2eConfig.TargetNetworkPassPhrase) - if err != nil { - return nil, fmt.Errorf("soroban rpc tx sub, not able to generate tx hash id, %v, %e", tx, err) - } + c := client.NewClient(e2eConfig.TargetNetworkRPCURL, nil) + resp, err := c.SendTransaction(context.Background(), protocol.SendTransactionRequest{ + Transaction: b64, + }) start := time.Now().Unix() ticker := time.NewTicker(3 * time.Second) @@ -365,22 +213,22 @@ func TxSub(e2eConfig *E2EConfig, tx *txnbuild.Transaction) (*TransactionStatusRe break } - transactionStatusResponse, err := QueryTxStatus(e2eConfig, txHashId) + txStatus, err := QueryTxStatus(e2eConfig, resp.Hash) if err != nil { - return nil, fmt.Errorf("soroban rpc tx sub, unable to call tx status check, %v, %e", rpcResponse, err) + return txStatus, fmt.Errorf("getTransaction failed: %v, %e", txStatus, err) } - switch transactionStatusResponse.Status { - case TX_SUCCESS: - return transactionStatusResponse, nil - case TX_NOT_FOUND: + switch txStatus.Status { + case protocol.TransactionStatusSuccess: + return txStatus, nil + case protocol.TransactionStatusNotFound: // no-op. Retry. default: - return nil, fmt.Errorf("soroban rpc tx sub, got bad response on tx status check, %v, %v", rpcResponse, transactionStatusResponse) + return txStatus, fmt.Errorf("bad response to getTransaction: %v", txStatus) } } - return nil, fmt.Errorf("soroban rpc tx sub, timeout after 30 seconds on tx status check, %v", rpcResponse) + return protocol.GetTransactionResponse{}, fmt.Errorf("sendTransaction failed: timeout after 30s: %v", resp) } func getEnv(key string) (string, error) { diff --git a/features/dapp_develop/dapp_develop_test.go b/features/dapp_develop/dapp_develop_test.go index 6877e34..f42a3d1 100644 --- a/features/dapp_develop/dapp_develop_test.go +++ b/features/dapp_develop/dapp_develop_test.go @@ -17,6 +17,7 @@ import ( "github.com/stellar/go/keypair" "github.com/stellar/go/txnbuild" "github.com/stellar/go/xdr" + "github.com/stellar/stellar-rpc/protocol" e2e "github.com/stellar/system-test" "github.com/stretchr/testify/assert" ) @@ -40,7 +41,7 @@ type testConfig struct { Identities map[string]string ContractEvents []xdr.DiagnosticEvent DiagnosticEvents []xdr.DiagnosticEvent - InitialNetworkState e2e.LatestLedgerResult + InitialNetworkState protocol.GetLatestLedgerResponse } func TestDappDevelop(t *testing.T) { @@ -204,21 +205,22 @@ func noOpStep(ctx context.Context) error { func theContractEventsShouldBeStep(ctx context.Context, expectedContractEventsCount int, contractName string, tool string) error { testConfig := ctx.Value(e2e.TestConfigContextKey).(*testConfig) - jsonResults, err := getEvents(testConfig.InitialNetworkState.Sequence, testConfig.DeployedContractId, tool, 10, testConfig.E2EConfig) - + jsonResults, err := getEvents( + testConfig.InitialNetworkState.Sequence, + testConfig.DeployedContractId, + tool, + 10, + testConfig.E2EConfig, + ) if err != nil { return err } - var contractEventsCount int = len(jsonResults) + contractEventsCount := len(jsonResults) var t e2e.Asserter assert.Equal(&t, expectedContractEventsCount, contractEventsCount, "Expected %v contract events for %v using %v but got %v", expectedContractEventsCount, contractName, tool, contractEventsCount) - if t.Err != nil { - return t.Err - } - - return nil + return t.Err } func queryAccountStep(ctx context.Context) error { diff --git a/features/dapp_develop/main.go b/features/dapp_develop/main.go index b72c3e1..a47b23f 100644 --- a/features/dapp_develop/main.go +++ b/features/dapp_develop/main.go @@ -214,9 +214,5 @@ func getEvents(ledgerFrom uint32, deployedContractId string, tool string, size u err = fmt.Errorf("%s tool not supported for events retrieval yet", tool) } - if err != nil { - return nil, err - } - - return response, nil + return response, err } diff --git a/go.mod b/go.mod index d87c6fd..7a61fe8 100644 --- a/go.mod +++ b/go.mod @@ -1,27 +1,33 @@ module github.com/stellar/system-test -go 1.21 +go 1.24 + +toolchain go1.24.2 require ( github.com/cucumber/godog v0.15.1 github.com/go-cmd/cmd v1.4.3 - github.com/stellar/go v0.0.0-20230711170410-05e630f47f6c - github.com/stretchr/testify v1.8.2 + github.com/stellar/go v0.0.0-20250716214416-01d16bf8185f + github.com/stellar/stellar-rpc v0.9.6-0.20250807162737-977867193834 + github.com/stretchr/testify v1.9.0 ) require ( + github.com/creachadair/jrpc2 v1.2.0 // indirect + github.com/creachadair/mds v0.13.4 // indirect github.com/cucumber/gherkin/go/v26 v26.2.0 // indirect github.com/cucumber/messages/go/v21 v21.0.1 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gofrs/uuid v4.3.1+incompatible // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-memdb v1.3.4 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/klauspost/compress v1.17.6 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/spf13/pflag v1.0.7 // indirect - github.com/stellar/go-xdr v0.0.0-20211103144802-8017fc4bdfee // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect + github.com/stellar/go-xdr v0.0.0-20231122183749-b53fb00bcac2 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect + golang.org/x/sync v0.10.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index e16d176..20e37e9 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creachadair/jrpc2 v1.2.0 h1:SXr0OgnwM0X18P+HccJP0uT3KGSDk/BCSRlJBvE2bMY= +github.com/creachadair/jrpc2 v1.2.0/go.mod h1:66uKSdr6tR5ZeNvkIjDSbbVUtOv0UhjS/vcd8ECP7Iw= +github.com/creachadair/mds v0.13.4 h1:RgU0MhiVqkzp6/xtNWhK6Pw7tDeaVuGFtA0UA2RBYvY= +github.com/creachadair/mds v0.13.4/go.mod h1:4vrFYUzTXMJpMBU+OA292I6IUxKWCCfZkgXg+/kBZMo= github.com/cucumber/gherkin/go/v26 v26.2.0 h1:EgIjePLWiPeslwIWmNQ3XHcypPsWAHoMCz/YEBKP4GI= github.com/cucumber/gherkin/go/v26 v26.2.0/go.mod h1:t2GAPnB8maCT4lkHL99BDCVNzCh1d7dBhCLt150Nr/0= github.com/cucumber/godog v0.15.1 h1:rb/6oHDdvVZKS66hrhpjFQFHjthFSrQBCOI1LwshNTI= @@ -7,21 +11,28 @@ github.com/cucumber/messages/go/v21 v21.0.1 h1:wzA0LxwjlWQYZd32VTlAVDTkW6inOFmSM github.com/cucumber/messages/go/v21 v21.0.1/go.mod h1:zheH/2HS9JLVFukdrsPWoPdmUtmYQAQPLk7w5vWsk5s= github.com/cucumber/messages/go/v22 v22.0.0/go.mod h1:aZipXTKc0JnjCsXrJnuZpWhtay93k7Rn3Dee7iyPJjs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/go-chi/chi v4.0.3+incompatible h1:gakN3pDJnzZN5jqFV2TEdF66rTfKeITyR8qu6ekICEY= -github.com/go-chi/chi v4.0.3+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/go-chi/chi v4.1.2+incompatible h1:fGFk2Gmi/YKXk0OmGfBh0WgmN3XB8lVnEyNz34tQRec= +github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-cmd/cmd v1.4.3 h1:6y3G+3UqPerXvPcXvj+5QNPHT02BUw7p6PsqRxLNA7Y= github.com/go-cmd/cmd v1.4.3/go.mod h1:u3hxg/ry+D5kwh8WvUkHLAMe2zQCaXd00t35WfQaOFk= -github.com/go-errors/errors v0.0.0-20150906023321-a41850380601 h1:jxTbmDuqQUTI6MscgbqB39vtxGfr2fi61nYIcFQUnlE= -github.com/go-errors/errors v0.0.0-20150906023321-a41850380601/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.5.1 h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk= +github.com/go-errors/errors v1.5.1/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.3.1+incompatible h1:0/KbAdpx3UXAx1kEOWHJeOkpbgRFGHVgv+CFIY7dBJI= github.com/gofrs/uuid v4.3.1+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gorilla/schema v1.1.0 h1:CamqUDOFUBqzrvxuz2vEwo8+SUdwsluFh7IlzJh30LY= -github.com/gorilla/schema v1.1.0/go.mod h1:kgLaKoK1FELgZqMAVxx/5cbj0kT+57qxUrAlIO2eleU= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/gorilla/schema v1.4.1 h1:jUg5hUjCSDZpNGLuXQOgIWGdlgrIdYvgQ0wZtdK1M3E= +github.com/gorilla/schema v1.4.1/go.mod h1:Dg5SSm5PV60mhF2NFaTV1xuYYj8tV8NOPRo4FggUMnM= github.com/hashicorp/go-immutable-radix v1.3.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -31,69 +42,74 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739 h1:ykXz+pRRTibcSjG1yRhpdSHInF8yZY/mfn+Rz2Nd1rE= github.com/manucorporat/sse v0.0.0-20160126180136-ee05b128a739/go.mod h1:zUx1mhth20V3VKgL5jbd1BSQcW4Fy6Qs4PZvQwRFwzM= -github.com/onsi/ginkgo v1.7.0 h1:WSHQ+IS43OoUrWtD1/bbclrwK8TTH5hzp+umCiuxHgs= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/segmentio/go-loggly v0.5.1-0.20171222203950-eb91657e62b2 h1:S4OC0+OBKz6mJnzuHioeEat74PuQ4Sgvbf8eus695sc= github.com/segmentio/go-loggly v0.5.1-0.20171222203950-eb91657e62b2/go.mod h1:8zLRYR5npGjaOXgPSKat5+oOh+UHd8OdbS18iqX9F6Y= -github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stellar/go v0.0.0-20230711170410-05e630f47f6c h1:EDCLUbsL4Irk5aZXBEXoZfwK5kUnc83yvyWLTdgjZ1Q= -github.com/stellar/go v0.0.0-20230711170410-05e630f47f6c/go.mod h1:j0lhmN0nnrC8bBZliIboeZeisxgUrSNxXGoxwQFyq94= -github.com/stellar/go-xdr v0.0.0-20211103144802-8017fc4bdfee h1:fbVs0xmXpBvVS4GBeiRmAE3Le70ofAqFMch1GTiq/e8= -github.com/stellar/go-xdr v0.0.0-20211103144802-8017fc4bdfee/go.mod h1:yoxyU/M8nl9LKeWIoBrbDPQ7Cy+4jxRcWcOayZ4BMps= +github.com/stellar/go v0.0.0-20250716214416-01d16bf8185f h1:fEQoW6tUI2xNG4qrTUTbF+wHXusD7UwQqHgu/7aJbfQ= +github.com/stellar/go v0.0.0-20250716214416-01d16bf8185f/go.mod h1:ac8hwpljbFXC3Sf9nGfqBXXEvAEdnNRqQHGqP7QN8oY= +github.com/stellar/go-xdr v0.0.0-20231122183749-b53fb00bcac2 h1:OzCVd0SV5qE3ZcDeSFCmOWLZfEWZ3Oe8KtmSOYKEVWE= +github.com/stellar/go-xdr v0.0.0-20231122183749-b53fb00bcac2/go.mod h1:yoxyU/M8nl9LKeWIoBrbDPQ7Cy+4jxRcWcOayZ4BMps= +github.com/stellar/stellar-rpc v0.9.6-0.20250807162737-977867193834 h1:c6qcwL75DEe8xhwy/JWxmuDNQqjjqT+BCB60B59nak4= +github.com/stellar/stellar-rpc v0.9.6-0.20250807162737-977867193834/go.mod h1:5dBpcL3vuKSPb2mOY99/9DL/q5x4Ak1sRUZcCfbYW7U= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/xdrpp/goxdr v0.1.1 h1:E1B2c6E8eYhOVyd7yEpOyopzTPirUeF6mVOfXfGyJyc= github.com/xdrpp/goxdr v0.1.1/go.mod h1:dXo1scL/l6s7iME1gxHWo2XCppbHEKZS7m/KyYWkNzA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 4285a562007892921a7fdd4dc44d207bc28820f9 Mon Sep 17 00:00:00 2001 From: George Date: Thu, 7 Aug 2025 14:31:41 -0700 Subject: [PATCH 2/2] Refresh rpc dep to latest @protocol-23 --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 7a61fe8..d87415d 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/stellar/system-test go 1.24 -toolchain go1.24.2 +toolchain go1.24.5 require ( github.com/cucumber/godog v0.15.1