Hi Ian, I found it difficult to use createNode method to work. It returns 200 response. I was trying to get this working but could not find a way. Probably I might be missing some properties. What I set was only content type to be json. What are the appropriate properties that you mentioned. How can someone get to know what are the properties required minimum to create a node. I debug and verified my create method gets hit in provider side.
*P.S If I give a already existing path it works and gives 302 response. * i.e /content/cassandra/p1/c1 this works since it is already there. But /content/cassandra/pp/cc fails. I also tried adding /content/cassandra/pp first and then /content/cassandra/pp/cc. It fails at /content/cassandra/pp. Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 36.21 sec <<< FAILURE! testResourceCreate(org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceCUDTest) Time elapsed: 36.187 sec <<< ERROR! org.apache.sling.commons.testing.integration.HttpStatusCodeException: Expected status code 302 for POST, got 200, URL= http://localhost:8080/content/cassandra/pp/cc, Content=[<html> <head> <title>Error while processing /content/cassandra/pp/cc</title> </head> <body> <h1>Error while processing /content/cassandra/pp/cc</h1> <table> <tbody> <tr> <td>Status</td> <td><div id="Status">500</div></td> </tr> <tr> <td>Message</td> <td><div id="Message">java.lang.NullPointerException</div></td> </tr> <tr> <td>Location</td> <td><a href="/cassandra/pp/cc" id="Location">/cassandra/pp/cc</a></td> </tr> <tr> <td>Parent Location</td> <td><a href="/cassandra/pp" id="ParentLocation">/cassandra/pp</a></td> </tr> <tr> <td>Path</td> <td><div id="Path">/content/cassandra/pp/cc</div></td> </tr> <tr> <td>Referer</td> <td><a href="" id="Referer"></a></td> </tr> <tr> <td>ChangeLog</td> <td><div id="ChangeLog"><pre></pre></div></td> </tr> </tbody> </table> <p><a href="">Go Back</a></p> <p><a href="/cassandra/pp/cc">Modified Resource</a></p> <p><a href="/cassandra/pp">Parent of Modified Resource</a></p> </body> </html>] at org.apache.sling.commons.testing.integration.SlingIntegrationTestClient.createNode(SlingIntegrationTestClient.java:188) at org.apache.sling.commons.testing.integration.SlingIntegrationTestClient.createNode(SlingIntegrationTestClient.java:119) at org.apache.sling.commons.testing.integration.SlingIntegrationTestClient.createNode(SlingIntegrationTestClient.java:109) at org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceCUDTest.testResourceCreate(CassandraResourceCUDTest.java:29) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at junit.framework.TestCase.runTest(TestCase.java:168) at junit.framework.TestCase.runBare(TestCase.java:134) at junit.framework.TestResult$1.protect(TestResult.java:110) at junit.framework.TestResult.runProtected(TestResult.java:128) at junit.framework.TestResult.run(TestResult.java:113) at junit.framework.TestCase.run(TestCase.java:124) at junit.framework.TestSuite.runTest(TestSuite.java:232) at junit.framework.TestSuite.run(TestSuite.java:227) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:81) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) Results : Tests in error: testResourceCreate(org.apache.sling.launchpad.webapp.integrationtest.resourceprovider.CassandraResourceCUDTest): Expected status code 302 for POST, got 200, URL= http://localhost:8080/content/cassandra/pp/cc, Content=[<html>(..) Tests run: 1, Failures: 0, Errors: 1, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 40.126s [INFO] Finished at: Sun Sep 08 05:05:47 IST 2013 [INFO] Final Memory: 13M/490M On Fri, Sep 6, 2013 at 1:23 PM, Ian Boston <i...@tfd.co.uk> wrote: > Hi, > Thanks, now I see how you're doing it. Its good. > > So to do a Write (CUD[1]) test, create another class that extends > HttpBaseTest and write a test method that invokes > > testClient.createNode(...) with an appropriate set of properties and a > collection managed by the CassandraProvider. You will probably need to > create that collection first, and its parent, or better still, reuse > the existing pre-populated collections since we are looking for the > scalability of CUD relative to collection size. > > I think if you use createNode on an existing node it will update it, > and there is a delete method as well. > > testClient is a > org.apache.sling.commons.testing.integration.SlingIntegrationTestClient > and is protected in HttpBaseTest so you should have access. > > As I said, perform CUD on 100 new nodes in each collection and print > the results out. > > Obviously add all new code to you repository so its all in one place. > > Best Regards > Ian > > 1 Create Update Delete (you've done read, we need stats for each of > these operations) > > > On 6 September 2013 04:31, Dishara Wijewardana <ddwijeward...@gmail.com> > wrote: > > Hi Ian, > > Done. > > > > > > On Thu, Sep 5, 2013 at 10:53 AM, Ian Boston <i...@tfd.co.uk> wrote: > > > >> Hi Dishara, > >> > >> On Thursday, September 5, 2013, Dishara Wijewardana wrote: > >> > >> > Hi Ian, > >> > Did you mean the sling integration test (which runs the performance > tests > >> > and provides reports) to move inside google code repo ? > >> > >> > >> Yes please. > >> Thanks > >> > >> Best regards > >> Ian > >> > >> > >> > >> > >> > > >> > > >> > On Wed, Sep 4, 2013 at 5:41 PM, Ian Boston <i...@tfd.co.uk> wrote: > >> > > >> > > On 4 September 2013 13:42, Dishara Wijewardana < > >> ddwijeward...@gmail.com> > >> > > wrote: > >> > > > HI Ian, > >> > > > > >> > > > > >> > > > > >> > > > On Wed, Sep 4, 2013 at 4:00 PM, Ian Boston <i...@tfd.co.uk> wrote: > >> > > > > >> > > >> On 4 September 2013 12:20, Dishara Wijewardana < > >> > ddwijeward...@gmail.com > >> > > > > >> > > >> wrote: > >> > > >> <snip> > >> > > >> > >> > > >> >> How long does it take to add, update and delete, 100 new > items to > >> > the > >> > > >> >> existing collections that you used for the read tests. If its > >> > quick, > >> > > you > >> > > >> >> may need to make that 1000 new items. > >> > > >> >> > >> > > >> >> > >> > > >> > Hi Ian, > >> > > >> > > >> > > >> > In the modify provider interface there is no "update" method. > Am I > >> > > >> missing > >> > > >> > something? > >> > > >> > >> > > >> You need to support adapTo(ModifyableValueMap.class) IIRC. > >> > > >> > >> > > > I saw the interface ModifyableValueMap, but could not find a clear > >> > > example > >> > > > usage of it as in PlanetResource case. But will see further. > >> > > > > >> > > > >> > > IIRC the MongoDB ResourceProvider allows modification. grep the > Sling > >> > > source code for it. > >> > > > >> > > > >> > > >> > >> > > >> > > >> > > >> > Can you please elaborate more on exact scope and goals on what > is > >> > > >> expected > >> > > >> > from the new performance test class?Is it to capture the > >> add/delete > >> > > >> latency > >> > > >> > on nodes added in each collection. > >> > > >> > >> > > >> yes. > >> > > >> > >> > > >> > > >> > > >> > If so, is it possible to test add/delete extending HTTPBase > test > >> as > >> > > done > >> > > >> > for reading ? Or any other class that provides abstract test > >> class/ > >> > > APIs > >> > > >> to > >> > > >> > add/delete ? > >> > > >> > > >> > > >> > >> > > >> Where are the classes that you used to perform the read tests, I > >> cant > >> > > >> see them in the repo ? > >> > > >> > >> > > >> The class that I used was > >> > > > org.apache.sling.commons.testing.integration.HttpTestBase . I have > >> > > attached > >> > > > the patch of my class which extends this class. There I am usinf > >> > > > getContent() method of the base class to do HTTP get content > >> > operations. > >> > > > >> > > > >> > > Could we get your test classes to run the load test into your > >> > > repository please, even if its something that has to be run > manually. > >> > > > >> > > Thanks > >> > > > >> > > > >> > > Best Regards > >> > > Ian > >> > > > >> > > > >> > > > > >> > > >> Ian > >> > > >> > >> > > >> > >> > > >> > >> > > >> > > >> > > >> > > >> > > >> >> Best regards > >> > > >> >> Ian > >> > > >> >> > >> > > >> >> > >> > > >> >> > >> > > >> >> > >> > > >> >> > >> > > >> >> > > >> > > >> >> > > >> > > >> >> > > Best Regards > >> > > >> >> > > Ian > >> > > >> >> > > > >> > > >> >> > > On 3 September 2013 01:23, Dishara Wijewardana < > >> > > >> >> ddwijeward...@gmail.com<javascript:;> > >> > > >> >> > > > >> > > >> >> > > wrote: > >> > > >> >> > > > Hi Ian, > >> > > >> >> > > > Thank you for the references. I just commited the > changes. > >> > > There I > >> > > >> >> have > >> > > >> >> > > > completed the whole implementation of > >> > ModifyingResourceProvider > >> > > >> >> > interface > >> > > >> >> > > > for Cassandra Resource Provider (create, delete, > commit , > >> > > >> rollback > >> > > >> >> > etc) > >> > > >> >> > > > and wrote 3 test classes ( > >> > > >> CassandraModifyResourceProvide**rAddTest, > >> > > >> >> > > Cassan > >> > > >> >> > > > draModif-- > >> > Thanks > >> > /Dishara > >> > > >> > > > > > > > > -- > > Thanks > > /Dishara > -- Thanks /Dishara