[
https://issues.apache.org/jira/browse/SLING-2091?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mark Adamcin updated SLING-2091:
--------------------------------
Attachment: madamcin_sling_junit_cq54.patch
Patch file containing the 4 sets of changes described in the ticket
> Sling JUnit sample integration tests fail when deployed and executed on CQ 5.4
> ------------------------------------------------------------------------------
>
> Key: SLING-2091
> URL: https://issues.apache.org/jira/browse/SLING-2091
> Project: Sling
> Issue Type: Bug
> Components: Testing
> Affects Versions: Commons Testing 2.0.6
> Environment: Windows 7 64bit, Maven 3.0.3, Adobe CQ 5.4
> Reporter: Mark Adamcin
> Priority: Minor
> Attachments: madamcin_sling_junit_cq54.patch
>
>
> After deploying the sling junit runtime bundles, sling testing tools, and
> sample server-side tests to a local CQ 5.4 instance, several sample
> integration tests fail when trying to run `mvn install` for the integration
> tests bundle.
> Bundles deployed to instance using JCR Install:
> /apps/bundles/install/org.apache.sling.testing.tools-1.0.5-SNAPSHOT.jar
> /apps/bundles/install/org.apache.sling.junit.core-1.0.7-SNAPSHOT.jar
> /apps/bundles/install/org.apache.sling.junit.scriptable-1.0.7-SNAPSHOT.jar
> /apps/bundles/install/org.apache.sling.junit.remote-1.0.7-SNAPSHOT.jar
> /apps/bundles/install/org.apache.sling.testing.samples.sampletests-1.0.7-SNAPSHOT.jar
> /apps/bundles/install/org.apache.sling.testing.samples.failingtests-1.0.7-SNAPSHOT.jar
> I copied and modified the org.apache.sling.testing.samples.integrationtests
> module to run the tests against a running local CQ 5.4 instance listening on
> port 4502.
> Upon the first execution, the following tests failed:
> ##########
> Failed tests:
>
> testScriptableTest[0](org.apache.sling.testing.samples.integrationtests.serverside.scriptable.ScriptableTestsTest):
> MKCOL request to http://localhost:6502/apps/testing: expecting status 201
> expected:<201> but was:<405>
>
> testScriptableTest[1](org.apache.sling.testing.samples.integrationtests.serverside.scriptable.ScriptableTestsTest):
> MKCOL request to http://localhost:6502/apps/testing: expecting status 201
> expected:<201> but was:<405>
>
> initializationError(org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideSingleMethodTest):
> RetryLoop failed, condition is false after 30 seconds: Expecting
> /test/sling/1306687266726.junit to return HTTP status 200
>
> initializationError(org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideTest):
> /test/sling/1306687266726.junit check failed previously, cannot run tests
> ##########
> The first couple failures are related to the ScriptableTestsTest use of a
> SlingClient.mkdirs() method to create the /apps/testing/ScriptableTests path.
> The <405> response indicates that the client attempted to create a folder
> that already exists, even though it should be checking for existence first
> when mkdir calls SlingClient.exists().
> The problem is that, unlike the MKCOL request in the mkdir() method, the
> SlingClient.exists() method does not pass the ADMIN credentials along with
> the GET request it creates, which results in a failure to read the nodes. I
> made progress in the tests by adding a ".withCredentials(username, password)"
> to the request builder call in SlingClient.java on line 206.
> The next execution resulted in the following failed tests:
> ##########
> Failed tests:
>
> testScriptableTest[0](org.apache.sling.testing.samples.integrationtests.serverside.scriptable.ScriptableTestsTest):
> Expected 0 failing tests but got 1:
> [verifyContent[0](org.apache.sling.junit.scriptable.TestAllPaths): Expecting
> HTTP status 200 for path /apps/testing/ScriptableTests/testnode.test.txt
> expected:<200> but was:<500>]
>
> initializationError(org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideSingleMethodTest):
> RetryLoop failed, condition is false after 30 seconds: Expecting
> /test/sling/1306688554150.junit to return HTTP status 200
>
> initializationError(org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideTest):
> /test/sling/1306688554150.junit check failed previously, cannot run tests
> ##########
> The first failure, "testScriptableTest" referred to a 500 response, and the
> cause for this was a NullPointerException:
> 29.05.2011 10:02:33.985 *ERROR* [127.0.0.1 [1306688553968] POST
> /system/sling/junit/org.apache.sling.junit.scriptable.ScriptableTestsProvider.json
> HTTP/1.1] org.apache.sling.engine.impl.SlingRequestProcessorImpl service:
> Uncaught Throwable java.lang.NullPointerException
> at
> org.apache.sling.engine.impl.parameters.ParameterSupport.getContainerParameters(ParameterSupport.java:154)
> at
> org.apache.sling.engine.impl.parameters.ParameterSupport.getRequestParameterMapInternal(ParameterSupport.java:119)
> at
> org.apache.sling.engine.impl.parameters.ParameterSupport.getParameter(ParameterSupport.java:85)
> at
> org.apache.sling.engine.impl.SlingHttpServletRequestImpl.getParameter(SlingHttpServletRequestImpl.java:143)
> at
> org.apache.sling.bgservlets.impl.BackgroundServletStarterFilter.doFilter(BackgroundServletStarterFilter.java:105)
> at
> org.apache.sling.engine.impl.filter.AbstractSlingFilterChain.doFilter(AbstractSlingFilterChain.java:60)
> at
> org.apache.sling.engine.impl.SlingRequestProcessorImpl.processRequest(SlingRequestProcessorImpl.java:161)
> at
> org.apache.sling.junit.scriptable.TestAllPaths.verifyContent(TestAllPaths.java:62)
> ...
> This can be traced to the BackgroundServletStarterFilter attempting to get a
> parameter from the org.apache.sling.junit.scriptable.HttpRequest object that
> was passed to the request processor by the TestAllPaths.verifyContent()
> method. The HttpRequest.getParameterMap() method currently returns a null
> pointer and the ParameterSupport class does not check for. A quick workaround
> was to add a Map<String, String> member to the HttpRequest class and to
> return it in the getParameterMap() method.
> The next execution result in the following failed tests:
> ##########
> Failed tests:
>
> initializationError(org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideSingleMethodTest):
> RetryLoop failed, condition is false after 30 seconds: Expecting
> /test/sling/1306689608120.junit to return HTTP status 200
>
> initializationError(org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideTest):
> /test/sling/1306689608120.junit check failed previously, cannot run tests
> ##########
> The above failure resulted from missing admin credentials in the
> org.apache.sling.testing.tools.http.RetryingContentChecker's
> RetryLoop.Condition. I added a ".withCredentials(SlingTestBase.ADMIN,
> SlingTestBase.ADMIN)" call to the request builder, which seems to fix that
> problem.
> The next execution resulted in the following reported errors:
> ##########
> Tests in error:
>
> org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideSingleMethodTest:
> POST request to
> http://localhost:6502/test/sling/1306690571924.junit/org.apache.sling.testing.samples.sampletests.JUnit4Test/testRequiresBefore.json:
> expecting status 200 expected:<200> but was:<500>
>
> org.apache.sling.testing.samples.integrationtests.serverside.sling.SlingServerSideTest:
> POST request to
> http://localhost:6502/test/sling/1306690571924.junit/org.apache.sling.testing.samples.sampletests.json:
> expecting status 200 expected:<200> but was:<500>
> ##########
> The above errors were again the result of a lack of permission to execute a
> test's HTTP Request. Here are the associated entries in
> crx-quickstart/logs/error.log:
> 29.05.2011 10:36:11.977 *ERROR* [127.0.0.1 [1306690571975] POST
> /test/sling/1306690571924.junit/org.apache.sling.testing.samples.sampletests.JUnit4Test/testRequiresBefore.json
> HTTP/1.1] org.apache.sling.servlets.post.impl.operations.ModifyOperation
> Access Denied cannot read item cafebabe-cafe-babe-cafe-babecafebabe
> 29.05.2011 10:36:12.036 *ERROR* [127.0.0.1 [1306690572033] POST
> /test/sling/1306690571924.junit/org.apache.sling.testing.samples.sampletests.json
> HTTP/1.1] org.apache.sling.servlets.post.impl.operations.ModifyOperation
> Access Denied cannot read item cafebabe-cafe-babe-cafe-babecafebabe
> In this case, the request originates from the
> org.apache.sling.junit.remote.httpclient.RemoteTestHttpClient.runTests()
> method. Again, I added a ".withCredentials(SlingTestBase.ADMIN,
> SlingTestBase.ADMIN)" call to the request builder, and this resolved the
> errors.
> After making that change and running the tests again, no other errors were
> reported:
> ##########
> Results :
> Tests run: 22, Failures: 0, Errors: 0, Skipped: 0
> ##########
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira