Hi!
Pls. How can i use couchdb with objective-c ?
Have a nice day.

Skickat från min iPhone

8 apr 2013 kl. 22:01 skrev Wendall Cada <wenda...@apache.org>:

> Once again, great work here Jason. Additionally, this would solve the 
> _restart issue, as we can spawn an external process to manage the running 
> CouchDB instance used for the tests. I'll follow up in another thread on 
> moving some of this forward.
> 
> Wendall
> 
> On 04/08/2013 10:10 AM, Jason Smith wrote:
>> The couchjs npm package (a drop-in Node.js replacement for
>> SpiderMonkey) uses synchronous i/o. I had great success using Fibers
>> for this.
>> 
>> https://github.com/iriscouch/couchjs/blob/master/couchjs.js#L50-L68
>> 
>> readline() is synchronous. If there is no input in the queue, it
>> yields to Fibers (blocking the function). Once input arrives, the
>> yield() call finally returns with the data, which readline() returns
>> to the caller.
>> 
>> An encouraging fact from this project is that the server-side
>> JavaScript (share/server/*.js) worked completely unmodified. It would
>> be no problem to use this technique to make a synchronous XHR and run
>> the official/historical unit tests in Node.js.
>> 
>> On Mon, Apr 8, 2013 at 2:41 PM, Dale Harvey <d...@arandomurl.com> wrote:
>>> We have been looking to reuse the CouchDB javascript tests for PouchDB and
>>> extracted them into a seperate npm package
>>> 
>>> https://npmjs.org/package/couchdb-harness
>>> 
>>> The idea was that we could reused the same test suite and throw ours away
>>> however it hit a few problems, mostly that the test suite requires a sync
>>> api (which caused most of the problems with xhr in the browser couch
>>> tests),  I spent a bunch of time converting the test suites to async, they
>>> dont map 1-1 because the couch suite is quite imperative and not really
>>> split into self contained unit tests.
>>> 
>>> But already have 1000+ tests that test CouchDB, work on the command line
>>> and reliably in the browser, I dont think they are suitable for couch right
>>> now, but would be happy to do the work so we could share a test suite
>>> 
>>> https://github.com/daleharvey/pouchdb/tree/master/tests
>>> 
>>> 
>>> On 8 April 2013 15:26, Paul Davis <paul.joseph.da...@gmail.com> wrote:
>>> 
>>>> The first bit I'd like to say is that the use of couchjs was just a
>>>> stop gap measure to get the test suite out of the browser. We used to
>>>> have to deal with so many browser issues it was just a terrible mess.
>>>> The issue with couchjs is much as you've seen that its not a very full
>>>> environment for writing tests. So just to be clear that the only real
>>>> thing tying us to that as a test platform is that we have a large
>>>> amount of JS written already so either we need to make the couchjs
>>>> better, use node, or translate tests to something that has a more
>>>> useful environment.
>>>> 
>>>> I've been noodling over whether we might be better off to just start
>>>> translating everything to Python or something. I've seen suggestions
>>>> for Erlang but I personally think Erlang is a terrible language for
>>>> writing tests like this (specifically, the code to test ratio is
>>>> ungood). If we had something like Python to hack on then I was also
>>>> thinking of writing a library function that would start CouchDB as a
>>>> slave process which then would remove the need to have the _restart
>>>> handler because you could just kill -9 the subprocess and restart it
>>>> with maybe a wait for when things boot again.
>>>> 
>>>> I reviewed your feature branch the other day and I'm +1 for pushing
>>>> that to master.
>>>> 
>>>> Awesome work, Wendall.
>>>> 
>>>> On Fri, Apr 5, 2013 at 6:57 PM, Wendall Cada <wenda...@apache.org> wrote:
>>>>> I wanted to follow up on this.
>>>>> 
>>>>> I've created a feature branch for this and a JIRA issue
>>>>> https://issues.apache.org/jira/browse/COUCHDB-1762
>>>>> 
>>>>> Overall, I think the worst problem is that the tests really aren't
>>>>> debuggable in any sane way, and logging is essentially useless for most
>>>>> things. The only sure way to spot an error most of the time is if it's an
>>>>> actual CouchDB bug and shows up in the log. I'm not sure how this can
>>>> ever
>>>>> be fixed with the current test suite. I'd opt for testing with jasmine,
>>>> but
>>>>> that would require not using couchjs for the test runner, so for now, I
>>>> just
>>>>> focused on getting random failures under control.
>>>>> 
>>>>> Paul was kind enough to share some code that he wrote recently to deal
>>>> with
>>>>> the rampant _restart issues.
>>>> https://github.com/davisp/couchdb/commit/0cbf6a9cea01eea599524bcdb77dedb322c7ade4
>>>>> This is a very sound approach in using a token so you can see if it
>>>> actually
>>>>> restarts. The current test suite can result in false positives very
>>>> easily,
>>>>> which leads to test failures. I think this is probably the biggest reason
>>>>> for the random failures. In a previous IRC conversation with Bob
>>>> (rnewson),
>>>>> Jan and I think Benoit (sorry if not the case) _restart was deemed
>>>> something
>>>>> that should go away. I filed a ticket for it's removal
>>>>> https://issues.apache.org/jira/browse/COUCHDB-1714, and as Bob points
>>>> out in
>>>>> the comments, this is useful for the test suite. I'd argue it's only
>>>> useful
>>>>> with Paul's patch adding a token. Otherwise, it's just not reliable at
>>>> all.
>>>>> For the branch I created, instead of using _restart, I did some bash
>>>> magic
>>>>> with a pipe and stop/start the process through the local run script. This
>>>>> has the same drawback of not knowing if CouchDB restarted, or we just
>>>> got a
>>>>> false positive. To account for this, I put a small delay in the
>>>> execution of
>>>>> the lookup, using a new method isRunning to give a little time to stop.
>>>>> 
>>>>> I also changed the suite to run a new couchjs for each test file. I'm not
>>>>> certain at this point that this is even necessary at all, but I still
>>>> think
>>>>> it's safer in case of a crash, since the rest of the suite can continue.
>>>>> 
>>>>> Other changes I made were just timing related in running the test suite
>>>> for
>>>>> spinning disks, and a couple bug fixes in individual tests.
>>>>> 
>>>>> The lack of timers makes writing these tests very ugly. I really dislike
>>>>> this, but so long as the test suite needs couchjs, I don't see a way to
>>>>> avoid this without implementing our own setInterval method in C.
>>>>> 
>>>>> One last item. I was getting a consistent failure in Centos 6. I tracked
>>>>> this down to a bug in libcurl. For some reason, after any xhr request
>>>> that
>>>>> returns a 416, the very next send() will hang for a long time, then
>>>>> eventually crash couchjs. The specific version causing the issue is
>>>>> curl-7.19.7-35.el6 and libcurl-7.19.7-35.el6. I'm not certain if this is
>>>>> worth reporting in JIRA, but it will certainly cause a test suite failure
>>>>> consistently in attachment_ranges, but otherwise appears to be fairly
>>>>> harmless. Maybe this should be documented somewhere?
>>>>> 
>>>>> Wendall
>>>>> 
>>>>> 
>>>>> On 03/27/2013 02:05 PM, Wendall Cada wrote:
>>>>>> In 1.3.0, there is a new part of the test suite to run the javascript
>>>>>> tests from the command line. I'm running into various issues on
>>>> different
>>>>>> hardware/OS configurations. Mostly, tests hanging or timing out and
>>>> failing.
>>>>>> These are really hard to troubleshoot, as they all pass just fine if run
>>>>>> individually.
>>>>>> 
>>>>>> What I'm experimenting with today is rewriting how the tests are
>>>>>> implemented to be run one at a time from a loop in bash, versus a loop
>>>> in
>>>>>> javascript. I think the failures I'm running into are improper
>>>>>> setup/teardown. There may be an issue with rapid delete and adding a
>>>> db, or
>>>>>> rapidly starting and stopping couchdb, but I think this is not what's
>>>>>> happening in my failures.
>>>>>> 
>>>>>> The nature of spidermonkey doesn't allow for spawning threads, or
>>>>>> sandboxing, etc, so it's hard looking at the test suite to see how I can
>>>>>> improve running all tests. I think it's far better to have the setup
>>>> spawn a
>>>>>> new interpreter for each test. Tear down will kill the interpreter.
>>>>>> 
>>>>>> Wendall
>> 
>> 
>> --
>> Iris Couch
> 

Reply via email to