2011/8/4 Karl Wright <[email protected]> > 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 <[email protected]> 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 > > <[email protected]> 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 <[email protected]> > >> > >>> 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 [email protected]: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 <[email protected]> > >>> > >>>> 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 > >>>> <[email protected]> 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 <[email protected]> > >>>> > Date: 2011/8/4 > >>>> > Subject: RE: CMIS and Lucene > >>>> > To: [email protected] > >>>> > > >>>> > > >>>> > 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:[email protected]] > >>>> > Sent: Mittwoch, 3. August 2011 14:48 > >>>> > To: [email protected] > >>>> > 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 <[email protected]> > >>>> > > >>>> >> 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:[email protected]] > >>>> >> Sent: Mittwoch, 3. August 2011 13:22 > >>>> >> To: [email protected] > >>>> >> 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 <[email protected]> > >>>> >> > >>>> >> > 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 <[email protected]> > >>>> > > >>>> >> 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 <[email protected]> > >>>> >> > >>>> >>> 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 <[email protected]> > >>>> 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 > >>>> >>> > <[email protected]> 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 <[email protected]> > >>>> >>> >> > >>>> >>> >>> 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 > >>>> >>> >>> <[email protected]> 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 <[email protected]> > >>>> >>> >>> > > >>>> >>> >>> >> 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 <[email protected]> > >>>> >>> >>> >> > >>>> >>> >>> >>> 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 > >>>> >>> >>> >>> <[email protected]> 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
