From 366708031020b2ec200ed5a658fda51f55ef30b7 Mon Sep 17 00:00:00 2001 From: Iulian Pascalau Date: Tue, 13 Aug 2024 13:38:23 +0300 Subject: [PATCH] - new chain simulator version --- docker/docker-compose.yml | 2 +- .../framework/chainSimulatorWrapper.go | 29 +++++++++---------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index ece35b11..b4b8803d 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: chain-simulator: - image: multiversx/chainsimulator:v1.7.13-patch1 + image: multiversx/chainsimulator:v1.7.13-patch1-fix1 ports: - 8085:8085 volumes: diff --git a/integrationTests/relayers/slowTests/framework/chainSimulatorWrapper.go b/integrationTests/relayers/slowTests/framework/chainSimulatorWrapper.go index 1a9e027c..d70664a9 100644 --- a/integrationTests/relayers/slowTests/framework/chainSimulatorWrapper.go +++ b/integrationTests/relayers/slowTests/framework/chainSimulatorWrapper.go @@ -34,10 +34,9 @@ const ( setMultipleEndpoint = "simulator/set-state-overwrite" generateBlocksEndpoint = "simulator/generate-blocks/%d" generateBlocksUntilEpochReachedEndpoint = "simulator/generate-blocks-until-epoch-reached/%d" + generateBlocksUntilTxProcessedEndpoint = "simulator/generate-blocks-until-transaction-processed/%s" numProbeRetries = 10 networkConfigEndpointTemplate = "network/status/%d" - maxNumBlocksToBeProcessed = 15 - minNumBlocksToBeProcessedForEachTx = 5 ) var ( @@ -154,21 +153,12 @@ func (instance *chainSimulatorWrapper) DeploySC(ctx context.Context, wasmFilePat // GetTransactionResult tries to get a transaction result. It may wait a few blocks func (instance *chainSimulatorWrapper) getTransactionResult(ctx context.Context, hash string) *data.TransactionOnNetwork { - instance.GenerateBlocks(ctx, minNumBlocksToBeProcessedForEachTx) + instance.GenerateBlocksUntilTxProcessed(ctx, hash) - for i := 0; i < maxNumBlocksToBeProcessed; i++ { - instance.GenerateBlocks(ctx, 1) - - status, txOnNetwork := instance.getTxInfoWithResultsIfTxProcessingFinished(ctx, hash) - if status == transaction.TxStatusPending { - continue - } - require.Equal(instance.TB, transaction.TxStatusSuccess, status, fmt.Sprintf("status not OK for transaction hash %s", hash)) - return txOnNetwork - } + txResult, errGet := instance.proxyInstance.GetTransactionInfoWithResults(ctx, hash) + require.Nil(instance, errGet) - require.Fail(instance.TB, fmt.Sprintf("status still pending for transaction hash %s", hash)) - return nil + return &txResult.Data.Transaction } // GenerateBlocks calls the chain simulator generate block endpoint @@ -189,6 +179,15 @@ func (instance *chainSimulatorWrapper) GenerateBlocksUntilEpochReached(ctx conte } } +// GenerateBlocksUntilTxProcessed will generate blocks until the provided tx hash is executed +func (instance *chainSimulatorWrapper) GenerateBlocksUntilTxProcessed(ctx context.Context, hexTxHash string) { + _, status, err := instance.clientWrapper.PostHTTP(ctx, fmt.Sprintf(generateBlocksUntilTxProcessedEndpoint, hexTxHash), nil) + if err != nil || status != http.StatusOK { + log.Error("error in chainSimulatorWrapper.GenerateBlocksUntilTxProcessed", "error", err, "status", status) + return + } +} + func (instance *chainSimulatorWrapper) getTxInfoWithResultsIfTxProcessingFinished(ctx context.Context, hash string) (transaction.TxStatus, *data.TransactionOnNetwork) { txStatus, err := instance.proxyInstance.ProcessTransactionStatus(ctx, hash) require.Nil(instance, err)