You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:20:50 UTC
[sling-org-apache-sling-testing-serversetup] 02/05: SLING-5727
Remove o.a.s.testing.tools dependency in o.a.s.testing.serversetup and
adapt http code
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.testing.serversetup-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-serversetup.git
commit cff68e3cdc0f7938721233b3ca2a07317c2362e8
Author: Andrei Dulvac <du...@apache.org>
AuthorDate: Wed Jun 15 15:00:53 2016 +0000
SLING-5727 Remove o.a.s.testing.tools dependency in o.a.s.testing.serversetup and adapt http code
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/serversetup@1748593 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 10 +-
.../serversetup/instance/SlingInstance.java | 11 +--
.../serversetup/instance/SlingInstanceManager.java | 7 +-
.../serversetup/instance/SlingInstanceState.java | 14 +--
.../serversetup/instance/SlingInstancesRule.java | 3 +-
.../serversetup/instance/SlingTestBase.java | 103 ++++++++++-----------
.../testing/serversetup/jarexec/JarExecutor.java | 1 +
7 files changed, 70 insertions(+), 79 deletions(-)
diff --git a/pom.xml b/pom.xml
index e4fc44b..6296dfb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,11 +71,6 @@
<dependencies>
<dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.testing.tools</artifactId>
- <version>1.0.12</version>
- </dependency>
- <dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
</dependency>
@@ -106,5 +101,10 @@
<version>4.11</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.testing.clients</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
diff --git a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstance.java b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstance.java
index dca6020..6b22444 100644
--- a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstance.java
+++ b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstance.java
@@ -17,18 +17,13 @@
package org.apache.sling.testing.serversetup.instance;
-import org.apache.sling.testing.tools.http.RequestBuilder;
-import org.apache.sling.testing.tools.http.RequestExecutor;
+import org.apache.sling.testing.clients.SlingClient;
/**
* Interface used to communicate with a sling instance
*/
public interface SlingInstance {
- /** Start server if needed, and return a RequestBuilder that points to it */
- public RequestBuilder getRequestBuilder();
-
-
/** Start server if needed, and return its base URL */
public String getServerBaseUrl();
@@ -40,6 +35,6 @@ public interface SlingInstance {
public String getServerPassword();
- /** Returns a RequestExecutor for this server **/
- public RequestExecutor getRequestExecutor();
+ /** Returns a SlingClient for this server **/
+ public SlingClient getSlingClient();
}
diff --git a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceManager.java b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceManager.java
index f16151f..fda6b9f 100644
--- a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceManager.java
+++ b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceManager.java
@@ -16,6 +16,8 @@
*/
package org.apache.sling.testing.serversetup.instance;
+import org.apache.sling.testing.clients.ClientException;
+
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
@@ -25,15 +27,16 @@ import java.util.concurrent.ConcurrentHashMap;
* Helper class for running tests against multiple Sling instances,
* takes care of starting the Sling instances and waiting for them to be ready.
*/
+@SuppressWarnings("ALL")
public class SlingInstanceManager implements Iterable<SlingInstance > {
private final Map<String, SlingInstance> slingTestInstances = new ConcurrentHashMap<String, SlingInstance>();
- public SlingInstanceManager(String... instanceNames) {
+ public SlingInstanceManager(String... instanceNames) throws ClientException {
this(System.getProperties(), instanceNames);
}
/** Get configuration but do not start server yet, that's done on demand */
- public SlingInstanceManager(Properties systemProperties, String... instanceNames) {
+ public SlingInstanceManager(Properties systemProperties, String... instanceNames) throws ClientException {
if (instanceNames == null || instanceNames.length == 0) {
instanceNames = new String [] { SlingInstanceState.DEFAULT_INSTANCE_NAME };
}
diff --git a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceState.java b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceState.java
index b67499e..f230a41 100644
--- a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceState.java
+++ b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstanceState.java
@@ -32,13 +32,13 @@ public class SlingInstanceState {
public static final String DEFAULT_INSTANCE_NAME = "default";
private String serverBaseUrl;
- private boolean serverStarted;
- private boolean serverReady;
- private boolean serverReadyTestFailed;
- private boolean installBundlesFailed;
- private boolean extraBundlesInstalled;
- private boolean startupInfoProvided;
- private boolean serverInfoLogged;
+ private boolean serverStarted = false;
+ private boolean serverReady = false;
+ private boolean serverReadyTestFailed = false;
+ private boolean installBundlesFailed = false;
+ private boolean extraBundlesInstalled = false;
+ private boolean startupInfoProvided = false;
+ private boolean serverInfoLogged = false;
private JarExecutor jarExecutor;
/**
diff --git a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstancesRule.java b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstancesRule.java
index 2be2d9c..b0a6059 100644
--- a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstancesRule.java
+++ b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingInstancesRule.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.testing.serversetup.instance;
+import org.apache.sling.testing.clients.ClientException;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
@@ -28,7 +29,7 @@ public class SlingInstancesRule implements TestRule {
private SlingInstance currentInstance;
private final Iterable<SlingInstance> instances;
- public SlingInstancesRule(String ... instanceNames) {
+ public SlingInstancesRule(String ... instanceNames) throws ClientException {
this(new SlingInstanceManager(instanceNames));
}
diff --git a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingTestBase.java b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingTestBase.java
index b92acaf..3415841 100644
--- a/src/main/java/org/apache/sling/testing/serversetup/instance/SlingTestBase.java
+++ b/src/main/java/org/apache/sling/testing/serversetup/instance/SlingTestBase.java
@@ -16,20 +16,18 @@
*/
package org.apache.sling.testing.serversetup.instance;
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.DefaultHttpClient;
-import org.apache.sling.testing.tools.http.RequestBuilder;
-import org.apache.sling.testing.tools.http.RequestExecutor;
-import org.apache.sling.testing.tools.junit.TestDescriptionInterceptor;
-import org.apache.sling.testing.tools.osgi.WebconsoleClient;
-import org.apache.sling.testing.tools.sling.BundlesInstaller;
-import org.apache.sling.testing.tools.sling.TimeoutsProvider;
+import org.apache.sling.testing.clients.ClientException;
+import org.apache.sling.testing.clients.SlingClient;
+import org.apache.sling.testing.clients.osgi.BundlesInstaller;
+import org.apache.sling.testing.clients.osgi.OsgiConsoleClient;
+import org.apache.sling.testing.clients.util.TimeoutsProvider;
import org.apache.sling.testing.serversetup.jarexec.JarExecutor;
import org.junit.After;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.net.URI;
import java.util.*;
import static org.junit.Assert.fail;
@@ -37,7 +35,9 @@ import static org.junit.Assert.fail;
/** Base class for running tests against a Sling instance,
* takes care of starting Sling and waiting for it to be ready.
*/
+@SuppressWarnings("ALL")
public class SlingTestBase implements SlingInstance {
+ // TODO: unify these
public static final String TEST_SERVER_URL_PROP = "test.server.url";
public static final String TEST_SERVER_USERNAME = "test.server.username";
public static final String TEST_SERVER_PASSWORD = "test.server.password";
@@ -58,10 +58,7 @@ public class SlingTestBase implements SlingInstance {
private final String serverPassword;
private final SlingInstanceState slingTestState;
private final Properties systemProperties;
- private RequestBuilder builder;
- private DefaultHttpClient httpClient = new DefaultHttpClient();
- private RequestExecutor executor = new RequestExecutor(httpClient);
- private WebconsoleClient webconsoleClient;
+ private OsgiConsoleClient osgiConsoleClient;
private BundlesInstaller bundlesInstaller;
private boolean serverStartedByThisClass;
@@ -70,8 +67,7 @@ public class SlingTestBase implements SlingInstance {
public SlingTestBase() {
- this(SlingInstanceState.getInstance(SlingInstanceState.DEFAULT_INSTANCE_NAME),
- System.getProperties());
+ this(SlingInstanceState.getInstance(SlingInstanceState.DEFAULT_INSTANCE_NAME), System.getProperties());
}
/** Get configuration but do not start server yet, that's done on demand */
@@ -79,10 +75,9 @@ public class SlingTestBase implements SlingInstance {
this.slingTestState = slingTestState;
this.systemProperties = systemProperties;
this.keepJarRunning = "true".equals(systemProperties.getProperty(KEEP_JAR_RUNNING_PROP));
- this.httpClient.addRequestInterceptor(new TestDescriptionInterceptor());
-
- final String configuredUrl = systemProperties.getProperty(TEST_SERVER_URL_PROP, systemProperties.getProperty("launchpad.http.server.url"));
+ final String configuredUrl = systemProperties.getProperty(TEST_SERVER_URL_PROP,
+ systemProperties.getProperty("launchpad.http.server.url"));
if(configuredUrl != null && configuredUrl.trim().length() > 0) {
slingTestState.setServerBaseUrl(configuredUrl);
slingTestState.setServerStarted(true);
@@ -122,10 +117,14 @@ public class SlingTestBase implements SlingInstance {
serverPassword = ADMIN;
}
- builder = new RequestBuilder(slingTestState.getServerBaseUrl());
- webconsoleClient = new WebconsoleClient(slingTestState.getServerBaseUrl(), serverUsername, serverPassword);
- builder = new RequestBuilder(slingTestState.getServerBaseUrl());
- bundlesInstaller = new BundlesInstaller(webconsoleClient);
+ // create client
+ try {
+ osgiConsoleClient = new OsgiConsoleClient(URI.create(slingTestState.getServerBaseUrl()), serverUsername, serverPassword);
+ } catch (ClientException e) {
+ throw new RuntimeException("Cannot instantiate client", e);
+ }
+
+ bundlesInstaller = new BundlesInstaller(osgiConsoleClient);
if(!slingTestState.isServerInfoLogged()) {
log.info("Server base URL={}", slingTestState.getServerBaseUrl());
@@ -172,7 +171,7 @@ public class SlingTestBase implements SlingInstance {
}
protected void installAdditionalBundles() {
- if(slingTestState.isInstallBundlesFailed()) {
+ if (slingTestState.isInstallBundlesFailed()) {
fail("Bundles could not be installed, cannot run tests");
} else if(!slingTestState.isExtraBundlesInstalled()) {
final List<File> toInstall = getBundlesToInstall();
@@ -182,7 +181,7 @@ public class SlingTestBase implements SlingInstance {
bundlesInstaller.installBundles(toInstall, false);
final List<String> symbolicNames = new LinkedList<String>();
for (File f : toInstall) {
- symbolicNames.add(bundlesInstaller.getBundleSymbolicName(f));
+ symbolicNames.add(osgiConsoleClient.getBundleSymbolicName(f));
}
bundlesInstaller.waitForBundlesInstalled(symbolicNames,
TimeoutsProvider.getInstance().getTimeout(BUNDLE_INSTALL_TIMEOUT_SECONDS, 10));
@@ -216,12 +215,6 @@ public class SlingTestBase implements SlingInstance {
}
}
- /** Start server if needed, and return a RequestBuilder that points to it */
- public RequestBuilder getRequestBuilder() {
- startServerIfNeeded();
- return builder;
- }
-
/** Start server if needed, and return its base URL */
public String getServerBaseUrl() {
startServerIfNeeded();
@@ -238,6 +231,16 @@ public class SlingTestBase implements SlingInstance {
return serverPassword;
}
+ @Override
+ public SlingClient getSlingClient() {
+ return osgiConsoleClient;
+ }
+
+ public OsgiConsoleClient getOsgiConsoleClient() {
+ startServerIfNeeded();
+ return osgiConsoleClient;
+ }
+
/** Optionally block here so that the runnable jar stays up - we can
* then run tests against it from another VM.
*/
@@ -286,28 +289,26 @@ public class SlingTestBase implements SlingInstance {
// that contains the pattern that's optionally supplied with the
// path, separated by a colon
log.info("Checking that GET requests return expected content (timeout={} seconds): {}", timeoutSec, testPaths);
- while(System.currentTimeMillis() < endTime) {
+ while (System.currentTimeMillis() < endTime) {
boolean errors = false;
- for(String p : testPaths) {
+ for (String p : testPaths) {
final String [] s = p.split(":");
final String path = s[0];
final String pattern = (s.length > 0 ? s[1] : "");
try {
- executor.execute(builder.buildGetRequest(path).withCredentials(serverUsername, serverPassword))
- .assertStatus(200)
- .assertContentContains(pattern);
- } catch(AssertionError ae) {
+ osgiConsoleClient.doGet(path, null, 200).checkContentContains(pattern);
+ } catch(ClientException e) {
errors = true;
- log.debug("Request to {}@{}{} failed, will retry ({})",
- new Object[] { serverUsername, slingTestState.getServerBaseUrl(), path, ae});
+ log.debug("Request to {}@{} failed, will retry ({})",
+ new Object[] { serverUsername, osgiConsoleClient.getUrl(path), e});
} catch(Exception e) {
errors = true;
- log.debug("Request to {}@{}{} failed, will retry ({})",
- new Object[] { serverUsername, slingTestState.getServerBaseUrl(), path, pattern, e });
+ log.debug("Request to {}@{} failed, will retry ({})",
+ new Object[] { serverUsername, osgiConsoleClient.getUrl(path), pattern, e });
}
}
- if(!errors) {
+ if (!errors) {
slingTestState.setServerReady(true);
log.info("All {} paths return expected content, server ready", testPaths.size());
break;
@@ -315,7 +316,7 @@ public class SlingTestBase implements SlingInstance {
Thread.sleep(TimeoutsProvider.getInstance().getTimeout(1000L));
}
- if(!slingTestState.isServerReady()) {
+ if (!slingTestState.isServerReady()) {
slingTestState.setServerReadyTestFailed(true);
final String msg = "Server not ready after " + timeoutSec + " seconds, giving up";
log.info(msg);
@@ -342,7 +343,9 @@ public class SlingTestBase implements SlingInstance {
return toInstall;
}
- /** Get the list of additional bundles to install, as specified by additionalBundlesPath parameter */
+ /**
+ * Get the list of additional bundles to install, as specified by additionalBundlesPath parameter
+ */
protected List<File> getBundlesToInstall(String additionalBundlesPath) {
final List<File> result = new LinkedList<File>();
if(additionalBundlesPath == null) {
@@ -358,7 +361,7 @@ public class SlingTestBase implements SlingInstance {
// Collect all filenames of candidate bundles
final List<String> bundleNames = new ArrayList<String>();
final String [] files = dir.list();
- if(files != null) {
+ if (files != null) {
for(String file : files) {
if(file.endsWith(".jar")) {
bundleNames.add(file);
@@ -375,7 +378,7 @@ public class SlingTestBase implements SlingInstance {
}
}
Collections.sort(sortedPropertyKeys);
- for(String key : sortedPropertyKeys) {
+ for (String key : sortedPropertyKeys) {
final String filenamePrefix = systemProperties.getProperty(key);
for(String bundleFilename : bundleNames) {
if(bundleFilename.startsWith(filenamePrefix)) {
@@ -391,16 +394,4 @@ public class SlingTestBase implements SlingInstance {
return serverStartedByThisClass;
}
- public HttpClient getHttpClient() {
- return httpClient;
- }
-
- public RequestExecutor getRequestExecutor() {
- return executor;
- }
-
- public WebconsoleClient getWebconsoleClient() {
- startServerIfNeeded();
- return webconsoleClient;
- }
}
diff --git a/src/main/java/org/apache/sling/testing/serversetup/jarexec/JarExecutor.java b/src/main/java/org/apache/sling/testing/serversetup/jarexec/JarExecutor.java
index 401f0be..c8f33fb 100644
--- a/src/main/java/org/apache/sling/testing/serversetup/jarexec/JarExecutor.java
+++ b/src/main/java/org/apache/sling/testing/serversetup/jarexec/JarExecutor.java
@@ -34,6 +34,7 @@ import org.slf4j.LoggerFactory;
/** Start a runnable jar by forking a JVM process,
* and terminate the process when this VM exits.
*/
+@SuppressWarnings("ALL")
public class JarExecutor {
private final File jarToExecute;
private final String jvmFullPath;
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.