Skip to content

Commit 5477bce

Browse files
author
NarrowsProjects
committed
wip
1 parent d11d39f commit 5477bce

7 files changed

Lines changed: 178 additions & 34 deletions

File tree

docker-compose.test.debug.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
version: "3.7"
2+
3+
services:
4+
application:
5+
build:
6+
target: test_debug
7+
volumes:
8+
- type: bind
9+
read_only: true
10+
source: ./lib
11+
target: /usr/src/app/lib
12+
- type: bind
13+
read_only: true
14+
source: ./test
15+
target: /usr/src/app/test
16+
- type: bind
17+
read_only: true
18+
source: ./proto
19+
target: /usr/src/app/proto

lib/database/adapters/os.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"timeO2Start": 1765275777188,
3+
"timeO2End": 1765276150548,
4+
"timeTrgStart": 1765275777187,
5+
"timeTrgEnd": 1765276137252,
6+
"firstTfTimestamp": null,
7+
"lastTfTimestamp": null,
8+
"startTime": 1765275777187,
9+
"endTime": 1765276137252,
10+
"runDuration": 360065,
11+
"environmentId": "2yc5USRkKCm",
12+
"updatedAt": null,
13+
"runType": {
14+
"name": "PEDESTAL",
15+
"createdAt": null,
16+
"updatedAt": null
17+
},
18+
"definition": "CALIBRATION",
19+
"calibrationStatus": "NO STATUS",
20+
"runQuality": "none",
21+
"nDetectors": 1,
22+
"nFlps": 11,
23+
"nEpns": 5,
24+
"dd_flp": true,
25+
"dcs": true,
26+
"epn": true,
27+
"epnTopology": "",
28+
"nSubtimeframes": null,
29+
"bytesReadOut": null,
30+
"lhcBeamMode": null,
31+
"odcTopologyFullName": "(hash, default, production/standalone-calibration.desc, MCH-badchannel-calibration)",
32+
"lhcPeriod": "LHC25as",
33+
"triggerValue": "LTU",
34+
"ctfFileSize": "undefined",
35+
"tfFileSize": "undefined",
36+
"otherFileSize": "undefined",
37+
"nTfOrbits": "undefined",
38+
"lhcFill": {
39+
"fillNumber": 11392,
40+
"statistics": null,
41+
"runs": []
42+
},
43+
"detectors": "MCH",
44+
"detectorsQualities": [
45+
{
46+
"id": 2,
47+
"name": "MCH",
48+
"quality": "good"
49+
}
50+
],
51+
"tags": [],
52+
"eorReasons": [],
53+
"logs": [],
54+
"flpRoles": [],
55+
"muInelasticInteractionRate": null,
56+
"collidingBunchesCount": null,
57+
"qcFlags": {}
58+
}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"test:subset-local": "mocha --exit --timeout 0 --reporter test/scripts/parallel-local/custom-mocha-reporter.js test/scripts/test-${TEST_TYPE}.js",
2020
"docker-run": "docker compose -f docker-compose.yml -f docker-compose.dev.yml up --build",
2121
"docker-test": "docker compose -p test -f docker-compose.yml -f docker-compose.test.yml up --build --abort-on-container-exit",
22+
"docker-test:debug": "docker compose -p test -f docker-compose.yml -f docker-compose.test.yml -f docker-compose.test.debug.yml run --rm application",
2223
"docker-test:parallel": "node test/scripts/parallel-local/main.js",
2324
"docker-update": "node scripts/update-dockerfile.js"
2425
},

scripts/script.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import http from 'http';
2+
3+
const ITERATIONS = 100;
4+
const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MCwidXNlcm5hbWUiOiJhbm9ueW1vdXMiLCJuYW1lIjoiQW5vbnltb3VzIiwiYWNjZXNzIjoiYWRtaW4iLCJpYXQiOjE3NzgxNTI0MzcsImV4cCI6MTc3ODc1NzIzNywiaXNzIjoibzItdWkifQ.4hnH1MyomKi2QbDwZh30_STdmAg21Tr_C2m5tW2Cbe0';
5+
6+
function request(url) {
7+
return new Promise((resolve) => {
8+
const start = Date.now();
9+
10+
http.get(url, (res) => {
11+
res.resume();
12+
res.on("end", () => {
13+
resolve({ responseTime: Date.now() - start, statusCode: res.statusCode });
14+
});
15+
})
16+
});
17+
}
18+
19+
const latencyData = {};
20+
21+
async function runTest(key, endpoint) {
22+
const results = [];
23+
24+
for (let i = 1; i <= ITERATIONS; i++) {
25+
const result = await request(`${endpoint}&token=${token}`);
26+
results.push(result);
27+
}
28+
29+
console.log("\n");
30+
31+
const times = results.map((r) => r.responseTime);
32+
const sorted = [...times].sort((a, b) => a - b);
33+
34+
const avg = times.reduce((a, b) => a + b, 0) / times.length;
35+
const min = sorted[0];
36+
const max = sorted[sorted.length - 1];
37+
38+
latencyData[key] = { endpoint, min, max, avg: avg.toFixed(2) };
39+
}
40+
41+
42+
function printResults() {
43+
console.log("====== Latency Benchmark Results ======");
44+
45+
for (let [key, { endpoint, min, max, avg }] of Object.entries(latencyData)) {
46+
console.log(`Page: ${key}`);
47+
console.log(`Endpoint: GET ${endpoint}`);
48+
console.log(`Iterations: ${ITERATIONS}`);
49+
console.log(`Min: ${min} ms`);
50+
console.log(`Max: ${max} ms`);
51+
console.log(`Avg: ${avg} ms`);
52+
console.log("---------------------------------------");
53+
}
54+
55+
console.log("=======================================");
56+
}
57+
58+
Promise.all([
59+
await runTest('Logs', 'http://localhost:4000/api/logs?page[offset]=0&page[limit]=100'),
60+
await runTest('DataPass', 'http://localhost:4000/api/dataPasses?page[offset]=0&page[limit]=100&filter[simulationPassIds][]=3843721'), // This specific filter is required for this endpoint
61+
await runTest('QcFlagTypes', 'http://localhost:4000/api/qcFlagTypes?page[offset]=0&page[limit]=16'), // QC flag types only has 16 entries, hence why only 16 entries are fetched.
62+
await runTest('Runs', 'http://localhost:4000/api/runs?page[offset]=0&page[limit]=100'),
63+
await runTest('Envirionments', 'http://localhost:4000/api/environments?page[offset]=0&page[limit]=100'),
64+
await runTest('LhcFills', 'http://localhost:4000/api/lhcFills?page[offset]=0&page[limit]=100'),
65+
]).then(printResults);
66+

test/api/index.js

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -37,28 +37,28 @@ const CtpTriggerCountersSuite = require('./ctpTriggerCounters.test');
3737
const GaqDetectorsSuite = require('./gaqDetectors.test.js');
3838

3939
module.exports = () => {
40-
describe('Attachments API', AttachmentsSuite);
41-
describe('Configuration API', ConfigurationSuite);
42-
describe('Detectors API', DetectorsSuite);
43-
describe('DPL Process API', DPLProcessSuite);
44-
describe('Environments API', EnvironmentsSuite);
45-
describe('EOS report API', EosReportSuite);
46-
describe('FLP API', FlpSuite);
47-
describe('GaqDetectors API', GaqDetectorsSuite);
48-
describe('LhcFills API', LhcFillSuite);
49-
describe('Logs API', LogsSuite);
50-
describe('Runs API', RunsSuite);
51-
describe('RunsWithRunId API', RunsWithRunId);
52-
describe('RunTypes API', RunTypesSuite);
53-
describe('Shift API', ShiftSuite);
54-
describe('Status API', StatusSuite);
55-
describe('Statistics suite', StatisticsSuite);
56-
describe('Tags API', TagsSuite);
57-
describe('LhcPeriodsStatistics API', LhcPeriodsStatisticsSuite);
58-
describe('DataPasses API', DataPassesSuite);
59-
describe('SimulationPasses API', SimulationPassesSuite);
60-
describe('DplDetectors API', DplDetectorsSuite);
40+
// describe('Attachments API', AttachmentsSuite);
41+
// describe('Configuration API', ConfigurationSuite);
42+
// describe('Detectors API', DetectorsSuite);
43+
// describe('DPL Process API', DPLProcessSuite);
44+
// describe('Environments API', EnvironmentsSuite);
45+
// describe('EOS report API', EosReportSuite);
46+
// describe('FLP API', FlpSuite);
47+
// describe('GaqDetectors API', GaqDetectorsSuite);
48+
// describe('LhcFills API', LhcFillSuite);
49+
// describe('Logs API', LogsSuite);
50+
// describe('Runs API', RunsSuite);
51+
// describe('RunsWithRunId API', RunsWithRunId);
52+
// describe('RunTypes API', RunTypesSuite);
53+
// describe('Shift API', ShiftSuite);
54+
// describe('Status API', StatusSuite);
55+
// describe('Statistics suite', StatisticsSuite);
56+
// describe('Tags API', TagsSuite);
57+
// describe('LhcPeriodsStatistics API', LhcPeriodsStatisticsSuite);
58+
// describe('DataPasses API', DataPassesSuite);
59+
// describe('SimulationPasses API', SimulationPassesSuite);
60+
// describe('DplDetectors API', DplDetectorsSuite);
6161
describe('QcFlagTypes API', QcFlagTypesSuite);
62-
describe('QcFlags API', QcFlagsSuite);
63-
describe('CtpTriggerCounters API', CtpTriggerCountersSuite);
62+
// describe('QcFlags API', QcFlagsSuite);
63+
// describe('CtpTriggerCounters API', CtpTriggerCountersSuite);
6464
};

test/index.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,18 @@ describe('Bookkeeping', () => {
3434
await application.stop(true);
3535
});
3636

37-
describe('Unit Suite', () => {
38-
describe('Database', DatabaseSuite);
39-
describe('Presentation', PresentationSuite);
40-
describe('Public', PublicSuite);
41-
describe('Server', ServerSuite);
42-
describe('Use Cases', UseCasesSuite);
43-
describe('Utilities', UtilitiesSuite);
44-
describe('gRPC suite', GrpcSuite);
45-
});
37+
// describe('Unit Suite', () => {
38+
// describe('Database', DatabaseSuite);
39+
// describe('Presentation', PresentationSuite);
40+
// describe('Public', PublicSuite);
41+
// describe('Server', ServerSuite);
42+
// describe('Use Cases', UseCasesSuite);
43+
// describe('Utilities', UtilitiesSuite);
44+
// describe('gRPC suite', GrpcSuite);
45+
// });
4646

4747
describe('Integration Suite', () => {
48-
describe('UI', FrontendSuite);
48+
// describe('UI', FrontendSuite);
4949
describe('API', APISuite);
5050
});
5151
});

test/public/components/warnings.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ module.exports = () => {
3030

3131
it('Should show warning when a filter in the url is not recognised', async () => {
3232
await page.goto('http://localhost:4000/?page=log-overview&filter[fake]=fake', { waitUntil: 'load' });
33-
const warningText = await getInnerText('.alert-warning > ul');
33+
const warningText = await getInnerText(page.waitForSelector('.alert-warning > ul'));
3434

3535
expect(warningText).to.equal('Unknown Filters: fake');
3636
});

0 commit comments

Comments
 (0)