[ 
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

Reply via email to