4
4
5
5
package oracle .kubernetes .operator ;
6
6
7
+ import static oracle .kubernetes .operator .DomainUpPlanTest .ContainerPortMatcher .hasContainerPort ;
7
8
import static oracle .kubernetes .operator .DomainUpPlanTest .StepChainMatcher .hasChainWithStep ;
8
9
import static oracle .kubernetes .operator .DomainUpPlanTest .StepChainMatcher .hasChainWithStepsInOrder ;
10
+ import static oracle .kubernetes .operator .ProcessingConstants .DOMAIN_TOPOLOGY ;
11
+ import static oracle .kubernetes .operator .helpers .KubernetesTestSupport .POD ;
9
12
import static org .hamcrest .MatcherAssert .assertThat ;
10
13
import static org .hamcrest .Matchers .both ;
11
14
import static org .hamcrest .Matchers .is ;
12
15
import static org .hamcrest .Matchers .not ;
13
16
14
17
import com .meterware .simplestub .Memento ;
18
+ import io .kubernetes .client .models .V1ContainerPort ;
15
19
import io .kubernetes .client .models .V1ObjectMeta ;
20
+ import io .kubernetes .client .models .V1Pod ;
21
+ import io .kubernetes .client .models .V1SecretReference ;
16
22
import java .util .ArrayList ;
23
+ import java .util .Collections ;
17
24
import java .util .List ;
25
+ import java .util .Optional ;
18
26
import oracle .kubernetes .TestUtils ;
19
27
import oracle .kubernetes .operator .helpers .DomainPresenceInfo ;
28
+ import oracle .kubernetes .operator .helpers .KubernetesTestSupport ;
29
+ import oracle .kubernetes .operator .helpers .TuningParametersStub ;
30
+ import oracle .kubernetes .operator .helpers .UnitTestHash ;
20
31
import oracle .kubernetes .operator .steps .DomainPresenceStep ;
21
- import oracle .kubernetes .operator .work . FiberTestSupport ;
32
+ import oracle .kubernetes .operator .utils . WlsDomainConfigSupport ;
22
33
import oracle .kubernetes .operator .work .Step ;
23
34
import oracle .kubernetes .operator .work .TerminalStep ;
24
35
import oracle .kubernetes .weblogic .domain .DomainConfigurator ;
32
43
33
44
public class DomainUpPlanTest {
34
45
private static final String NS = "namespace" ;
35
- private FiberTestSupport testSupport = new FiberTestSupport ();
46
+ private static final String UID = "test-uid" ;
47
+ private static final V1SecretReference SECRET = new V1SecretReference ().name ("secret" );
48
+ private KubernetesTestSupport testSupport = new KubernetesTestSupport ();
36
49
private List <Memento > mementos = new ArrayList <>();
37
50
private final TerminalStep adminStep = new TerminalStep ();
38
51
private final TerminalStep managedServersStep = new TerminalStep ();
39
52
private Domain domain =
40
- new Domain ().withMetadata (new V1ObjectMeta ().namespace (NS )).withSpec (new DomainSpec ());
53
+ new Domain ()
54
+ .withMetadata (new V1ObjectMeta ().namespace (NS ))
55
+ .withSpec (new DomainSpec ().withDomainUID (UID ).withWebLogicCredentialsSecret (SECRET ));
41
56
private DomainConfigurator configurator = DomainConfiguratorFactory .forDomain (domain );
42
57
private DomainPresenceInfo domainPresenceInfo = new DomainPresenceInfo (domain );
43
58
@@ -48,6 +63,7 @@ private DomainPresenceStep getDomainPresenceStep() {
48
63
@ Before
49
64
public void setUp () {
50
65
mementos .add (TestUtils .silenceOperatorLogger ());
66
+ mementos .add (testSupport .install ());
51
67
52
68
testSupport .addDomainPresenceInfo (domainPresenceInfo );
53
69
}
@@ -131,6 +147,65 @@ public void useSequenceBeforeAdminServerStep() {
131
147
"EndProgressingStep" ));
132
148
}
133
149
150
+ @ Test
151
+ public void whenAdminPodCreated_hasListenPort () throws NoSuchFieldException {
152
+ mementos .add (TuningParametersStub .install ());
153
+ mementos .add (UnitTestHash .install ());
154
+
155
+ WlsDomainConfigSupport configSupport = new WlsDomainConfigSupport ("domain" );
156
+ configSupport .addWlsServer ("admin" , 8045 );
157
+ configSupport .setAdminServerName ("admin" );
158
+ Step plan =
159
+ DomainProcessorImpl .bringAdminServerUp (
160
+ new DomainPresenceInfo (domain ), new NullPodWaiter (), null );
161
+ testSupport .addToPacket (DOMAIN_TOPOLOGY , configSupport .createDomainConfig ());
162
+ testSupport .runSteps (plan );
163
+
164
+ List <V1Pod > resources = testSupport .getResources (POD );
165
+ assertThat (resources .get (0 ), hasContainerPort (8045 ));
166
+ }
167
+
168
+ static class NullPodWaiter implements PodAwaiterStepFactory {
169
+ @ Override
170
+ public Step waitForReady (V1Pod pod , Step next ) {
171
+ return null ;
172
+ }
173
+ }
174
+
175
+ @ SuppressWarnings ("unused" )
176
+ static class ContainerPortMatcher
177
+ extends org .hamcrest .TypeSafeDiagnosingMatcher <io .kubernetes .client .models .V1Pod > {
178
+ private int expectedPort ;
179
+
180
+ private ContainerPortMatcher (int expectedPort ) {
181
+ this .expectedPort = expectedPort ;
182
+ }
183
+
184
+ static ContainerPortMatcher hasContainerPort (int expectedPort ) {
185
+ return new ContainerPortMatcher (expectedPort );
186
+ }
187
+
188
+ @ Override
189
+ protected boolean matchesSafely (V1Pod item , Description mismatchDescription ) {
190
+ if (getContainerPorts (item ).stream ().anyMatch (p -> p .getContainerPort () == expectedPort ))
191
+ return true ;
192
+
193
+ mismatchDescription .appendText ("No matching port found in pod " ).appendText (item .toString ());
194
+ return false ;
195
+ }
196
+
197
+ private List <V1ContainerPort > getContainerPorts (V1Pod item ) {
198
+ return Optional .ofNullable (item .getSpec ().getContainers ().get (0 ).getPorts ())
199
+ .orElse (Collections .emptyList ());
200
+ }
201
+
202
+ @ Override
203
+ public void describeTo (Description description ) {
204
+ description .appendText ("Pod with container port " ).appendValue (expectedPort );
205
+ }
206
+ }
207
+
208
+ @ SuppressWarnings ("unused" )
134
209
static class StepChainMatcher
135
210
extends org .hamcrest .TypeSafeDiagnosingMatcher <oracle .kubernetes .operator .work .Step > {
136
211
private String [] expectedSteps ;
0 commit comments