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 2011/02/21 18:36:09 UTC
svn commit: r1073087 - in /sling/trunk/testing/samples/test-tools: ./
src/test/java/org/apache/sling/testing/samples/testtools/
src/test/java/org/apache/sling/testing/samples/testtools/serverside/
Author: bdelacretaz
Date: Mon Feb 21 17:36:09 2011
New Revision: 1073087
URL: http://svn.apache.org/viewvc?rev=1073087&view=rev
Log:
SLING-1981 - JSONResponseTest added (ignored for now, fails)
Added:
sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/JSONResponseTest.java (with props)
sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTestsBase.java (with props)
Modified:
sling/trunk/testing/samples/test-tools/pom.xml
sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/SlingTestBase.java
sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTest.java
Modified: sling/trunk/testing/samples/test-tools/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/testing/samples/test-tools/pom.xml?rev=1073087&r1=1073086&r2=1073087&view=diff
==============================================================================
--- sling/trunk/testing/samples/test-tools/pom.xml (original)
+++ sling/trunk/testing/samples/test-tools/pom.xml Mon Feb 21 17:36:09 2011
@@ -106,7 +106,7 @@
<configuration>
<outputDirectory>${project.build.directory}/sling/additional-bundles</outputDirectory>
<includeArtifactIds>
- org.apache.sling.junit.core,org.apache.sling.testing.samples.testbundle
+ org.apache.sling.junit.core,org.apache.sling.testing.samples.testbundle,org.apache.sling.junit.scriptable
</includeArtifactIds>
<excludeTransitive>true</excludeTransitive>
<overWriteReleases>false</overWriteReleases>
@@ -167,6 +167,12 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.junit.scriptable</artifactId>
+ <version>0.1.1-SNAPSHOT</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.testing.samples.testbundle</artifactId>
<version>0.1.1-SNAPSHOT</version>
<scope>provided</scope>
@@ -185,6 +191,11 @@
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.commons.json</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.launchpad</artifactId>
<classifier>standalone</classifier>
<version>6-SNAPSHOT</version>
Modified: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/SlingTestBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/SlingTestBase.java?rev=1073087&r1=1073086&r2=1073087&view=diff
==============================================================================
--- sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/SlingTestBase.java (original)
+++ sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/SlingTestBase.java Mon Feb 21 17:36:09 2011
@@ -63,6 +63,7 @@ public class SlingTestBase {
log.info(TEST_SERVER_URL_PROP + " is set: not starting server jar (" + serverBaseUrl + ")");
} else {
final JarExecutor j = JarExecutor.getInstance(System.getProperties());
+ log.info(TEST_SERVER_URL_PROP + " not set, starting server jar {}", j);
j.start();
serverBaseUrl = "http://localhost:" + j.getServerPort();
Added: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/JSONResponseTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/JSONResponseTest.java?rev=1073087&view=auto
==============================================================================
--- sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/JSONResponseTest.java (added)
+++ sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/JSONResponseTest.java Mon Feb 21 17:36:09 2011
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.testing.samples.testtools.serverside;
+
+import static org.junit.Assert.fail;
+import static org.junit.Assert.assertEquals;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.sling.commons.json.JSONArray;
+import org.apache.sling.commons.json.JSONObject;
+import org.apache.sling.commons.json.JSONTokener;
+import org.apache.stanbol.commons.testing.http.Request;
+import org.apache.stanbol.commons.testing.http.RetryLoop;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** Test the JSON list of tests returned by the JUnit servlet, as an
+ * example of testing JSON responses.
+ */
+public class JSONResponseTest extends ServerSideTestsBase {
+
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ // TODO compute those timeouts based on a configured factor
+ // to cope with slower testing systems??
+ public static final int TEST_LIST_TIMEOUT_SECONDS = 30;
+
+ @Test
+ @Ignore // TODO: fails in mvn build, why??
+ public void testWithRetries() {
+ // Need a retry loop as the tests might still be registering
+ // when this test runs...we'd need to make the readyness detection
+ // more extensive to avoid this
+ final RetryLoop.Condition c = new RetryLoop.Condition() {
+
+ public String getDescription() {
+ return "Checking JSON list of server-side tests";
+ }
+
+ public boolean isTrue() throws Exception {
+ testJsonListOfTests();
+ return true;
+ }
+ };
+
+ log.info("{} (timeout={} seconds)", c.getDescription(), TEST_LIST_TIMEOUT_SECONDS);
+ new RetryLoop(c, TEST_LIST_TIMEOUT_SECONDS, 500);
+ }
+
+ private void testJsonListOfTests() throws Exception {
+ Request r = builder.buildGetRequest(JUNIT_SERVLET_PATH + "/.json");
+
+ // Get list of tests in JSON format
+ executor.execute(r)
+ .assertStatus(200)
+ .assertContentType("application/json");
+
+ // Parse JSON response for more precise testing
+ final JSONArray json = new JSONArray(new JSONTokener((executor.getContent())));
+
+ // Verify that all our test names are in the response
+ final List<String> expectedTestNames = Arrays.asList(new String []{
+ "org.apache.sling.junit.scriptable.ScriptableTestsProvider",
+ "org.apache.sling.junit.testbundle.tests.JUnit3Test",
+ "org.apache.sling.junit.testbundle.tests.JUnit4Test",
+ "org.apache.sling.junit.testbundle.tests.MissingTest",
+ "org.apache.sling.junit.testbundle.tests.OsgiAwareTest"
+ });
+
+ // Response contains an array of objects identified by
+ // their INFO_TYPE and INFO_SUBTYPE: check the one
+ // that has type=list and subtype=testNames
+ boolean dataFound = false;
+ for(int i = 0 ; i < json.length(); i++) {
+ final JSONObject obj = json.getJSONObject(i);
+ if("list".equals(obj.getString("INFO_TYPE")) && "testNames".equals(obj.getString("INFO_SUBTYPE"))) {
+ dataFound = true;
+ final JSONArray data = obj.getJSONArray("data");
+ assertEquals("Expecting correct number of tests", expectedTestNames.size(), data.length());
+
+ int matched = 0;
+ for(int j=0; j < data.length(); j++) {
+ if(expectedTestNames.contains(data.getString(j))) {
+ matched++;
+ }
+ }
+ assertEquals("Expecting to find all test names in data array", expectedTestNames.size(), matched);
+ }
+ }
+
+ if(!dataFound) {
+ fail("Test names object not found in response");
+ }
+ }
+}
\ No newline at end of file
Propchange: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/JSONResponseTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/JSONResponseTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL
Modified: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTest.java?rev=1073087&r1=1073086&r2=1073087&view=diff
==============================================================================
--- sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTest.java (original)
+++ sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTest.java Mon Feb 21 17:36:09 2011
@@ -16,49 +16,14 @@
*/
package org.apache.sling.testing.samples.testtools.serverside;
-import org.apache.sling.testing.samples.testtools.SlingTestBase;
-import org.apache.stanbol.commons.testing.http.RetryLoop;
-import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/** Run all server-side tests */
-public class ServerSideTest extends SlingTestBase {
- public static final String JUNIT_SERVLET_PATH = "/system/sling/junit";
- private static boolean junitServletOk;
+public class ServerSideTest extends ServerSideTestsBase {
private final Logger log = LoggerFactory.getLogger(getClass());
- // TODO compute those timeouts based on a configured factor
- // to cope with slower testing systems??
- public static final int JUNIT_SERVLET_TIMEOUT_SECONDS = 60;
-
- @Before
- public void checkJunitServletPresent() throws Exception {
- if(junitServletOk) {
- return;
- }
-
- // Retry accessing the junit servlet until it responds or timeout
- // (as we might just have installed the required bundles)
- final RetryLoop.Condition c = new RetryLoop.Condition() {
- public String getDescription() {
- return "Checking that " + JUNIT_SERVLET_PATH + " returns 200";
- }
-
- public boolean isTrue() throws Exception {
- executor.execute(
- builder.buildGetRequest(JUNIT_SERVLET_PATH))
- .assertStatus(200);
- return true;
- }
-
- };
-
- new RetryLoop(c, JUNIT_SERVLET_TIMEOUT_SECONDS, 500);
- junitServletOk = true;
- }
-
@Test
public void testNothing() {
// TODO run the actual tests via junit servlet
Added: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTestsBase.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTestsBase.java?rev=1073087&view=auto
==============================================================================
--- sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTestsBase.java (added)
+++ sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTestsBase.java Mon Feb 21 17:36:09 2011
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.testing.samples.testtools.serverside;
+
+import org.apache.sling.testing.samples.testtools.SlingTestBase;
+import org.apache.stanbol.commons.testing.http.RetryLoop;
+import org.junit.Before;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** Base class for tests that require the server-side test bundles
+ * to be active.
+ */
+public class ServerSideTestsBase extends SlingTestBase {
+ public static final String JUNIT_SERVLET_PATH = "/system/sling/junit";
+
+ private static boolean junitServletOk;
+ private final Logger log = LoggerFactory.getLogger(getClass());
+
+ // TODO compute those timeouts based on a configured factor
+ // to cope with slower testing systems??
+ public static final int JUNIT_SERVLET_TIMEOUT_SECONDS = 60;
+
+ @Before
+ public void checkJunitServletPresent() throws Exception {
+ if(junitServletOk) {
+ return;
+ }
+
+ // Retry accessing the junit servlet until it responds or timeout
+ // (as we might just have installed the required bundles)
+ final int expectedStatus = 200;
+ final RetryLoop.Condition c = new RetryLoop.Condition() {
+ public String getDescription() {
+ return "Checking that " + JUNIT_SERVLET_PATH + " returns " + expectedStatus;
+ }
+
+ public boolean isTrue() throws Exception {
+ executor.execute(
+ builder.buildGetRequest(JUNIT_SERVLET_PATH))
+ .assertStatus(expectedStatus);
+ return true;
+ }
+
+ };
+
+ log.info(c.getDescription());
+ new RetryLoop(c, JUNIT_SERVLET_TIMEOUT_SECONDS, 500);
+ junitServletOk = true;
+ }
+}
Propchange: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTestsBase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/samples/test-tools/src/test/java/org/apache/sling/testing/samples/testtools/serverside/ServerSideTestsBase.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision Rev URL