Skip to content

Commit 70aafd1

Browse files
committed
refactor domain installation tests to use DomainYamlFactory
1 parent 1c2933b commit 70aafd1

28 files changed

+1306
-1108
lines changed

kubernetes/src/test/java/oracle/kubernetes/operator/create/CreateDomainGeneratedFilesBaseTest.java

Lines changed: 89 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,87 @@
55
package oracle.kubernetes.operator.create;
66

77
import static java.util.Arrays.asList;
8-
import static oracle.kubernetes.operator.LabelConstants.*;
9-
import static oracle.kubernetes.operator.VersionConstants.*;
8+
import static oracle.kubernetes.operator.LabelConstants.APP_LABEL;
9+
import static oracle.kubernetes.operator.LabelConstants.CLUSTERNAME_LABEL;
10+
import static oracle.kubernetes.operator.LabelConstants.DOMAINNAME_LABEL;
11+
import static oracle.kubernetes.operator.LabelConstants.DOMAINUID_LABEL;
12+
import static oracle.kubernetes.operator.LabelConstants.RESOURCE_VERSION_LABEL;
13+
import static oracle.kubernetes.operator.VersionConstants.APACHE_LOAD_BALANCER_V1;
14+
import static oracle.kubernetes.operator.VersionConstants.DOMAIN_V1;
15+
import static oracle.kubernetes.operator.VersionConstants.TRAEFIK_LOAD_BALANCER_V1;
16+
import static oracle.kubernetes.operator.VersionConstants.VOYAGER_LOAD_BALANCER_V1;
1017
import static oracle.kubernetes.operator.utils.CreateDomainInputs.readInputsYamlFile;
11-
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.*;
18+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.API_GROUP_RBAC;
19+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.API_VERSION_APPS_V1BETA1;
20+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.API_VERSION_EXTENSIONS_V1BETA1;
21+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.API_VERSION_RBAC_V1;
22+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.KIND_CLUSTER_ROLE;
23+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.KIND_SERVICE_ACCOUNT;
24+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.containsRegexps;
25+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.getThenEmptyConfigMapDataValue;
26+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newClusterRole;
27+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newClusterRoleBinding;
28+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newClusterStartup;
29+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newClusterStartupList;
30+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newConfigMap;
31+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newConfigMapVolumeSource;
32+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newContainer;
33+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newContainerPort;
34+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newDeployment;
35+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newDeploymentSpec;
36+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newDomain;
37+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newDomainSpec;
38+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newEnvVar;
39+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newEnvVarList;
40+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newHTTPGetAction;
41+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newHostPathVolumeSource;
42+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newIntOrString;
43+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newJob;
44+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newJobSpec;
45+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newLabelSelector;
46+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newLocalObjectReferenceList;
47+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newObjectMeta;
48+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPersistentVolume;
49+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPersistentVolumeClaim;
50+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPersistentVolumeClaimSpec;
51+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPersistentVolumeClaimVolumeSource;
52+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPersistentVolumeSpec;
53+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPodSpec;
54+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPodTemplateSpec;
55+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newPolicyRule;
56+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newProbe;
57+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newResourceRequirements;
58+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newRoleRef;
59+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newSecretReference;
60+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newSecretVolumeSource;
61+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newServerStartup;
62+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newServerStartupList;
63+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newService;
64+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newServiceAccount;
65+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newServicePort;
66+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newServiceSpec;
67+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newSubject;
68+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newTCPSocketAction;
69+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newToleration;
70+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newVolume;
71+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newVolumeMount;
1272
import static oracle.kubernetes.operator.utils.YamlUtils.yamlEqualTo;
1373
import static org.hamcrest.MatcherAssert.assertThat;
14-
import static org.hamcrest.Matchers.*;
74+
import static org.hamcrest.Matchers.containsString;
75+
import static org.hamcrest.Matchers.is;
1576

1677
import io.kubernetes.client.custom.Quantity;
17-
import io.kubernetes.client.models.*;
18-
import oracle.kubernetes.operator.utils.CreateDomainInputs;
78+
import io.kubernetes.client.models.ExtensionsV1beta1Deployment;
79+
import io.kubernetes.client.models.V1ConfigMap;
80+
import io.kubernetes.client.models.V1Job;
81+
import io.kubernetes.client.models.V1PersistentVolume;
82+
import io.kubernetes.client.models.V1PersistentVolumeClaim;
83+
import io.kubernetes.client.models.V1Service;
84+
import io.kubernetes.client.models.V1ServiceAccount;
85+
import io.kubernetes.client.models.V1beta1ClusterRole;
86+
import io.kubernetes.client.models.V1beta1ClusterRoleBinding;
87+
import oracle.kubernetes.operator.utils.DomainValues;
88+
import oracle.kubernetes.operator.utils.DomainYamlFactory;
1989
import oracle.kubernetes.operator.utils.GeneratedDomainYamlFiles;
2090
import oracle.kubernetes.operator.utils.ParsedApacheSecurityYaml;
2191
import oracle.kubernetes.operator.utils.ParsedApacheYaml;
@@ -30,7 +100,6 @@
30100
import oracle.kubernetes.operator.utils.ParsedWeblogicDomainPersistentVolumeClaimYaml;
31101
import oracle.kubernetes.operator.utils.ParsedWeblogicDomainPersistentVolumeYaml;
32102
import oracle.kubernetes.weblogic.domain.v1.Domain;
33-
import org.junit.AfterClass;
34103
import org.junit.Test;
35104

36105
/**
@@ -40,8 +109,9 @@
40109
*/
41110
public abstract class CreateDomainGeneratedFilesBaseTest {
42111

43-
private static CreateDomainInputs inputs;
112+
private static DomainValues inputs;
44113
private static GeneratedDomainYamlFiles generatedFiles;
114+
private static DomainYamlFactory factory;
45115

46116
private static final String PROPERTY_TRAEFIK_TOML = "traefik.toml";
47117
private static final String PROPERTY_UTILITY_SH = "utility.sh";
@@ -50,31 +120,31 @@ public abstract class CreateDomainGeneratedFilesBaseTest {
50120
private static final String PROPERTY_CREATE_DOMAIN_SCRIPT_SH = "create-domain-script.sh";
51121
private static final String PROPERTY_CREATE_DOMAIN_PY = "create-domain.py";
52122

53-
protected static CreateDomainInputs getInputs() {
123+
protected static DomainValues getInputs() {
54124
return inputs;
55125
}
56126

57-
protected static GeneratedDomainYamlFiles getGeneratedFiles() {
127+
private static GeneratedDomainYamlFiles getGeneratedFiles() {
58128
return generatedFiles;
59129
}
60130

61-
protected ParsedCreateWeblogicDomainJobYaml getCreateWeblogicDomainJobYaml() {
131+
private ParsedCreateWeblogicDomainJobYaml getCreateWeblogicDomainJobYaml() {
62132
return getGeneratedFiles().getCreateWeblogicDomainJobYaml();
63133
}
64134

65-
protected ParsedDeleteWeblogicDomainJobYaml getDeleteWeblogicDomainJobYaml() {
135+
private ParsedDeleteWeblogicDomainJobYaml getDeleteWeblogicDomainJobYaml() {
66136
return getGeneratedFiles().getDeleteWeblogicDomainJobYaml();
67137
}
68138

69-
protected ParsedDomainCustomResourceYaml getDomainCustomResourceYaml() {
139+
private ParsedDomainCustomResourceYaml getDomainCustomResourceYaml() {
70140
return getGeneratedFiles().getDomainCustomResourceYaml();
71141
}
72142

73-
protected ParsedTraefikSecurityYaml getTraefikSecurityYaml() {
143+
private ParsedTraefikSecurityYaml getTraefikSecurityYaml() {
74144
return getGeneratedFiles().getTraefikSecurityYaml();
75145
}
76146

77-
protected ParsedTraefikYaml getTraefikYaml() {
147+
private ParsedTraefikYaml getTraefikYaml() {
78148
return getGeneratedFiles().getTraefikYaml();
79149
}
80150

@@ -107,16 +177,10 @@ protected ParsedWeblogicDomainPersistentVolumeYaml getWeblogicDomainPersistentVo
107177
return getGeneratedFiles().getWeblogicDomainPersistentVolumeYaml();
108178
}
109179

110-
protected static void setup(CreateDomainInputs val) throws Exception {
111-
inputs = val;
112-
generatedFiles = GeneratedDomainYamlFiles.generateDomainYamlFiles(getInputs());
113-
}
114-
115-
@AfterClass
116-
public static void tearDown() throws Exception {
117-
if (generatedFiles != null) {
118-
generatedFiles.remove();
119-
}
180+
protected static void setup(DomainYamlFactory factory, DomainValues values) throws Exception {
181+
CreateDomainGeneratedFilesBaseTest.factory = factory;
182+
inputs = values;
183+
generatedFiles = factory.generate(values);
120184
}
121185

122186
@Test

kubernetes/src/test/java/oracle/kubernetes/operator/create/CreateDomainGeneratedFilesOptionalFeaturesDisabledTest.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@
44

55
package oracle.kubernetes.operator.create;
66

7-
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.*;
8-
9-
import io.kubernetes.client.models.V1PersistentVolume;
10-
import oracle.kubernetes.operator.utils.CreateDomainInputs;
117
import org.junit.BeforeClass;
128

139
/**
@@ -16,19 +12,10 @@
1612
* image pull secret, production mode is disabled and the weblogic domain storage type is HOST_PATH.
1713
*/
1814
public class CreateDomainGeneratedFilesOptionalFeaturesDisabledTest
19-
extends CreateDomainGeneratedFilesBaseTest {
15+
extends CreateDomainGeneratedFilesOptionalFeaturesDisabledTestBase {
2016

2117
@BeforeClass
2218
public static void setup() throws Exception {
23-
setup(CreateDomainInputs.newInputs()); // defaults to admin node port off, t3 channel off,
24-
}
25-
26-
@Override
27-
protected V1PersistentVolume getExpectedWeblogicDomainPersistentVolume() {
28-
V1PersistentVolume expected = super.getExpectedWeblogicDomainPersistentVolume();
29-
expected
30-
.getSpec()
31-
.hostPath(newHostPathVolumeSource().path(getInputs().getWeblogicDomainStoragePath()));
32-
return expected;
19+
defineDomainYamlFactory(new ScriptedDomainYamlFactory());
3320
}
3421
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package oracle.kubernetes.operator.create;
2+
3+
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.newHostPathVolumeSource;
4+
5+
import io.kubernetes.client.models.V1PersistentVolume;
6+
import oracle.kubernetes.operator.utils.DomainYamlFactory;
7+
8+
public class CreateDomainGeneratedFilesOptionalFeaturesDisabledTestBase
9+
extends CreateDomainGeneratedFilesBaseTest {
10+
protected static void defineDomainYamlFactory(DomainYamlFactory factory) throws Exception {
11+
setup(factory, factory.newDomainValues()); // defaults to admin node port off, t3 channel off,
12+
}
13+
14+
@Override
15+
protected V1PersistentVolume getExpectedWeblogicDomainPersistentVolume() {
16+
V1PersistentVolume expected = super.getExpectedWeblogicDomainPersistentVolume();
17+
expected
18+
.getSpec()
19+
.hostPath(newHostPathVolumeSource().path(getInputs().getWeblogicDomainStoragePath()));
20+
return expected;
21+
}
22+
}

kubernetes/src/test/java/oracle/kubernetes/operator/create/CreateDomainGeneratedFilesOptionalFeaturesEnabledTest.java

Lines changed: 2 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -4,123 +4,12 @@
44

55
package oracle.kubernetes.operator.create;
66

7-
import static oracle.kubernetes.operator.utils.CreateDomainInputs.*;
8-
import static oracle.kubernetes.operator.utils.KubernetesArtifactUtils.*;
9-
import static oracle.kubernetes.operator.utils.YamlUtils.yamlEqualTo;
10-
import static org.hamcrest.MatcherAssert.assertThat;
11-
import static org.hamcrest.Matchers.is;
12-
13-
import io.kubernetes.client.models.V1Job;
14-
import io.kubernetes.client.models.V1PersistentVolume;
15-
import oracle.kubernetes.operator.utils.CreateDomainInputs;
16-
import oracle.kubernetes.weblogic.domain.v1.Domain;
177
import org.junit.BeforeClass;
188

19-
/**
20-
* Tests that the all artifacts in the yaml files that create-weblogic-domain.sh creates are correct
21-
* when the admin node port is enabled, the t3 channel is enabled, there is a weblogic image pull
22-
* secret, production mode is enabled, and the weblogic domain storage type is NFS.
23-
*/
249
public class CreateDomainGeneratedFilesOptionalFeaturesEnabledTest
25-
extends CreateDomainGeneratedFilesBaseTest {
26-
10+
extends CreateDomainGeneratedFilesOptionalFeaturesEnabledTestBase {
2711
@BeforeClass
2812
public static void setup() throws Exception {
29-
setup(
30-
CreateDomainInputs.newInputs()
31-
.exposeAdminNodePort("true")
32-
.exposeAdminT3Channel("true")
33-
.clusterType("CONFIGURED")
34-
.weblogicImagePullSecretName("test-weblogic-image-pull-secret-name")
35-
.loadBalancer(LOAD_BALANCER_APACHE)
36-
.loadBalancerAppPrepath("/loadBalancerAppPrePath")
37-
.loadBalancerExposeAdminPort("false")
38-
.weblogicDomainStorageType(STORAGE_TYPE_NFS)
39-
.productionModeEnabled("true"));
40-
}
41-
42-
@Override
43-
protected V1Job getExpectedCreateWeblogicDomainJob() {
44-
V1Job expected = super.getExpectedCreateWeblogicDomainJob();
45-
expected
46-
.getSpec()
47-
.getTemplate()
48-
.getSpec()
49-
.addImagePullSecretsItem(
50-
newLocalObjectReference().name(getInputs().getWeblogicImagePullSecretName()));
51-
return expected;
52-
}
53-
54-
@Override
55-
protected Domain getExpectedDomain() {
56-
Domain expected = super.getExpectedDomain();
57-
expected.getSpec().withExportT3Channels(newStringList().addElement("T3Channel"));
58-
// there is only one server startup item in the base domain config - set its node port:
59-
expected
60-
.getSpec()
61-
.getServerStartup()
62-
.get(0)
63-
.withNodePort(Integer.parseInt(getInputs().getAdminNodePort()));
64-
return expected;
65-
}
66-
67-
@Override
68-
protected V1PersistentVolume getExpectedWeblogicDomainPersistentVolume() {
69-
V1PersistentVolume expected = super.getExpectedWeblogicDomainPersistentVolume();
70-
expected
71-
.getSpec()
72-
.nfs(
73-
newNFSVolumeSource()
74-
.server(getInputs().getWeblogicDomainStorageNFSServer())
75-
.path(getInputs().getWeblogicDomainStoragePath()));
76-
return expected;
77-
}
78-
79-
@Override
80-
public void generatesCorrect_loadBalancerDeployment() throws Exception {
81-
assertThat(getActualApacheDeployment(), yamlEqualTo(getExpectedApacheDeployment()));
82-
}
83-
84-
@Override
85-
public void generatesCorrect_loadBalancerServiceAccount() throws Exception {
86-
assertThat(getActualApacheServiceAccount(), yamlEqualTo(getExpectedApacheServiceAccount()));
87-
}
88-
89-
@Override
90-
public void generatesCorrect_loadBalancerConfigMap() throws Exception {
91-
// No config map in generated yaml for LOAD_BALANCER_APACHE
92-
}
93-
94-
@Override
95-
public void generatesCorrect_loadBalancerService() throws Exception {
96-
assertThat(getActualApacheService(), yamlEqualTo(getExpectedApacheService()));
97-
}
98-
99-
@Override
100-
public void generatesCorrect_loadBalancerDashboardService() throws Exception {
101-
// No dashboard service in generated yaml for LOAD_BALANCER_APACHE
102-
}
103-
104-
@Override
105-
public void generatesCorrect_loadBalancerClusterRole() throws Exception {
106-
assertThat(getActualApacheClusterRole(), yamlEqualTo(getExpectedApacheClusterRole()));
107-
}
108-
109-
@Override
110-
public void generatesCorrect_loadBalancerClusterRoleBinding() throws Exception {
111-
assertThat(
112-
getActualApacheClusterRoleBinding(), yamlEqualTo(getExpectedApacheClusterRoleBinding()));
113-
}
114-
115-
@Override
116-
public void loadBalancerSecurityYaml_hasCorrectNumberOfObjects() throws Exception {
117-
assertThat(
118-
getApacheSecurityYaml().getObjectCount(),
119-
is(getApacheSecurityYaml().getExpectedObjectCount()));
120-
}
121-
122-
@Override
123-
public void loadBalancerYaml_hasCorrectNumberOfObjects() throws Exception {
124-
assertThat(getApacheYaml().getObjectCount(), is(getApacheYaml().getExpectedObjectCount()));
13+
defineDomainYamlFactory(new ScriptedDomainYamlFactory());
12514
}
12615
}

0 commit comments

Comments
 (0)