From e2d6764bbf84f2f5d49e51bd3ae30e8df62b4dfd Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Mon, 30 Aug 2021 23:56:46 +0000 Subject: [PATCH 01/13] added slammer support --- .../weblogic/kubernetes/ItResilience.java | 266 ++++++++++++++++++ .../actions/impl/primitive/Slammer.java | 240 ++++++++++++++++ .../actions/impl/primitive/SlammerParams.java | 162 +++++++++++ .../kubernetes/utils/SlammerUtils.java | 211 ++++++++++++++ 4 files changed, 879 insertions(+) create mode 100644 integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java create mode 100644 integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java create mode 100644 integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java create mode 100644 integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java new file mode 100644 index 00000000000..ceb6ce65716 --- /dev/null +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java @@ -0,0 +1,266 @@ +// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. + +package oracle.weblogic.kubernetes; + +import java.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; + + +import oracle.weblogic.kubernetes.actions.impl.primitive.Slammer; +import oracle.weblogic.kubernetes.actions.impl.primitive.SlammerParams; +import oracle.weblogic.kubernetes.annotations.IntegrationTest; +import oracle.weblogic.kubernetes.annotations.Namespaces; +import oracle.weblogic.kubernetes.logging.LoggingFacade; +import oracle.weblogic.kubernetes.utils.SlammerUtils; +import org.awaitility.core.ConditionFactory; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +import static java.util.concurrent.TimeUnit.MINUTES; +import static java.util.concurrent.TimeUnit.SECONDS; +import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT; +import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_PATCH; +import static oracle.weblogic.kubernetes.TestConstants.ADMIN_SERVER_NAME_BASE; +import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT; +import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_PATCH; +import static oracle.weblogic.kubernetes.TestConstants.MANAGED_SERVER_NAME_BASE; +import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_NAME; +import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; +import static oracle.weblogic.kubernetes.TestConstants.OKD; +import static oracle.weblogic.kubernetes.TestConstants.OPERATOR_RELEASE_NAME; +import static oracle.weblogic.kubernetes.actions.TestActions.deletePod; +import static oracle.weblogic.kubernetes.actions.TestActions.getOperatorPodName; +import static oracle.weblogic.kubernetes.actions.TestActions.getPodCreationTimestamp; +import static oracle.weblogic.kubernetes.actions.TestActions.scaleCluster; +import static oracle.weblogic.kubernetes.actions.TestActions.startOperator; +import static oracle.weblogic.kubernetes.actions.TestActions.stopOperator; +import static oracle.weblogic.kubernetes.assertions.TestAssertions.isOperatorPodRestarted; +import static oracle.weblogic.kubernetes.assertions.TestAssertions.operatorIsReady; +import static oracle.weblogic.kubernetes.assertions.TestAssertions.verifyRollingRestartOccurred; +import static oracle.weblogic.kubernetes.utils.CommonMiiTestUtils.createMiiDomainAndVerify; +import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkPodReadyAndServiceExists; +import static oracle.weblogic.kubernetes.utils.CommonTestUtils.verifyCredentials; +import static oracle.weblogic.kubernetes.utils.OKDUtils.createRouteForOKD; +import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator; +import static oracle.weblogic.kubernetes.utils.PatchDomainUtils.checkPodRestartVersionUpdated; +import static oracle.weblogic.kubernetes.utils.PatchDomainUtils.patchDomainWithNewSecretAndVerify; +import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodDoesNotExist; +import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodRestarted; +import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword; +import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; +import static org.awaitility.Awaitility.with; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + + +// Test resilience using slammer +@DisplayName("Test resilience using slammer") +@IntegrationTest +class ItResilience { + private static String opNamespace = null; + private static String domainNamespace = null; + private static String domainUid = "domain1"; + private static ConditionFactory withStandardRetryPolicy = null; + + private static String adminServerPodName = String.format("%s-%s", domainUid, ADMIN_SERVER_NAME_BASE); + private static String managedServerPrefix = String.format("%s-%s", domainUid, MANAGED_SERVER_NAME_BASE); + private static int replicaCount = 2; + private static LoggingFacade logger = null; + private static String ingressHost = null; //only used for OKD + + /** + * Perform initialization for all the tests in this class. + * Set up the necessary namespaces, install the operator in the first namespace, and + * create a domain in the second namespace using the pre-created basic MII image. + * + * @param namespaces list of namespaces created by the IntegrationTestWatcher by the + * JUnit engine parameter resolution mechanism + */ + @BeforeAll + public static void initAll(@Namespaces(2) List namespaces) { + logger = getLogger(); + // create standard, reusable retry/backoff policy + withStandardRetryPolicy = with().pollDelay(2, SECONDS) + .and().with().pollInterval(10, SECONDS) + .atMost(6, MINUTES).await(); + + //runScaleOperation(5); + Slammer.installSlammer(); + //check if slammer is up + + assertTrue(Slammer.list("network"), "Can't reach slammer"); + // get namespaces + assertNotNull(namespaces.get(0), String.format("Namespace namespaces.get(0) is null")); + opNamespace = namespaces.get(0); + + assertNotNull(namespaces.get(1), String.format("Namespace namespaces.get(1) is null")); + domainNamespace = namespaces.get(1); + + // install the operator + logger.info("Install an operator in namespace {0}, managing namespace {1}", + opNamespace, domainNamespace); + installAndVerifyOperator(opNamespace, domainNamespace); + + // create a domain resource + logger.info("Create model-in-image domain {0} in namespace {1}, and wait until it comes up", + domainUid, domainNamespace); + createMiiDomainAndVerify( + domainNamespace, + domainUid, + MII_BASIC_IMAGE_NAME + ":" + MII_BASIC_IMAGE_TAG, + adminServerPodName, + managedServerPrefix, + replicaCount); + } + + /** + * Stop Operator and delete the admin and managed server pods. + * Restart Operator and verify admin and managed servers are started. + */ + //@Test + @DisplayName("Stop operator, delete all the server pods and restart operator, verify servers are started") + void testRestartOperatorAndVerifyDomainUp() { + + // get operator pod name + String operatorPodName = assertDoesNotThrow( + () -> getOperatorPodName(OPERATOR_RELEASE_NAME, opNamespace)); + assertNotNull(operatorPodName, "Operator pod name returned is null"); + logger.info("Operator pod name {0}", operatorPodName); + + // stop operator by changing replica to 0 in operator deployment + assertTrue(stopOperator(opNamespace), "Couldn't stop the Operator"); + + // check operator pod is not running + checkPodDoesNotExist(operatorPodName, null, opNamespace); + + // delete server pods + for (int i = 1; i <= replicaCount; i++) { + final String managedServerPodName = managedServerPrefix + i; + logger.info("Deleting managed server {0} in namespace {1}", managedServerPodName, domainNamespace); + assertDoesNotThrow(() -> deletePod(managedServerPodName, domainNamespace), + "Got exception while deleting server " + managedServerPodName); + checkPodDoesNotExist(managedServerPodName, domainUid, domainNamespace); + } + + logger.info("deleting admin server pod"); + assertDoesNotThrow(() -> deletePod(adminServerPodName, domainNamespace), + "Got exception while deleting admin server pod"); + checkPodDoesNotExist(adminServerPodName, domainUid, domainNamespace); + + // start operator by changing replica to 1 in operator deployment + assertTrue(startOperator(opNamespace), "Couldn't start the Operator"); + + // check operator is running + logger.info("Check Operator pod is running in namespace {0}", opNamespace); + withStandardRetryPolicy + .conditionEvaluationListener( + condition -> logger.info("Waiting for operator to be running in namespace {0} " + + "(elapsed time {1}ms, remaining time {2}ms)", + opNamespace, + condition.getElapsedTimeInMS(), + condition.getRemainingTimeInMS())) + .until(operatorIsReady(opNamespace)); + + logger.info("Check admin service and pod {0} is created in namespace {1}", + adminServerPodName, domainNamespace); + checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace); + + // check managed server services and pods are ready + for (int i = 1; i <= replicaCount; i++) { + logger.info("Wait for managed server services and pods are created in namespace {0}", + domainNamespace); + checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); + } + } + + /** + * verify the cluster is scaled up. + */ + @Test + @DisplayName("increase replica count for the domain, and verify cluster is scaled up") + void testNetworkDelayVerifyScaling() { + + //runScaleOperation(5); + //Slammer.installSlammer(); + //check if slammer is up + try { + assertTrue(Slammer.list("network"), "Can't reach slammer"); + // check new server is started and existing servers are running + logger.info("Check admin service and pod {0} is created in namespace {1}", + adminServerPodName, domainNamespace); + checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace); + + // check managed server services and pods are ready + for (int i = 1; i <= replicaCount; i++) { + logger.info("Wait for managed server pod {0} to be ready in namespace {1}", + managedServerPrefix + i, domainNamespace); + checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); + } + + Thread t2 = new ScalingUpThread(5); + SlammerParams params = new SlammerParams().delay("9"); + Thread t1 = new SlammerThread(params); + t1.start(); + t2.start(); + + assertDoesNotThrow(() -> t2.join(100 * 1000), "failed to join thread"); + assertDoesNotThrow(() -> t1.join(100 * 1000), "failed to join thread"); + // check managed server services and pods are ready + for (int i = 1; i <= 5; i++) { + logger.info("Wait for managed server pod {0} to be ready in namespace {1}", + managedServerPrefix + i, domainNamespace); + checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); + } + } finally { + SlammerUtils.deleteNetworkLatencyDelay(); + } + } + + private void runScaleOperation(int replicaCount) { + // scale up the domain by increasing replica count + boolean scalingSuccess = assertDoesNotThrow(() -> + scaleCluster(domainUid, domainNamespace, "cluster-1", replicaCount), + String.format("Scaling the cluster cluster-1 of domain %s in namespace %s failed", domainUid, domainNamespace)); + assertTrue(scalingSuccess, + String.format("Cluster scaling failed for domain %s in namespace %s", domainUid, domainNamespace)); + } + + class ScalingUpThread extends Thread { + int replicaCount; + ScalingUpThread(int replicaCount) { + this.replicaCount = replicaCount; + } + + public void run() { + logger.info("Started Scaling thread" ); + runScaleOperation(replicaCount); + logger.info("Finished Scaling thread" ); + } + } + + class SlammerThread extends Thread { + SlammerParams params; + + SlammerThread(SlammerParams params) { + this.params = params; + + } + + public void run() { + logger.info("Started Slammer thread" ); + logger.info("Adding Network delay for " + params.getDelay()); + Slammer.list("network"); + assertTrue(SlammerUtils.addNetworkLatencyDelay(params.getDelay()), "addNetworkLatencyDelay failed"); + Slammer.list("network"); + logger.info("Finished Slammer thread" ); + } + } + +} diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java new file mode 100644 index 00000000000..2b6c10db840 --- /dev/null +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -0,0 +1,240 @@ +// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. + +package oracle.weblogic.kubernetes.actions.impl.primitive; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Map; +import java.util.Optional; + + +import oracle.weblogic.kubernetes.logging.LoggingFacade; +import oracle.weblogic.kubernetes.utils.ExecCommand; +import oracle.weblogic.kubernetes.utils.ExecResult; + +import static oracle.weblogic.kubernetes.TestConstants.K8S_NODEPORT_HOST; +import static oracle.weblogic.kubernetes.TestConstants.RESULTS_BASE; +import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; +import static org.apache.commons.io.FileUtils.deleteDirectory; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class Slammer { + + private static String slammerPropertyFile = Optional.ofNullable(System.getenv("SLAMMER_PROPERTY_FILE")) + .orElse(null); + + private static String remotehost = Optional.ofNullable(System.getenv("SLAMMER_REMOTEHOST")) + .orElse(K8S_NODEPORT_HOST); + + private static String remotepass = Optional.ofNullable(System.getenv("SLAMMER_REMOTEHOST_PASS")) + .orElse("21PinkCat49"); + private static String remoteuser = Optional.ofNullable(System.getenv("SLAMMER_REMOTEHOST_USER")) + .orElse("mkogan"); + + private static String slammerInstallDir = Optional.ofNullable(System.getenv("SLAMMER_INSTALL_DIR")) + .orElse(RESULTS_BASE + "/slammerinstall"); + + public static void installSlammer() { + installSlammer(slammerInstallDir); + } + + public static String getSlammerDir() { + return slammerInstallDir + "/slammer"; + } + + /** + * install slammer src. + * @param installDir location for installation + */ + private static void installSlammer(String installDir) { + LoggingFacade logger = getLogger(); + logger.info("create a staging location for slammer project"); + Path slammerTemp = Paths.get(installDir); + assertDoesNotThrow(() -> deleteDirectory(slammerTemp.toFile())); + assertDoesNotThrow(() -> Files.createDirectories(slammerTemp)); + + String slammerSrcLocation = Optional.ofNullable(System.getenv("SLAMMER_DOWNLOAD_URL")) + .orElse("http://100.111.70.116/slammer.tar"); + CommandParams params = Command.defaultCommandParams() + .command("cd " + installDir + " && wget --no-proxy " + + slammerSrcLocation + + " && tar xf slammer.tar") + .saveResults(true) + .redirect(false); + assertTrue(() -> Command.withParams(params) + .execute()); + } + + /** + * Run a Slammer. + * @param slammerParams the parameters to run slammer + * @return true on success, false otherwise + */ + public static boolean run(SlammerParams slammerParams) { + String slammerDir = getSlammerDir(); + String operation = slammerParams.getOperation(); + String service = slammerParams.getService(); + // assertions for required parameters + assertThat(slammerDir) + .as("make sure slammerDir is not empty or null") + .isNotNull() + .isNotEmpty(); + assertTrue(slammerPropertyFile != null || (remoteuser != null && remotepass != null), + "make sure slammer property or remote user/pass is provided "); + + assertThat(operation) + .as("make sure operation is not empty or null") + .isNotNull() + .isNotEmpty(); + + assertThat(service) + .as("make sure service is not empty or null") + .isNotNull() + .isNotEmpty(); + + + // build Slammer run command + String runCmd = String.format("cd %1s && %2s/slammer.pl --service %3s --operation %4s", + slammerDir, slammerDir, service, operation); + + // if we have timeout + String timeout = slammerParams.getTimeout(); + if (timeout != null) { + runCmd = runCmd + " --timeout " + timeout; + } + + // if we have property file + if (slammerPropertyFile != null) { + runCmd = runCmd + " --property " + slammerPropertyFile; + } + + // if we have remotehost and remotesudopass + if (remotepass != null && remoteuser !=null) { + runCmd = runCmd + " --remotehost " + remotehost + + " --remotepass " + remotepass + + " --remoteuser " + remoteuser; + } + + // if we have delay + String delay = slammerParams.getDelay(); + if (delay != null) { + runCmd = runCmd + " --delay " + delay; + } + + // if we have port + String port = slammerParams.getPort(); + if (port != null) { + runCmd = runCmd + " --port " + port; + } + + // if we have traffic direction + String trafficDirection = slammerParams.getTraffic(); + if (trafficDirection != null) { + runCmd = runCmd + " --traffic " + trafficDirection; + } + + // if we have cpu number + String cpu = slammerParams.getCpu(); + if (cpu != null) { + runCmd = runCmd + " --cpu " + cpu; + } + + // if we have cpu percent + String cpuPercent = slammerParams.getCpuPercent(); + if (cpuPercent != null) { + runCmd = runCmd + " --cpu-percent " + cpuPercent; + } + + // if we have vm + String vm = slammerParams.getVm(); + if (vm != null) { + runCmd = runCmd + " --vm " + vm; + } + + // if we have vmSize + String vmSize = slammerParams.getVmSize(); + if (vmSize != null) { + runCmd = runCmd + " --vmsize " + vmSize; + } + + // if we have fill + String fill = slammerParams.getFill(); + if (fill != null) { + runCmd = runCmd + " --fill " + fill; + } + + // if we have chain + String chain = slammerParams.getChain(); + if (chain != null) { + runCmd = runCmd + " --chain " + chain; + } + + // run the command + return exec(runCmd); + } + + /** + * List operation. + * @param service slammer service name to list + * @return true on success + */ + public static boolean list(String service) { + // assertions for required parameters + String slammerDir = getSlammerDir(); + + // assertions for required parameters + assertThat(slammerDir) + .as("make sure slammerDir is not empty or null") + .isNotNull() + .isNotEmpty(); + + assertThat(service) + .as("make sure service is not empty or null") + .isNotNull() + .isNotEmpty(); + // build Slammer run command + String runCmd = String.format("cd %1s && %2s/slammer.pl --service %3s --operation list", + slammerDir, slammerDir, service); + + // if we have property file + if (slammerPropertyFile != null) { + runCmd = runCmd + " --property " + slammerPropertyFile; + } + + // if we have remotehost and remotesudopass + if (remotepass != null && remoteuser !=null) { + runCmd = runCmd + " --remotehost " + remotehost + + " --remotepass " + remotepass + + " --remoteuser " + remoteuser; + } + return exec(runCmd); + } + + + /** + * Executes the given command. + * @param command the command to execute + * @return true on success, false otherwise + */ + private static boolean exec(String command) { + getLogger().info("Running command - \n" + command); + try { + ExecResult result = ExecCommand.exec(command, true); + getLogger().info("The command returned exit value: " + + result.exitValue() + " command output: " + + result.stderr() + "\n" + result.stdout()); + if (result.exitValue() != 0) { + getLogger().info("Command failed with errors " + result.stderr() + "\n" + result.stdout()); + return false; + } + } catch (Exception e) { + getLogger().info("Got exception, command failed with errors " + e.getMessage()); + return false; + } + return true; + } +} diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java new file mode 100644 index 00000000000..db81c5b606a --- /dev/null +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java @@ -0,0 +1,162 @@ +// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. + +package oracle.weblogic.kubernetes.actions.impl.primitive; + +public class SlammerParams { + // Adding some of the most commonly used params for now + private String service; + private String operation; + private String timeout; + private String delay; + private String cpu; + private String cpuPercent; + private String vm; + private String vmSize; + private String traffic; + private String port; + private String fill; + private String chain; + private String remotehost; + private String remotesudopass; + private String propertyFile; + + public SlammerParams service(String service) { + this.service = service; + return this; + } + + public SlammerParams operation(String operation) { + this.operation = operation; + return this; + } + + public SlammerParams timeout(String timeout) { + this.timeout = timeout; + return this; + } + + public SlammerParams delay(String delay) { + this.delay = delay; + return this; + } + + public SlammerParams cpu(String cpu) { + this.cpu = cpu; + return this; + } + + public SlammerParams cpuPercent(String cpuPercent) { + this.cpuPercent = cpuPercent; + return this; + } + + public SlammerParams traffic(String traffic) { + this.traffic = traffic; + return this; + } + + public SlammerParams port(String port) { + this.port = port; + return this; + } + + public SlammerParams fill(String fill) { + this.fill = fill; + return this; + } + + public SlammerParams vm(String vm) { + this.vm = vm; + return this; + } + + public SlammerParams vmSize(String vmSize) { + this.vmSize = vmSize; + return this; + } + + public SlammerParams remotehost(String remotehost) { + this.remotehost = remotehost; + return this; + } + + public SlammerParams remoteSudoPass(String remotesudopass) { + this.remotesudopass = remotesudopass; + return this; + } + + public SlammerParams chain(String chain) { + this.chain = chain; + return this; + } + + public SlammerParams propertyFile(String propertyFile) { + this.propertyFile = propertyFile; + return this; + } + + public SlammerParams defaults() { + return this; + } + + public String getVm() { + return vm; + } + + public String getVmSize() { + return vmSize; + } + + public String getCpu() { + return cpu; + } + + public String getCpuPercent() { + return cpuPercent; + } + + public String getPort() { + return port; + } + + public String getFill() { + return fill; + } + + public String getTraffic() { + return traffic; + } + + public String getDelay() { + return delay; + } + + public String getTimeout() { + return timeout; + } + + public String getOperation() { + return operation; + } + + public String getService() { + return service; + } + + public String getChain() { + return chain; + }; + + public String getRemoteHost() { + return remotehost; + }; + + public String getRemoteSudoPass() { + return remotesudopass; + }; + + public String getPropertyFile() { + return propertyFile; + }; +} diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java new file mode 100644 index 00000000000..7dadb40d1b6 --- /dev/null +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java @@ -0,0 +1,211 @@ +// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. + +package oracle.weblogic.kubernetes.utils; + +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Optional; + + +import static oracle.weblogic.kubernetes.TestConstants.RESULTS_BASE; +import static oracle.weblogic.kubernetes.actions.ActionConstants.MONITORING_EXPORTER_DOWNLOAD_URL; +import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; +import static org.apache.commons.io.FileUtils.deleteDirectory; +import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import oracle.weblogic.kubernetes.actions.impl.primitive.Command; +import oracle.weblogic.kubernetes.actions.impl.primitive.CommandParams; +import oracle.weblogic.kubernetes.actions.impl.primitive.Slammer; +import oracle.weblogic.kubernetes.actions.impl.primitive.SlammerParams; +import oracle.weblogic.kubernetes.logging.LoggingFacade; + +public class SlammerUtils { + +/** CPU stress functions **/ + + /** + * execute slammer command to stress cpu. + * A cpu stress of around provided value of cpuPercent is infused + * to the target machine for a provided timeout value ( in seconds) . + * + * @param cpuPercent - desired cpu percent + * @param timeout -time in seconds + */ + public static boolean stressByCpuPercentage(String cpuPercent, String timeout) { + SlammerParams slammerParams = new SlammerParams() + .service("stress") + .operation("infuse") + .cpuPercent(cpuPercent) + .timeout(timeout); + + return Slammer.run(slammerParams); + } + + /** + * execute slammer command to stress by numbers of cpu. + * A cpu stress of around provided value of cpuPercent is infused + * to the target machine for a provided timeout value ( in seconds) . + * + * @param cpuNumber number of cpu to stress + * @param timeout time in seconds + */ + public static boolean stressByNumberOfCpus(String cpuNumber, String timeout) { + SlammerParams slammerParams = new SlammerParams() + .service("stress") + .operation("cpu") + .cpuPercent(cpuNumber) + .timeout(timeout); + + return Slammer.run(slammerParams); + } + + /** Network Latency Delay functions **/ + + /** + * Add network delay to your target's network interface + * A network delay of delayTime im ms is added to the active interface + * causing latency in response at the network layer, + * this affects all applications running on the target host + * + * @param delayTime time to delay in seconds + */ + public static boolean addNetworkLatencyDelay(String delayTime) { + SlammerParams slammerParams = new SlammerParams() + .service("network") + .operation("add") + .delay(delayTime); + + return Slammer.run(slammerParams); + } + + /** + * Change network delay to your target's network interface + * A network delay of delayTime im ms is added to the active interface + * causing latency in response at the network layer, + * this affects all applications running on the target host + * + * @param delayTime + */ + public static boolean changeNetworkLatencyDelay(String delayTime) { + SlammerParams slammerParams = new SlammerParams() + .service("network") + .operation("change") + .delay(delayTime); + + return Slammer.run(slammerParams); + } + + /** + * Delete network delay to your target's network interface + * A network delay of delayTime im ms is deleted from the active interface + */ + public static boolean deleteNetworkLatencyDelay() { + SlammerParams slammerParams = new SlammerParams() + .service("network") + .operation("delete"); + return Slammer.run(slammerParams); + } + + /** Block traffic to target host **/ + + /** + * Restrict traffic to specified port + * + * @param operation - block or delete + * @param portNumber - port number to restrict the traffic + * @param trafficDirection incoming or outgoing + * @param timeout , optional timeout time in seconds + */ + public static boolean changeTraffic(String trafficDirection, String portNumber, String operation, String timeout) { + SlammerParams slammerParams = new SlammerParams() + .service("iptables") + .operation(operation) + .port(portNumber) + .traffic(trafficDirection); + if (timeout != null) { + slammerParams.timeout(timeout); + } + return Slammer.run(slammerParams); + } + + /** + * Allow traffic coming to and from specified port + * of a target host of a custom iptable chain + * Allows traffic on port on any chain of a target host, + * this use case is common in OCI environments + * where most ports are blocked by default and you want to open one + * + * @param portNumber - port number to restrict the traffic + * @param chain - custom iptable chain + */ + public static boolean allowTrafficToChain(String portNumber, String chain) { + SlammerParams slammerParams = new SlammerParams() + .service("iptables") + .operation("accept") + .port(portNumber) + .chain(chain); + return Slammer.run(slammerParams); + } + + /** + * Delete traffic coming to and from specified port + * of a target host of a custom iptable chain + * Delete traffic on port on any chain of a target host, this use case + * is used in conjunction + * with the above accept operation to create a flakey connection + * + * @param portNumber - port number to restrict the traffic + * @param chain - custom iptable chain + */ + public static boolean deleteTrafficToChain(String portNumber, String chain) { + SlammerParams slammerParams = new SlammerParams() + .service("iptables") + .operation("delete") + .port(portNumber) + .chain(chain); + return Slammer.run(slammerParams); + } + + /** + * Backup a target host's iptables rules + */ + public static boolean backupHostIptablesRules() { + SlammerParams slammerParams = new SlammerParams() + .service("iptables") + .operation("backup"); + return Slammer.run(slammerParams); + } + + /** + * Restore a target host's iptables rules + */ + public static boolean restoreHostIptablesRules() { + SlammerParams slammerParams = new SlammerParams() + .service("iptables") + .operation("restore"); + return Slammer.run(slammerParams); + } + + /** Memory Stress **/ + /** + * Memory Stress by Size and Threads + * A memory stress of vmsize (for example 2g) multiplied by number threads (vm) , for example 2, + * to induce a total of 2 x 2g = 4g of memory hog to the target machine for a timeout of 10 seconds + * + * @param vm - number of threads + * @param vmSize memory size in gigabytes + * @param timeout - time in seconds + */ + public static boolean memoryStress(String vm, String vmSize, String timeout) { + SlammerParams slammerParams = new SlammerParams() + .service("stress") + .operation("operation") + .vm(vm) + .vmSize(vmSize) + .timeout(timeout); + return Slammer.run(slammerParams); + } +} From 8a27bede115fc6f0d53bc7d26fde151c172fcc2e Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Tue, 31 Aug 2021 00:08:19 +0000 Subject: [PATCH 02/13] checkstyle correction --- .../weblogic/kubernetes/ItResilience.java | 94 ++++++++----------- .../actions/impl/primitive/Slammer.java | 25 ++--- .../actions/impl/primitive/SlammerParams.java | 8 +- .../kubernetes/utils/SlammerUtils.java | 46 +++------ 4 files changed, 69 insertions(+), 104 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java index ceb6ce65716..7c0c7dd0f45 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java @@ -3,12 +3,8 @@ package oracle.weblogic.kubernetes; -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; - import oracle.weblogic.kubernetes.actions.impl.primitive.Slammer; import oracle.weblogic.kubernetes.actions.impl.primitive.SlammerParams; import oracle.weblogic.kubernetes.annotations.IntegrationTest; @@ -18,44 +14,28 @@ import org.awaitility.core.ConditionFactory; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; -import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_DEFAULT; -import static oracle.weblogic.kubernetes.TestConstants.ADMIN_PASSWORD_PATCH; import static oracle.weblogic.kubernetes.TestConstants.ADMIN_SERVER_NAME_BASE; -import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_DEFAULT; -import static oracle.weblogic.kubernetes.TestConstants.ADMIN_USERNAME_PATCH; import static oracle.weblogic.kubernetes.TestConstants.MANAGED_SERVER_NAME_BASE; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; -import static oracle.weblogic.kubernetes.TestConstants.OKD; import static oracle.weblogic.kubernetes.TestConstants.OPERATOR_RELEASE_NAME; import static oracle.weblogic.kubernetes.actions.TestActions.deletePod; import static oracle.weblogic.kubernetes.actions.TestActions.getOperatorPodName; -import static oracle.weblogic.kubernetes.actions.TestActions.getPodCreationTimestamp; import static oracle.weblogic.kubernetes.actions.TestActions.scaleCluster; import static oracle.weblogic.kubernetes.actions.TestActions.startOperator; import static oracle.weblogic.kubernetes.actions.TestActions.stopOperator; -import static oracle.weblogic.kubernetes.assertions.TestAssertions.isOperatorPodRestarted; import static oracle.weblogic.kubernetes.assertions.TestAssertions.operatorIsReady; -import static oracle.weblogic.kubernetes.assertions.TestAssertions.verifyRollingRestartOccurred; import static oracle.weblogic.kubernetes.utils.CommonMiiTestUtils.createMiiDomainAndVerify; import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkPodReadyAndServiceExists; -import static oracle.weblogic.kubernetes.utils.CommonTestUtils.verifyCredentials; -import static oracle.weblogic.kubernetes.utils.OKDUtils.createRouteForOKD; import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator; -import static oracle.weblogic.kubernetes.utils.PatchDomainUtils.checkPodRestartVersionUpdated; -import static oracle.weblogic.kubernetes.utils.PatchDomainUtils.patchDomainWithNewSecretAndVerify; import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodDoesNotExist; -import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodRestarted; -import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static org.awaitility.Awaitility.with; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -187,40 +167,39 @@ void testRestartOperatorAndVerifyDomainUp() { @DisplayName("increase replica count for the domain, and verify cluster is scaled up") void testNetworkDelayVerifyScaling() { - //runScaleOperation(5); - //Slammer.installSlammer(); - //check if slammer is up - try { - assertTrue(Slammer.list("network"), "Can't reach slammer"); - // check new server is started and existing servers are running - logger.info("Check admin service and pod {0} is created in namespace {1}", - adminServerPodName, domainNamespace); - checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace); - - // check managed server services and pods are ready - for (int i = 1; i <= replicaCount; i++) { - logger.info("Wait for managed server pod {0} to be ready in namespace {1}", - managedServerPrefix + i, domainNamespace); - checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); - } - - Thread t2 = new ScalingUpThread(5); - SlammerParams params = new SlammerParams().delay("9"); - Thread t1 = new SlammerThread(params); - t1.start(); - t2.start(); - - assertDoesNotThrow(() -> t2.join(100 * 1000), "failed to join thread"); - assertDoesNotThrow(() -> t1.join(100 * 1000), "failed to join thread"); - // check managed server services and pods are ready - for (int i = 1; i <= 5; i++) { - logger.info("Wait for managed server pod {0} to be ready in namespace {1}", - managedServerPrefix + i, domainNamespace); - checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); + try { + //check if slammer is up + assertTrue(Slammer.list("network"), "Can't reach slammer"); + + // check new server is started and existing servers are running + logger.info("Check admin service and pod {0} is created in namespace {1}", + adminServerPodName, domainNamespace); + checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace); + + // check managed server services and pods are ready + for (int i = 1; i <= replicaCount; i++) { + logger.info("Wait for managed server pod {0} to be ready in namespace {1}", + managedServerPrefix + i, domainNamespace); + checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); + } + + Thread t2 = new ScalingUpThread(5); + SlammerParams params = new SlammerParams().delay("9"); + Thread t1 = new SlammerThread(params); + t1.start(); + t2.start(); + + assertDoesNotThrow(() -> t2.join(100 * 1000), "failed to join thread"); + assertDoesNotThrow(() -> t1.join(100 * 1000), "failed to join thread"); + // check managed server services and pods are ready + for (int i = 1; i <= 5; i++) { + logger.info("Wait for managed server pod {0} to be ready in namespace {1}", + managedServerPrefix + i, domainNamespace); + checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); + } + } finally { + SlammerUtils.deleteNetworkLatencyDelay(); } - } finally { - SlammerUtils.deleteNetworkLatencyDelay(); - } } private void runScaleOperation(int replicaCount) { @@ -234,14 +213,15 @@ private void runScaleOperation(int replicaCount) { class ScalingUpThread extends Thread { int replicaCount; + ScalingUpThread(int replicaCount) { this.replicaCount = replicaCount; } public void run() { - logger.info("Started Scaling thread" ); + logger.info("Started Scaling thread"); runScaleOperation(replicaCount); - logger.info("Finished Scaling thread" ); + logger.info("Finished Scaling thread"); } } @@ -254,12 +234,12 @@ class SlammerThread extends Thread { } public void run() { - logger.info("Started Slammer thread" ); + logger.info("Started Slammer thread"); logger.info("Adding Network delay for " + params.getDelay()); Slammer.list("network"); assertTrue(SlammerUtils.addNetworkLatencyDelay(params.getDelay()), "addNetworkLatencyDelay failed"); Slammer.list("network"); - logger.info("Finished Slammer thread" ); + logger.info("Finished Slammer thread"); } } diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index 2b6c10db840..7b08717378c 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -6,10 +6,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Map; import java.util.Optional; - import oracle.weblogic.kubernetes.logging.LoggingFacade; import oracle.weblogic.kubernetes.utils.ExecCommand; import oracle.weblogic.kubernetes.utils.ExecResult; @@ -38,19 +36,22 @@ public class Slammer { private static String slammerInstallDir = Optional.ofNullable(System.getenv("SLAMMER_INSTALL_DIR")) .orElse(RESULTS_BASE + "/slammerinstall"); - public static void installSlammer() { - installSlammer(slammerInstallDir); - } - public static String getSlammerDir() { return slammerInstallDir + "/slammer"; } /** - * install slammer src. + * install slammer src using specific location. + */ + public static void installSlammer() { + installSlammer(slammerInstallDir); + } + + /** + * install slammer src using specific location. * @param installDir location for installation */ - private static void installSlammer(String installDir) { + public static void installSlammer(String installDir) { LoggingFacade logger = getLogger(); logger.info("create a staging location for slammer project"); Path slammerTemp = Paths.get(installDir); @@ -113,10 +114,10 @@ public static boolean run(SlammerParams slammerParams) { } // if we have remotehost and remotesudopass - if (remotepass != null && remoteuser !=null) { + if (remotepass != null && remoteuser != null) { runCmd = runCmd + " --remotehost " + remotehost - + " --remotepass " + remotepass - + " --remoteuser " + remoteuser; + + " --remotepass " + remotepass + + " --remoteuser " + remoteuser; } // if we have delay @@ -206,7 +207,7 @@ public static boolean list(String service) { } // if we have remotehost and remotesudopass - if (remotepass != null && remoteuser !=null) { + if (remotepass != null && remoteuser != null) { runCmd = runCmd + " --remotehost " + remotehost + " --remotepass " + remotepass + " --remoteuser " + remoteuser; diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java index db81c5b606a..6bd111b9a19 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java @@ -146,17 +146,17 @@ public String getService() { public String getChain() { return chain; - }; + } public String getRemoteHost() { return remotehost; - }; + } public String getRemoteSudoPass() { return remotesudopass; - }; + } public String getPropertyFile() { return propertyFile; - }; + } } diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java index 7dadb40d1b6..f7b86323ff7 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java @@ -3,28 +3,12 @@ package oracle.weblogic.kubernetes.utils; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Optional; - - -import static oracle.weblogic.kubernetes.TestConstants.RESULTS_BASE; -import static oracle.weblogic.kubernetes.actions.ActionConstants.MONITORING_EXPORTER_DOWNLOAD_URL; -import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; -import static org.apache.commons.io.FileUtils.deleteDirectory; -import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import oracle.weblogic.kubernetes.actions.impl.primitive.Command; -import oracle.weblogic.kubernetes.actions.impl.primitive.CommandParams; import oracle.weblogic.kubernetes.actions.impl.primitive.Slammer; import oracle.weblogic.kubernetes.actions.impl.primitive.SlammerParams; -import oracle.weblogic.kubernetes.logging.LoggingFacade; public class SlammerUtils { -/** CPU stress functions **/ + /* CPU stress functions */ /** * execute slammer command to stress cpu. @@ -62,10 +46,10 @@ public static boolean stressByNumberOfCpus(String cpuNumber, String timeout) { return Slammer.run(slammerParams); } - /** Network Latency Delay functions **/ + /* Network Latency Delay functions */ /** - * Add network delay to your target's network interface + * Add network delay to your target's network interface. * A network delay of delayTime im ms is added to the active interface * causing latency in response at the network layer, * this affects all applications running on the target host @@ -82,13 +66,12 @@ public static boolean addNetworkLatencyDelay(String delayTime) { } /** - * Change network delay to your target's network interface + * Change network delay to your target's network interface. * A network delay of delayTime im ms is added to the active interface * causing latency in response at the network layer, * this affects all applications running on the target host - * * @param delayTime - */ + **/ public static boolean changeNetworkLatencyDelay(String delayTime) { SlammerParams slammerParams = new SlammerParams() .service("network") @@ -99,7 +82,7 @@ public static boolean changeNetworkLatencyDelay(String delayTime) { } /** - * Delete network delay to your target's network interface + * Delete network delay to your target's network interface. * A network delay of delayTime im ms is deleted from the active interface */ public static boolean deleteNetworkLatencyDelay() { @@ -109,10 +92,10 @@ public static boolean deleteNetworkLatencyDelay() { return Slammer.run(slammerParams); } - /** Block traffic to target host **/ + /* Block traffic to target host */ /** - * Restrict traffic to specified port + * Restrict traffic to specified port. * * @param operation - block or delete * @param portNumber - port number to restrict the traffic @@ -132,7 +115,7 @@ public static boolean changeTraffic(String trafficDirection, String portNumber, } /** - * Allow traffic coming to and from specified port + * Allow traffic coming to and from specified port. * of a target host of a custom iptable chain * Allows traffic on port on any chain of a target host, * this use case is common in OCI environments @@ -151,7 +134,7 @@ public static boolean allowTrafficToChain(String portNumber, String chain) { } /** - * Delete traffic coming to and from specified port + * Delete traffic coming to and from specified port. * of a target host of a custom iptable chain * Delete traffic on port on any chain of a target host, this use case * is used in conjunction @@ -170,7 +153,7 @@ public static boolean deleteTrafficToChain(String portNumber, String chain) { } /** - * Backup a target host's iptables rules + * Backup a target host's iptables rules. */ public static boolean backupHostIptablesRules() { SlammerParams slammerParams = new SlammerParams() @@ -180,7 +163,7 @@ public static boolean backupHostIptablesRules() { } /** - * Restore a target host's iptables rules + * Restore a target host's iptables rules. */ public static boolean restoreHostIptablesRules() { SlammerParams slammerParams = new SlammerParams() @@ -189,9 +172,10 @@ public static boolean restoreHostIptablesRules() { return Slammer.run(slammerParams); } - /** Memory Stress **/ + /* Memory Stress */ + /** - * Memory Stress by Size and Threads + * Memory Stress by Size and Threads. * A memory stress of vmsize (for example 2g) multiplied by number threads (vm) , for example 2, * to induce a total of 2 x 2g = 4g of memory hog to the target machine for a timeout of 10 seconds * From e943c00b91eee0063a9c9f5be457f260442b7ae4 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Tue, 31 Aug 2021 04:40:04 +0000 Subject: [PATCH 03/13] fixed wget --- .../weblogic/kubernetes/ItResilience.java | 67 ------------------- .../actions/impl/primitive/Slammer.java | 3 +- 2 files changed, 2 insertions(+), 68 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java index 7c0c7dd0f45..577fcabf5a2 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java @@ -22,17 +22,10 @@ import static oracle.weblogic.kubernetes.TestConstants.MANAGED_SERVER_NAME_BASE; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_NAME; import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG; -import static oracle.weblogic.kubernetes.TestConstants.OPERATOR_RELEASE_NAME; -import static oracle.weblogic.kubernetes.actions.TestActions.deletePod; -import static oracle.weblogic.kubernetes.actions.TestActions.getOperatorPodName; import static oracle.weblogic.kubernetes.actions.TestActions.scaleCluster; -import static oracle.weblogic.kubernetes.actions.TestActions.startOperator; -import static oracle.weblogic.kubernetes.actions.TestActions.stopOperator; -import static oracle.weblogic.kubernetes.assertions.TestAssertions.operatorIsReady; import static oracle.weblogic.kubernetes.utils.CommonMiiTestUtils.createMiiDomainAndVerify; import static oracle.weblogic.kubernetes.utils.CommonTestUtils.checkPodReadyAndServiceExists; import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator; -import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodDoesNotExist; import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger; import static org.awaitility.Awaitility.with; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; @@ -100,66 +93,6 @@ public static void initAll(@Namespaces(2) List namespaces) { replicaCount); } - /** - * Stop Operator and delete the admin and managed server pods. - * Restart Operator and verify admin and managed servers are started. - */ - //@Test - @DisplayName("Stop operator, delete all the server pods and restart operator, verify servers are started") - void testRestartOperatorAndVerifyDomainUp() { - - // get operator pod name - String operatorPodName = assertDoesNotThrow( - () -> getOperatorPodName(OPERATOR_RELEASE_NAME, opNamespace)); - assertNotNull(operatorPodName, "Operator pod name returned is null"); - logger.info("Operator pod name {0}", operatorPodName); - - // stop operator by changing replica to 0 in operator deployment - assertTrue(stopOperator(opNamespace), "Couldn't stop the Operator"); - - // check operator pod is not running - checkPodDoesNotExist(operatorPodName, null, opNamespace); - - // delete server pods - for (int i = 1; i <= replicaCount; i++) { - final String managedServerPodName = managedServerPrefix + i; - logger.info("Deleting managed server {0} in namespace {1}", managedServerPodName, domainNamespace); - assertDoesNotThrow(() -> deletePod(managedServerPodName, domainNamespace), - "Got exception while deleting server " + managedServerPodName); - checkPodDoesNotExist(managedServerPodName, domainUid, domainNamespace); - } - - logger.info("deleting admin server pod"); - assertDoesNotThrow(() -> deletePod(adminServerPodName, domainNamespace), - "Got exception while deleting admin server pod"); - checkPodDoesNotExist(adminServerPodName, domainUid, domainNamespace); - - // start operator by changing replica to 1 in operator deployment - assertTrue(startOperator(opNamespace), "Couldn't start the Operator"); - - // check operator is running - logger.info("Check Operator pod is running in namespace {0}", opNamespace); - withStandardRetryPolicy - .conditionEvaluationListener( - condition -> logger.info("Waiting for operator to be running in namespace {0} " - + "(elapsed time {1}ms, remaining time {2}ms)", - opNamespace, - condition.getElapsedTimeInMS(), - condition.getRemainingTimeInMS())) - .until(operatorIsReady(opNamespace)); - - logger.info("Check admin service and pod {0} is created in namespace {1}", - adminServerPodName, domainNamespace); - checkPodReadyAndServiceExists(adminServerPodName, domainUid, domainNamespace); - - // check managed server services and pods are ready - for (int i = 1; i <= replicaCount; i++) { - logger.info("Wait for managed server services and pods are created in namespace {0}", - domainNamespace); - checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace); - } - } - /** * verify the cluster is scaled up. */ diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index 7b08717378c..b55feba7a5a 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -60,8 +60,9 @@ public static void installSlammer(String installDir) { String slammerSrcLocation = Optional.ofNullable(System.getenv("SLAMMER_DOWNLOAD_URL")) .orElse("http://100.111.70.116/slammer.tar"); + //--no-proxy CommandParams params = Command.defaultCommandParams() - .command("cd " + installDir + " && wget --no-proxy " + .command("cd " + installDir + " && wget " + slammerSrcLocation + " && tar xf slammer.tar") .saveResults(true) From eb25bf390cd7e810b93d0a19e1ff05abaa7c5714 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Tue, 31 Aug 2021 14:04:46 +0000 Subject: [PATCH 04/13] fixed wget1 --- .../weblogic/kubernetes/actions/impl/primitive/Slammer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index b55feba7a5a..8ebfdfbfe18 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -59,7 +59,7 @@ public static void installSlammer(String installDir) { assertDoesNotThrow(() -> Files.createDirectories(slammerTemp)); String slammerSrcLocation = Optional.ofNullable(System.getenv("SLAMMER_DOWNLOAD_URL")) - .orElse("http://100.111.70.116/slammer.tar"); + .orElse("http://100.111.70.116/slammer.tar.gz"); //--no-proxy CommandParams params = Command.defaultCommandParams() .command("cd " + installDir + " && wget " From 5ff33bb69faa15a8cefe8668d8739306dcd44ea0 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Thu, 9 Sep 2021 16:29:42 +0000 Subject: [PATCH 05/13] added proxy --- .../weblogic/kubernetes/actions/impl/primitive/Slammer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index 8ebfdfbfe18..2a9d7dbb30c 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -62,7 +62,7 @@ public static void installSlammer(String installDir) { .orElse("http://100.111.70.116/slammer.tar.gz"); //--no-proxy CommandParams params = Command.defaultCommandParams() - .command("cd " + installDir + " && wget " + .command("cd " + installDir + " && wget --no-proxy " + slammerSrcLocation + " && tar xf slammer.tar") .saveResults(true) From 0f0ad7c5c27606064d00422baa691355a281b432 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Thu, 9 Sep 2021 17:39:23 +0000 Subject: [PATCH 06/13] corrected url --- .../weblogic/kubernetes/actions/impl/primitive/Slammer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index 2a9d7dbb30c..be825a73f11 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -59,7 +59,7 @@ public static void installSlammer(String installDir) { assertDoesNotThrow(() -> Files.createDirectories(slammerTemp)); String slammerSrcLocation = Optional.ofNullable(System.getenv("SLAMMER_DOWNLOAD_URL")) - .orElse("http://100.111.70.116/slammer.tar.gz"); + .orElse("http://100.111.70.116/slammer.tar"); //--no-proxy CommandParams params = Command.defaultCommandParams() .command("cd " + installDir + " && wget --no-proxy " From ba26be57a593ea020b21a3a94818667c27330b66 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Thu, 9 Sep 2021 19:08:05 +0000 Subject: [PATCH 07/13] corrected pass/user --- .../kubernetes/actions/impl/primitive/Slammer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index be825a73f11..1fcbc068c79 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -29,9 +29,9 @@ public class Slammer { .orElse(K8S_NODEPORT_HOST); private static String remotepass = Optional.ofNullable(System.getenv("SLAMMER_REMOTEHOST_PASS")) - .orElse("21PinkCat49"); + .orElse(null); private static String remoteuser = Optional.ofNullable(System.getenv("SLAMMER_REMOTEHOST_USER")) - .orElse("mkogan"); + .orElse(null); private static String slammerInstallDir = Optional.ofNullable(System.getenv("SLAMMER_INSTALL_DIR")) .orElse(RESULTS_BASE + "/slammerinstall"); @@ -59,8 +59,8 @@ public static void installSlammer(String installDir) { assertDoesNotThrow(() -> Files.createDirectories(slammerTemp)); String slammerSrcLocation = Optional.ofNullable(System.getenv("SLAMMER_DOWNLOAD_URL")) - .orElse("http://100.111.70.116/slammer.tar"); - //--no-proxy + .orElse(null); + CommandParams params = Command.defaultCommandParams() .command("cd " + installDir + " && wget --no-proxy " + slammerSrcLocation From 7ca26fb9dcea67eaaef95f6df6e50f2923adef99 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Thu, 9 Sep 2021 19:22:15 +0000 Subject: [PATCH 08/13] addd profile --- integration-tests/pom.xml | 9 +++++++++ kindtest.sh | 2 +- oketest.sh | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index e3b8f1e20b8..42cf5d8d3d8 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -289,6 +289,15 @@ + + resilience + + false + + **/ItResilience + + + kind-sequential diff --git a/kindtest.sh b/kindtest.sh index df5375cdb39..165cedbf002 100755 --- a/kindtest.sh +++ b/kindtest.sh @@ -313,7 +313,7 @@ else time mvn -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -DPARALLEL_CLASSES="${parallel_run}" -DNUMBER_OF_THREADS="${threads}" -pl integration-tests -P ${maven_profile_name} verify 2>&1 | tee "${RESULT_ROOT}/kindtest.log" || captureLogs else echo "Running mvn -Dit.test=!ItOperatorWlsUpgrade, !ItDedicatedMode, !ItT3Channel, !ItOpUpgradeFmwDomainInPV, !ItOCILoadBalancer, !ItIstioCrossClusters* -Dwdt.download.url=${wdt_download_url} -Dwit.download.url=${wit_download_url} -Dwle.download.url=${wle_download_url} -DPARALLEL_CLASSES=${parallel_run} -DNUMBER_OF_THREADS=${threads} -pl integration-tests -P ${maven_profile_name} verify" - time mvn -Dit.test="!ItOperatorWlsUpgrade, !ItFmwDomainInPVUsingWDT, !ItFmwDynamicDomainInPV, !ItDedicatedMode, !ItT3Channel, !ItOpUpgradeFmwDomainInPV, !ItOCILoadBalancer, !ItIstioCrossClusters*" -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -DPARALLEL_CLASSES="${parallel_run}" -DNUMBER_OF_THREADS="${threads}" -pl integration-tests -P ${maven_profile_name} verify 2>&1 | tee "${RESULT_ROOT}/kindtest.log" || captureLogs + time mvn -Dit.test="!ItOperatorWlsUpgrade, !ItFmwDomainInPVUsingWDT, !ItFmwDynamicDomainInPV, !ItDedicatedMode, !ItT3Channel, !ItOpUpgradeFmwDomainInPV, !ItOCILoadBalancer, !ItIstioCrossClusters*, !ItResilience" -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -DPARALLEL_CLASSES="${parallel_run}" -DNUMBER_OF_THREADS="${threads}" -pl integration-tests -P ${maven_profile_name} verify 2>&1 | tee "${RESULT_ROOT}/kindtest.log" || captureLogs fi fi diff --git a/oketest.sh b/oketest.sh index f336fdafc67..57bb9f3f9b1 100755 --- a/oketest.sh +++ b/oketest.sh @@ -179,5 +179,5 @@ if [ "${maven_profile_name}" = "oke-cert" ]; then mvn -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -Djdk.tls.client.protocols=TLSv1.2 -pl integration-tests -P ${maven_profile_name} verify 2>&1 | tee "${RESULT_ROOT}/oke.log" else echo "Running mvn -Dit.test=${test_filter}, !ItExternalRmiTunneling, !ItSamples, !ItMiiSample, !ItTwoDomainsLoadBalancers, !ItMonitoringExporter, !ItPodRestart -Dwdt.download.url=${wdt_download_url} -Dwit.download.url=${wit_download_url} -Dwle.download.url=${wle_download_url} -Djdk.tls.client.protocols=TLSv1.2 -pl integration-tests -P integration-tests verify 2>&1 | tee ${RESULT_ROOT}/oke.log" - mvn -Dit.test="${test_filter}, !ItExternalRmiTunneling, !ItSamples, !ItMiiSample, !ItTwoDomainsLoadBalancers, !ItMonitoringExporter, !ItPodRestart" -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -Djdk.tls.client.protocols=TLSv1.2 -pl integration-tests -P ${maven_profile_name} verify 2>&1 | tee "${RESULT_ROOT}/oke.log" + mvn -Dit.test="${test_filter}, !ItExternalRmiTunneling, !ItSamples, !ItMiiSample, !ItTwoDomainsLoadBalancers, !ItMonitoringExporter, !ItPodRestart, !ItResilience" -Dwdt.download.url="${wdt_download_url}" -Dwit.download.url="${wit_download_url}" -Dwle.download.url="${wle_download_url}" -Djdk.tls.client.protocols=TLSv1.2 -pl integration-tests -P ${maven_profile_name} verify 2>&1 | tee "${RESULT_ROOT}/oke.log" fi From 09bb7d5e472ab136db84c40d9b1777545c7f3fc6 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Mon, 13 Sep 2021 16:27:31 +0000 Subject: [PATCH 09/13] added fix --- .../weblogic/kubernetes/actions/impl/primitive/Slammer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index 1fcbc068c79..25ef0bc232d 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -60,7 +60,7 @@ public static void installSlammer(String installDir) { String slammerSrcLocation = Optional.ofNullable(System.getenv("SLAMMER_DOWNLOAD_URL")) .orElse(null); - + CommandParams params = Command.defaultCommandParams() .command("cd " + installDir + " && wget --no-proxy " + slammerSrcLocation From 2f4c42d1739a09bb9c35f85b03b79f2c57dd78ba Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Mon, 13 Sep 2021 16:36:40 +0000 Subject: [PATCH 10/13] added fix1 --- .../weblogic/kubernetes/actions/impl/primitive/Slammer.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index 25ef0bc232d..d409be078e1 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -112,10 +112,8 @@ public static boolean run(SlammerParams slammerParams) { // if we have property file if (slammerPropertyFile != null) { runCmd = runCmd + " --property " + slammerPropertyFile; - } - - // if we have remotehost and remotesudopass - if (remotepass != null && remoteuser != null) { + } else { + // if we have remotehost and remotepass runCmd = runCmd + " --remotehost " + remotehost + " --remotepass " + remotepass + " --remoteuser " + remoteuser; From 24dc94edd40612a317730a36968f6ce83b6a1615 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Tue, 14 Sep 2021 17:54:14 +0000 Subject: [PATCH 11/13] clean up --- .../test/java/oracle/weblogic/kubernetes/ItResilience.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java index 577fcabf5a2..b8137aa3d33 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java @@ -64,10 +64,10 @@ public static void initAll(@Namespaces(2) List namespaces) { .and().with().pollInterval(10, SECONDS) .atMost(6, MINUTES).await(); - //runScaleOperation(5); + //install slammer Slammer.installSlammer(); - //check if slammer is up + //check if slammer is up assertTrue(Slammer.list("network"), "Can't reach slammer"); // get namespaces assertNotNull(namespaces.get(0), String.format("Namespace namespaces.get(0) is null")); From 27422e04c48c69246065b052e63ebe519bdf2d97 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Tue, 14 Sep 2021 20:49:13 +0000 Subject: [PATCH 12/13] corrected copyrights --- .../src/test/java/oracle/weblogic/kubernetes/ItResilience.java | 2 +- .../weblogic/kubernetes/actions/impl/primitive/Slammer.java | 2 +- .../kubernetes/actions/impl/primitive/SlammerParams.java | 2 +- .../java/oracle/weblogic/kubernetes/utils/SlammerUtils.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java index b8137aa3d33..5ca2e71c3f6 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java @@ -1,4 +1,4 @@ -// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Copyright (c) 2021, Oracle and/or its affiliates. // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. package oracle.weblogic.kubernetes; diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index d409be078e1..ceda6d88b24 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -1,4 +1,4 @@ -// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Copyright (c) 2021, Oracle and/or its affiliates. // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. package oracle.weblogic.kubernetes.actions.impl.primitive; diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java index 6bd111b9a19..8cdd6b310bd 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java @@ -1,4 +1,4 @@ -// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Copyright (c) 2021, Oracle and/or its affiliates. // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. package oracle.weblogic.kubernetes.actions.impl.primitive; diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java index f7b86323ff7..4a092c531db 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java @@ -1,4 +1,4 @@ -// Copyright (c) 2020, 2021, Oracle and/or its affiliates. +// Copyright (c) 2021, Oracle and/or its affiliates. // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. package oracle.weblogic.kubernetes.utils; From afca5560330f1464005fafaa7538da5ac5af4890 Mon Sep 17 00:00:00 2001 From: Marina Kogan Date: Wed, 15 Sep 2021 22:33:19 +0000 Subject: [PATCH 13/13] fixed some typos --- .../weblogic/kubernetes/ItResilience.java | 4 +- .../actions/impl/primitive/Slammer.java | 37 ++++--------------- .../actions/impl/primitive/SlammerParams.java | 10 +++++ .../kubernetes/utils/SlammerUtils.java | 2 +- 4 files changed, 21 insertions(+), 32 deletions(-) diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java index 5ca2e71c3f6..b20f6b0e736 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/ItResilience.java @@ -70,10 +70,10 @@ public static void initAll(@Namespaces(2) List namespaces) { //check if slammer is up assertTrue(Slammer.list("network"), "Can't reach slammer"); // get namespaces - assertNotNull(namespaces.get(0), String.format("Namespace namespaces.get(0) is null")); + assertNotNull(namespaces.get(0), "Namespace namespaces.get(0) is null"); opNamespace = namespaces.get(0); - assertNotNull(namespaces.get(1), String.format("Namespace namespaces.get(1) is null")); + assertNotNull(namespaces.get(1), "Namespace namespaces.get(1) is null"); domainNamespace = namespaces.get(1); // install the operator diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java index ceda6d88b24..6adbcf3c215 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/Slammer.java @@ -173,6 +173,12 @@ public static boolean run(SlammerParams slammerParams) { runCmd = runCmd + " --chain " + chain; } + // if we have ociimage + String ociimage = slammerParams.getOciImage(); + if (ociimage != null) { + runCmd = runCmd + "--ocitype kubectl " + " --ociimage " + ociimage; + } + // run the command return exec(runCmd); } @@ -183,35 +189,8 @@ public static boolean run(SlammerParams slammerParams) { * @return true on success */ public static boolean list(String service) { - // assertions for required parameters - String slammerDir = getSlammerDir(); - - // assertions for required parameters - assertThat(slammerDir) - .as("make sure slammerDir is not empty or null") - .isNotNull() - .isNotEmpty(); - - assertThat(service) - .as("make sure service is not empty or null") - .isNotNull() - .isNotEmpty(); - // build Slammer run command - String runCmd = String.format("cd %1s && %2s/slammer.pl --service %3s --operation list", - slammerDir, slammerDir, service); - - // if we have property file - if (slammerPropertyFile != null) { - runCmd = runCmd + " --property " + slammerPropertyFile; - } - - // if we have remotehost and remotesudopass - if (remotepass != null && remoteuser != null) { - runCmd = runCmd + " --remotehost " + remotehost - + " --remotepass " + remotepass - + " --remoteuser " + remoteuser; - } - return exec(runCmd); + SlammerParams slammerParams = new SlammerParams().service(service).operation("list"); + return Slammer.run(slammerParams); } diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java index 8cdd6b310bd..c8ff370b3b2 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/actions/impl/primitive/SlammerParams.java @@ -20,6 +20,7 @@ public class SlammerParams { private String remotehost; private String remotesudopass; private String propertyFile; + private String ociimage; public SlammerParams service(String service) { this.service = service; @@ -96,6 +97,11 @@ public SlammerParams propertyFile(String propertyFile) { return this; } + public SlammerParams ociimage(String ociimage) { + this.ociimage = ociimage; + return this; + } + public SlammerParams defaults() { return this; } @@ -159,4 +165,8 @@ public String getRemoteSudoPass() { public String getPropertyFile() { return propertyFile; } + + public String getOciImage() { + return ociimage; + } } diff --git a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java index 4a092c531db..97c46c74865 100644 --- a/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java +++ b/integration-tests/src/test/java/oracle/weblogic/kubernetes/utils/SlammerUtils.java @@ -54,7 +54,7 @@ public static boolean stressByNumberOfCpus(String cpuNumber, String timeout) { * causing latency in response at the network layer, * this affects all applications running on the target host * - * @param delayTime time to delay in seconds + * @param delayTime time to delay in milliseconds */ public static boolean addNetworkLatencyDelay(String delayTime) { SlammerParams slammerParams = new SlammerParams()