diff --git a/operator-suite/src/main/java/io/brokerqe/claire/plugins/ACSelfProvisioningPlugin.java b/operator-suite/src/main/java/io/brokerqe/claire/plugins/ACSelfProvisioningPlugin.java index afbc9da..0db51f9 100644 --- a/operator-suite/src/main/java/io/brokerqe/claire/plugins/ACSelfProvisioningPlugin.java +++ b/operator-suite/src/main/java/io/brokerqe/claire/plugins/ACSelfProvisioningPlugin.java @@ -9,6 +9,7 @@ import io.brokerqe.claire.ResourceManager; import io.brokerqe.claire.TestUtils; import io.brokerqe.claire.helpers.DataStorer; +import io.fabric8.kubernetes.api.model.Event; import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.api.model.apps.Deployment; @@ -82,13 +83,19 @@ public static void deploy() { applyPatch(); // check logs, possibly restart pod if issue with cert - TestUtils.waitFor(String.format("[%s] GET method to show up in logs of activemq-artemis-self-provisioning-plugin", SPP_DEFAULT_NAMESPACE), Constants.DURATION_5_SECONDS, Constants.DURATION_3_MINUTES, () -> { - Pod pod = kubeClient.getFirstPodByPrefixName(SPP_DEFAULT_NAMESPACE, "activemq-artemis-self-provisioning-plugin"); - String logs = kubeClient.getLogsFromPod(pod); - return logs.contains("GET /plugin-manifest.json"); - }); + TestUtils.threadSleep(Constants.DURATION_10_SECONDS); + List events = kubeClient.getKubernetesClient().v1().events().inNamespace(SPP_DEFAULT_NAMESPACE).list().getItems(); + Pod sppPod; + for (Event event : events) { + if (event.getReason().equals("FailedMount")) { + LOGGER.warn("[{}] Detected FailedMount, restarting spp-pod", SPP_DEFAULT_NAMESPACE); + sppPod = kubeClient.getFirstPodByPrefixName(SPP_DEFAULT_NAMESPACE, "activemq-artemis-self-provisioning-plugin"); + kubeClient.restartPod(SPP_DEFAULT_NAMESPACE, sppPod, SPP_DEFAULT_NAMESPACE); + break; + } + } - Pod sppPod = kubeClient.getFirstPodByPrefixName(SPP_DEFAULT_NAMESPACE, "activemq-artemis-self-provisioning-plugin"); + sppPod = kubeClient.getFirstPodByPrefixName(SPP_DEFAULT_NAMESPACE, "activemq-artemis-self-provisioning-plugin"); String podLogs = kubeClient.getLogsFromPod(sppPod); if (podLogs.contains("SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:SSL alert number ")) { LOGGER.info("[{}] Problem with deployed SPP pod - cert-mount-issues. Restarting pod.", SPP_DEFAULT_NAMESPACE); @@ -128,7 +135,6 @@ private static void removePatch() { LOGGER.info("[PATCH] Removing 'activemq-artemis-self-provisioning-plugin' from consoles.operator.openshift.io cluster"); // plugins=$(oc get consoles.operator.openshift.io cluster -o json | jq '.spec.plugins | map(select(. != "activemq-artemis-self-provisioning-plugin"))') // oc patch consoles.operator.openshift.io cluster --type=merge --patch '{ "spec": { "plugins": $plugins } }' - String[] getPluginsCmd = {"/bin/bash", "-c", "oc get consoles.operator.openshift.io cluster -o json | jq '.spec.plugins | map(select(. != \"activemq-artemis-self-provisioning-plugin\"))'"}; JSONArray jsonPlugins = new JSONArray(TestUtils.executeLocalCommand(getPluginsCmd).replaceAll("\"", "'")); diff --git a/operator-suite/src/test/java/io/brokerqe/claire/spp/BaseWebUITests.java b/operator-suite/src/test/java/io/brokerqe/claire/spp/BaseWebUITests.java index e20e570..1d1103f 100644 --- a/operator-suite/src/test/java/io/brokerqe/claire/spp/BaseWebUITests.java +++ b/operator-suite/src/test/java/io/brokerqe/claire/spp/BaseWebUITests.java @@ -8,6 +8,7 @@ import com.microsoft.playwright.BrowserContext; import com.microsoft.playwright.BrowserType; import com.microsoft.playwright.Download; +import com.microsoft.playwright.Locator; import com.microsoft.playwright.Page; import com.microsoft.playwright.Playwright; import com.microsoft.playwright.junit.UsePlaywright; @@ -32,6 +33,8 @@ public class BaseWebUITests extends AbstractSystemTests { static Browser browser; static BrowserContext context; static Page page; + static Locator.ClickOptions clicker; + static Locator.FillOptions filler; @BeforeAll static void launchBrowser() { @@ -43,6 +46,8 @@ static void launchBrowser() { .setDownloadsPath(Paths.get(ResourceManager.getEnvironment().getTmpDirLocation())); } browser = playwright.chromium().launch(options); + clicker = new Locator.ClickOptions().setTimeout(5000); + filler = new Locator.FillOptions().setTimeout(5000); } @AfterAll diff --git a/operator-suite/src/test/java/io/brokerqe/claire/spp/SelfProvisioningPluginUITests.java b/operator-suite/src/test/java/io/brokerqe/claire/spp/SelfProvisioningPluginUITests.java index 356d814..5c4e92c 100644 --- a/operator-suite/src/test/java/io/brokerqe/claire/spp/SelfProvisioningPluginUITests.java +++ b/operator-suite/src/test/java/io/brokerqe/claire/spp/SelfProvisioningPluginUITests.java @@ -14,6 +14,7 @@ import io.brokerqe.claire.KubernetesVersion; import io.brokerqe.claire.ResourceManager; import io.brokerqe.claire.TestUtils; +import io.brokerqe.claire.exception.ClaireRuntimeException; import io.brokerqe.claire.junit.TestMinimumKubernetesVersion; import io.brokerqe.claire.junit.TestOLMSupported; import io.brokerqe.claire.plugins.ACSelfProvisioningPlugin; @@ -72,14 +73,19 @@ void navigateWorkloadBrokers(Page page) { void navigateWorkloadBrokers(Page page, String brokerName) { LOGGER.info("[{}] Navigate to Workloads/Brokers screen", testNamespace); - page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Workloads")).click(); - try { - page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Brokers")).click(new Locator.ClickOptions().setTimeout(5000)); - } catch (TimeoutError e) { - // probably workloads have been clicked twice (thus closed; so click again) - page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Workloads")).click(); - page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Brokers")).click(new Locator.ClickOptions().setTimeout(5000)); + Locator workloadsMenuButton = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Workloads")); + List menuContent = workloadsMenuButton.locator("..").getByRole(AriaRole.LIST).allInnerTexts(); + if (menuContent.isEmpty()) { + workloadsMenuButton.click(); + TestUtils.threadSleep(Constants.DURATION_1_SECOND); + menuContent = workloadsMenuButton.locator("..").getByRole(AriaRole.LIST).allInnerTexts(); + } + + if (!menuContent.get(0).contains("Brokers")) { + LOGGER.error("Workloads menu does not contain 'Brokers'! {}", menuContent); + throw new ClaireRuntimeException("Workloads menu does not contain Brokers! Deployment problem?"); } + page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName("Brokers")).click(new Locator.ClickOptions().setTimeout(5000)); if (brokerName != null) { page.getByRole(AriaRole.LINK, new Page.GetByRoleOptions().setName(brokerName)).click(); diff --git a/pom.xml b/pom.xml index b73184b..7729982 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ 0.200.0 1.20.2 2.11.5 - 1.49.0 + 1.50.1 3.2.5 3.8.0