Skip to content

Commit 0462352

Browse files
Add k6 tests for the opcodes scenario
Signed-off-by: Bilyana Gospodinova <bilyana.gospodinova14@gmail.com>
1 parent 704b086 commit 0462352

5 files changed

Lines changed: 87 additions & 1 deletion

File tree

tools/k6/src/web3/test/common.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,22 @@ function isNonErrorResponse(response) {
3333
}
3434
}
3535

36+
const isValidListResponse = (response, listName) => {
37+
if (!isSuccess(response)) {
38+
return false;
39+
}
40+
41+
const body = JSON.parse(response.body);
42+
const list = body[listName];
43+
if (!Array.isArray(list)) {
44+
return false;
45+
}
46+
47+
return list.length > 0;
48+
};
49+
50+
const isSuccess = (response) => response.status >= 200 && response.status < 300;
51+
3652
const jsonPost = (url, payload) =>
3753
http.post(url, payload, {
3854
headers: {
@@ -190,4 +206,4 @@ function ContractCallTestScenarioBuilder() {
190206
return this;
191207
}
192208

193-
export {isNonErrorResponse, jsonPost, loadVuDataOrDefault, ContractCallTestScenarioBuilder};
209+
export {isNonErrorResponse, isValidListResponse, jsonPost, loadVuDataOrDefault, ContractCallTestScenarioBuilder};

tools/k6/src/web3/test/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ import * as contractCallPrecompileTransferFungibleToken from './modificationTest
6161
import * as contractCallRedirectApprove from './modificationTests/contractCallRedirectApprove.js';
6262
import * as contractCallComplexFunctionTokenLifecycle from './complex-functions/contractCallComplexFunctionsTokenLifecycle.js';
6363
import * as contractCallComplexFunctionNFTLifecycle from './complex-functions/contractCallComplexFunctionsNFTLifecycle.js';
64+
import * as contractResultsOpcodes from './opcodes/contractResultsOpcodes.js';
6465
import * as rampUp from './rampUp.js';
6566

6667
// add test modules here
@@ -92,6 +93,7 @@ const tests = {
9293
contractCallTokenType,
9394
contractCallTokenURI,
9495
contractCallTotalSupply,
96+
contractResultsOpcodes,
9597
rampUp,
9698
};
9799

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
import http from 'k6/http';
4+
5+
import {TestScenarioBuilder} from '../../../lib/common.js';
6+
import {isValidListResponse} from '../common.js';
7+
8+
const urlTag = '/contracts/results/{transactionId}/opcodes';
9+
10+
const baseUrl = __ENV.BASE_URL_PREFIX;
11+
const transactionId = __ENV.TRANSACTION_ID;
12+
13+
const path = `/contracts/results/${transactionId}/opcodes`;
14+
15+
const {options, run} = new TestScenarioBuilder()
16+
.name('opcodes') // use unique scenario name among all tests
17+
.request(() => {
18+
const url = `${baseUrl}${path}`;
19+
return http.get(url);
20+
})
21+
.check('Opcodes list is not empty.', (r) => isValidListResponse(r, 'opcodes'))
22+
.build();
23+
24+
export {options, run};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
import {TestScenarioBuilder} from '../../../lib/common.js';
4+
import {isValidListResponse} from '../common.js';
5+
6+
const urlTag = '/contracts/results/{transactionId}/opcodes?stack=false&memory=false&storage=false';
7+
8+
const baseUrl = __ENV.BASE_URL_PREFIX;
9+
const transactionId = __ENV.TRANSACTION_ID;
10+
11+
const path = `/contracts/results/${transactionId}/opcodes`;
12+
13+
const {options, run} = new TestScenarioBuilder()
14+
.name('opcodes') // use unique scenario name among all tests
15+
.request(() => {
16+
const url = `${baseUrl}${path}`;
17+
return http.get(url);
18+
})
19+
.check('Opcodes list is not empty.', (r) => isValidListResponse(r, 'opcodes'))
20+
.build();
21+
22+
export {options, run};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// SPDX-License-Identifier: Apache-2.0
2+
3+
import {TestScenarioBuilder} from '../../../lib/common.js';
4+
import {isValidListResponse} from '../common.js';
5+
6+
const urlTag = '/contracts/results/{transactionId}/opcodes?stack=true&memory=true&storage=true';
7+
8+
const baseUrl = __ENV.BASE_URL_PREFIX;
9+
const transactionId = __ENV.TRANSACTION_ID;
10+
11+
const path = `/contracts/results/${transactionId}/opcodes`;
12+
13+
const {options, run} = new TestScenarioBuilder()
14+
.name('opcodes') // use unique scenario name among all tests
15+
.request(() => {
16+
const url = `${baseUrl}${path}`;
17+
return http.get(url);
18+
})
19+
.check('Opcodes list is not empty.', (r) => isValidListResponse(r, 'opcodes'))
20+
.build();
21+
22+
export {options, run};

0 commit comments

Comments
 (0)