manifoldcf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Karl Wright <daddy...@gmail.com>
Subject Re: CMIS Connector - Tests
Date Thu, 04 Aug 2011 14:14:45 GMT
Sorry, I meant, "do the API sanity tests work properly for you when
you run them on a clean trunk checkout"?

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
>>
>

Mime
View raw message