@cardano-sdk/e2e 0.39.1 → 0.39.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,278 +1,165 @@
1
+ import { SharedArray } from 'k6/data';
2
+ import { apiVersion } from '../../../../../cardano-services-client/src/version.ts';
3
+ import { check, fail } from 'k6';
4
+ import exec from 'k6/execution';
1
5
  import http from 'k6/http';
2
6
 
3
- // eslint-disable-next-line no-undef
4
- const PROVIDER_SERVER_URL = __ENV.PROVIDER_SERVER_URL;
7
+ /**
8
+ * # Script description:
9
+ * - Sends REQUEST_COUNT HTTP requests to fetch assets. Since the number of iterations is indirectly controlled by the
10
+ * duration and rate, it is possible to be slightly inaccurate.
11
+ * - Requests are started 1/s. A maximum of 20 VUs are used, so the maximum number of in-flight requests is 20.
12
+ * - The total number of assets requested per request is the sum of the ASSETS_* variables
13
+ * - AssetIds used are taken from mainnet. If the requested number of assets for the whole test is estimated to be larger
14
+ * than the sample, the test will fail.
15
+ * - Test verifies that:
16
+ * - Threshold for FAIL responses not exceeded (1% for example)
17
+ * - Threshold for response having the wrong number of assets compared to requested is not exceeded (1% for example)
18
+ * - 95th percentile of response time is less than 500ms
19
+ */
20
+
21
+ const ASSETS_NO_METADATA_PER_REQUEST = Number.parseInt(__ENV.ASSETS_NO_METADATA_PER_REQUEST || 1);
22
+ const ASSETS_ON_CHAIN_METADATA_PER_REQUEST = Number.parseInt(__ENV.ASSETS_ON_CHAIN_METADATA_PER_REQUEST || 0);
23
+ const ASSETS_OFF_CHAIN_METADATA_PER_REQUEST = Number.parseInt(__ENV.ASSETS_OFF_CHAIN_METADATA_PER_REQUEST || 0);
24
+ const REQUESTS_COUNT = Number.parseInt(__ENV.REQUESTS_COUNT || 1);
25
+ const TARGET_ENV = __ENV.TARGET_ENV || 'dev'; // only dev and live are supported
26
+ const TARGET_NET = __ENV.TARGET_NET || 'mainnet'; // only mainnet is supported
27
+ const supportedTargetDeployments = new Set(['dev-mainnet', 'live-mainnet']);
28
+ const targetDeployment = `${TARGET_ENV}-${TARGET_NET}`;
29
+ const PROVIDER_SERVER_URL = `https://${targetDeployment}.lw.iog.io`;
5
30
 
6
31
  export const options = {
32
+ scenarios: {
33
+ getAssets: {
34
+ // How long the test lasts.
35
+ // There's an extra iteration that I am correcting here.
36
+ duration: `${REQUESTS_COUNT}s`,
37
+ // Start iterations at a specific rate (`rate/timeUnit`) for `duration`
38
+ // Each iteration is executed by a VU. If the iteration ends, the VU is reused for the next iteration.
39
+ // `maxVUs` when a VU does not receive a response by the end of the iteration, a new VU is allocated
40
+ // for the next iteration. If the number of VUs reaches `maxVUs`, iterations are delayed until a VU is available.
41
+ executor: 'constant-arrival-rate',
42
+ // Randomly picked. This will be the maximum number of in-flight requests (requests waiting for a response).
43
+ maxVUs: 20,
44
+ // Have one 1 VU ready to handle the first iteration.
45
+ preAllocatedVUs: 1,
46
+ // How many iterations per time unit
47
+ rate: 1,
48
+ // Ensure a single iteration is run by making the duration small (1s) and rate higher 1/2s.
49
+ // Otherwise, for duration=1s and rate 1/s, it runs 2 iterations. It could be a bug...
50
+ timeUnit: REQUESTS_COUNT > 1 ? '1s' : '2s'
51
+ }
52
+ },
7
53
  thresholds: {
8
- http_req_duration: ['p(95)<120000'],
9
- http_req_failed: ['rate<0.01']
54
+ // Fail if more than 1% of the requests have invalid number of assets in the response
55
+ 'checks{assetsCountInResponse:assetsCountInResponse}': [{ abortOnFail: true, threshold: 'rate>0.99' }],
56
+ http_req_duration: ['p(95)<2000'],
57
+ //
58
+ http_req_failed: [{ abortOnFail: true, threshold: 'rate<0.1' }]
59
+ }
60
+ };
61
+
62
+ const assetsSample = new SharedArray('assets', () => {
63
+ const assetsMainnetJson = open('../../../dump/assets/mainnet.json');
64
+ const assetsMainnet = JSON.parse(assetsMainnetJson).assets;
65
+ return [
66
+ assetsMainnet.filter((asset) => !asset.hasMetadata).map((asset) => asset.id),
67
+ assetsMainnet.filter((asset) => asset.hasOffchainMetadata).map((asset) => asset.id),
68
+ assetsMainnet.filter((asset) => asset.hasMetadata && !asset.hasOffchainMetadata).map((asset) => asset.id)
69
+ ];
70
+ });
71
+
72
+ export const setup = () => {
73
+ if (
74
+ !check(targetDeployment, {
75
+ 'Target deployment is valid': (target) => supportedTargetDeployments.has(target)
76
+ })
77
+ ) {
78
+ fail(`Unsupported target deployment ${targetDeployment}`);
79
+ }
80
+
81
+ const [assetsNoMetadata, assetsWithOffChainMetadata, assetsWithOnChainMetadata] = assetsSample;
82
+ const availableAssetsInSample = {
83
+ noMetadata: assetsNoMetadata.length,
84
+ withOffChainMetadata: assetsWithOffChainMetadata.length,
85
+ withOnChainMetadata: assetsWithOnChainMetadata.length
86
+ };
87
+
88
+ const totalAssetsToQuery = {
89
+ noMetadata: ASSETS_NO_METADATA_PER_REQUEST * REQUESTS_COUNT,
90
+ withOffChainMetadata: ASSETS_OFF_CHAIN_METADATA_PER_REQUEST * REQUESTS_COUNT,
91
+ withOnChainMetadata: ASSETS_ON_CHAIN_METADATA_PER_REQUEST * REQUESTS_COUNT
92
+ };
93
+
94
+ // Validate we have sufficient assets in the sample to query. Assets already queried will be cached in the back-end
95
+ // So we need to query a different set of assets on each request.
96
+ if (
97
+ !check(totalAssetsToQuery, {
98
+ 'Sufficient assets with no metadata in sample': ({ noMetadata }) =>
99
+ noMetadata <= availableAssetsInSample.noMetadata,
100
+ 'Sufficient assets with off-chain metadata in sample': ({ withOffChainMetadata }) =>
101
+ withOffChainMetadata <= availableAssetsInSample.withOffChainMetadata,
102
+ 'Sufficient assets with on-chain metadata in sample': ({ withOnChainMetadata }) =>
103
+ withOnChainMetadata <= availableAssetsInSample.withOnChainMetadata
104
+ })
105
+ ) {
106
+ fail(
107
+ `Insufficient assets in sample. Requested: ${JSON.stringify(totalAssetsToQuery)}, but have ${JSON.stringify(
108
+ availableAssetsInSample
109
+ )}`
110
+ );
10
111
  }
11
112
  };
12
113
 
13
- const assetIds = [
14
- '3a9241cd79895e3a8d65261b40077d4437ce71e9d7c8c6c00e3f658e4669727374636f696e',
15
- '02f68378e37af4545d027d0a9fa5581ac682897a3fc1f6d8f936ed2b4154414441',
16
- 'e8e62d329e73190190c3e323fb5c9fb98ee55f0676332ba949f29d724649525354',
17
- 'ac3f4224723e2ed9d166478662f6e48bae9ddf0fc5ee58f54f6c322943454e54',
18
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b151754534c41',
19
- 'e12ab5cf12f95cd57b739282d06af9dd61e1b1dde1e06f0c31f0251167696d62616c',
20
- 'da8c30857834c6ae7203935b89278c532b3995245295456f993e1d244c51',
21
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279416c6261',
22
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279416d657468797374',
23
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279417175616d6172696e65',
24
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279417368',
25
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727941756275726e',
26
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279417572656c6961',
27
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279417572656f6c696e',
28
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279417765736f6d65',
29
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279417a756c',
30
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794265696765',
31
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279426572796c',
32
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279426c61636b',
33
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279426c7565',
34
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279426f6e65',
35
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279427269636b',
36
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727942726f776e',
37
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727942797a616e74696e65',
38
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794361646574',
39
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727943616d656c',
40
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794361707269',
41
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727943617264696e616c',
42
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279436572756c65616e',
43
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727943686172747265757365',
44
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279436865727279',
45
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727943696e6e616d6f6e',
46
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279436c656d656e74696e65',
47
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279436f616c',
48
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279436f62616c74',
49
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279436f66666565',
50
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279436f72616c',
51
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794379616e',
52
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727945626f6e79',
53
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279456d6572616c64',
54
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727946756368736961',
55
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279476f6c64',
56
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727947726179',
57
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279477265656e',
58
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727948617a656c',
59
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727948756d62726f6c',
60
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279496e6469676f',
61
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727949726973',
62
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794a616465',
63
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794a657474',
64
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794b656c6c79',
65
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794b68616b69',
66
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794c617661',
67
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794c6176656e646572',
68
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794c656d6f6e',
69
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794c696d65',
70
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794c757374',
71
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc2444558',
72
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174141504c',
73
- 'b93822810dbd56a5b5b815b1946da690312913da74c94e019e028af97065646572',
74
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174150504c45',
75
- 'd63b50fe629b69f1da4897aee9f381fe197c30c06bf35be4355360bd6d617279',
76
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15175445534c41',
77
- 'd3501d9531fcc25e3ca4b6429318c2cc374dbdbcf5e99c1c1e5da1ff444f4e545350414d',
78
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d61726f6f6e',
79
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d61757665',
80
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d656c616e6965',
81
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d656c6f6e',
82
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d696e74',
83
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d6f7261646f',
84
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d6f7373',
85
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d757374617264',
86
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794d7972746c65',
87
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794e617679',
88
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794f6c697665',
89
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794f6e7978',
90
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794f72616e6765',
91
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272794f7263686964',
92
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272795065616368',
93
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727950656172',
94
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727950696e6b',
95
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727950697374616368696f',
96
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279506c6174696e756d',
97
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279507572706c65',
98
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272795261636b6c6579',
99
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279526173706265727279',
100
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279526176656e',
101
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279526564',
102
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279526f7365',
103
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279526f7578',
104
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727952756279',
105
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279527573736574',
106
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272795275737479',
107
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727953616666726f6e',
108
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727953616765',
109
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727953616c6d6f6e',
110
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727953616e64',
111
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272795361707068697265',
112
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279536361726c657474',
113
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272795369656e6e61',
114
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727953696c766572',
115
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727953696e6f706961',
116
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727953756e676c6f77',
117
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727954616e67656c6f',
118
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272795465616c',
119
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279546f6d61746f',
120
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727954757271756f697365',
121
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727956616e696c6c61',
122
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f42657272795665726d696c696f6e',
123
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727956696f6c6574',
124
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f4265727279566972696469616e',
125
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727957696e65',
126
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727958616e616475',
127
- 'b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f426572727959656c6c6f77',
128
- '41fa383bbfccd0378c6855326129fbef8e631a27d938dc238a2fc97c64697361736d',
129
- 'd0cec3ba7bc826892d18ee2c7acd14be050b04a7c15c0ec98647c56372617473',
130
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b151754575452',
131
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b151754574954544552',
132
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a04a756e6557617348657265',
133
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f727365',
134
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736531',
135
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653130',
136
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653131',
137
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653132',
138
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653133',
139
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653134',
140
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653135',
141
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653136',
142
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653137',
143
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653138',
144
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653139',
145
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736532',
146
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653230',
147
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653231',
148
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653232',
149
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653233',
150
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653234',
151
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653235',
152
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653236',
153
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653237',
154
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653238',
155
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653239',
156
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736533',
157
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653330',
158
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653331',
159
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653332',
160
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653333',
161
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653334',
162
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653335',
163
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653336',
164
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653337',
165
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653338',
166
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653339',
167
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736534',
168
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653430',
169
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653431',
170
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653432',
171
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653433',
172
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653434',
173
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653435',
174
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653436',
175
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653437',
176
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653438',
177
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653439',
178
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736535',
179
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f7273653530',
180
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736536',
181
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736537',
182
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736538',
183
- 'fc7e9a7f604c2cd6a169433fb2de86b183b7cd478f46785701ae23a0536561486f72736539',
184
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174d534654',
185
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174d4943524f534f4654',
186
- '4940ad9597460adab9d36a30768675892943dc052da48519e7d392ae474d424c',
187
- 'b7f9c65e055d835c9529243dc90e3677d1af37af2a49178902a5d08062616e616e6173',
188
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc24c4f54544f',
189
- '5d9d887de76a2c9d057b3e5d34d5411f7f8dc4d54f0c06e8ed2eb4a9494e4459',
190
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174353434f',
191
- '7b355978567396d02639cc505620b345e1bbe2c76e53f47a7b6900fa73706f',
192
- 'ca6cace5d3c90cb5e019c0639245d023ba3417b82c6ea72e2f975288636174',
193
- 'ca6cace5d3c90cb5e019c0639245d023ba3417b82c6ea72e2f97528863617478',
194
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b1517434953434f',
195
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc24b495353',
196
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc2454c4f4e',
197
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc242454e',
198
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc244454649',
199
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174950484f4e45',
200
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b151749504144',
201
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b1517424954434f494e',
202
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b1517425443',
203
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174c5443',
204
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174c495445434f494e',
205
- 'a9f443a94bc98f7ed96944a0306ff6b526223519bc972e273e8e8ee7666e74',
206
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b151741554449',
207
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b1517424d57',
208
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174d45524345444553',
209
- 'bcc9c1a22a30cc1a355565bac683735f830c3fd7812fcd1aac53e3e6504c5552',
210
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174a454550',
211
- '51a8b917114265855de3bf1c3c077a8d14123eb2a725a32a37e966bf4d4453',
212
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b151747524331',
213
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b1517475243',
214
- 'c97414a4aa9d8451ebb2c0e66f055d4748132ecd40f3c4a71df161d54144415048',
215
- '56b1124f2405b0d33cae5ddb2e40fe86a4657af124899214691beddc6e6d74',
216
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc24c4f53544c414b4553',
217
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b15174e4654',
218
- '12e65fa3585d80cba39dcf4f59363bb68b77f9d3c0784734427b1517414441',
219
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc2444f4745',
220
- '7c14f8d5e4a52d7c6814f8783df2999bc0e50883099f72f9b3e1a720546f706f43726577',
221
- '024113d85cbf633ffb4c436c786e868a1245c1398bc297302590a35f47524331',
222
- '024113d85cbf633ffb4c436c786e868a1245c1398bc297302590a35f475243',
223
- '0558efc19c2cab91c1fbe808ca9c26c61992b3a583187c9da4530392796f726f69',
224
- 'd8fb8de71d94caf74885dff2e5f3b8eaca95c67b37b6b650111bd7df474153',
225
- '93ba69a0c19c3364156279f9e0bde261eec7d0184a2bbd0cc669e695686f736b696e736f6e',
226
- '2919cb556e84b24f3878566780c50ac2cb6a7094f862281c19088bb3454e45524759',
227
- 'ba53bc5049cc226f7c8582faec8047bb70982d30539d11697957fb91636861726c6573',
228
- '89414df16678a212636604cf4ba367bdacc2939821a6a849cb58cde64655454c',
229
- '21c26b0c4d1cb37225374c96f38df70ecffd808bbd7f1aae23d8b3e37461696c73',
230
- '9b0fa595d72beb53b70f649c51734819821ed5470cffcff1d07fbf2853414c5459636f696e',
231
- '826033f14c75032b5cead9b73c507452377bf8603ac0cd2f74d5dfd8e7b485e58c85',
232
- '74d3e78bb4988f3875cfee97667bf45c2e9074ad2aa321d7b4988d1f4144415048',
233
- 'ca079f39e33ca1b6ec7b4f4eedffa4f40d7d111f96bde855ba224dc2425443',
234
- '2f1679cb4b7c9c92fcf70357358758d787e418508e0aa80eb8741a32424f484f4c',
235
- '006144f3665c793920698e3874c60e0b6a9ac1ea3fb4da8bb3417a304a4f4253',
236
- '5d871b8f74d71ec99f1fd3e5b27e58a6a472b9c73d47bca6e9d78b3f4a4f42',
237
- '4a23f809ccedbd4cff4840e614a641e55d77c9bd2bd2792ad6d9ba8b41515541',
238
- '55f526d5ad7a1e0bd50761a194cfecf2fccb1c35e372e7a45e06ad6057425443',
239
- 'a318cd3ed8585a56a6c9c649f0be0a7fd42bcbb29d162d98864eec1d6d656c',
240
- 'd41180e977877c6ea12aa84e3371d52d49a7f9d024fa3e74d43375d557455448',
241
- '1c78f853729173df5933b9fee1eefccce01d52db1adadffcbea89e154b495749656767',
242
- 'eb970e28464be9486a779759828d79fb7a7154782b93e3f5e26875a94d454d45',
243
- 'ca8c8101bc688da236b2f7bfb73bbbd76c98188e57edd4e089a03fda455448',
244
- 'eccf56b527ed77b562259bfd1cceb3b9692ee2b1765d98fc5ddecb4a4869416461596f757244616453617973486946726f6d32303231',
245
- 'dfbe6e3399373ff93183e27a0a22ec5d735fbb1668a334ce8714776b4d55474759',
246
- '43d156cc9ad1688e823edfd08e9e4ea9726c5ef9847554320a19e4e4457468657265756d',
247
- 'be3acb2be43759ed6291607f24dc7d5ecb583fc1023e9817ff6aa0054772616365',
248
- '9b9ddbada8dc9cd08509ed660d5b3a65da8f36178def7ced99fa033346726565646f6d546f4e6176616c6e79436f696e',
249
- '26958193370c7c03056e2502325a9a824c62d67d7723aa15c24536a16272696f',
250
- 'eca49efb20b7240521e97c1260d5d2738ab8e7ce2ab821ef819c6ce76a617a7a',
251
- '0fb431bf5dd0ff9fdfcd0a62d51ba3a3324cbd86a6c4521feaecad6b6e65766572676f6e6e6167697665796f757570',
252
- '0fb431bf5dd0ff9fdfcd0a62d51ba3a3324cbd86a6c4521feaecad6b6e65766572676f6e6e6172756e61726f756e64616e64646573657274796f75',
253
- '0fb431bf5dd0ff9fdfcd0a62d51ba3a3324cbd86a6c4521feaecad6b6e65766572676f6e6e616c6574796f75646f776e',
254
- '30db5406094be9701dd3d279f47fad57800ef2e48a2e0b68f13519ce6865616473',
255
- 'e67dd675e3eb7378a855b3d98bd49854cd2731902fd6e4e139974c744a415a5a',
256
- 'b0f4ee2d85783fcafe5d802f329c61c342f5c535a5c556427e77d925435350636f696e',
257
- '26958193370c7c03056e2502325a9a824c62d67d7723aa15c24536a174657374',
258
- 'a488229a17b1df3f54e8aaf40e1267d4b6eb8bcc7743c6921bb1dca0706f74',
259
- 'b6af2ce69465db647f11799e0b9c8a9dd1a97705a72f657de01e4d1677796b6f70',
260
- 'c34b369793a60d233aed95cd1659b692e0275a8201de776d8cf8ab9d4c5353',
261
- 'd8a96e2451d5a5a367fde8badf5389284afec87d614f5dba4080316a53414e44',
262
- 'd894897411707efa755a76deb66d26dfd50593f2e70863e1661e98a07370616365636f696e73',
263
- '677d3bbe3e01eeab498cd8786f7d261d92bd6ecea12109a332e86374416d65726963616e4d616e61746565',
264
- '677d3bbe3e01eeab498cd8786f7d261d92bd6ecea12109a332e86374417369616e456c657068616e74'
265
- ];
114
+ const getAssetsSlice = (assets, iteration, perRequest) => {
115
+ if (perRequest === 0) {
116
+ return [];
117
+ }
118
+ // We've already verified we have enough samples, but the actual iteration count
119
+ // is indirectly controlled with DURATION and RATE, so we need to ensure we don't go out of bounds.
120
+ const start = (perRequest * iteration) % assets.length;
121
+ const end = start + perRequest;
122
+ return assets.slice(start, end);
123
+ };
266
124
 
267
125
  export default function () {
126
+ const [assetsNoMetadata, assetsWithOffChainMetadata, assetsWithOnChainMetadata] = assetsSample;
127
+ const iteration = exec.scenario.iterationInTest;
128
+ const assetIds = [
129
+ ...getAssetsSlice(assetsNoMetadata, iteration, ASSETS_NO_METADATA_PER_REQUEST),
130
+ ...getAssetsSlice(assetsWithOffChainMetadata, iteration, ASSETS_OFF_CHAIN_METADATA_PER_REQUEST),
131
+ ...getAssetsSlice(assetsWithOnChainMetadata, iteration, ASSETS_ON_CHAIN_METADATA_PER_REQUEST)
132
+ ];
133
+
134
+ // It could have less than requested if we are at the end of the sample
135
+ if (!check(assetIds, { 'Request has at least 1 asset': (ids) => ids.length > 0 })) {
136
+ fail('Test error: should request at least 1 asset. This might be a test bug or a configuration issue.');
137
+ }
138
+
268
139
  const body = JSON.stringify({
269
140
  assetIds,
270
141
  extraData: { nftMetadata: true, tokenMetadata: true }
271
142
  });
272
- http.post(`${PROVIDER_SERVER_URL}/asset/get-assets`, body, {
143
+ const response = http.post(`${PROVIDER_SERVER_URL}/v${apiVersion.assetInfo}/asset/get-assets`, body, {
273
144
  headers: {
274
145
  'content-type': 'application/json'
275
146
  },
276
- timeout: '2m'
147
+ timeout: '1m'
277
148
  });
149
+
150
+ if (
151
+ response.status === 200 && // OK responses should have the same number of assets as requested
152
+ !check(
153
+ response.body,
154
+ {
155
+ 'response body contains same number of assets as requested': (assetsInResponse) =>
156
+ JSON.parse(assetsInResponse).length === assetIds.length
157
+ },
158
+ { assetsCountInResponse: 'assetsCountInResponse' }
159
+ )
160
+ ) {
161
+ console.error(`Expected ${assetIds.length} assets in response, but got ${response.body.length}`);
162
+ console.error(`Requested assets: ${assetIds}`);
163
+ console.error(`Response: ${response.body}`);
164
+ }
278
165
  }