This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.junit.healthcheck-1.0.4 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-junit-healthcheck.git
commit dd11d79889edc8ad32989b2551c9db3ffac8fef3 Author: Bertrand Delacretaz <[email protected]> AuthorDate: Tue Mar 22 15:27:12 2011 +0000 SLING-2029 - RequestCustomizer allows for setting credentials (or other options) in RemoteTestHttpClient git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/testing/junit/remote@1084217 13f79535-47bb-0310-9956-ffa450edef68 --- .../sling/junit/remote/exported/ExampleRemoteTest.java | 16 ++++++++++++++-- .../junit/remote/httpclient/RemoteTestHttpClient.java | 10 +++++++++- .../sling/junit/remote/ide/SlingRemoteExecutionRule.java | 11 ++++++++++- .../junit/remote/testrunner/SlingRemoteTestRunner.java | 8 ++++++++ 4 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java b/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java index 063a4f4..ba7b6be 100644 --- a/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java +++ b/src/main/java/org/apache/sling/junit/remote/exported/ExampleRemoteTest.java @@ -18,8 +18,11 @@ package org.apache.sling.junit.remote.exported; import static org.junit.Assert.fail; import org.apache.sling.junit.remote.ide.SlingRemoteExecutionRule; +import org.apache.sling.testing.tools.http.Request; import org.junit.Rule; import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** Test that can be run remotely on a Sling instance from an IDE, by * setting the {@link SlingRemoteExecutionRule.SLING_REMOTE_TEST_URL} @@ -27,9 +30,18 @@ import org.junit.Test; * the Sling JUnit servlet (like http://localhost:8080/system/sling/junit) */ public class ExampleRemoteTest { - + private final Logger log = LoggerFactory.getLogger(getClass()); + + /** Execute this test remotely and customize the request (could be + * used to set credentials for example) + */ @Rule - public SlingRemoteExecutionRule execRule = new SlingRemoteExecutionRule(); + public SlingRemoteExecutionRule execRule = new SlingRemoteExecutionRule() { + @Override + public void customizeRequest(Request r) { + log.info("Customizing request {}", r); + } + }; @Test public void testAlwaysPasses() { diff --git a/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java b/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java index 6cecb44..793a19e 100644 --- a/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java +++ b/src/main/java/org/apache/sling/junit/remote/httpclient/RemoteTestHttpClient.java @@ -23,6 +23,7 @@ import org.apache.http.client.ClientProtocolException; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.sling.testing.tools.http.Request; import org.apache.sling.testing.tools.http.RequestBuilder; +import org.apache.sling.testing.tools.http.RequestCustomizer; import org.apache.sling.testing.tools.http.RequestExecutor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,6 +35,7 @@ public class RemoteTestHttpClient { private final String junitServletUrl; private StringBuilder subpath; private boolean consumeContent; + private RequestCustomizer requestCustomizer; private static final String SLASH = "/"; private static final String DOT = "."; @@ -45,6 +47,10 @@ public class RemoteTestHttpClient { this.consumeContent = consumeContent; } + public void setRequestCustomizer(RequestCustomizer c) { + requestCustomizer = c; + } + public RequestExecutor runTests(String testClassesSelector, String testMethodSelector, String extension) throws ClientProtocolException, IOException { final RequestBuilder builder = new RequestBuilder(junitServletUrl); @@ -82,7 +88,9 @@ public class RemoteTestHttpClient { log.info("Executing test remotely, path={} JUnit servlet URL={}", subpath, junitServletUrl); - final Request r = builder.buildPostRequest(subpath.toString()); + final Request r = builder + .buildPostRequest(subpath.toString()) + .withCustomizer(requestCustomizer); executor.execute(r).assertStatus(200); return executor; diff --git a/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java b/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java index 529d785..e6551de 100644 --- a/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java +++ b/src/main/java/org/apache/sling/junit/remote/ide/SlingRemoteExecutionRule.java @@ -20,6 +20,8 @@ import java.io.ObjectInputStream; import org.apache.http.HttpEntity; import org.apache.sling.junit.remote.httpclient.RemoteTestHttpClient; +import org.apache.sling.testing.tools.http.Request; +import org.apache.sling.testing.tools.http.RequestCustomizer; import org.apache.sling.testing.tools.http.RequestExecutor; import org.junit.rules.MethodRule; import org.junit.runners.model.FrameworkMethod; @@ -32,7 +34,7 @@ import org.slf4j.LoggerFactory; * Used to execute tests from an IDE and have then run * on a remote Sling instance. */ -public class SlingRemoteExecutionRule implements MethodRule { +public class SlingRemoteExecutionRule implements MethodRule, RequestCustomizer { private static final Logger log = LoggerFactory.getLogger(SlingRemoteExecutionRule.class); @@ -76,6 +78,7 @@ public class SlingRemoteExecutionRule implements MethodRule { final String methodName = method.getMethod().getName(); final RemoteTestHttpClient testHttpClient = new RemoteTestHttpClient(remoteUrl, false); + testHttpClient.setRequestCustomizer(this); final RequestExecutor executor = testHttpClient.runTests( testClassesSelector, methodName, "serialized" ); @@ -98,4 +101,10 @@ public class SlingRemoteExecutionRule implements MethodRule { } } } + + /** @inheritDoc */ + public void customizeRequest(Request r) { + // Do nothing by default, tests that use this rule can + // customize this method + } } \ No newline at end of file diff --git a/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java b/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java index 175b774..3f6e28a 100644 --- a/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java +++ b/src/main/java/org/apache/sling/junit/remote/testrunner/SlingRemoteTestRunner.java @@ -23,6 +23,7 @@ import org.apache.sling.commons.json.JSONArray; import org.apache.sling.commons.json.JSONObject; import org.apache.sling.commons.json.JSONTokener; import org.apache.sling.junit.remote.httpclient.RemoteTestHttpClient; +import org.apache.sling.testing.tools.http.RequestCustomizer; import org.apache.sling.testing.tools.http.RequestExecutor; import org.junit.internal.AssumptionViolatedException; import org.junit.internal.runners.model.EachTestNotifier; @@ -73,6 +74,13 @@ public class SlingRemoteTestRunner extends ParentRunner<SlingRemoteTest> { } testHttpClient = new RemoteTestHttpClient(testParameters.getJunitServletUrl(), true); + + // Let the parameters class customize the request if desired + if(testParameters instanceof RequestCustomizer) { + testHttpClient.setRequestCustomizer((RequestCustomizer)testParameters); + } + + // Run tests remotely and get response final RequestExecutor executor = testHttpClient.runTests( testParameters.getTestClassesSelector(), testParameters.getTestMethodSelector(), -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
