This is an automated email from the ASF dual-hosted git repository. bdelacretaz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-adapter-annotations.git
The following commit(s) were added to refs/heads/master by this push: new a4bb0b3 SLING-2938 - check multiple paths for readiness a4bb0b3 is described below commit a4bb0b3d126b078ec8872f41ff15bc5a809c8018 Author: Bertrand Delacretaz <bdelacre...@apache.org> AuthorDate: Tue Nov 10 11:37:31 2020 +0100 SLING-2938 - check multiple paths for readiness --- .../adapter/annotations/util/AppSlingClient.java | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/it/annotations-it/src/test/java/org/apache/sling/adapter/annotations/util/AppSlingClient.java b/src/it/annotations-it/src/test/java/org/apache/sling/adapter/annotations/util/AppSlingClient.java index 1982973..ad5309d 100644 --- a/src/it/annotations-it/src/test/java/org/apache/sling/adapter/annotations/util/AppSlingClient.java +++ b/src/it/annotations-it/src/test/java/org/apache/sling/adapter/annotations/util/AppSlingClient.java @@ -29,13 +29,20 @@ import java.util.concurrent.TimeoutException; public class AppSlingClient { private static boolean bundleInstalledAndStarted; + private static final String [] READINESS_PATHS = { + "/starter.html", + "/system/console/status-adapters.txt", + "/system/console/components", + "/system/console/services" + }; + @SuppressWarnings("squid:S2095") // Caller will close the client public static SlingClient newSlingClient() throws URISyntaxException, ClientException, TimeoutException, InterruptedException { final SlingClient client = new SlingClient(new URI(System.getProperty("baseUrl")), "admin", "admin"); // client.waitExists() adds ".json" to the path, which is not desired, since that requests the Sling Default GET Servlet instead of Sling Starter HTML - new Polling(() -> client.doGet("/starter.html").getStatusLine().getStatusCode() == 200) - .poll(60_000, 500); + new Polling(() -> allPathsOk(client, READINESS_PATHS, 200)) + .poll(60_000, 500); if (!bundleInstalledAndStarted) { final OsgiConsoleClient osgiConsoleClient = client.adaptTo(OsgiConsoleClient.class); @@ -45,4 +52,15 @@ public class AppSlingClient { } return client; } + + /** @return true if all paths return expected status */ + private static boolean allPathsOk(SlingClient client, String [] paths, int expectedStatus) throws ClientException, InterruptedException { + for(String path : paths) { + final int actualStatus = client.doGet(path).getStatusLine().getStatusCode(); + if(actualStatus != expectedStatus) { + throw new ClientException("Expected status " + expectedStatus + " but got " + actualStatus + " for " + path); + } + } + return true; + } }