Skip to content

Commit 6697b41

Browse files
Merge pull request #507 from multiversx/outcome-tests-15
Additional tests for the outcome parser
2 parents 13b4d1c + 6e77bcb commit 6697b41

File tree

3 files changed

+128
-6
lines changed

3 files changed

+128
-6
lines changed

src/testdata/README.md

+27-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ DECLARE
1212
-- Contract execute, with success
1313
(
1414
SELECT
15-
`_id`,
15+
`_id` `hash`,
1616
'execute_success' `kind`
1717
FROM
1818
`multiversx-blockchain-etl.crypto_multiversx_mainnet_eu.transactions`
@@ -29,7 +29,7 @@ UNION ALL
2929
-- Contract execute, with error
3030
(
3131
SELECT
32-
`_id`,
32+
`_id` `hash`,
3333
'execute_error' `kind`
3434
FROM
3535
`multiversx-blockchain-etl.crypto_multiversx_mainnet_eu.transactions`
@@ -46,7 +46,7 @@ UNION ALL
4646
-- Contract transfer & execute, with success
4747
(
4848
SELECT
49-
`_id`,
49+
`_id` `hash`,
5050
'transfer_execute_success' `kind`
5151
FROM
5252
`multiversx-blockchain-etl.crypto_multiversx_mainnet_eu.transactions`
@@ -63,7 +63,7 @@ UNION ALL
6363
-- Contract transfer & execute, with error
6464
(
6565
SELECT
66-
`_id`,
66+
`_id` `hash`,
6767
'transfer_execute_error' `kind`
6868
FROM
6969
`multiversx-blockchain-etl.crypto_multiversx_mainnet_eu.transactions`
@@ -80,7 +80,7 @@ UNION ALL
8080
-- Relayed, with success
8181
(
8282
SELECT
83-
`_id`,
83+
`_id` `hash`,
8484
'relayed_success' `kind`
8585
FROM
8686
`multiversx-blockchain-etl.crypto_multiversx_mainnet_eu.transactions`
@@ -96,7 +96,7 @@ UNION ALL
9696
-- Relayed, with failure
9797
(
9898
SELECT
99-
`_id`,
99+
`_id` `hash`,
100100
'relayed_error' `kind`
101101
FROM
102102
`multiversx-blockchain-etl.crypto_multiversx_mainnet_eu.transactions`
@@ -108,4 +108,25 @@ UNION ALL
108108
AND RAND() < 0.25
109109
LIMIT
110110
50)
111+
UNION ALL
112+
-- MultiESDTNFTTransfer, with too much gas
113+
(
114+
SELECT
115+
`_id` `hash`,
116+
'multi_transfer_too_much_gas' `kind`
117+
FROM
118+
`multiversx-blockchain-etl.crypto_multiversx_mainnet_eu.transactions`
119+
WHERE
120+
DATE(`timestamp`) >= TIMESTAMP_START
121+
AND DATE(`timestamp`) <= TIMESTAMP_END
122+
AND `operation` = 'MultiESDTNFTTransfer'
123+
AND `function` IS NULL
124+
AND `isRelayed` IS NULL
125+
AND `status` = 'success'
126+
AND `gasLimit` = `gasUsed`
127+
AND ARRAY_LENGTH(`tokens`) = 1
128+
AND `receiversShardIDs`[0] != `senderShard`
129+
AND RAND() < 0.25
130+
LIMIT
131+
20)
111132
```

src/testdata/transactions.mainnet.json

+80
Original file line numberDiff line numberDiff line change
@@ -11506,5 +11506,85 @@
1150611506
{
1150711507
"hash": "a7c20ed14474fad25b3a2c089fae2a45a5c5d11b1ea7574de32542571b46440a",
1150811508
"kind": "relayed_error"
11509+
},
11510+
{
11511+
"hash": "6e0414891686baf7a21c27c24b09e16fe9c3bce040b1bb504a40f4ddf506f402",
11512+
"kind": "multi_transfer_too_much_gas"
11513+
},
11514+
{
11515+
"hash": "3206004a1366581669210845baa1eca90336534e391f81bd01dfe998da4cec40",
11516+
"kind": "multi_transfer_too_much_gas"
11517+
},
11518+
{
11519+
"hash": "c8c164f1597410abc8eae16b660e8d446423b2566d5a8b7617430e0bced0257d",
11520+
"kind": "multi_transfer_too_much_gas"
11521+
},
11522+
{
11523+
"hash": "bb9fb4ca0494ab060aa9ccaf4f24438d0ba2d09127178b97725df3dfa470c264",
11524+
"kind": "multi_transfer_too_much_gas"
11525+
},
11526+
{
11527+
"hash": "f7df0d7180c70b74706ec54a77c56bef02f86dffe5ac2367816b5537559a1aff",
11528+
"kind": "multi_transfer_too_much_gas"
11529+
},
11530+
{
11531+
"hash": "251c7805dd1004ce6f33a2932e237cc2cc41c945683100cd1c23f5de9bccd058",
11532+
"kind": "multi_transfer_too_much_gas"
11533+
},
11534+
{
11535+
"hash": "104187750797f102e3cd223f5a7e3f05bf31ce22606eef9c75318178eb8c6713",
11536+
"kind": "multi_transfer_too_much_gas"
11537+
},
11538+
{
11539+
"hash": "c4511ee6580b3460b0a80dad8514c0998fb006c7e5896831f307211360654c31",
11540+
"kind": "multi_transfer_too_much_gas"
11541+
},
11542+
{
11543+
"hash": "4c4327edcc77e4d8f3de27ecb37cdd898620a6aa46077d7c75b3b637c2d07a60",
11544+
"kind": "multi_transfer_too_much_gas"
11545+
},
11546+
{
11547+
"hash": "f3873ef6f68eab202b775a3b1bec603ceea138031819f290249ad4fbfbb24871",
11548+
"kind": "multi_transfer_too_much_gas"
11549+
},
11550+
{
11551+
"hash": "0209629e347c84714eeb50cb6561b5053e55cc504062eaf70cbfcac5e14f27b5",
11552+
"kind": "multi_transfer_too_much_gas"
11553+
},
11554+
{
11555+
"hash": "9f381f611328b20cce90d18eff81a7532451b858711892ef0e3c29f80d6dceff",
11556+
"kind": "multi_transfer_too_much_gas"
11557+
},
11558+
{
11559+
"hash": "22edc571dd43166a30c0af4182d69c2a628b2543c09724042b6680c0042e0a9e",
11560+
"kind": "multi_transfer_too_much_gas"
11561+
},
11562+
{
11563+
"hash": "8b3b99a33b1b47377fe2c699244c8c137716a1ca8e8cca7f1c48b32a77f0751e",
11564+
"kind": "multi_transfer_too_much_gas"
11565+
},
11566+
{
11567+
"hash": "53dfadaea88e58da21f698f10a1949cc51c4a2cc88a061474ff1f43c2190c752",
11568+
"kind": "multi_transfer_too_much_gas"
11569+
},
11570+
{
11571+
"hash": "080d3a888c140a1664da1f0df59e716da84e377d91e50af45cfd65695c28fcca",
11572+
"kind": "multi_transfer_too_much_gas"
11573+
},
11574+
{
11575+
"hash": "72736705d7cc350ba9ad9c6bd811e744a7c09ce948e2a3982475bc4adcc609a5",
11576+
"kind": "multi_transfer_too_much_gas"
11577+
},
11578+
{
11579+
"hash": "dc534504eb937a0aaac4189ad774dcb1cad32f72b35f31f77370997dc2e1c17c",
11580+
"kind": "multi_transfer_too_much_gas"
11581+
},
11582+
{
11583+
"hash": "122b1bfe8cd22e853708c130be8b8226dfd53380a4e3bd0a56faa8eb66bbe0f6",
11584+
"kind": "multi_transfer_too_much_gas"
11585+
},
11586+
{
11587+
"hash": "a794915071d0924922546fabc67202a06e9d56fb64cda21fa8a235826ae2e3cd",
11588+
"kind": "multi_transfer_too_much_gas"
1150911589
}
1151011590
]

src/transactionsOutcomeParsers/smartContractTransactionsOutcomeParser.main.net.spec.ts

+21
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,27 @@ describe("test smart contract transactions outcome parser on mainnet", () => {
126126
}
127127
});
128128

129+
it("should parse (multi_transfer_too_much_gas)", async function () {
130+
this.timeout(3600000);
131+
132+
const records = await loadRecords("multi_transfer_too_much_gas");
133+
134+
for (let i = 0; i < records.length; i++) {
135+
const { hash } = records[i];
136+
console.log(i, hash);
137+
138+
const transactionOnNetwork = await networkProvider.getTransaction(hash);
139+
const transactionOutcome = converter.transactionOnNetworkToOutcome(transactionOnNetwork);
140+
const parsedOutcomeGivenTransactionOutcome = parser.parseExecute({ transactionOutcome });
141+
const parsedOutcomeGivenTransactionOnNetwork = parser.parseExecute({ transactionOnNetwork });
142+
143+
assert.deepEqual(parsedOutcomeGivenTransactionOutcome, parsedOutcomeGivenTransactionOnNetwork);
144+
assert.equal(parsedOutcomeGivenTransactionOnNetwork.returnCode, "ok");
145+
assert.equal(parsedOutcomeGivenTransactionOnNetwork.returnMessage, "ok");
146+
assert.lengthOf(parsedOutcomeGivenTransactionOnNetwork.values, 0);
147+
}
148+
});
149+
129150
async function loadRecords(kind: string): Promise<any[]> {
130151
const path = "src/testdata/transactions.mainnet.json";
131152
const content: string = await promises.readFile(path, { encoding: "utf8" });

0 commit comments

Comments
 (0)