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>.