diff --git a/.github/workflows/performance-tests-pr.yaml b/.github/workflows/performance-tests-pr.yaml index 009607eedb..ae72548275 100644 --- a/.github/workflows/performance-tests-pr.yaml +++ b/.github/workflows/performance-tests-pr.yaml @@ -18,7 +18,7 @@ jobs: uses: actions/checkout@v6 - name: Send an HTTP request to start up the server run: | - curl -s '${{ github.event.deployment_status.target_url }}/api/graphql' -X 'POST' -H 'Content-Type: application/json' -d '{"operationName":"DataCubeObservations","variables":{"locale":"en","sourceType":"sparql","sourceUrl":"https://lindas.admin.ch/query","cubeFilter":{"iri":"https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/9","filters":{"https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/Kanton":{"type":"single","value":"https://ld.admin.ch/canton/1"}}}},"query":"query DataCubeObservations($sourceType: String!, $sourceUrl: DataSourceUrl!, $locale: String!, $cubeFilter: DataCubeObservationFilter!) { dataCubeObservations(sourceType: $sourceType, sourceUrl: $sourceUrl, locale: $locale, cubeFilter: $cubeFilter) }"}' > /dev/null + curl -s '${{ github.event.deployment_status.target_url }}/api/graphql' -X 'POST' -H 'Content-Type: application/json' -d '{"operationName":"DataCubeObservations","variables":{"locale":"en","sourceType":"sparql","sourceUrl":"https://lindas.admin.ch/query","cubeFilter":{"iri":"https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/10","filters":{"https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/Kanton":{"type":"single","value":"https://ld.admin.ch/canton/1"}}}},"query":"query DataCubeObservations($sourceType: String!, $sourceUrl: DataSourceUrl!, $locale: String!, $cubeFilter: DataCubeObservationFilter!) { dataCubeObservations(sourceType: $sourceType, sourceUrl: $sourceUrl, locale: $locale, cubeFilter: $cubeFilter) }"}' > /dev/null - name: Download, unzip and install k6 binary run: | wget https://github.com/grafana/k6/releases/download/v0.49.0/k6-v0.49.0-linux-amd64.tar.gz @@ -26,35 +26,140 @@ jobs: sudo cp k6-v0.49.0-linux-amd64/k6 /usr/local/bin/k6 export PATH=$PATH:/usr/local/bin - name: Run k6 test (iteration 1) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeComponents --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/9 --env CUBE_LABEL=Photovoltaikanlagen/9 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag + testid=DataCubeComponents --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/10 + --env CUBE_LABEL=Photovoltaikanlagen/10 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 2) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeComponents --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag + testid=DataCubeComponents --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 + --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 3) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeComponents --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag + testid=DataCubeComponents --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env + CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ + github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 4) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeMetadata --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/9 --env CUBE_LABEL=Photovoltaikanlagen/9 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeMetadata + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/10 + --env CUBE_LABEL=Photovoltaikanlagen/10 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 5) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeMetadata --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeMetadata + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 + --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 6) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeMetadata --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeMetadata + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env + CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ + github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 7) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeObservations --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/9 --env CUBE_LABEL=Photovoltaikanlagen/9 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag + testid=DataCubeObservations --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/10 + --env CUBE_LABEL=Photovoltaikanlagen/10 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 8) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeObservations --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag + testid=DataCubeObservations --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 + --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 9) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubeObservations --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag + testid=DataCubeObservations --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env + CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ + github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 10) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubePreview --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/9 --env CUBE_LABEL=Photovoltaikanlagen/9 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubePreview + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/10 + --env CUBE_LABEL=Photovoltaikanlagen/10 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 11) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubePreview --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubePreview + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 + --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 12) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubePreview --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=DataCubePreview + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env + CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ + github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 13) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=PossibleFilters --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/9 --env CUBE_LABEL=Photovoltaikanlagen/9 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=PossibleFilters + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/10 + --env CUBE_LABEL=Photovoltaikanlagen/10 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 14) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=PossibleFilters --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=PossibleFilters + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://environment.ld.admin.ch/foen/nfi/nfi_C-20/cube/2023-3 + --env CUBE_LABEL=NFI/2023-3 --env CHECK_TIMING=true --env + WORKSPACE=${{ github.workspace }} --quiet - + > $GITHUB_ENV - name: Run k6 test (iteration 15) - run: echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=PossibleFilters --env ENV=PR --env ENDPOINT=${{ github.event.deployment_status.target_url }}/api/graphql --env CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ github.workspace }} --quiet - > $GITHUB_ENV + run: + echo "SUMMARY=${{ env.SUMMARY }}$(k6 run --tag testid=PossibleFilters + --env ENV=PR --env ENDPOINT=${{ + github.event.deployment_status.target_url }}/api/graphql --env + CUBE_IRI=https://energy.ld.admin.ch/elcom/electricityprice --env + CUBE_LABEL=Elcom --env CHECK_TIMING=true --env WORKSPACE=${{ + github.workspace }} --quiet - + > $GITHUB_ENV - name: GQL performance tests ❌ if: ${{ env.SUMMARY != '' }} run: | diff --git a/e2e/filter-position.spec.ts b/e2e/filter-position.spec.ts index 2c5036e5e6..bc7fe549c0 100644 --- a/e2e/filter-position.spec.ts +++ b/e2e/filter-position.spec.ts @@ -4,8 +4,8 @@ const { test, expect } = setup(); test("Filters should be sorted by position", async ({ selectors, actions }) => { await actions.chart.createFrom({ - iri: "https://environment.ld.admin.ch/foen/UBD003002/6", - dataSource: "Int", + iri: "https://environment.ld.admin.ch/foen/ubd003001/10", // "Red List" of species + dataSource: "Prod", }); await selectors.edition.drawerLoaded(); @@ -18,7 +18,7 @@ test("Filters should be sorted by position", async ({ selectors, actions }) => { .getByLabelText("None"); await selectorLocator.click(); - await actions.mui.selectOption("Status"); + await actions.mui.selectOption("Status IUCN"); const panelLeft = await selectors.panels.drawer().within(); await panelLeft.findByText("Selected filters", undefined, { @@ -45,6 +45,5 @@ test("Filters should be sorted by position", async ({ selectors, actions }) => { "Endangered", "Critically endangered", "Regionally extinct", - "Extinct in the world", ]); }); diff --git a/e2e/sorting.spec.ts b/e2e/sorting.spec.ts index 5d2a37f4b9..86f72abfdd 100644 --- a/e2e/sorting.spec.ts +++ b/e2e/sorting.spec.ts @@ -158,7 +158,7 @@ test("Segment sorting with hierarchy", async ({ "Appenzell Ausserrhoden", "Appenzell Innerrhoden", "St Gallen", - "Grisons", + "Graubünden", "Aargau", "Thurgau", "Ticino", diff --git a/k6/performance-tests/data.json b/k6/performance-tests/data.json index 1d90e8b164..ce3bde45cb 100644 --- a/k6/performance-tests/data.json +++ b/k6/performance-tests/data.json @@ -1,7 +1,7 @@ [ { - "iri": "https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/9", - "label": "Photovoltaikanlagen/9", + "iri": "https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/10", + "label": "Photovoltaikanlagen/10", "filters": { "https://energy.ld.admin.ch/sfoe/bfe_ogd84_einmalverguetung_fuer_photovoltaikanlagen/Kanton": { "type": "single", diff --git a/k6/performance-tests/graphql/DataCubeComponents.js b/k6/performance-tests/graphql/DataCubeComponents.js index 2f85c072c9..fa9fb9ec8d 100644 --- a/k6/performance-tests/graphql/DataCubeComponents.js +++ b/k6/performance-tests/graphql/DataCubeComponents.js @@ -37,7 +37,7 @@ const variables = { /** @type {import("k6/options").Options} */ export const options = { - iterations: 2, + iterations: 3, }; const headers = { @@ -51,6 +51,7 @@ export default function Components() { const res = http.post(endpoint, JSON.stringify({ query, variables }), { headers, + tags: { warmup: exec.scenario.iterationInTest === 0 ? "true" : "false" }, }); check(res, { @@ -77,10 +78,16 @@ export default function Components() { } export function handleSummary(data) { - if (durationExceedsThreshold(data.metrics.http_req_duration.values.avg)) { + const warmupMetrics = data.metrics["http_req_duration{warmup:true}"]; + const actualMetrics = data.metrics["http_req_duration{warmup:false}"]; + const avgDuration = actualMetrics + ? actualMetrics.values.avg + : data.metrics.http_req_duration.values.avg; + + if (durationExceedsThreshold(avgDuration)) { return { stdout: `${Math.round( - (100 * data.metrics.http_req_duration.values.avg) / + (100 * avgDuration) / metadata.queries.DataCubeComponents.expectedDuration )}% – DataCubeComponents – ${cubeLabel}. `, }; diff --git a/k6/performance-tests/graphql/DataCubeMetadata.js b/k6/performance-tests/graphql/DataCubeMetadata.js index 6c7662d83a..efd30e28b4 100644 --- a/k6/performance-tests/graphql/DataCubeMetadata.js +++ b/k6/performance-tests/graphql/DataCubeMetadata.js @@ -37,7 +37,7 @@ const variables = { /** @type {import("k6/options").Options} */ export const options = { - iterations: 2, + iterations: 3, }; const headers = { @@ -51,6 +51,7 @@ export default function Components() { const res = http.post(endpoint, JSON.stringify({ query, variables }), { headers, + tags: { warmup: exec.scenario.iterationInTest === 0 ? "true" : "false" }, }); check(res, { @@ -74,11 +75,16 @@ export default function Components() { } export function handleSummary(data) { - if (durationExceedsThreshold(data.metrics.http_req_duration.values.avg)) { + const warmupMetrics = data.metrics["http_req_duration{warmup:true}"]; + const actualMetrics = data.metrics["http_req_duration{warmup:false}"]; + const avgDuration = actualMetrics + ? actualMetrics.values.avg + : data.metrics.http_req_duration.values.avg; + + if (durationExceedsThreshold(avgDuration)) { return { stdout: `${Math.round( - (100 * data.metrics.http_req_duration.values.avg) / - metadata.queries.DataCubeMetadata.expectedDuration + (100 * avgDuration) / metadata.queries.DataCubeMetadata.expectedDuration )}% – DataCubeMetadata – ${cubeLabel}. `, }; } diff --git a/k6/performance-tests/graphql/DataCubeObservations.js b/k6/performance-tests/graphql/DataCubeObservations.js index 9cef80a5fa..06cb7712cb 100644 --- a/k6/performance-tests/graphql/DataCubeObservations.js +++ b/k6/performance-tests/graphql/DataCubeObservations.js @@ -38,7 +38,7 @@ const variables = { /** @type {import("k6/options").Options} */ export const options = { - iterations: 2, + iterations: 3, }; const headers = { @@ -52,6 +52,7 @@ export default function Observations() { const res = http.post(endpoint, JSON.stringify({ query, variables }), { headers, + tags: { warmup: exec.scenario.iterationInTest === 0 ? "true" : "false" }, }); check(res, { @@ -77,10 +78,16 @@ export default function Observations() { } export function handleSummary(data) { - if (durationExceedsThreshold(data.metrics.http_req_duration.values.avg)) { + const warmupMetrics = data.metrics["http_req_duration{warmup:true}"]; + const actualMetrics = data.metrics["http_req_duration{warmup:false}"]; + const avgDuration = actualMetrics + ? actualMetrics.values.avg + : data.metrics.http_req_duration.values.avg; + + if (durationExceedsThreshold(avgDuration)) { return { stdout: `${Math.round( - (100 * data.metrics.http_req_duration.values.avg) / + (100 * avgDuration) / metadata.queries.DataCubeObservations.expectedDuration )}% – DataCubeObservations – ${cubeLabel}. `, }; diff --git a/k6/performance-tests/graphql/DataCubePreview.js b/k6/performance-tests/graphql/DataCubePreview.js index ed89d125bc..1d6de5905c 100644 --- a/k6/performance-tests/graphql/DataCubePreview.js +++ b/k6/performance-tests/graphql/DataCubePreview.js @@ -37,7 +37,7 @@ const variables = { /** @type {import("k6/options").Options} */ export const options = { - iterations: 2, + iterations: 3, }; const headers = { @@ -51,6 +51,7 @@ export default function Components() { const res = http.post(endpoint, JSON.stringify({ query, variables }), { headers, + tags: { warmup: exec.scenario.iterationInTest === 0 ? "true" : "false" }, }); check(res, { @@ -79,11 +80,16 @@ export default function Components() { } export function handleSummary(data) { - if (durationExceedsThreshold(data.metrics.http_req_duration.values.avg)) { + const warmupMetrics = data.metrics["http_req_duration{warmup:true}"]; + const actualMetrics = data.metrics["http_req_duration{warmup:false}"]; + const avgDuration = actualMetrics + ? actualMetrics.values.avg + : data.metrics.http_req_duration.values.avg; + + if (durationExceedsThreshold(avgDuration)) { return { stdout: `${Math.round( - (100 * data.metrics.http_req_duration.values.avg) / - metadata.queries.DataCubePreview.expectedDuration + (100 * avgDuration) / metadata.queries.DataCubePreview.expectedDuration )}% – DataCubePreview – ${cubeLabel}. `, }; } diff --git a/k6/performance-tests/graphql/PossibleFilters.js b/k6/performance-tests/graphql/PossibleFilters.js index 81e7e62c14..e07606db28 100644 --- a/k6/performance-tests/graphql/PossibleFilters.js +++ b/k6/performance-tests/graphql/PossibleFilters.js @@ -40,7 +40,7 @@ const variables = { /** @type {import("k6/options").Options} */ export const options = { - iterations: 2, + iterations: 3, }; const headers = { @@ -54,6 +54,7 @@ export default function Observations() { const res = http.post(endpoint, JSON.stringify({ query, variables }), { headers, + tags: { warmup: exec.scenario.iterationInTest === 0 ? "true" : "false" }, }); check(res, { @@ -77,11 +78,16 @@ export default function Observations() { } export function handleSummary(data) { - if (durationExceedsThreshold(data.metrics.http_req_duration.values.avg)) { + const warmupMetrics = data.metrics["http_req_duration{warmup:true}"]; + const actualMetrics = data.metrics["http_req_duration{warmup:false}"]; + const avgDuration = actualMetrics + ? actualMetrics.values.avg + : data.metrics.http_req_duration.values.avg; + + if (durationExceedsThreshold(avgDuration)) { return { stdout: `${Math.round( - (100 * data.metrics.http_req_duration.values.avg) / - metadata.queries.PossibleFilters.expectedDuration + (100 * avgDuration) / metadata.queries.PossibleFilters.expectedDuration )}% – PossibleFilters – ${cubeLabel}. `, }; }