Skip to content

Commit 8ae18d5

Browse files
Remove oke tag from HPA test (#3638)
* Remove OKE tag from HPA test
1 parent 241444e commit 8ae18d5

File tree

1 file changed

+42
-4
lines changed

1 file changed

+42
-4
lines changed

integration-tests/src/test/java/oracle/weblogic/kubernetes/ItHorizontalPodAutoscaler.java

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package oracle.weblogic.kubernetes;
55

66
import java.util.List;
7+
import java.util.concurrent.Callable;
78

89
import io.kubernetes.client.custom.Quantity;
910
import io.kubernetes.client.openapi.models.V1LocalObjectReference;
@@ -30,10 +31,12 @@
3031
import static oracle.weblogic.kubernetes.TestConstants.METRICS_SERVER_YAML;
3132
import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_NAME;
3233
import static oracle.weblogic.kubernetes.TestConstants.MII_BASIC_IMAGE_TAG;
34+
import static oracle.weblogic.kubernetes.TestConstants.OKE_CLUSTER;
3335
import static oracle.weblogic.kubernetes.TestConstants.SKIP_CLEANUP;
3436
import static oracle.weblogic.kubernetes.TestConstants.TEST_IMAGES_REPO_SECRET_NAME;
3537
import static oracle.weblogic.kubernetes.assertions.TestAssertions.podDoesNotExist;
3638
import static oracle.weblogic.kubernetes.assertions.TestAssertions.podReady;
39+
import static oracle.weblogic.kubernetes.assertions.TestAssertions.serviceExists;
3740
import static oracle.weblogic.kubernetes.utils.ClusterUtils.createClusterAndVerify;
3841
import static oracle.weblogic.kubernetes.utils.ClusterUtils.createClusterResource;
3942
import static oracle.weblogic.kubernetes.utils.CommonMiiTestUtils.createDomainResource;
@@ -45,15 +48,21 @@
4548
import static oracle.weblogic.kubernetes.utils.ImageUtils.createBaseRepoSecret;
4649
import static oracle.weblogic.kubernetes.utils.ImageUtils.createTestRepoSecret;
4750
import static oracle.weblogic.kubernetes.utils.OperatorUtils.installAndVerifyOperator;
51+
import static oracle.weblogic.kubernetes.utils.PodUtils.checkPodReady;
4852
import static oracle.weblogic.kubernetes.utils.SecretUtils.createSecretWithUsernamePassword;
4953
import static oracle.weblogic.kubernetes.utils.ThreadSafeLogger.getLogger;
5054
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
5155
import static org.junit.jupiter.api.Assertions.assertNotNull;
5256
import static org.junit.jupiter.api.Assertions.assertTrue;
5357

58+
/**
59+
* Test Horizontal Pod Autoscaler using Kubernetes Metrics Server
60+
* by increasing the CPU utilization.
61+
* This test is not run on OKE as the CPU utilization is not
62+
* going up intermittently after increasing the load.
63+
*/
5464
@DisplayName("Test to a create MII domain and test autoscaling using HPA")
5565
@IntegrationTest
56-
@Tag("oke-parallel")
5766
@Tag("kind-parallel")
5867
public class ItHorizontalPodAutoscaler {
5968
private static String domainNamespace = null;
@@ -240,8 +249,10 @@ private void createHPA() {
240249

241250
private void createLoadOnCpuAndVerifyAutoscaling() {
242251
// execute command to increase cpu usage
252+
int duration = (OKE_CLUSTER == true) ? 60 : 30;
243253
String cmd = "kubectl exec -t " + managedServerPrefix + "1 -n "
244-
+ domainNamespace + " -- timeout --foreground -s 2 30 dd if=/dev/zero of=/dev/null";
254+
+ domainNamespace + " -- timeout --foreground -s 2 "
255+
+ duration + " dd if=/dev/zero of=/dev/null";
245256
CommandParams params = new CommandParams().defaults();
246257
params.command(cmd);
247258
ExecResult result = Command.withParams(params).executeAndReturnResult();
@@ -250,15 +261,30 @@ private void createLoadOnCpuAndVerifyAutoscaling() {
250261

251262
// check cluster is scaled up
252263
for (int i = 1; i <= 4; i++) {
253-
checkPodReadyAndServiceExists(managedServerPrefix + i, domainUid, domainNamespace);
264+
final int j = i;
265+
testUntil(
266+
withLongRetryPolicy,
267+
assertDoesNotThrow(() -> checkHPAAndServiceExists(managedServerPrefix + j,
268+
domainNamespace),
269+
String.format("serviceExists failed with ApiException for service %s in namespace %s",
270+
managedServerPrefix + j, domainNamespace)),
271+
logger,
272+
"service {0} to exist in namespace {1}",
273+
managedServerPrefix + j,
274+
managedServerPrefix + j);
275+
276+
logger.info("Waiting for pod {0} to be ready in namespace {1}",
277+
managedServerPrefix + i, domainNamespace);
278+
checkPodReady(managedServerPrefix + i, domainUid, domainNamespace);
254279
}
255280

256281
// the command to increase cpu load is ran for 30 sec, after that
257282
// it takes some time to autoscale down the cluster
258283
for (int i = 3; i <= 4; i++) {
259284
final int j = i;
260285
testUntil(withLongRetryPolicy,
261-
assertDoesNotThrow(() -> podDoesNotExist(managedServerPrefix + j, domainUid, domainNamespace),
286+
assertDoesNotThrow(() -> checkHPAAndpodDoesNotExist(
287+
managedServerPrefix + j, domainUid, domainNamespace),
262288
String.format("podDoesNotExist failed with ApiException for pod %s in namespace %s",
263289
managedServerPrefix + i, domainNamespace)),
264290
logger,
@@ -274,9 +300,11 @@ private void createLoadOnCpuAndVerifyAutoscaling() {
274300
// verify hpa is getting the metrics
275301
private boolean verifyHPA(String namespace, String hpaName) {
276302
CommandParams params = new CommandParams().defaults();
303+
params.saveResults(true);
277304
params.command("kubectl get hpa " + hpaName + " -n " + namespace);
278305

279306
ExecResult result = Command.withParams(params).executeAndReturnResult();
307+
logger.info("Get HPA result " + result);
280308
/* check if hpa output contains something like 7%/50%
281309
* kubectl get hpa --all-namespaces
282310
* NAMESPACE NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
@@ -287,4 +315,14 @@ private boolean verifyHPA(String namespace, String hpaName) {
287315
*/
288316
return result.stdout().contains("%/");
289317
}
318+
319+
private Callable<Boolean> checkHPAAndpodDoesNotExist(String podName, String domainUid, String namespace) {
320+
verifyHPA(namespace, clusterResName);
321+
return podDoesNotExist(podName, domainUid, namespace);
322+
}
323+
324+
private Callable<Boolean> checkHPAAndServiceExists(String serviceName, String namespace) {
325+
verifyHPA(namespace, clusterResName);
326+
return serviceExists(serviceName, null, namespace);
327+
}
290328
}

0 commit comments

Comments
 (0)