Skip to content

Commit

Permalink
- new chain simulator version
Browse files Browse the repository at this point in the history
  • Loading branch information
iulianpascalau committed Aug 13, 2024
1 parent 4ded91d commit 3667080
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 16 deletions.
2 changes: 1 addition & 1 deletion docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down Expand Up @@ -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
Expand All @@ -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)
Expand Down

0 comments on commit 3667080

Please sign in to comment.