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:12:42 GMT
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