This is an automated email from the ASF dual-hosted git repository.
enorman pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-contentloader.git
The following commit(s) were added to refs/heads/master by this push:
new 892c1af Attempt to stabilize intermittent test failures that happen
due to the bundle content loading not being complete before the assertions
happen.
892c1af is described below
commit 892c1af042297a322a6139e871951b8f54f77711
Author: Eric Norman <[email protected]>
AuthorDate: Mon Dec 17 12:56:21 2018 -0800
Attempt to stabilize intermittent test failures that happen due to the
bundle content loading not being complete before the assertions happen.
---
.../contentloader/it/ContentloaderTestSupport.java | 40 +++++++++++++++++-----
1 file changed, 32 insertions(+), 8 deletions(-)
diff --git
a/src/test/java/org/apache/sling/jcr/contentloader/it/ContentloaderTestSupport.java
b/src/test/java/org/apache/sling/jcr/contentloader/it/ContentloaderTestSupport.java
index 5bc7617..e5e5bca 100644
---
a/src/test/java/org/apache/sling/jcr/contentloader/it/ContentloaderTestSupport.java
+++
b/src/test/java/org/apache/sling/jcr/contentloader/it/ContentloaderTestSupport.java
@@ -18,11 +18,21 @@
*/
package org.apache.sling.jcr.contentloader.it;
+import static
org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
+import static
org.apache.sling.testing.paxexam.SlingOptions.slingResourcePresence;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+import static org.ops4j.pax.exam.CoreOptions.junitBundles;
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
+
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Objects;
import java.util.UUID;
+import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import javax.jcr.Session;
@@ -44,14 +54,6 @@ import org.osgi.framework.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import static
org.apache.sling.testing.paxexam.SlingOptions.slingQuickstartOakTar;
-import static
org.apache.sling.testing.paxexam.SlingOptions.slingResourcePresence;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.ops4j.pax.exam.CoreOptions.junitBundles;
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.cm.ConfigurationAdminOptions.newConfiguration;
-
public abstract class ContentloaderTestSupport extends TestSupport {
@Inject
@@ -88,6 +90,28 @@ public abstract class ContentloaderTestSupport extends
TestSupport {
final Bundle bundle =
bundleContext.installBundle(bundleSymbolicName, is);
bundle.start();
}
+
+ // stabilize the downstream assertions by waiting a moment for
the background content loading
+ // to be processed. Retry the checking a few times (if necessary)
since the timing is tricky.
+ String contentLoadedPath =
String.format("/var/sling/bundle-content/%s", bundleSymbolicName);
+ long timeoutSeconds = 30;
+ long timeout = System.currentTimeMillis() +
TimeUnit.SECONDS.toMillis(timeoutSeconds);
+ boolean retry = true;
+ do {
+ if (session.itemExists(contentLoadedPath)) {
+ //stop looping
+ retry = false;
+ } else {
+ if (System.currentTimeMillis() > timeout) {
+ fail("RetryLoop failed, condition is false
after " + timeoutSeconds + " seconds: "
+ + "A content loaded node expected at "
+ contentLoadedPath);
+ } else {
+ logger.warn("Bundle content not loaded yet, retrying after
a short delay, path={}", contentLoadedPath);
+ Thread.sleep(200);
+ session.refresh(false);
+ }
+ }
+ } while (retry);
}
@After