manifoldcf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Piergiorgio Lucidi <piergiorgioluc...@gmail.com>
Subject Re: CMIS Connector - Tests
Date Thu, 04 Aug 2011 14:23:08 GMT
2011/8/4 Karl Wright <daddywri@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 <daddywri@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
> > <piergiorgiolucidi@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 <piergiorgiolucidi@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 <daddywri@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
> >>>> <piergiorgiolucidi@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 <jhuebel@opentext.com>
> >>>> > Date: 2011/8/4
> >>>> > Subject: RE: CMIS and Lucene
> >>>> > To: dev@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:piergiorgiolucidi@gmail.com]
> >>>> > Sent: Mittwoch, 3. August 2011 14:48
> >>>> > To: dev@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 <jhuebel@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:piergiorgiolucidi@gmail.com]
> >>>> >> Sent: Mittwoch, 3. August 2011 13:22
> >>>> >> To: dev@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 <jhuebel@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 <piergiorgiolucidi@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 <daddywri@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 <daddywri@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
> >>>> >>> > <piergiorgiolucidi@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 <daddywri@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
> >>>> >>> >>> <piergiorgiolucidi@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 <piergiorgiolucidi@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 <daddywri@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
> >>>> >>> >>> >>> <piergiorgiolucidi@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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message