Skip to content

Commit 86b84fe

Browse files
committed
mpOpenAPI: Clean up test app deployment logic
Avoid deleting the app archive from /apps before we've removed its configuration from server.xml and the app has stopped to avoid intermittent server error messages. Simplify the app deployment and cleanup logic. Use LibertyServer's app start/stop validation rather than looking for log messages directly.
1 parent 95cc1b2 commit 86b84fe

File tree

1 file changed

+19
-68
lines changed
  • dev/io.openliberty.microprofile.openapi.2.0.internal_fat/fat/src/io/openliberty/microprofile/openapi20/fat/deployments

1 file changed

+19
-68
lines changed

dev/io.openliberty.microprofile.openapi.2.0.internal_fat/fat/src/io/openliberty/microprofile/openapi20/fat/deployments/MergeServerXMLTest.java

Lines changed: 19 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import static com.ibm.websphere.simplicity.ShrinkHelper.DeployOptions.DISABLE_VALIDATION;
1616
import static com.ibm.websphere.simplicity.ShrinkHelper.DeployOptions.SERVER_ONLY;
17-
import static org.junit.Assert.assertNotNull;
1817

1918
import java.util.ArrayList;
2019
import java.util.Arrays;
@@ -43,6 +42,7 @@
4342
import componenttest.annotation.Server;
4443
import componenttest.custom.junit.runner.FATRunner;
4544
import componenttest.rules.repeater.RepeatTests;
45+
import componenttest.topology.impl.LibertyFileManager;
4646
import componenttest.topology.impl.LibertyServer;
4747
import componenttest.topology.utils.HttpRequest;
4848
import io.openliberty.microprofile.openapi20.fat.FATSuite;
@@ -68,17 +68,13 @@ public class MergeServerXMLTest {
6868
@ClassRule
6969
public static RepeatTests r = FATSuite.repeatDefault(SERVER_NAME);
7070

71-
private final Map<String, Archive<?>> deployedConfiguredApps = new HashMap<>(); //configued in server.xml
72-
private final List<String> deployedApps = new ArrayList<>(); //apps in dropins
73-
7471
@BeforeClass
7572
public static void setupServer() throws Exception {
7673
//This will be ignored because we have openapi includes/excludes in server.xml
7774
server.setAdditionalSystemProperties(
7875
Collections.singletonMap("mp_openapi_extensions_liberty_merged_include", "none"));
7976
server.saveServerConfiguration();
8077
server.startServer();
81-
server.waitForStringInLogUsingMark("CWWKF0011I"); //ready to run a smarter planet
8278
}
8379

8480
@AfterClass
@@ -89,25 +85,14 @@ public static void shutdownServer() throws Exception {
8985
@After
9086
public void cleanup() throws Exception {
9187
server.setMarkToEndOfLog();
92-
server.deleteAllDropinApplications();
9388

94-
List<String> failedToStop = new ArrayList<>();
95-
for (String app : deployedApps) {
96-
if (server.waitForStringInLogUsingMark("CWWKZ0009I:.*" + app) == null) {
97-
failedToStop.add(app);
98-
}
99-
}
89+
server.deleteAllDropinApplications(); // Will stop all dropin apps
90+
server.restoreServerConfiguration(); // Will stop all apps deployed via server.xml
91+
server.removeAllInstalledAppsForValidation(); // Validates that all apps stop
10092

101-
for (String app : deployedConfiguredApps.keySet()) {
102-
if (deleteAppFromApps(deployedConfiguredApps.get(app), app) == null) {
103-
failedToStop.add(app);
104-
}
105-
}
106-
107-
if (!failedToStop.isEmpty()) {
108-
throw new AssertionError("The following apps failed to stop: " + failedToStop);
109-
}
110-
server.restoreServerConfiguration();
93+
// Delete everything from the apps directory
94+
server.deleteDirectoryFromLibertyServerRoot("apps");
95+
LibertyFileManager.createRemoteFile(server.getMachine(), server.getServerRoot() + "/apps").mkdir();
11196
}
11297

11398
@Test
@@ -129,16 +114,10 @@ public void testMultiModuleEarWithServerXMLAppNameAndWebXmlModuleName() throws E
129114

130115
String appName = "serverXMLName";
131116

132-
MpOpenAPIElement.MpOpenAPIElementBuilder builder = MpOpenAPIElementBuilder.cloneBuilderFromServerResetAppsAndModules(server)
133-
.addIncludedApplicaiton("serverXMLName")
134-
.addExcludedModule("serverXMLName/nameFromWar");
135-
136-
ServerConfiguration serverConfig = server.getServerConfiguration().clone();
137-
serverConfig.addApplication(appName, "testEar.ear", "ear");
138-
MpOpenAPIElement openAPIConfig = serverConfig.getMpOpenAPIElement();
139-
builder.buildAndOverwrite(openAPIConfig);
140-
141-
server.updateServerConfiguration(serverConfig);
117+
MpOpenAPIElementBuilder.cloneBuilderFromServerResetAppsAndModules(server)
118+
.addIncludedApplicaiton("serverXMLName")
119+
.addExcludedModule("serverXMLName/nameFromWar")
120+
.buildAndPushToServer();
142121

143122
WebArchive war1 = ShrinkWrap.create(WebArchive.class, "test1.war")
144123
.addClasses(DeploymentTestApp.class, DeploymentTestResource.class);
@@ -153,7 +132,7 @@ public void testMultiModuleEarWithServerXMLAppNameAndWebXmlModuleName() throws E
153132
EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "testEar.ear")
154133
.addAsModules(war1, war2, war3);
155134

156-
deployAppToApps(ear, appName);
135+
deployAppToApps(ear, appName, "ear");
157136

158137
String doc = OpenAPIConnection.openAPIDocsConnection(server, false).download();
159138
JsonNode openapiNode = OpenAPITestUtil.readYamlTree(doc);
@@ -233,46 +212,18 @@ private void assertServerContextRoot(JsonNode model,
233212
}
234213

235214
private void deployApp(Archive<?> archive) throws Exception {
236-
server.setMarkToEndOfLog();
237-
server.setTraceMarkToEndOfDefaultTrace();
238-
ShrinkHelper.exportDropinAppToServer(server, archive, SERVER_ONLY, DISABLE_VALIDATION);
239-
assertNotNull(server.waitForStringInLogUsingMark("CWWKZ0001I:.*" + getName(archive)));
240-
deployedApps.add(getName(archive));
241-
}
242-
243-
private void deployAppToApps(Archive<?> archive, String appName) throws Exception {
244-
deployAppToApps(archive, appName, true);
215+
ShrinkHelper.exportDropinAppToServer(server, archive, SERVER_ONLY);
245216
}
246217

247-
private void deployAppToApps(Archive<?> archive, String appName, boolean serverStarted) throws Exception {
248-
server.setMarkToEndOfLog();
249-
server.setTraceMarkToEndOfDefaultTrace();
218+
private void deployAppToApps(Archive<?> archive, String appName, String appType) throws Exception {
219+
// Deploy the app archive
250220
ShrinkHelper.exportAppToServer(server, archive, SERVER_ONLY, DISABLE_VALIDATION);
251-
if (serverStarted) {
252-
assertNotNull(server.waitForStringInLogUsingMark("CWWKZ0001I:.*" + getName(appName)));
253-
}
254-
deployedConfiguredApps.put(appName, archive);
255-
}
256-
257-
private String deleteAppFromApps(Archive<?> archive, String appName) throws Exception {
221+
// Add app to server configuration
258222
ServerConfiguration sc = server.getServerConfiguration();
259-
sc.removeApplicationsByName(appName);
223+
sc.addApplication(appName, archive.getName(), appType);
260224
server.updateServerConfiguration(sc);
261-
server.deleteFileFromLibertyServerRoot("apps/" + archive.getName());
262-
deployedConfiguredApps.remove(appName);
263-
return server.waitForStringInLogUsingMark("CWWKZ0009I:.*" + getName(appName));
264-
}
265-
266-
private String getName(Archive<?> archive) {
267-
return getName(archive.getName());
268-
}
269-
270-
private String getName(String fileName) {
271-
int lastDot = fileName.lastIndexOf('.');
272-
if (lastDot != -1) {
273-
fileName = fileName.substring(0, lastDot);
274-
}
275-
return fileName;
225+
// Wait for app to start
226+
server.addInstalledAppForValidation(appName);
276227
}
277228

278229
private void logOnServer(String pathUpToEndpoint, String message) throws Exception {

0 commit comments

Comments
 (0)