From d517ae7f2017aec46c7466872bdf10c8d4c2ec36 Mon Sep 17 00:00:00 2001 From: Krystof Stekovic Date: Thu, 12 Feb 2026 13:47:07 +0100 Subject: [PATCH] EAP7-2055 Add Support for OpenTelemetry in the console --- ...onfiguration-subsystem-opentelemetry.cy.ts | 184 ++++++++++++++++++ .../test-configuration-update-channel.cy.ts | 12 +- .../cypress/support/containers-utils.ts | 30 +-- 3 files changed, 208 insertions(+), 18 deletions(-) create mode 100644 packages/testsuite/cypress/e2e/opentelemetry/test-configuration-subsystem-opentelemetry.cy.ts diff --git a/packages/testsuite/cypress/e2e/opentelemetry/test-configuration-subsystem-opentelemetry.cy.ts b/packages/testsuite/cypress/e2e/opentelemetry/test-configuration-subsystem-opentelemetry.cy.ts new file mode 100644 index 000000000..8c753b62f --- /dev/null +++ b/packages/testsuite/cypress/e2e/opentelemetry/test-configuration-subsystem-opentelemetry.cy.ts @@ -0,0 +1,184 @@ +describe("TESTS: Configuration => Subsystem => OpenTelemetry", () => { + const address = ["subsystem", "opentelemetry"]; + const configurationFormId = "model-browser-model-browser-root-form"; + + // Attribute names + const serviceName = "service-name"; + const endpoint = "endpoint"; + const exporterType = "exporter-type"; + const spanProcessorType = "span-processor-type"; + const batchDelay = "batch-delay"; + const maxQueueSize = "max-queue-size"; + const maxExportBatchSize = "max-export-batch-size"; + const exportTimeout = "export-timeout"; + const samplerType = "sampler-type"; + const ratio = "ratio"; + + let managementEndpoint: string; + + before(() => { + cy.startWildflyContainer({ configuration: "standalone-microprofile-insecure.xml" }).then((result) => { + managementEndpoint = result as string; + }); + }); + + after(() => { + cy.task("stop:containers"); + }); + + it("Edit service-name", () => { + const customServiceName = "my-otel-service"; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.text(configurationFormId, serviceName, customServiceName); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, serviceName, customServiceName); + }); + + it("Edit endpoint", () => { + const customEndpoint = "http://otel-collector:4317"; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.text(configurationFormId, endpoint, customEndpoint); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, endpoint, customEndpoint); + }); + + it("Edit endpoint with expression", () => { + const expressionValue = "${env.OTEL_ENDPOINT:http://localhost:4317}"; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.textExpression(configurationFormId, endpoint, expressionValue); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttributeAsExpression(managementEndpoint, address, endpoint, expressionValue); + }); + + it("Change exporter-type to jaeger", () => { + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.selectInDropdownMenu(configurationFormId, exporterType, "jaeger"); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, exporterType, "jaeger"); + }); + + it("Change exporter-type to otlp", () => { + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.selectInDropdownMenu(configurationFormId, exporterType, "otlp"); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, exporterType, "otlp"); + }); + + it("Change span-processor-type to simple", () => { + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.selectInDropdownMenu(configurationFormId, spanProcessorType, "simple"); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, spanProcessorType, "simple"); + }); + + it("Change span-processor-type to batch", () => { + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.selectInDropdownMenu(configurationFormId, spanProcessorType, "batch"); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, spanProcessorType, "batch"); + }); + + it("Edit batch-delay", () => { + const customBatchDelay = 10000; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.text(configurationFormId, batchDelay, customBatchDelay); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, batchDelay, customBatchDelay); + }); + + it("Edit max-queue-size", () => { + const customMaxQueueSize = 4096; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.text(configurationFormId, maxQueueSize, customMaxQueueSize); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, maxQueueSize, customMaxQueueSize); + }); + + it("Edit max-export-batch-size", () => { + const customMaxExportBatchSize = 1024; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.text(configurationFormId, maxExportBatchSize, customMaxExportBatchSize); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, maxExportBatchSize, customMaxExportBatchSize); + }); + + it("Edit export-timeout", () => { + const customExportTimeout = 60000; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.text(configurationFormId, exportTimeout, customExportTimeout); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, exportTimeout, customExportTimeout); + }); + + it("Change sampler-type to on", () => { + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.selectInDropdownMenu(configurationFormId, samplerType, "on"); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, samplerType, "on"); + }); + + it("Change sampler-type to off", () => { + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.selectInDropdownMenu(configurationFormId, samplerType, "off"); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, samplerType, "off"); + }); + + it("Change sampler-type to ratio and set ratio value", () => { + const ratioValue = 0.5; + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.editForm(configurationFormId); + cy.selectInDropdownMenu(configurationFormId, samplerType, "ratio"); + cy.text(configurationFormId, ratio, ratioValue); + cy.saveForm(configurationFormId); + cy.verifySuccess(); + cy.verifyAttribute(managementEndpoint, address, samplerType, "ratio"); + cy.verifyAttribute(managementEndpoint, address, ratio, ratioValue); + }); + + it("Reset configuration", () => { + cy.navigateToGenericSubsystemPage(managementEndpoint, address); + cy.get('#model-browser-resource-tab-container a[href="#model-browser-resource-data-tab"]').click(); + cy.resetForm(configurationFormId, managementEndpoint, address); + }); +}); diff --git a/packages/testsuite/cypress/e2e/update-manager/test-configuration-update-channel.cy.ts b/packages/testsuite/cypress/e2e/update-manager/test-configuration-update-channel.cy.ts index 6d3626d3b..47ce97588 100644 --- a/packages/testsuite/cypress/e2e/update-manager/test-configuration-update-channel.cy.ts +++ b/packages/testsuite/cypress/e2e/update-manager/test-configuration-update-channel.cy.ts @@ -115,7 +115,7 @@ describe("TESTS: Update Manager => Channels", () => { const isJbossEapChannelPrinted = ($items: JQuery): boolean => { for (let i = 0; i < $items.length; i++) { const text = $items[i].innerText.trim(); - if (text.startsWith('JBoss EAP')) { + if (text.startsWith("JBoss EAP")) { return true; } } @@ -132,11 +132,11 @@ describe("TESTS: Update Manager => Channels", () => { cy.navigateToUpdateManagerPage(managementEndpoint, ["update-manager", "updates"]); // click on last printed revision (first revision in history) - cy.get('#update-manager-update ul li').last().click(); + cy.get("#update-manager-update ul li").last().click(); // try to find EAP channel - cy.contains('li.list-group-item', 'Channel Versions') - .find('.value ul li') + cy.contains("li.list-group-item", "Channel Versions") + .find(".value ul li") .should(($items) => { expect(isJbossEapChannelPrinted($items), '"JBoss EAP" channel not printed').to.equal(true); }); @@ -149,8 +149,8 @@ describe("TESTS: Update Manager => Channels", () => { */ it("Check channel version in runtimes", () => { cy.navigateTo(managementEndpoint, "runtime;path=standalone-server-column~standalone-host-server"); - cy.get('#standalone-server-column ul li').first().click(); - cy.get('#channel-versions li .value').should(($items) => { + cy.get("#standalone-server-column ul li").first().click(); + cy.get("#channel-versions li .value").should(($items) => { expect(isJbossEapChannelPrinted($items), '"JBoss EAP" channel not printed').to.equal(true); }); }); diff --git a/packages/testsuite/cypress/support/containers-utils.ts b/packages/testsuite/cypress/support/containers-utils.ts index e4efb4975..d87d994b1 100644 --- a/packages/testsuite/cypress/support/containers-utils.ts +++ b/packages/testsuite/cypress/support/containers-utils.ts @@ -1,14 +1,17 @@ -Cypress.Commands.add("startWildflyContainer", (options = { useNetworkHostMode: false }) => { - return cy.task( - "start:wildfly:container", - { - name: Cypress.spec.name.replace(/\.cy\.ts/g, "").replace(/-/g, "_"), - configuration: "standalone-insecure.xml", - useNetworkHostMode: options.useNetworkHostMode, - }, - { timeout: 240_000 }, - ); -}); +Cypress.Commands.add( + "startWildflyContainer", + (options = { useNetworkHostMode: false, configuration: "standalone-insecure.xml" }) => { + return cy.task( + "start:wildfly:container", + { + name: Cypress.spec.name.replace(/\.cy\.ts/g, "").replace(/-/g, "_"), + configuration: options.configuration || "standalone-insecure.xml", + useNetworkHostMode: options.useNetworkHostMode, + }, + { timeout: 240_000 }, + ); + }, +); Cypress.Commands.add("startWildflyContainerSecured", () => { return cy.task( @@ -43,9 +46,12 @@ declare global { * Start a Wildfly container. This command is executed in before method in most of the test cases/specifications. * Unsecured management interface is used and web console doesn't require any authentication. * + * @param options.useNetworkHostMode - Whether to use network host mode + * @param options.configuration - Configuration file to use (default: standalone-insecure.xml) + * * @category Containers util */ - startWildflyContainer(options?: { useNetworkHostMode?: boolean }): Chainable; + startWildflyContainer(options?: { useNetworkHostMode?: boolean; configuration?: string }): Chainable; /** * Start a Wildfly container wich is secured. This is not for a common use. *