Hmm, okay, then it must be something pretty strange. Maybe jetty is getting starved of threads or something? I wonder if you can start a second Jetty instance for the CMIS server. That would eliminate any kind of jetty resource conflict. Karl
On Thu, Aug 4, 2011 at 10:23 AM, Piergiorgio Lucidi <piergiorgioluc...@gmail.com> wrote: > 2011/8/4 Karl Wright <daddy...@gmail.com> > >> Sorry, I meant, "do the API sanity tests work properly for you when >> you run them on a clean trunk checkout"? >> > > The other tests yes, work correctly, only CMIS tests don't work. > > >> >> Karl >> >> On Thu, Aug 4, 2011 at 10:12 AM, Karl Wright <daddy...@gmail.com> wrote: >> > This is going to be complicated to debug. I'm happy to help but yes, >> > we'll need a branch to work off of. If you can attach the patch file >> > I'll try to set everything up this evening. >> > >> > Do the APISanity tests still work consistently on your setup? The "No >> > current connection" error seems like it is coming from some very basic >> > level and I would expect it to appear with APISanity as well. >> > >> > The timeout indicates that the job is not completing. If we can get >> > at the log when the test fails before they are cleaned up we will >> > probably learn why. >> > >> > Karl >> > >> > >> > On Thu, Aug 4, 2011 at 10:06 AM, Piergiorgio Lucidi >> > <piergiorgioluc...@gmail.com> wrote: >> >> After some minutes sometimes it returns the following exception to check >> the >> >> timeout: >> >> >> >> org.apache.manifoldcf.core.interfaces.ManifoldCFException: ManifoldCF >> did >> >>> not terminate in the allotted time of 120000 milliseconds >> >>> at org.apache.manifoldcf.cmis_tests.APISanityTest.waitJobInactive( >> >>> APISanityTest.java:529) >> >>> at org.apache.manifoldcf.cmis_tests.APISanityTest.sanityCheck( >> >>> APISanityTest.java:365) >> >>> 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >> >>> FrameworkMethod.java:44) >> >>> at org.junit.internal.runners.model.ReflectiveCallable.run( >> >>> ReflectiveCallable.java:15) >> >>> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >> >>> FrameworkMethod.java:41) >> >>> at org.junit.internal.runners.statements.InvokeMethod.evaluate( >> >>> InvokeMethod.java:20) >> >>> at org.junit.internal.runners.statements.RunBefores.evaluate( >> >>> RunBefores.java:28) >> >>> at org.junit.internal.runners.statements.RunAfters.evaluate( >> >>> RunAfters.java:31) >> >>> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored( >> >>> BlockJUnit4ClassRunner.java:79) >> >>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> >>> BlockJUnit4ClassRunner.java:71) >> >>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> >>> BlockJUnit4ClassRunner.java:49) >> >>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> >>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> >>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> >>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> >>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> >>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> >>> at org.apache.maven.surefire.junit4.JUnit4TestSet.execute( >> >>> JUnit4TestSet.java:53) >> >>> at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet( >> >>> JUnit4Provider.java:123) >> >>> at org.apache.maven.surefire.junit4.JUnit4Provider.invoke( >> >>> JUnit4Provider.java:104) >> >>> 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:164) >> >>> at >> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke( >> >>> ProviderFactory.java:110) >> >>> at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider( >> >>> SurefireStarter.java:172) >> >>> at >> >>> >> org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked( >> >>> SurefireStarter.java:78) >> >>> at >> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70 >> >>> ) >> >> >> >> >> >> >> >> 2011/8/4 Piergiorgio Lucidi <piergiorgioluc...@gmail.com> >> >> >> >>> Hi Karl, >> >>> >> >>> the integration test implementation is finished and it works fine using >> the >> >>> public Alfresco CMIS server. >> >>> >> >>> But now that I'm using the OpenCMIS InMemory Repository, deployed in >> the >> >>> same Jetty instance of Manifold, I have a problem, it seems that >> starting >> >>> test from the Maven goal, the test can't startup any job, that stay in >> >>> starting state without moving on. >> >>> >> >>> Sometimes it returns the following exception during the startup: >> >>> >> >>>> 2011-08-04 16:00:26.172:INFO::Started SocketConnector@0.0.0.0:8346 >> >>>> java.lang.Exception: API http error; expected 201, saw 200: >> {"error":"No >> >>>> current connection."} >> >>>> at org.apache.manifoldcf.cmis_tests.Base.performAPIPutOperation( >> >>>> Base.java:208) >> >>>> at >> org.apache.manifoldcf.cmis_tests.Base.performAPIPutOperationViaNodes( >> >>>> Base.java:271) >> >>>> at org.apache.manifoldcf.cmis_tests.APISanityTest.sanityCheck( >> >>>> APISanityTest.java:264) >> >>>> >> >>>> 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >> >>>> FrameworkMethod.java:44) >> >>>> at org.junit.internal.runners.model.ReflectiveCallable.run( >> >>>> ReflectiveCallable.java:15) >> >>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >> >>>> FrameworkMethod.java:41) >> >>>> at org.junit.internal.runners.statements.InvokeMethod.evaluate( >> >>>> InvokeMethod.java:20) >> >>>> at org.junit.internal.runners.statements.RunBefores.evaluate( >> >>>> RunBefores.java:28) >> >>>> >> >>>> at org.junit.internal.runners.statements.RunAfters.evaluate( >> >>>> RunAfters.java:31) >> >>>> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored( >> >>>> BlockJUnit4ClassRunner.java:79) >> >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> >>>> BlockJUnit4ClassRunner.java:71) >> >>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> >>>> BlockJUnit4ClassRunner.java:49) >> >>>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> >>>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> >>>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> >>>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> >>>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> >>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> >>>> at org.apache.maven.surefire.junit4.JUnit4TestSet.execute( >> >>>> JUnit4TestSet.java:53) >> >>>> at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet( >> >>>> JUnit4Provider.java:123) >> >>>> at org.apache.maven.surefire.junit4.JUnit4Provider.invoke( >> >>>> JUnit4Provider.java:104) >> >>>> >> >>>> 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:164) >> >>>> at >> org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke( >> >>>> ProviderFactory.java:110) >> >>>> at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider( >> >>>> SurefireStarter.java:172) >> >>>> at >> >>>> >> org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked( >> >>>> SurefireStarter.java:78) >> >>>> at org.apache.maven.surefire.booter.ForkedBooter.main( >> >>>> ForkedBooter.java:70) >> >>> >> >>> >> >>> >> >>> Starting the test from Eclipse it works fine. >> >>> Maybe it could be useful to create a branch to solve this problem, to >> >>> investigate together. >> >>> >> >>> Then I could attach my patch for integration tests. >> >>> Can you help me? >> >>> >> >>> Let me know. >> >>> Thank you for your support. >> >>> >> >>> Piergiorgio >> >>> >> >>> 2011/8/4 Karl Wright <daddy...@gmail.com> >> >>> >> >>>> Thanks for the update. Let me know if there's anything I can do to >> help. >> >>>> >> >>>> Karl >> >>>> >> >>>> On Thu, Aug 4, 2011 at 4:10 AM, Piergiorgio Lucidi >> >>>> <piergiorgioluc...@gmail.com> wrote: >> >>>> > I found a solution to create the right configuration for the CMIS >> >>>> Repository >> >>>> > Connector in the integration test code, and now it works ;) >> >>>> > >> >>>> > Chemistry guys are supporting me about an issue that I have found in >> the >> >>>> > OpenCMIS InMemory Repository that I would like to use in the >> integration >> >>>> > test for Manifold. >> >>>> > >> >>>> > Now I'm finishing the integration test implementation using the >> public >> >>>> > Alfresco CMIS server. Then I can start to test this new version of >> the >> >>>> > InMemory Repository with the bugfix provided by Jens. And I have to >> >>>> follow >> >>>> > some useful suggestions provided by Florian. >> >>>> > >> >>>> > I'll let you know soon about all these tasks. >> >>>> > >> >>>> > Piergiorgio >> >>>> > >> >>>> > ---------- Forwarded message ---------- >> >>>> > From: Jens Hübel <jhue...@opentext.com> >> >>>> > Date: 2011/8/4 >> >>>> > Subject: RE: CMIS and Lucene >> >>>> > To: d...@chemistry.apache.org >> >>>> > >> >>>> > >> >>>> > Hi Piergiorgio, >> >>>> > >> >>>> > you are right. I could reproduce the problem. There is a bug in the >> >>>> query >> >>>> > implementation of the InMemory server if you query for predefined >> >>>> properties >> >>>> > like cmis:name, cmis:createdBy, etc. :-( >> >>>> > >> >>>> > I have fixed this, so hopefully this works for you now if you take >> the >> >>>> > latest build. I have created CMIS-413 for this ( >> >>>> > https://issues.apache.org/jira/browse/CMIS-414). Please reopen if >> you >> >>>> still >> >>>> > have issues. >> >>>> > >> >>>> > One more note: Your test code is quite fragile if you use a fixed >> name >> >>>> for >> >>>> > your test document/folder. This implementation does not allow >> multiple >> >>>> > objects with the same name in one folder. This means unless you >> restart >> >>>> the >> >>>> > server your code will work only once. I recommend you using a random >> >>>> UUID as >> >>>> > name or something like that. In the default configuration the >> InMemory >> >>>> > creates a tree of document and folders by default. So it might not >> be >> >>>> > necessary to create objects at all (use the Workbench to take a look >> at >> >>>> > that). If you really need this reproducible behavior there is an >> option >> >>>> to >> >>>> > run the server using the local binding in the same Java VM. Then you >> can >> >>>> > restart the server with each test. The InMemory JUnit tests use this >> >>>> > mechanism. I do not recommend this however, because you bypass the >> whole >> >>>> > protocol layer for AtomPub/SOAP. This leaves many issues undetected >> a >> >>>> client >> >>>> > may see in a real connection later (and of course you lose the >> option to >> >>>> > switch to another CMIS server just by changing configuration). >> >>>> > >> >>>> > Jens >> >>>> > >> >>>> > >> >>>> > -----Original Message----- >> >>>> > From: Piergiorgio Lucidi [mailto:piergiorgioluc...@gmail.com] >> >>>> > Sent: Mittwoch, 3. August 2011 14:48 >> >>>> > To: d...@chemistry.apache.org >> >>>> > Subject: Re: CMIS and Lucene >> >>>> > >> >>>> > Hi Jens, >> >>>> > >> >>>> > here the code of my integration test that is used to create some >> content >> >>>> in >> >>>> > the InMemory Repository, the OpenCMIS server is running because it >> is >> >>>> > bootstrapped by Jetty / Maven. The CMIS Repository Connector works >> fine >> >>>> with >> >>>> > Alfresco 3.4d Community, but I would like to have the OpenCMIS >> server in >> >>>> the >> >>>> > test suite. >> >>>> > >> >>>> > In the following snippet I started to initialize the test >> environment >> >>>> with a >> >>>> > new folder with a new content, here I don't have any problem, it >> works >> >>>> with >> >>>> > the InMemory Repository: >> >>>> > >> >>>> > private Session getCmisClientSession(){ >> >>>> >> // default factory implementation >> >>>> >> SessionFactory factory = SessionFactoryImpl.newInstance(); >> >>>> >> Map<String, String> parameters = new HashMap<String, String>(); >> >>>> >> // user credentials >> >>>> >> parameters.put(SessionParameter.USER, "dummyuser"); >> >>>> >> parameters.put(SessionParameter.PASSWORD, "dummysecret"); >> >>>> >> // connection settings >> >>>> >> parameters.put(SessionParameter.ATOMPUB_URL, >> >>>> CMIS_ENDPOINT_TEST_SERVER >> >>>> >> ); >> >>>> >> parameters.put(SessionParameter.BINDING_TYPE, >> BindingType.ATOMPUB >> >>>> >> .value()); >> >>>> >> // create session >> >>>> >> return >> factory.getRepositories(parameters).get(0).createSession(); >> >>>> >> } >> >>>> >> @Before >> >>>> >> public void createTestArea() >> >>>> >> throws Exception >> >>>> >> { >> >>>> >> try >> >>>> >> { >> >>>> >> Session session = getCmisClientSession(); >> >>>> >> //creating a new folder >> >>>> >> Folder root = session.getRootFolder(); >> >>>> >> Map<String, Object> folderProperties = new HashMap<String, >> >>>> >> Object>(); >> >>>> >> folderProperties.put(PropertyIds.OBJECT_TYPE_ID, >> "cmis:folder"); >> >>>> >> folderProperties.put(PropertyIds.NAME, "testdata"); >> >>>> >> >> >>>> >> Folder newFolder = root.createFolder(folderProperties); >> >>>> >> //create a new content in the folder >> >>>> >> String name = "testdata1.txt"; >> >>>> >> // properties >> >>>> >> // (minimal set: name and object type id) >> >>>> >> Map<String, Object> contentProperties = new HashMap<String, >> >>>> >> Object>(); >> >>>> >> contentProperties.put(PropertyIds.OBJECT_TYPE_ID, >> >>>> "cmis:document"); >> >>>> >> contentProperties.put(PropertyIds.NAME, name); >> >>>> >> >> >>>> >> // content >> >>>> >> byte[] content = "CMIS Testdata One".getBytes(); >> >>>> >> InputStream stream = new ByteArrayInputStream(content); >> >>>> >> ContentStream contentStream = new ContentStreamImpl(name, >> >>>> > newBigInteger(content), >> >>>> >> "text/plain", stream); >> >>>> >> >> >>>> >> // create a major version >> >>>> >> Document newContent1 = >> >>>> newFolder.createDocument(contentProperties, >> >>>> >> contentStream, null); >> >>>> > >> >>>> > >> >>>> > But if I try to search the new content in the InMemory Repository, >> in >> >>>> the >> >>>> > same way I implemented in the CMIS Repository Connector: >> >>>> > >> >>>> > ItemIterable<QueryResult> results = session.query("SELECT * FROM >> >>>> >> cmis:folder WHERE cmis:name='testdata'", false); >> >>>> >> for (QueryResult result : results) { >> >>>> >> String id = >> result.getPropertyValueById(PropertyIds.OBJECT_ID); >> >>>> >> } >> >>>> > >> >>>> > >> >>>> > >> >>>> > It returns the following exception: >> >>>> > >> >>>> > >> org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: >> >>>> null >> >>>> >> at >> >>>> >> >> >>>> > >> >>>> >> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode( >> >>>> >> AbstractAtomPubService.java:450) >> >>>> >> at >> >>>> >> >> >>>> > >> >>>> >> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post( >> >>>> >> AbstractAtomPubService.java:568) >> >>>> >> at >> >>>> >> >> >>>> > >> >>>> >> org.apache.chemistry.opencmis.client.bindings.spi.atompub.DiscoveryServiceImpl.query( >> >>>> >> DiscoveryServiceImpl.java:141) >> >>>> >> at >> >>>> org.apache.chemistry.opencmis.client.runtime.SessionImpl$3.fetchPage( >> >>>> >> SessionImpl.java:557) >> >>>> >> at >> >>>> >> >> >>>> > >> >>>> >> org.apache.chemistry.opencmis.client.runtime.util.AbstractIterator.getCurrentPage( >> >>>> >> AbstractIterator.java:132) >> >>>> >> at >> >>>> >> >> >>>> > >> >>>> >> org.apache.chemistry.opencmis.client.runtime.util.CollectionIterator.hasNext( >> >>>> >> CollectionIterator.java:48) >> >>>> >> at org.apache.manifoldcf.cmis_tests.APISanityTest.createTestArea( >> >>>> >> APISanityTest.java:139) >> >>>> >> 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.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >> >>>> >> FrameworkMethod.java:44) >> >>>> >> at org.junit.internal.runners.model.ReflectiveCallable.run( >> >>>> >> ReflectiveCallable.java:15) >> >>>> >> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >> >>>> >> FrameworkMethod.java:41) >> >>>> >> at org.junit.internal.runners.statements.RunBefores.evaluate( >> >>>> >> RunBefores.java:27) >> >>>> >> at org.junit.internal.runners.statements.RunAfters.evaluate( >> >>>> >> RunAfters.java:31) >> >>>> >> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored( >> >>>> >> BlockJUnit4ClassRunner.java:79) >> >>>> >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> >>>> >> BlockJUnit4ClassRunner.java:71) >> >>>> >> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >> >>>> >> BlockJUnit4ClassRunner.java:49) >> >>>> >> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> >>>> >> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> >>>> >> at >> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> >>>> >> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> >>>> >> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> >>>> >> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> >>>> >> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( >> >>>> >> JUnit4TestReference.java:49) >> >>>> >> at org.eclipse.jdt.internal.junit.runner.TestExecution.run( >> >>>> >> TestExecution.java:38) >> >>>> >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >> >>>> >> RemoteTestRunner.java:467) >> >>>> >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >> >>>> >> RemoteTestRunner.java:683) >> >>>> >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( >> >>>> >> RemoteTestRunner.java:390) >> >>>> >> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( >> >>>> >> RemoteTestRunner.java:197) >> >>>> > >> >>>> > >> >>>> > Let me know if you have any hints! >> >>>> > >> >>>> > Thank you again for your support. >> >>>> > >> >>>> > Regards, >> >>>> > >> >>>> > Piergiorgio >> >>>> > >> >>>> > 2011/8/3 Jens Hübel <jhue...@opentext.com> >> >>>> > >> >>>> >> Hi Pergiorio, >> >>>> >> >> >>>> >> do you have a code piece that I can take a look at? What is your >> client >> >>>> >> API? Do you connect to Chemistry client API >> >>>> > (chemistry-opencmis-client-api)? >> >>>> >> Or perhaps you can grab the query sent from the log file? >> >>>> >> >> >>>> >> Thanks Jens >> >>>> >> >> >>>> >> >> >>>> >> -----Original Message----- >> >>>> >> From: Piergiorgio Lucidi [mailto:piergiorgioluc...@gmail.com] >> >>>> >> Sent: Mittwoch, 3. August 2011 13:22 >> >>>> >> To: d...@chemistry.apache.org >> >>>> >> Subject: Re: CMIS and Lucene >> >>>> >> >> >>>> >> Hi Jens, >> >>>> >> >> >>>> >> I contributed to the Apache ManifoldCF (ex Lucene Connector >> Framework) >> >>>> >> project implementing the CMIS Connector using OpenCMIS 0.4.0. >> >>>> >> >> >>>> >> Now I'm working on integration test trying to use the OpenCMIS >> InMemory >> >>>> >> Repository that is available from Apache Chemistry ;) >> >>>> >> >> >>>> >> I have some problems because now I'm finishing my test >> implementation >> >>>> but >> >>>> >> it >> >>>> >> seems that I can't execute queries on the InMemory Repository, it >> >>>> returns >> >>>> > a >> >>>> >> null string in the convertStatusCode method. >> >>>> >> >> >>>> >> The CMIS Repository Connector that I implemented for ManifoldCF has >> a >> >>>> job >> >>>> >> parameter that is the CMIS Query, this parameter is used by agents >> to >> >>>> >> select >> >>>> >> all the contents that needs to be indexed on the Output Connector >> (for >> >>>> >> example Apache Solr). >> >>>> >> Without a query feature exposed by the InMemory Repository I can't >> test >> >>>> > the >> >>>> >> connector in the right way. >> >>>> >> >> >>>> >> I tried to use the latest version of the InMemory Repository >> >>>> >> (0.5.0-SNAPSHOT) but with the same result. >> >>>> >> >> >>>> >> Have you got any ideas to solve this problem? >> >>>> >> Thank you for your support. >> >>>> >> >> >>>> >> Regards, >> >>>> >> Piergiorgio >> >>>> >> >> >>>> >> >> >>>> >> 2011/8/3 Jens Hübel <jhue...@opentext.com> >> >>>> >> >> >>>> >> > Hi Chemistries, >> >>>> >> > >> >>>> >> > >> >>>> >> > >> >>>> >> > is anyone of us already involved in the Lucene project? >> >>>> >> > >> >>>> >> > >> >>>> >> > >> >>>> >> > Reading this here >> >>>> >> > >> http://search-lucene.com/m/wI38e1K3BWJ&subj=Re+CMIS+Connector+Tests >> >>>> >> > >> >>>> >> > >> >>>> >> > >> >>>> >> > I think it would make sense to give them an introduction to what >> we >> >>>> > have. >> >>>> >> > >> >>>> >> > >> >>>> >> > >> >>>> >> > if I understand this correctly one of the options they discuss is >> to >> >>>> >> create >> >>>> >> > an InMemory mock server. It does not make much sense to duplicate >> >>>> what >> >>>> > we >> >>>> >> > already have (and if we need getContentChanges() for that I am >> happy >> >>>> to >> >>>> >> > implement this). >> >>>> >> > >> >>>> >> > >> >>>> >> > >> >>>> >> > Jens >> >>>> >> > >> >>>> >> > >> >>>> >> > >> >>>> >> > >> >>>> >> >> >>>> >> >> >>>> >> -- >> >>>> >> Piergiorgio Lucidi >> >>>> >> Web: http://about.me/piergiorgiolucidi >> >>>> >> >> >>>> > >> >>>> > >> >>>> > >> >>>> > -- >> >>>> > Piergiorgio Lucidi >> >>>> > Web: http://about.me/piergiorgiolucidi >> >>>> > >> >>>> > >> >>>> > >> >>>> > -- >> >>>> > Piergiorgio Lucidi >> >>>> > Web: http://about.me/piergiorgiolucidi >> >>>> > >> >>>> > 2011/8/3 Piergiorgio Lucidi <piergiorgioluc...@gmail.com> >> >>>> > >> >>>> >> Yes, this is a very quick way to test my configuration code for the >> >>>> >> integration test ;) >> >>>> >> I'm going to fix this part, I saw what I need in the JSON retrieved >> by >> >>>> a >> >>>> >> GET call against the Manifold API service. >> >>>> >> >> >>>> >> I'll let you know tomorrow an update about this. >> >>>> >> >> >>>> >> Anyway we have a problem with the OpenCMIS InMemory server. It >> seems >> >>>> that >> >>>> >> there is a problem during the execution of CMIS queries, I notified >> the >> >>>> >> problem to the Chemistry guys (Jens Hubel and Florian Muller) and >> they >> >>>> are >> >>>> >> trying to reproduce the issue to solve our problem. >> >>>> >> >> >>>> >> I'm going on developing the code using the public Alfresco CMIS >> server >> >>>> >> exposed at the following address: >> >>>> >> http://cmis.alfresco.com >> >>>> >> >> >>>> >> Piergiorgio >> >>>> >> >> >>>> >> >> >>>> >> 2011/8/3 Karl Wright <daddy...@gmail.com> >> >>>> >> >> >>>> >>> Another good way to see exactly what you need to do is to call the >> API >> >>>> >>> to get configuration information for an existing connection. >> Then, >> >>>> >>> use the toXML() method to convert to XML, or the toJSON() to get >> it as >> >>>> >>> JSON. Either way you will see the structure. BTW, ManifoldCF in >> >>>> >>> Action Chapter 3 covers this in great detail as well. >> >>>> >>> >> >>>> >>> Karl >> >>>> >>> >> >>>> >>> On Wed, Aug 3, 2011 at 12:50 PM, Karl Wright <daddy...@gmail.com> >> >>>> wrote: >> >>>> >>> > The ConfigParams class is, I believe, derived from the >> Configuration >> >>>> >>> > class. So, you can create a ConfigParams object instead of a >> >>>> >>> > Configuration object if you want to use the API in the manner >> you >> >>>> >>> > describe. >> >>>> >>> > >> >>>> >>> > The reason your commented-out code doesn't work is because the >> >>>> >>> > setParameter() method isn't doing quite what you are expecting. >> >>>> It's >> >>>> >>> > creating a node named "_PARAMETER_" with a "name" attribute and >> a >> >>>> >>> > value area, and you are creating nodes named by the parameter >> name. >> >>>> >>> > >> >>>> >>> > Karl >> >>>> >>> > >> >>>> >>> > On Wed, Aug 3, 2011 at 12:41 PM, Piergiorgio Lucidi >> >>>> >>> > <piergiorgioluc...@gmail.com> wrote: >> >>>> >>> >> I'm trying to implement tests but I found a problem to set all >> the >> >>>> >>> needed >> >>>> >>> >> parameters to the CMIS Repository Connector that needs: an >> >>>> username, a >> >>>> >>> >> password and the endpoint (url). >> >>>> >>> >> >> >>>> >>> >> I need to know how to create the configuration nodes for the >> >>>> connector, >> >>>> >>> in >> >>>> >>> >> the connector code I managed the configuration parameters in >> this >> >>>> way >> >>>> >>> in the >> >>>> >>> >> processConfigurationPost method: >> >>>> >>> >> >> >>>> >>> >> public String processConfigurationPost(IThreadContext >> >>>> threadContext, >> >>>> >>> >>> IPostParameters variableContext, ConfigParams >> parameters) >> >>>> >>> >>> throws ManifoldCFException { >> >>>> >>> >>> String username = >> >>>> >>> variableContext.getParameter(CONFIG_PARAM_USERNAME); >> >>>> >>> >>> if (StringUtils.isNotEmpty(username)) >> >>>> >>> >>> parameters.setParameter(CONFIG_PARAM_USERNAME, >> username); >> >>>> >>> >>> String password = >> >>>> >>> variableContext.getParameter(CONFIG_PARAM_PASSWORD); >> >>>> >>> >>> if (StringUtils.isNotEmpty(password)) >> >>>> >>> >>> parameters.setParameter(CONFIG_PARAM_PASSWORD, >> password); >> >>>> >>> >>> String endpoint = >> >>>> >>> variableContext.getParameter(CONFIG_PARAM_ENDPOINT); >> >>>> >>> >>> if (StringUtils.isNotEmpty(endpoint) && endpoint.length() >> > 0) >> >>>> >>> >>> parameters.setParameter(CONFIG_PARAM_ENDPOINT, >> endpoint); >> >>>> >>> >>> String repositoryId = variableContext >> >>>> >>> >>> .getParameter(CONFIG_PARAM_REPOSITORY_ID); >> >>>> >>> >>> if (StringUtils.isNotEmpty(repositoryId)) >> >>>> >>> >>> parameters.setParameter(CONFIG_PARAM_REPOSITORY_ID, >> >>>> >>> repositoryId); >> >>>> >>> >>> return null; >> >>>> >>> >>> } >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> Now I have to setup the same parameters inside my test class >> >>>> >>> APISanityTest >> >>>> >>> >> that doesn't like the following snippet, it works only if CMIS >> >>>> >>> parameters >> >>>> >>> >> are commented as the following: >> >>>> >>> >> >> >>>> >>> >> @Test >> >>>> >>> >>> public void sanityCheck() >> >>>> >>> >>> throws Exception >> >>>> >>> >>> { >> >>>> >>> >>> try >> >>>> >>> >>> { >> >>>> >>> >>> // Hey, we were able to install the file system >> connector >> >>>> etc. >> >>>> >>> >>> // Now, create a local test job and run it. >> >>>> >>> >>> IThreadContext tc = ThreadContextFactory.make(); >> >>>> >>> >>> int i; >> >>>> >>> >>> IJobManager jobManager = JobManagerFactory.make(tc); >> >>>> >>> >>> // Create a basic file system connection, and save it. >> >>>> >>> >>> ConfigurationNode connectionObject; >> >>>> >>> >>> ConfigurationNode child; >> >>>> >>> >>> Configuration requestObject; >> >>>> >>> >>> Configuration result; >> >>>> >>> >>> >> >>>> >>> >>> connectionObject = new >> >>>> >>> ConfigurationNode("repositoryconnection"); >> >>>> >>> >>> >> >>>> >>> >>> child = new ConfigurationNode("name"); >> >>>> >>> >>> child.setValue("CMIS Connection"); >> >>>> >>> >>> >> >>>> >>> connectionObject.addChild(connectionObject.getChildCount(),child); >> >>>> >>> >>> >> >>>> >>> >>> child = new ConfigurationNode("class_name"); >> >>>> >>> >>> child.setValue( >> >>>> >>> >>> >> >>>> >>> >> >>>> >> "org.apache.manifoldcf.crawler.connectors.cmis.CmisRepositoryConnector"); >> >>>> >>> >>> >> >>>> >>> connectionObject.addChild(connectionObject.getChildCount(),child); >> >>>> >>> >>> >> >>>> >>> >>> child = new ConfigurationNode("description"); >> >>>> >>> >>> child.setValue("CMIS Connection"); >> >>>> >>> >>> >> >>>> >>> connectionObject.addChild(connectionObject.getChildCount(),child); >> >>>> >>> >>> child = new ConfigurationNode("max_connections"); >> >>>> >>> >>> child.setValue("10"); >> >>>> >>> >>> >> >>>> >>> connectionObject.addChild(connectionObject.getChildCount(),child); >> >>>> >>> >>> >> >>>> >>> >>> //setting the CMIS specific parameters >> >>>> >>> >>> // child = new ConfigurationNode("username"); >> >>>> >>> >>> // child.setValue(CMIS_USERNAME); >> >>>> >>> >>> // >> >>>> >>> >> connectionObject.addChild(connectionObject.getChildCount(),child); >> >>>> >>> >>> // >> >>>> >>> >>> // child = new ConfigurationNode("password"); >> >>>> >>> >>> // child.setValue(CMIS_PASSWORD); >> >>>> >>> >>> // >> >>>> >>> >> connectionObject.addChild(connectionObject.getChildCount(),child); >> >>>> >>> >>> // >> >>>> >>> >>> // child = new ConfigurationNode("endpoint"); >> >>>> >>> >>> // child.setValue(CMIS_ENDPOINT_TEST_SERVER); >> >>>> >>> >>> // >> >>>> >>> >> connectionObject.addChild(connectionObject.getChildCount(),child); >> >>>> >>> >>> requestObject = new Configuration(); >> >>>> >>> >>> requestObject.addChild(0,connectionObject); >> >>>> >>> >>> >> >>>> >>> >>> result = performAPIPutOperationViaNodes( >> >>>> >>> >>> "repositoryconnections/CMIS%20Connection",201,requestObject); >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> How can I set the username, password and endpoint for the CMIS >> >>>> >>> Repository >> >>>> >>> >> Connector parameters in this test class? >> >>>> >>> >> >> >>>> >>> >> Thank you. >> >>>> >>> >> >> >>>> >>> >> Piergiorgio >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> 2011/8/2 Karl Wright <daddy...@gmail.com> >> >>>> >>> >> >> >>>> >>> >>> Thanks for the status report. I hope to see your patch soon! >> >>>> >>> >>> >> >>>> >>> >>> Also, FWIW, once the documentation is also done I'd like to >> >>>> consider >> >>>> >>> >>> solidifying the 0.3 release. It's got a lot of good stuff in >> it >> >>>> and I >> >>>> >>> >>> think as soon as we've finished off the new CMIS connector in >> all >> >>>> >>> >>> dimensions we should go ahead. Thoughts, anyone? >> >>>> >>> >>> >> >>>> >>> >>> Karl >> >>>> >>> >>> >> >>>> >>> >>> >> >>>> >>> >>> On Tue, Aug 2, 2011 at 5:00 AM, Piergiorgio Lucidi >> >>>> >>> >>> <piergiorgioluc...@gmail.com> wrote: >> >>>> >>> >>> > Yesterday I started to work on end-to-end integration test >> for >> >>>> the >> >>>> >>> CMIS >> >>>> >>> >>> > Connector and now I have a full running OpenCMIS test server >> >>>> >>> integrated >> >>>> >>> >>> with >> >>>> >>> >>> > the ManifoldCF Maven build process. >> >>>> >>> >>> > >> >>>> >>> >>> > Now I have to implement: >> >>>> >>> >>> > - a setup method to create the test documents in the CMIS >> server >> >>>> >>> >>> > - a null output connector using the ManifoldCF api >> >>>> >>> >>> > - tests using the ManifoldCF api to create a mock >> configuration >> >>>> >>> against >> >>>> >>> >>> the >> >>>> >>> >>> > test CMIS server >> >>>> >>> >>> > >> >>>> >>> >>> > I'll let you know when it works. >> >>>> >>> >>> > >> >>>> >>> >>> > Regards, >> >>>> >>> >>> > Piergiorgio >> >>>> >>> >>> > >> >>>> >>> >>> > 2011/7/29 Piergiorgio Lucidi <piergiorgioluc...@gmail.com> >> >>>> >>> >>> > >> >>>> >>> >>> >> Hi Karl, >> >>>> >>> >>> >> >> >>>> >>> >>> >> thank you for the details and as soon as I finish a first >> >>>> version >> >>>> >>> of >> >>>> >>> >>> >> integration and/or unit test I will create a new ticket in >> the >> >>>> CMIS >> >>>> >>> >>> >> Component to release the patch. >> >>>> >>> >>> >> >> >>>> >>> >>> >> I hope to release this new patch soon. >> >>>> >>> >>> >> I'll let you know during the next week. >> >>>> >>> >>> >> >> >>>> >>> >>> >> Piergiorgio >> >>>> >>> >>> >> >> >>>> >>> >>> >> >> >>>> >>> >>> >> 2011/7/28 Karl Wright <daddy...@gmail.com> >> >>>> >>> >>> >> >> >>>> >>> >>> >>> The tests/filesystem/src/test/java area are end-to-end >> tests >> >>>> >>> >>> >>> principally designed to test the filesystem connector. >> (They >> >>>> also >> >>>> >>> >>> >>> involve other connectors because, obviously, an end-to-end >> >>>> test is >> >>>> >>> not >> >>>> >>> >>> >>> going going to work without them. This is why they are at >> the >> >>>> >>> root >> >>>> >>> >>> >>> level.) >> >>>> >>> >>> >>> >> >>>> >>> >>> >>> There are also unit tests you can use as models under >> >>>> >>> >>> >>> connectors/filesystem/connector/src/test/.... These tests >> use >> >>>> >>> only >> >>>> >>> >>> >>> the filesystem connector, no others. >> >>>> >>> >>> >>> >> >>>> >>> >>> >>> If you would be so kind as to create a ticket to cover >> your >> >>>> test >> >>>> >>> work, >> >>>> >>> >>> >>> that would be great. >> >>>> >>> >>> >>> >> >>>> >>> >>> >>> Also, another workitem I've been meaning to get to but >> haven't >> >>>> >>> >>> >>> involves the conversion of a python-based HTML browser and >> >>>> >>> Javascript >> >>>> >>> >>> >>> engine I wrote for MetaCarta into a Java equivalent. This >> >>>> would >> >>>> >>> allow >> >>>> >>> >>> >>> direct testing of the UI components of the framework and >> >>>> >>> connectors. >> >>>> >>> >>> >>> The python sources are in: >> >>>> >>> >>> >>> >> >>>> >>> >>> >>> legacy-tests/VirtualBrowser.py >> >>>> >>> >>> >>> and >> >>>> >>> >>> >>> legacy-tests/Javascript.py >> >>>> >>> >>> >>> >> >>>> >>> >>> >>> You may not have time to get that far for a while, but I >> >>>> thought >> >>>> >>> you'd >> >>>> >>> >>> >>> want to know where my thoughts were headed. ;-) >> >>>> >>> >>> >>> >> >>>> >>> >>> >>> Karl >> >>>> >>> >>> >>> >> >>>> >>> >>> >>> On Thu, Jul 28, 2011 at 2:03 PM, Piergiorgio Lucidi >> >>>> >>> >>> >>> <piergiorgioluc...@gmail.com> wrote: >> >>>> >>> >>> >>> > I'm starting to think a way to implement tests for the >> CMIS >> >>>> >>> >>> Connector, >> >>>> >>> >>> >>> > probably I can use the Apache Chemistry (OpenCMIS) local >> >>>> binding >> >>>> >>> to >> >>>> >>> >>> >>> create a >> >>>> >>> >>> >>> > mock of a CMIS Server (an InMemory repository), but I >> have >> >>>> to >> >>>> >>> check >> >>>> >>> >>> this >> >>>> >>> >>> >>> > possibility because I'm not sure that all the features >> are >> >>>> now >> >>>> >>> >>> >>> implemented. >> >>>> >>> >>> >>> > >> >>>> >>> >>> >>> > Anyway I saw some test classes for the filesystem >> connector >> >>>> at >> >>>> >>> the >> >>>> >>> >>> >>> following >> >>>> >>> >>> >>> > package: >> >>>> >>> >>> >>> > >> >>>> >>> >>> >>> > tests/filesystem/src/test/java >> >>>> >>> >>> >>> > >> >>>> >>> >>> >>> > Could you please confirm that these classes could be >> taken >> >>>> as an >> >>>> >>> >>> example >> >>>> >>> >>> >>> for >> >>>> >>> >>> >>> > tests? >> >>>> >>> >>> >>> > Or do I need to take a look at other classes? >> >>>> >>> >>> >>> > >> >>>> >>> >>> >>> > Thank you. >> >>>> >>> >>> >>> > Piergiorgio >> >>>> >>> >>> >>> > >> >>>> >>> >>> >>> > -- >> >>>> >>> >>> >>> > Piergiorgio Lucidi >> >>>> >>> >>> >>> > Web: http://about.me/piergiorgiolucidi >> >>>> >>> >>> >>> > >> >>>> >>> >>> >>> >> >>>> >>> >>> >> >> >>>> >>> >>> >> >> >>>> >>> >>> >> >> >>>> >>> >>> >> -- >> >>>> >>> >>> >> Piergiorgio Lucidi >> >>>> >>> >>> >> Web: http://about.me/piergiorgiolucidi >> >>>> >>> >>> >> >> >>>> >>> >>> >> >> >>>> >>> >>> > >> >>>> >>> >>> > >> >>>> >>> >>> > -- >> >>>> >>> >>> > Piergiorgio Lucidi >> >>>> >>> >>> > Web: http://about.me/piergiorgiolucidi >> >>>> >>> >>> > >> >>>> >>> >>> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> >> >>>> >>> >> -- >> >>>> >>> >> Piergiorgio Lucidi >> >>>> >>> >> Web: http://about.me/piergiorgiolucidi >> >>>> >>> >> >> >>>> >>> > >> >>>> >>> >> >>>> >> >> >>>> >> >> >>>> >> >> >>>> >> -- >> >>>> >> Piergiorgio Lucidi >> >>>> >> Web: http://about.me/piergiorgiolucidi >> >>>> >> >> >>>> >> >> >>>> > >> >>>> > >> >>>> > -- >> >>>> > Piergiorgio Lucidi >> >>>> > Web: http://about.me/piergiorgiolucidi >> >>>> > >> >>>> >> >>> >> >>> >> >>> >> >>> -- >> >>> Piergiorgio Lucidi >> >>> Web: http://about.me/piergiorgiolucidi >> >>> >> >>> >> >> >> >> >> >> -- >> >> Piergiorgio Lucidi >> >> Web: http://about.me/piergiorgiolucidi >> >> >> > >> > > > > -- > Piergiorgio Lucidi > Web: http://about.me/piergiorgiolucidi >