You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2019/12/20 17:28:49 UTC

[sling-org-apache-sling-servlets-resolver] branch issue/SLING-8936 updated: SLING-8936 - WIP: wait for Sling, getting 503 for a long time so far

This is an automated email from the ASF dual-hosted git repository.

bdelacretaz pushed a commit to branch issue/SLING-8936
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git


The following commit(s) were added to refs/heads/issue/SLING-8936 by this push:
     new f7c08f7  SLING-8936 - WIP: wait for Sling, getting 503 for a long time so far
f7c08f7 is described below

commit f7c08f7337ecccd3c4965f1685f49080edac5ef9
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Fri Dec 20 18:28:16 2019 +0100

    SLING-8936 - WIP: wait for Sling, getting 503 for a long time so far
---
 .../servlets/resolver/it/DefaultServletIT.java     | 40 +++++++++++++++++++---
 .../resolver/it/ServletResolverTestSupport.java    |  6 +++-
 2 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java b/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java
index e4a2faf..1b4084e 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/DefaultServletIT.java
@@ -20,16 +20,21 @@ package org.apache.sling.servlets.resolver.it;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
 
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.servlethelpers.MockSlingHttpServletRequest;
 import org.apache.sling.servlethelpers.MockSlingHttpServletResponse;
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.ops4j.pax.exam.junit.PaxExam;
@@ -42,12 +47,18 @@ import org.osgi.framework.ServiceReference;
 @ExamReactorStrategy(PerClass.class)
 public class DefaultServletIT extends ServletResolverTestSupport {
 
+    private final static int STARTUP_WAIT_SECONDS = 30;
+
     @Inject
     private BundleContext bundleContext;
 
-    private String getContent(String path) throws Exception {
-        final ResourceResolver TODO_NEED_ONE = null;
-        final MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(TODO_NEED_ONE);
+    @Inject
+    private ResourceResolverFactory resourceResolverFactory;
+
+    private MockSlingHttpServletResponse executeRequest(String path) throws Exception {
+        final ResourceResolver resourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null);
+        final MockSlingHttpServletRequest request = new MockSlingHttpServletRequest(resourceResolver);
+        request.setPathInfo(path);
         final MockSlingHttpServletResponse response = new MockSlingHttpServletResponse();
 
         // Get SlingRequestProcessor.processRequest method and execute request
@@ -70,13 +81,32 @@ public class DefaultServletIT extends ServletResolverTestSupport {
             bundleContext.ungetService(ref);
         }
 
-        return response.getOutputAsString();
+        return response;
+    }
+
+    @Before
+    public void waitForStableSling() throws Exception {
+        final int expectedStatus = 200;
+        final List<Integer> statuses = new ArrayList<>();
+        final String path = "/starter.html";
+        final long endTime = System.currentTimeMillis() + STARTUP_WAIT_SECONDS * 1000;
+        while(System.currentTimeMillis() < endTime) {
+            final int status = executeRequest(path).getStatus();
+            statuses.add(status);
+            if(status == expectedStatus) {
+                return;
+            }
+            Thread.sleep(250);
+        }
+        fail("Did not get a 200 status at " + path + " got " + statuses);
     }
 
     @Test
     public void testDefaultServlet() throws Exception {
+        final MockSlingHttpServletResponse response = executeRequest("/starter.html");
+        assertEquals(200, response.getStatus());
         final String TODO_SHOULD_NOT_BE_EMPTY = "";
-        assertEquals(TODO_SHOULD_NOT_BE_EMPTY, getContent("/.json"));
+        assertEquals(TODO_SHOULD_NOT_BE_EMPTY, response.getOutputAsString());
     }
 
 }
\ No newline at end of file
diff --git a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
index bc4e480..39a4fea 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/it/ServletResolverTestSupport.java
@@ -25,6 +25,7 @@ import org.ops4j.pax.exam.Option;
 import static org.ops4j.pax.exam.CoreOptions.junitBundles;
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
+import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
 import static org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
 
 public class ServletResolverTestSupport extends TestSupport {
@@ -37,7 +38,10 @@ public class ServletResolverTestSupport extends TestSupport {
             slingQuickstartOakTar(workingDirectory(), httpPort),
             testBundle("bundle.filename"),
             wrappedBundle(mavenBundle().groupId("org.apache.sling").artifactId("org.apache.sling.servlet-helpers").versionAsInProject()),
-            junitBundles()
+            junitBundles(),
+            newConfiguration("org.apache.sling.jcr.base.internal.LoginAdminWhitelist")
+                .put("whitelist.bundles.regexp", "^PAXEXAM.*$")
+                .asOption(),
         };
     }
 }