You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@couchdb.apache.org by Jan Lehnardt <ja...@apache.org> on 2012/04/24 17:05:16 UTC

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

On Jan 27, 2012, at 02:37 , randall@apache.org wrote:

> COUCHDB-1338 - run js tests with port=0
> 
> When the JS tests POST to /_restart, the server comes back up on a
> different port. To work around this, add a getter property for the
> CouchHTTP.prototype.base_url property, using a reserved slot on the
> object to store the value.
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
> 
> Branch: refs/heads/master
> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
> Parents: 257eb52
> Author: Randall Leeds <ra...@apache.org>
> Authored: Sat Jan 7 14:21:29 2012 -0800
> Committer: Randall Leeds <ra...@apache.org>
> Committed: Thu Jan 26 17:03:10 2012 -0800
> 
> ----------------------------------------------------------------------
> src/couchdb/priv/couch_js/help.h  |    2 +
> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
> src/couchdb/priv/couch_js/http.h  |    3 ++
> src/couchdb/priv/couch_js/sm170.c |    8 ++++
> src/couchdb/priv/couch_js/sm180.c |    8 ++++
> src/couchdb/priv/couch_js/sm185.c |    8 ++++
> src/couchdb/priv/couch_js/util.c  |    3 +-
> src/couchdb/priv/couch_js/util.h  |    2 +
> test/Makefile.am                  |    1 +
> test/etap/Makefile.am             |    1 -
> test/etap/random_port.ini         |   19 ----------
> test/etap/test_util.erl.in        |    2 +-
> test/javascript/Makefile.am       |    1 +
> test/javascript/couch_http.js     |    9 ++---
> test/javascript/run.tpl           |    9 ++++-
> test/random_port.ini              |   19 ++++++++++
> 16 files changed, 125 insertions(+), 30 deletions(-)
> ----------------------------------------------------------------------
> 
> 
> [...]
> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
> ----------------------------------------------------------------------
> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
> index 47d2f6e..ac78b50 100644
> --- a/test/javascript/run.tpl
> +++ b/test/javascript/run.tpl
> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
> JS_TEST_DIR=$SRC_DIR/test/javascript
> 
> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
> +COUCH_URI_FILE=%localstaterundir%/couch.uri
> 
> if [ "$#" -eq 0 ];
> then
> @@ -48,11 +49,15 @@ abort() {
> if [ -z $COUCHDB_NO_START ]; then
>         make dev
> 	trap 'abort' 0 1 2 3 4 6 8 15
> -	./utils/run -b -r 1
> +	./utils/run -b -r 1 -n \
> +		-a $SRC_DIR/etc/couchdb/default_dev.ini \
> +		-a $SRC_DIR/test/random_port.ini \
> +		-a $SRC_DIR/etc/couchdb/local_dev.ini


Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.

To reproduce, just run make distcheck on master. Inside of make distcheck, we'll run make check on a vpath which in turn calls make dev and utils/run in ./test/javascript/run. $SRC_DIR now points to _build/../ instead of of just ./ and thus makes things fail (I think). Either way, removing these lines makes make distcheck work for me. What were the reasons for adding these in the first place?

Maybe I've gotten in all wrong, but this holds us from getting make distcheck run on the various CI systems :)

Cheers
Jan
-- 





> 	sleep 1 # give it a sec
> fi
> 
> -$COUCHJS -H \
> +# start the tests
> +$COUCHJS -H -u $COUCH_URI_FILE \
> 	$SCRIPT_DIR/json2.js \
> 	$SCRIPT_DIR/sha1.js \
> 	$SCRIPT_DIR/oauth.js \
> 


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Paul Davis <pa...@gmail.com>.
I assumed it was the cookie auth thing detecting that a secret hasn't
been set so it generates its own. I gave it about 30s of thought and
couldn't think of something that was better than making sure the
local_dev.ini was writable (which it should be).

On Fri, Apr 27, 2012 at 5:42 AM, Jan Lehnardt <ja...@apache.org> wrote:
>
> On Apr 27, 2012, at 02:30 , Paul Davis wrote:
>
>> Found it:
>>
>> {set,"couch_httpd_auth","secret","81732db8242bbeacb35ce76fe44b554d",true}
>>
>> I'm just gonna make local_dev.ini writable and forget about it. This
>> is just a VPATH build artifact because it forces the local.ini to be
>> read-only.
>
> I'd prefer making that set not persistent. In addition, this call doesn't
> occur in cookie_auth.js.
>
> Cheers
> Jan
> --
>
>
>>
>> On Thu, Apr 26, 2012 at 7:20 PM, Randall Leeds <ra...@gmail.com> wrote:
>>> On Thu, Apr 26, 2012 at 17:03, Paul Davis <pa...@gmail.com> wrote:
>>>> Now we figure out what its trying to write to.
>>>
>>> Blind guess: not using X-Couch-Persist: false for something?
>>>
>>>>
>>>> On Thu, Apr 26, 2012 at 4:30 PM, Jan Lehnardt <ja...@apache.org> wrote:
>>>>> The problem is that the vpath directory has -w perms. Running
>>>>> chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then
>>>>> ./test/javascript/run again, it all works.
>>>>>
>>>>> What now? :)
>>>>>
>>>>> Cheers
>>>>> Jan
>>>>> --
>>>>>
>>>>>
>>>>> On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote:
>>>>>
>>>>>>
>>>>>> On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:
>>>>>>
>>>>>>>
>>>>>>> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
>>>>>>>
>>>>>>>> Reproduces for me. Also looks related to the vpath build because it
>>>>>>>> only reproduces in distcheck and runs fine otherwise. Looking into it.
>>>>>>>
>>>>>>> one more interesting point, if you cd into the distcheck build dir,
>>>>>>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
>>>>>>> and then run ./test/javascript/run it all succeeds as well.
>>>>>>>
>>>>>>> Maybe we are digging in the wrong place?
>>>>>>
>>>>>> This however reproduces the failure:
>>>>>>
>>>>>>> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth
>>>>>>
>>>>>> *keeps digging*
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>>> Actually, no.
>>>>>>>>>
>>>>>>>>> I can now repeatedly get make distcheck to fail at
>>>>>>>>>
>>>>>>>>> not ok 18 cookie_auth
>>>>>>>>>
>>>>>>>>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>>>>>>>>>
>>>>>>>>> Full log:
>>>>>>>>>
>>>>>>>>> not ok 18 cookie_auth
>>>>>>>>> Reason: false
>>>>>>>>> Trace back (most recent call first):
>>>>>>>>>
>>>>>>>>> 46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>>>    T(false)
>>>>>>>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>>>    ()
>>>>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>>>    run_on_modified_server([object Array],(function () {try {var ddoc = op
>>>>>>>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>>>    ()
>>>>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>>>    var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>>>>>>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>>>    runAllTestsConsole()
>>>>>>>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>>>>>>>>
>>>>>>>>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>>>>>>>>
>>>>>>>>>> Cheers!
>>>>>>>>>>
>>>>>>>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>>>>>>>>
>>>>>>>>>>> Thanks for the replies!
>>>>>>>>>>>
>>>>>>>>>>> ./test/javascript/run.tpl, line 15:
>>>>>>>>>>>
>>>>>>>>>>> SRC_DIR=%abs_top_srcdir%
>>>>>>>>>>>
>>>>>>>>>>> What now? :)
>>>>>>>>>>>
>>>>>>>>>>> Jan
>>>>>>>>>>> --
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>>>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>>>>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>>>>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>>>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>>>>>>>> or so.
>>>>>>>>>>>>
>>>>>>>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>>>>>>>>> object to store the value.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>>>>>>>> Parents: 257eb52
>>>>>>>>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> [...]
>>>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>>>>>>>> then
>>>>>>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>>>>>>>    make dev
>>>>>>>>>>>>>>>>  trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> … and the -a lines …
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>>>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>>>>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>>>>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>>>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>>>>>>>> preference over default_dev.ini or something).
>>>>>>>>>>>>>
>>>>>>>>>>>>> -R
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
On Apr 27, 2012, at 02:30 , Paul Davis wrote:

> Found it:
> 
> {set,"couch_httpd_auth","secret","81732db8242bbeacb35ce76fe44b554d",true}
> 
> I'm just gonna make local_dev.ini writable and forget about it. This
> is just a VPATH build artifact because it forces the local.ini to be
> read-only.

I'd prefer making that set not persistent. In addition, this call doesn't
occur in cookie_auth.js.

Cheers
Jan
--


> 
> On Thu, Apr 26, 2012 at 7:20 PM, Randall Leeds <ra...@gmail.com> wrote:
>> On Thu, Apr 26, 2012 at 17:03, Paul Davis <pa...@gmail.com> wrote:
>>> Now we figure out what its trying to write to.
>> 
>> Blind guess: not using X-Couch-Persist: false for something?
>> 
>>> 
>>> On Thu, Apr 26, 2012 at 4:30 PM, Jan Lehnardt <ja...@apache.org> wrote:
>>>> The problem is that the vpath directory has -w perms. Running
>>>> chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then
>>>> ./test/javascript/run again, it all works.
>>>> 
>>>> What now? :)
>>>> 
>>>> Cheers
>>>> Jan
>>>> --
>>>> 
>>>> 
>>>> On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote:
>>>> 
>>>>> 
>>>>> On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:
>>>>> 
>>>>>> 
>>>>>> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
>>>>>> 
>>>>>>> Reproduces for me. Also looks related to the vpath build because it
>>>>>>> only reproduces in distcheck and runs fine otherwise. Looking into it.
>>>>>> 
>>>>>> one more interesting point, if you cd into the distcheck build dir,
>>>>>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
>>>>>> and then run ./test/javascript/run it all succeeds as well.
>>>>>> 
>>>>>> Maybe we are digging in the wrong place?
>>>>> 
>>>>> This however reproduces the failure:
>>>>> 
>>>>>> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth
>>>>> 
>>>>> *keeps digging*
>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>> Actually, no.
>>>>>>>> 
>>>>>>>> I can now repeatedly get make distcheck to fail at
>>>>>>>> 
>>>>>>>> not ok 18 cookie_auth
>>>>>>>> 
>>>>>>>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>>>>>>>> 
>>>>>>>> Full log:
>>>>>>>> 
>>>>>>>> not ok 18 cookie_auth
>>>>>>>> Reason: false
>>>>>>>> Trace back (most recent call first):
>>>>>>>> 
>>>>>>>> 46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>>    T(false)
>>>>>>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>>    ()
>>>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>>    run_on_modified_server([object Array],(function () {try {var ddoc = op
>>>>>>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>>    ()
>>>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>>    var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>>>>>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>>    runAllTestsConsole()
>>>>>>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>>>>>>> 
>>>>>>>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>>>>>>> 
>>>>>>>>> Cheers!
>>>>>>>>> 
>>>>>>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>>>>>>> 
>>>>>>>>>> Thanks for the replies!
>>>>>>>>>> 
>>>>>>>>>> ./test/javascript/run.tpl, line 15:
>>>>>>>>>> 
>>>>>>>>>> SRC_DIR=%abs_top_srcdir%
>>>>>>>>>> 
>>>>>>>>>> What now? :)
>>>>>>>>>> 
>>>>>>>>>> Jan
>>>>>>>>>> --
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>>>>>>> 
>>>>>>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>>>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>>>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>>>>>>> or so.
>>>>>>>>>>> 
>>>>>>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>>>>>>>> object to store the value.
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>>>>>>> Parents: 257eb52
>>>>>>>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> [...]
>>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>>>>>>> 
>>>>>>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>>>>>>> then
>>>>>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>>>>>>    make dev
>>>>>>>>>>>>>>>  trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> 
>>>>>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> … and the -a lines …
>>>>>>>>>>>> 
>>>>>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>>>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>>>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>>>>>>> preference over default_dev.ini or something).
>>>>>>>>>>>> 
>>>>>>>>>>>> -R
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>> 
>>>> 


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Paul Davis <pa...@gmail.com>.
Found it:

{set,"couch_httpd_auth","secret","81732db8242bbeacb35ce76fe44b554d",true}

I'm just gonna make local_dev.ini writable and forget about it. This
is just a VPATH build artifact because it forces the local.ini to be
read-only.

On Thu, Apr 26, 2012 at 7:20 PM, Randall Leeds <ra...@gmail.com> wrote:
> On Thu, Apr 26, 2012 at 17:03, Paul Davis <pa...@gmail.com> wrote:
>> Now we figure out what its trying to write to.
>
> Blind guess: not using X-Couch-Persist: false for something?
>
>>
>> On Thu, Apr 26, 2012 at 4:30 PM, Jan Lehnardt <ja...@apache.org> wrote:
>>> The problem is that the vpath directory has -w perms. Running
>>> chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then
>>> ./test/javascript/run again, it all works.
>>>
>>> What now? :)
>>>
>>> Cheers
>>> Jan
>>> --
>>>
>>>
>>> On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote:
>>>
>>>>
>>>> On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:
>>>>
>>>>>
>>>>> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
>>>>>
>>>>>> Reproduces for me. Also looks related to the vpath build because it
>>>>>> only reproduces in distcheck and runs fine otherwise. Looking into it.
>>>>>
>>>>> one more interesting point, if you cd into the distcheck build dir,
>>>>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
>>>>> and then run ./test/javascript/run it all succeeds as well.
>>>>>
>>>>> Maybe we are digging in the wrong place?
>>>>
>>>> This however reproduces the failure:
>>>>
>>>>> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth
>>>>
>>>> *keeps digging*
>>>>
>>>>>
>>>>>
>>>>>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>> Actually, no.
>>>>>>>
>>>>>>> I can now repeatedly get make distcheck to fail at
>>>>>>>
>>>>>>> not ok 18 cookie_auth
>>>>>>>
>>>>>>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>>>>>>>
>>>>>>> Full log:
>>>>>>>
>>>>>>> not ok 18 cookie_auth
>>>>>>> Reason: false
>>>>>>> Trace back (most recent call first):
>>>>>>>
>>>>>>> 46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>    T(false)
>>>>>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>    ()
>>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>    run_on_modified_server([object Array],(function () {try {var ddoc = op
>>>>>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>>    ()
>>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>>    var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>>>>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>    runAllTestsConsole()
>>>>>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>>>>>>
>>>>>>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>>>>>>
>>>>>>>> Cheers!
>>>>>>>>
>>>>>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>>>>>>
>>>>>>>>> Thanks for the replies!
>>>>>>>>>
>>>>>>>>> ./test/javascript/run.tpl, line 15:
>>>>>>>>>
>>>>>>>>> SRC_DIR=%abs_top_srcdir%
>>>>>>>>>
>>>>>>>>> What now? :)
>>>>>>>>>
>>>>>>>>> Jan
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>>>>>>
>>>>>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>>>>>> or so.
>>>>>>>>>>
>>>>>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>>>>>>> object to store the value.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>>>>>> Parents: 257eb52
>>>>>>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> [...]
>>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>>>>>> then
>>>>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>>>>>    make dev
>>>>>>>>>>>>>>  trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>>>>>>>
>>>>>>>>>>>> … and the -a lines …
>>>>>>>>>>>
>>>>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>>>>>> preference over default_dev.ini or something).
>>>>>>>>>>>
>>>>>>>>>>> -R
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>
>>>>
>>>

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Randall Leeds <ra...@gmail.com>.
On Thu, Apr 26, 2012 at 17:03, Paul Davis <pa...@gmail.com> wrote:
> Now we figure out what its trying to write to.

Blind guess: not using X-Couch-Persist: false for something?

>
> On Thu, Apr 26, 2012 at 4:30 PM, Jan Lehnardt <ja...@apache.org> wrote:
>> The problem is that the vpath directory has -w perms. Running
>> chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then
>> ./test/javascript/run again, it all works.
>>
>> What now? :)
>>
>> Cheers
>> Jan
>> --
>>
>>
>> On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote:
>>
>>>
>>> On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:
>>>
>>>>
>>>> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
>>>>
>>>>> Reproduces for me. Also looks related to the vpath build because it
>>>>> only reproduces in distcheck and runs fine otherwise. Looking into it.
>>>>
>>>> one more interesting point, if you cd into the distcheck build dir,
>>>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
>>>> and then run ./test/javascript/run it all succeeds as well.
>>>>
>>>> Maybe we are digging in the wrong place?
>>>
>>> This however reproduces the failure:
>>>
>>>> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth
>>>
>>> *keeps digging*
>>>
>>>>
>>>>
>>>>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>> Actually, no.
>>>>>>
>>>>>> I can now repeatedly get make distcheck to fail at
>>>>>>
>>>>>> not ok 18 cookie_auth
>>>>>>
>>>>>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>>>>>>
>>>>>> Full log:
>>>>>>
>>>>>> not ok 18 cookie_auth
>>>>>> Reason: false
>>>>>> Trace back (most recent call first):
>>>>>>
>>>>>> 46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>    T(false)
>>>>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>    ()
>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>    run_on_modified_server([object Array],(function () {try {var ddoc = op
>>>>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>>    ()
>>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>>    var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>>>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>    runAllTestsConsole()
>>>>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>>>>>
>>>>>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>>>>>
>>>>>>> Cheers!
>>>>>>>
>>>>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>>>>>
>>>>>>>> Thanks for the replies!
>>>>>>>>
>>>>>>>> ./test/javascript/run.tpl, line 15:
>>>>>>>>
>>>>>>>> SRC_DIR=%abs_top_srcdir%
>>>>>>>>
>>>>>>>> What now? :)
>>>>>>>>
>>>>>>>> Jan
>>>>>>>> --
>>>>>>>>
>>>>>>>>
>>>>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>>>>>
>>>>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>>>>> or so.
>>>>>>>>>
>>>>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>>>>>
>>>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>>>>>> object to store the value.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>>>>>
>>>>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>>>>> Parents: 257eb52
>>>>>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>>>>>
>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> [...]
>>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>>>>>
>>>>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>>>>>
>>>>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>>>>> then
>>>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>>>>    make dev
>>>>>>>>>>>>>  trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>>>>>>
>>>>>>>>>>> … and the -a lines …
>>>>>>>>>>
>>>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>>>>> preference over default_dev.ini or something).
>>>>>>>>>>
>>>>>>>>>> -R
>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>
>>

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Paul Davis <pa...@gmail.com>.
Now we figure out what its trying to write to.

On Thu, Apr 26, 2012 at 4:30 PM, Jan Lehnardt <ja...@apache.org> wrote:
> The problem is that the vpath directory has -w perms. Running
> chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then
> ./test/javascript/run again, it all works.
>
> What now? :)
>
> Cheers
> Jan
> --
>
>
> On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote:
>
>>
>> On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:
>>
>>>
>>> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
>>>
>>>> Reproduces for me. Also looks related to the vpath build because it
>>>> only reproduces in distcheck and runs fine otherwise. Looking into it.
>>>
>>> one more interesting point, if you cd into the distcheck build dir,
>>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
>>> and then run ./test/javascript/run it all succeeds as well.
>>>
>>> Maybe we are digging in the wrong place?
>>
>> This however reproduces the failure:
>>
>>> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth
>>
>> *keeps digging*
>>
>>>
>>>
>>>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>>>>> Actually, no.
>>>>>
>>>>> I can now repeatedly get make distcheck to fail at
>>>>>
>>>>> not ok 18 cookie_auth
>>>>>
>>>>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>>>>>
>>>>> Full log:
>>>>>
>>>>> not ok 18 cookie_auth
>>>>> Reason: false
>>>>> Trace back (most recent call first):
>>>>>
>>>>> 46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>    T(false)
>>>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>    ()
>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>    run_on_modified_server([object Array],(function () {try {var ddoc = op
>>>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>>    ()
>>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>>    var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>    runAllTestsConsole()
>>>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>>>>
>>>>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>>>>
>>>>>> Cheers!
>>>>>>
>>>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>>>>
>>>>>>> Thanks for the replies!
>>>>>>>
>>>>>>> ./test/javascript/run.tpl, line 15:
>>>>>>>
>>>>>>> SRC_DIR=%abs_top_srcdir%
>>>>>>>
>>>>>>> What now? :)
>>>>>>>
>>>>>>> Jan
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>>>>
>>>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>>>> or so.
>>>>>>>>
>>>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>>>>
>>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>>>>>
>>>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>>>>
>>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>>>>> object to store the value.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>>>>
>>>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>>>> Parents: 257eb52
>>>>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>>>>
>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> [...]
>>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>>>>
>>>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>>>>
>>>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>>>> then
>>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>>>    make dev
>>>>>>>>>>>>  trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>>>>>
>>>>>>>>>> … and the -a lines …
>>>>>>>>>
>>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>>>> preference over default_dev.ini or something).
>>>>>>>>>
>>>>>>>>> -R
>>>>>>>
>>>>>>
>>>>>
>>>
>>
>

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
The problem is that the vpath directory has -w perms. Running
chmod -R +w apache-couchdb-1.3.0a-eb3d5d8-git and then
./test/javascript/run again, it all works.

What now? :)

Cheers
Jan
--


On Apr 26, 2012, at 22:55 , Jan Lehnardt wrote:

> 
> On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:
> 
>> 
>> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
>> 
>>> Reproduces for me. Also looks related to the vpath build because it
>>> only reproduces in distcheck and runs fine otherwise. Looking into it.
>> 
>> one more interesting point, if you cd into the distcheck build dir,
>> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
>> and then run ./test/javascript/run it all succeeds as well.
>> 
>> Maybe we are digging in the wrong place?
> 
> This however reproduces the failure:
> 
>> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth
> 
> *keeps digging*
> 
>> 
>> 
>>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>>>> Actually, no.
>>>> 
>>>> I can now repeatedly get make distcheck to fail at
>>>> 
>>>> not ok 18 cookie_auth
>>>> 
>>>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>>>> 
>>>> Full log:
>>>> 
>>>> not ok 18 cookie_auth
>>>> Reason: false
>>>> Trace back (most recent call first):
>>>> 
>>>> 46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>    T(false)
>>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>    ()
>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>    run_on_modified_server([object Array],(function () {try {var ddoc = op
>>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>>    ()
>>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>>    var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>>    runAllTestsConsole()
>>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>>> 
>>>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>>> 
>>>>> Cheers!
>>>>> 
>>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>>> 
>>>>>> Thanks for the replies!
>>>>>> 
>>>>>> ./test/javascript/run.tpl, line 15:
>>>>>> 
>>>>>> SRC_DIR=%abs_top_srcdir%
>>>>>> 
>>>>>> What now? :)
>>>>>> 
>>>>>> Jan
>>>>>> --
>>>>>> 
>>>>>> 
>>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>>> 
>>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>>> or so.
>>>>>>> 
>>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>>> 
>>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>>>> 
>>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>>> 
>>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>>>> object to store the value.
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>>> 
>>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>>> Parents: 257eb52
>>>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>>> 
>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> [...]
>>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>>> 
>>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>>> 
>>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>>> then
>>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>>    make dev
>>>>>>>>>>>  trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>>>> 
>>>>>>>>> … and the -a lines …
>>>>>>>> 
>>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>>> preference over default_dev.ini or something).
>>>>>>>> 
>>>>>>>> -R
>>>>>> 
>>>>> 
>>>> 
>> 
> 


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
On Apr 26, 2012, at 22:26 , Jan Lehnardt wrote:

> 
> On Apr 26, 2012, at 19:38 , Paul Davis wrote:
> 
>> Reproduces for me. Also looks related to the vpath build because it
>> only reproduces in distcheck and runs fine otherwise. Looking into it.
> 
> one more interesting point, if you cd into the distcheck build dir,
> currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
> and then run ./test/javascript/run it all succeeds as well.
> 
> Maybe we are digging in the wrong place?

This however reproduces the failure:

> ./apache-couchdb-1.3.0a-eb3d5d8-git/_build/test/javascript/run cookie_auth

*keeps digging*

> 
> 
>> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>>> Actually, no.
>>> 
>>> I can now repeatedly get make distcheck to fail at
>>> 
>>> not ok 18 cookie_auth
>>> 
>>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>>> 
>>> Full log:
>>> 
>>> not ok 18 cookie_auth
>>> Reason: false
>>> Trace back (most recent call first):
>>> 
>>> 46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>     T(false)
>>> 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>     ()
>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>     run_on_modified_server([object Array],(function () {try {var ddoc = op
>>> 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>>     ()
>>> "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>>     var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>> 72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>>     runAllTestsConsole()
>>> 85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>>> 
>>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>>> 
>>>> Cheers!
>>>> 
>>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>>> 
>>>>> Thanks for the replies!
>>>>> 
>>>>> ./test/javascript/run.tpl, line 15:
>>>>> 
>>>>> SRC_DIR=%abs_top_srcdir%
>>>>> 
>>>>> What now? :)
>>>>> 
>>>>> Jan
>>>>> --
>>>>> 
>>>>> 
>>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>>> 
>>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>>> or so.
>>>>>> 
>>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>>> 
>>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>>> 
>>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>>> 
>>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>>> object to store the value.
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>>> 
>>>>>>>>>> Branch: refs/heads/master
>>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>>> Parents: 257eb52
>>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>>> 
>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> [...]
>>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>>> 
>>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>>> 
>>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>>> then
>>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>>     make dev
>>>>>>>>>>   trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>>> 
>>>>>>>> … and the -a lines …
>>>>>>> 
>>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>>> preference over default_dev.ini or something).
>>>>>>> 
>>>>>>> -R
>>>>> 
>>>> 
>>> 
> 


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
On Apr 26, 2012, at 19:38 , Paul Davis wrote:

> Reproduces for me. Also looks related to the vpath build because it
> only reproduces in distcheck and runs fine otherwise. Looking into it.

one more interesting point, if you cd into the distcheck build dir,
currently apache-couchdb-1.3.0a-eb3d5d8-git/_build after the test fails
and then run ./test/javascript/run it all succeeds as well.

Maybe we are digging in the wrong place?


> On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
>> Actually, no.
>> 
>> I can now repeatedly get make distcheck to fail at
>> 
>>  not ok 18 cookie_auth
>> 
>> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>> 
>> Full log:
>> 
>> not ok 18 cookie_auth
>> Reason: false
>> Trace back (most recent call first):
>> 
>>  46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>      T(false)
>>  133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>      ()
>>  "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>      run_on_modified_server([object Array],(function () {try {var ddoc = op
>>  286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>>      ()
>>  "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>>      var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>>  72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>>      runAllTestsConsole()
>>  85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>> 
>> 
>> 
>> 
>> 
>> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>> 
>>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>> 
>>> Cheers!
>>> 
>>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>> 
>>>> Thanks for the replies!
>>>> 
>>>> ./test/javascript/run.tpl, line 15:
>>>> 
>>>> SRC_DIR=%abs_top_srcdir%
>>>> 
>>>> What now? :)
>>>> 
>>>> Jan
>>>> --
>>>> 
>>>> 
>>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>> 
>>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>>> those needs to support write backs by one of the tests. Basic solution
>>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>>> or so.
>>>>> 
>>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>> 
>>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>> 
>>>>>>>> 
>>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>> 
>>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>> 
>>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>>> object to store the value.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>> 
>>>>>>>>> Branch: refs/heads/master
>>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>>> Parents: 257eb52
>>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>> 
>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> [...]
>>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>> 
>>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>> 
>>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>>> then
>>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>>      make dev
>>>>>>>>>    trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>> 
>>>>>>> … and the -a lines …
>>>>>> 
>>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>>> preference over default_dev.ini or something).
>>>>>> 
>>>>>> -R
>>>> 
>>> 
>> 


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Paul Davis <pa...@gmail.com>.
Reproduces for me. Also looks related to the vpath build because it
only reproduces in distcheck and runs fine otherwise. Looking into it.

On Thu, Apr 26, 2012 at 6:56 AM, Jan Lehnardt <ja...@apache.org> wrote:
> Actually, no.
>
> I can now repeatedly get make distcheck to fail at
>
>  not ok 18 cookie_auth
>
> on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.
>
> Full log:
>
> not ok 18 cookie_auth
> Reason: false
> Trace back (most recent call first):
>
>  46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>      T(false)
>  133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>      ()
>  "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>      run_on_modified_server([object Array],(function () {try {var ddoc = op
>  286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
>      ()
>  "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
>      var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
>  72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>      runAllTestsConsole()
>  85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
>
>
>
>
>
> On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:
>
>> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
>>
>> Cheers!
>>
>> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
>>
>>> Thanks for the replies!
>>>
>>> ./test/javascript/run.tpl, line 15:
>>>
>>> SRC_DIR=%abs_top_srcdir%
>>>
>>> What now? :)
>>>
>>> Jan
>>> --
>>>
>>>
>>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>>>
>>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>>> depending on how they're used. It can be a bit of a PITA if one of
>>>> those needs to support write backs by one of the tests. Basic solution
>>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>>> or so.
>>>>
>>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>>>
>>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>>>
>>>>>>>
>>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>>>
>>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>>>
>>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>>> different port. To work around this, add a getter property for the
>>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>>> object to store the value.
>>>>>>>>
>>>>>>>>
>>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>>>
>>>>>>>> Branch: refs/heads/master
>>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>>> Parents: 257eb52
>>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>>>
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>>> test/Makefile.am                  |    1 +
>>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>>
>>>>>>>>
>>>>>>>> [...]
>>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>>> ----------------------------------------------------------------------
>>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>>> --- a/test/javascript/run.tpl
>>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>>>
>>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>>>
>>>>>>>> if [ "$#" -eq 0 ];
>>>>>>>> then
>>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>>      make dev
>>>>>>>>    trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>>> -    ./utils/run -b -r 1
>>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>>>
>>>>>>>
>>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>>>
>>>>>> … and the -a lines …
>>>>>
>>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>>> of the patch. I can't remember at this moment why I needed to specify
>>>>> exactly all the configs and use the -n to reset the config chain, but
>>>>> I'm sure there was a reason (like random_port.ini not getting
>>>>> preference over default_dev.ini or something).
>>>>>
>>>>> -R
>>>
>>
>

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
Actually, no.

I can now repeatedly get make distcheck to fail at

  not ok 18 cookie_auth

on two different machines. I don't know if this was introduced in the "fixing" commit or one of Paul's others.

Full log:

not ok 18 cookie_auth
Reason: false
Trace back (most recent call first):
    
  46: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
      T(false)
 133: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
      ()
  "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/couch_test_runner.js:380: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
      run_on_modified_server([object Array],(function () {try {var ddoc = op
 286: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../share/www/script/test/cookie_auth.js
      ()
  "jchris@apache.org"}, "eh, Boo-Boo?");try {usersDb.save(duplicateJchrisDoc);T(false && "Can't create duplicate user names. Should have thrown an error.");} catch (e) {T(e.error == "conflict");T(usersDb.last_req.status == 409);}var underscoreUserDoc = CouchDB.prepareUserDoc({name: "_why"}, "copperfield");try {usersDb.save(underscoreUserDoc);T(false && "Can't create underscore user names. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}var badIdDoc = CouchDB.prepareUserDoc({name: "foo"}, "bar");badIdDoc._id = "org.apache.couchdb:w00x";try {usersDb.save(badIdDoc);T(false && "Can't create malformed docids. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.login("Jason Davies", password).ok);T(CouchDB.session().userCtx.name == "Jason Davies");var xhr = CouchDB.request("POST", "/_session", {headers: {'Content-Type': "application/json"}, body: JSON.stringify({name: "Jason Davies", password: password})});T(JSON.parse(xhr.responseText).ok);T(CouchDB.session().userCtx.name == "Jason Davies");jasonUserDoc.foo = 2;T(usersDb.save(jasonUserDoc).ok);T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);try {usersDb.deleteDoc(jchrisUserDoc);T(false && "Can't delete other users docs. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(!CouchDB.login("Jason Davies", "2.71828").ok);T(!CouchDB.login("Robert Allen Zimmerman", "d00d").ok);T(CouchDB.session().userCtx.name != "Jason Davies");xhr = CouchDB.request("POST", "/_session?next=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=" + encodeURIComponent(password)});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}xhr = CouchDB.request("POST", "/_session?fail=/", {headers: {'Content-Type': "application/x-www-form-urlencoded"}, body: "name=Jason%20Davies&password=foobar"});if (xhr.status == 200) {T(/Welcome/.test(xhr.responseText));}T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.length == 0);jasonUserDoc.foo = 3;try {usersDb.save(jasonUserDoc);T(false && "Can't update someone else's user doc. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}jchrisUserDoc.roles = ["foo"];try {usersDb.save(jchrisUserDoc);T(false && "Can't set roles unless you are admin. Should have thrown an error.");} catch (e) {T(e.error == "forbidden");T(usersDb.last_req.status == 403);}T(CouchDB.logout().ok);jchrisUserDoc.foo = ["foo"];T(save_as(usersDb, jchrisUserDoc, "jan"));jchrisUserDoc.roles = ["_bar"];var res = save_as(usersDb, jchrisUserDoc, "jan");T(res.error == "forbidden");T(usersDb.last_req.status == 403);T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") == -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);T(CouchDB.logout().ok);TEquals(true, CouchDB.login("jan", "apple").ok);run_on_modified_server([{section: "admins", key: "jchris@apache.org", value: "funnybone"}], function () {T(CouchDB.login("jchris@apache.org", "funnybone").ok);T(CouchDB.session().userCtx.name == "jchris@apache.org");T(CouchDB.session().userCtx.roles.indexOf("_admin") != -1);T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);jchrisUserDoc = usersDb.open(jchrisUserDoc._id);delete jchrisUserDoc.salt;delete jchrisUserDoc.password_sha;T(usersDb.save(jchrisUserDoc).ok);T(CouchDB.logout().ok);T(CouchDB.login("jchris@apache.org", "funnybone").ok);var s = CouchDB.session();T(s.userCtx.name == "jchris@apache.org");T(s.userCtx.roles.indexOf("_admin") != -1);T(s.info.authenticated == "cookie");T(s.info.authentication_db == "test_suite_users");T(CouchDB.session().userCtx.roles.indexOf("foo") != -1);});} finally {T(CouchDB.logout().ok);}TEquals(true, CouchDB.login("jan", "apple").ok);};var usersDb = new CouchDB("test_suite_users", {'X-Couch-Full-Commit': "false"});usersDb.deleteDb();usersDb.createDb();run_on_modified_server([{section: "couch_httpd_auth", key: "authentication_db", value: "test_suite_users"}, {section: "couch_httpd_auth", key: "iterations", value: "1"}, {section: "admins", key: "jan", value: "apple"}], testFun);}))@/Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js:53: apache.org"}, "funnybone");T(usersDb.save(jchrisUserDoc).ok);var duplicateJchrisDoc = CouchDB.prepareUserDoc({name
      var testFun = function () {try {var ddoc = open_as(usersDb, "_design/_
  72: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
      runAllTestsConsole()
  85: /Users/jan/Work/couchdb/apache-couchdb-1.3.0a-0250310-git/_build/../test/javascript/cli_runner.js
      




On Apr 26, 2012, at 13:27 , Jan Lehnardt wrote:

> Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102
> 
> Cheers!
> 
> On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:
> 
>> Thanks for the replies!
>> 
>> ./test/javascript/run.tpl, line 15:
>> 
>> SRC_DIR=%abs_top_srcdir%
>> 
>> What now? :)
>> 
>> Jan
>> -- 
>> 
>> 
>> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
>> 
>>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>>> depending on how they're used. It can be a bit of a PITA if one of
>>> those needs to support write backs by one of the tests. Basic solution
>>> is to name them foo.ini.tpl and then "build" foo.ini and use
>>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>>> or so.
>>> 
>>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>>> 
>>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>>> 
>>>>>> 
>>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>>> 
>>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>>> 
>>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>>> different port. To work around this, add a getter property for the
>>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>>> object to store the value.
>>>>>>> 
>>>>>>> 
>>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>>> 
>>>>>>> Branch: refs/heads/master
>>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>>> Parents: 257eb52
>>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>>> 
>>>>>>> ----------------------------------------------------------------------
>>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>>> test/Makefile.am                  |    1 +
>>>>>>> test/etap/Makefile.am             |    1 -
>>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>>> ----------------------------------------------------------------------
>>>>>>> 
>>>>>>> 
>>>>>>> [...]
>>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>>> ----------------------------------------------------------------------
>>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>>> index 47d2f6e..ac78b50 100644
>>>>>>> --- a/test/javascript/run.tpl
>>>>>>> +++ b/test/javascript/run.tpl
>>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>>> 
>>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>>> 
>>>>>>> if [ "$#" -eq 0 ];
>>>>>>> then
>>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>>      make dev
>>>>>>>    trap 'abort' 0 1 2 3 4 6 8 15
>>>>>>> -    ./utils/run -b -r 1
>>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>>> 
>>>>>> 
>>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>>> 
>>>>> … and the -a lines …
>>>> 
>>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>>> The -a ...random_port.ini is the crucial one, because that's the point
>>>> of the patch. I can't remember at this moment why I needed to specify
>>>> exactly all the configs and use the -n to reset the config chain, but
>>>> I'm sure there was a reason (like random_port.ini not getting
>>>> preference over default_dev.ini or something).
>>>> 
>>>> -R
>> 
> 


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
Paul fixed this in http://git-wip-us.apache.org/repos/asf/couchdb/commit/02503102

Cheers!

On Apr 24, 2012, at 20:39 , Jan Lehnardt wrote:

> Thanks for the replies!
> 
> ./test/javascript/run.tpl, line 15:
> 
> SRC_DIR=%abs_top_srcdir%
> 
> What now? :)
> 
> Jan
> -- 
> 
> 
> On Apr 24, 2012, at 20:25 , Paul Davis wrote:
> 
>> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
>> depending on how they're used. It can be a bit of a PITA if one of
>> those needs to support write backs by one of the tests. Basic solution
>> is to name them foo.ini.tpl and then "build" foo.ini and use
>> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
>> or so.
>> 
>> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>>> 
>>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>>> 
>>>>> 
>>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>>> 
>>>>>> COUCHDB-1338 - run js tests with port=0
>>>>>> 
>>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>>> different port. To work around this, add a getter property for the
>>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>>> object to store the value.
>>>>>> 
>>>>>> 
>>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>>> 
>>>>>> Branch: refs/heads/master
>>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>>> Parents: 257eb52
>>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>>> 
>>>>>> ----------------------------------------------------------------------
>>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>>> test/Makefile.am                  |    1 +
>>>>>> test/etap/Makefile.am             |    1 -
>>>>>> test/etap/random_port.ini         |   19 ----------
>>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>>> test/javascript/Makefile.am       |    1 +
>>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>>> test/random_port.ini              |   19 ++++++++++
>>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>>> ----------------------------------------------------------------------
>>>>>> 
>>>>>> 
>>>>>> [...]
>>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>>> ----------------------------------------------------------------------
>>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>>> index 47d2f6e..ac78b50 100644
>>>>>> --- a/test/javascript/run.tpl
>>>>>> +++ b/test/javascript/run.tpl
>>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>>> 
>>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>>> 
>>>>>> if [ "$#" -eq 0 ];
>>>>>> then
>>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>>       make dev
>>>>>>     trap 'abort' 0 1 2 3 4 6 8 15
>>>>>> -    ./utils/run -b -r 1
>>>>>> +    ./utils/run -b -r 1 -n \
>>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>>> 
>>>>> 
>>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>>> 
>>>> … and the -a lines …
>>> 
>>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>>> The -a ...random_port.ini is the crucial one, because that's the point
>>> of the patch. I can't remember at this moment why I needed to specify
>>> exactly all the configs and use the -n to reset the config chain, but
>>> I'm sure there was a reason (like random_port.ini not getting
>>> preference over default_dev.ini or something).
>>> 
>>> -R
> 


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
Thanks for the replies!

./test/javascript/run.tpl, line 15:

SRC_DIR=%abs_top_srcdir%

What now? :)

Jan
-- 


On Apr 24, 2012, at 20:25 , Paul Davis wrote:

> Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
> depending on how they're used. It can be a bit of a PITA if one of
> those needs to support write backs by one of the tests. Basic solution
> is to name them foo.ini.tpl and then "build" foo.ini and use
> $(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
> or so.
> 
> On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
>> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>> 
>>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>> 
>>>> 
>>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>> 
>>>>> COUCHDB-1338 - run js tests with port=0
>>>>> 
>>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>>> different port. To work around this, add a getter property for the
>>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>>> object to store the value.
>>>>> 
>>>>> 
>>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>> 
>>>>> Branch: refs/heads/master
>>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>>> Parents: 257eb52
>>>>> Author: Randall Leeds <ra...@apache.org>
>>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>>> Committer: Randall Leeds <ra...@apache.org>
>>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>> 
>>>>> ----------------------------------------------------------------------
>>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>>> test/Makefile.am                  |    1 +
>>>>> test/etap/Makefile.am             |    1 -
>>>>> test/etap/random_port.ini         |   19 ----------
>>>>> test/etap/test_util.erl.in        |    2 +-
>>>>> test/javascript/Makefile.am       |    1 +
>>>>> test/javascript/couch_http.js     |    9 ++---
>>>>> test/javascript/run.tpl           |    9 ++++-
>>>>> test/random_port.ini              |   19 ++++++++++
>>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>>> ----------------------------------------------------------------------
>>>>> 
>>>>> 
>>>>> [...]
>>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>>> ----------------------------------------------------------------------
>>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>>> index 47d2f6e..ac78b50 100644
>>>>> --- a/test/javascript/run.tpl
>>>>> +++ b/test/javascript/run.tpl
>>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>> 
>>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>> 
>>>>> if [ "$#" -eq 0 ];
>>>>> then
>>>>> @@ -48,11 +49,15 @@ abort() {
>>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>>        make dev
>>>>>      trap 'abort' 0 1 2 3 4 6 8 15
>>>>> -    ./utils/run -b -r 1
>>>>> +    ./utils/run -b -r 1 -n \
>>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>> 
>>>> 
>>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>> 
>>> … and the -a lines …
>> 
>> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
>> The -a ...random_port.ini is the crucial one, because that's the point
>> of the patch. I can't remember at this moment why I needed to specify
>> exactly all the configs and use the -n to reset the config chain, but
>> I'm sure there was a reason (like random_port.ini not getting
>> preference over default_dev.ini or something).
>> 
>> -R


Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Paul Davis <pa...@gmail.com>.
Yeah. We'll need an $(abs_top_srcdir) or $(abs_top_builddir) here
depending on how they're used. It can be a bit of a PITA if one of
those needs to support write backs by one of the tests. Basic solution
is to name them foo.ini.tpl and then "build" foo.ini and use
$(abs_top_builddir) in that case. Where by "build" I mean `cp $< $@`
or so.

On Tue, Apr 24, 2012 at 12:04 PM, Randall Leeds <ra...@apache.org> wrote:
> On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>>
>> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>>
>>>
>>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>>
>>>> COUCHDB-1338 - run js tests with port=0
>>>>
>>>> When the JS tests POST to /_restart, the server comes back up on a
>>>> different port. To work around this, add a getter property for the
>>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>>> object to store the value.
>>>>
>>>>
>>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>>
>>>> Branch: refs/heads/master
>>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>>> Parents: 257eb52
>>>> Author: Randall Leeds <ra...@apache.org>
>>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>>> Committer: Randall Leeds <ra...@apache.org>
>>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>>
>>>> ----------------------------------------------------------------------
>>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>>> test/Makefile.am                  |    1 +
>>>> test/etap/Makefile.am             |    1 -
>>>> test/etap/random_port.ini         |   19 ----------
>>>> test/etap/test_util.erl.in        |    2 +-
>>>> test/javascript/Makefile.am       |    1 +
>>>> test/javascript/couch_http.js     |    9 ++---
>>>> test/javascript/run.tpl           |    9 ++++-
>>>> test/random_port.ini              |   19 ++++++++++
>>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>>> ----------------------------------------------------------------------
>>>>
>>>>
>>>> [...]
>>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>>> ----------------------------------------------------------------------
>>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>>> index 47d2f6e..ac78b50 100644
>>>> --- a/test/javascript/run.tpl
>>>> +++ b/test/javascript/run.tpl
>>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>>
>>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>>
>>>> if [ "$#" -eq 0 ];
>>>> then
>>>> @@ -48,11 +49,15 @@ abort() {
>>>> if [ -z $COUCHDB_NO_START ]; then
>>>>        make dev
>>>>      trap 'abort' 0 1 2 3 4 6 8 15
>>>> -    ./utils/run -b -r 1
>>>> +    ./utils/run -b -r 1 -n \
>>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>>> +            -a $SRC_DIR/test/random_port.ini \
>>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>>
>>>
>>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>>
>> … and the -a lines …
>
> Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
> The -a ...random_port.ini is the crucial one, because that's the point
> of the patch. I can't remember at this moment why I needed to specify
> exactly all the configs and use the -n to reset the config chain, but
> I'm sure there was a reason (like random_port.ini not getting
> preference over default_dev.ini or something).
>
> -R

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Randall Leeds <ra...@apache.org>.
On Tue, Apr 24, 2012 at 08:08, Jan Lehnardt <ja...@apache.org> wrote:
>
> On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:
>
>>
>> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
>>
>>> COUCHDB-1338 - run js tests with port=0
>>>
>>> When the JS tests POST to /_restart, the server comes back up on a
>>> different port. To work around this, add a getter property for the
>>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>>> object to store the value.
>>>
>>>
>>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>>>
>>> Branch: refs/heads/master
>>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>>> Parents: 257eb52
>>> Author: Randall Leeds <ra...@apache.org>
>>> Authored: Sat Jan 7 14:21:29 2012 -0800
>>> Committer: Randall Leeds <ra...@apache.org>
>>> Committed: Thu Jan 26 17:03:10 2012 -0800
>>>
>>> ----------------------------------------------------------------------
>>> src/couchdb/priv/couch_js/help.h  |    2 +
>>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>>> src/couchdb/priv/couch_js/http.h  |    3 ++
>>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>>> src/couchdb/priv/couch_js/util.c  |    3 +-
>>> src/couchdb/priv/couch_js/util.h  |    2 +
>>> test/Makefile.am                  |    1 +
>>> test/etap/Makefile.am             |    1 -
>>> test/etap/random_port.ini         |   19 ----------
>>> test/etap/test_util.erl.in        |    2 +-
>>> test/javascript/Makefile.am       |    1 +
>>> test/javascript/couch_http.js     |    9 ++---
>>> test/javascript/run.tpl           |    9 ++++-
>>> test/random_port.ini              |   19 ++++++++++
>>> 16 files changed, 125 insertions(+), 30 deletions(-)
>>> ----------------------------------------------------------------------
>>>
>>>
>>> [...]
>>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>>> ----------------------------------------------------------------------
>>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>>> index 47d2f6e..ac78b50 100644
>>> --- a/test/javascript/run.tpl
>>> +++ b/test/javascript/run.tpl
>>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>>> JS_TEST_DIR=$SRC_DIR/test/javascript
>>>
>>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>>>
>>> if [ "$#" -eq 0 ];
>>> then
>>> @@ -48,11 +49,15 @@ abort() {
>>> if [ -z $COUCHDB_NO_START ]; then
>>>        make dev
>>>      trap 'abort' 0 1 2 3 4 6 8 15
>>> -    ./utils/run -b -r 1
>>> +    ./utils/run -b -r 1 -n \
>>> +            -a $SRC_DIR/etc/couchdb/default_dev.ini \
>>> +            -a $SRC_DIR/test/random_port.ini \
>>> +            -a $SRC_DIR/etc/couchdb/local_dev.ini
>>
>>
>> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.
>
> … and the -a lines …

Hmm. Maybe it should be "$(abs_top_builddir)" instead of SRC_DIR?
The -a ...random_port.ini is the crucial one, because that's the point
of the patch. I can't remember at this moment why I needed to specify
exactly all the configs and use the -n to reset the config chain, but
I'm sure there was a reason (like random_port.ini not getting
preference over default_dev.ini or something).

-R

Re: [2/7] git commit: COUCHDB-1338 - run js tests with port=0

Posted by Jan Lehnardt <ja...@apache.org>.
On Apr 24, 2012, at 17:05 , Jan Lehnardt wrote:

> 
> On Jan 27, 2012, at 02:37 , randall@apache.org wrote:
> 
>> COUCHDB-1338 - run js tests with port=0
>> 
>> When the JS tests POST to /_restart, the server comes back up on a
>> different port. To work around this, add a getter property for the
>> CouchHTTP.prototype.base_url property, using a reserved slot on the
>> object to store the value.
>> 
>> 
>> Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/d20e7926
>> Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/d20e7926
>> Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/d20e7926
>> 
>> Branch: refs/heads/master
>> Commit: d20e792617db738dd5ad0e046ae847cd740f586f
>> Parents: 257eb52
>> Author: Randall Leeds <ra...@apache.org>
>> Authored: Sat Jan 7 14:21:29 2012 -0800
>> Committer: Randall Leeds <ra...@apache.org>
>> Committed: Thu Jan 26 17:03:10 2012 -0800
>> 
>> ----------------------------------------------------------------------
>> src/couchdb/priv/couch_js/help.h  |    2 +
>> src/couchdb/priv/couch_js/http.c  |   60 +++++++++++++++++++++++++++++++-
>> src/couchdb/priv/couch_js/http.h  |    3 ++
>> src/couchdb/priv/couch_js/sm170.c |    8 ++++
>> src/couchdb/priv/couch_js/sm180.c |    8 ++++
>> src/couchdb/priv/couch_js/sm185.c |    8 ++++
>> src/couchdb/priv/couch_js/util.c  |    3 +-
>> src/couchdb/priv/couch_js/util.h  |    2 +
>> test/Makefile.am                  |    1 +
>> test/etap/Makefile.am             |    1 -
>> test/etap/random_port.ini         |   19 ----------
>> test/etap/test_util.erl.in        |    2 +-
>> test/javascript/Makefile.am       |    1 +
>> test/javascript/couch_http.js     |    9 ++---
>> test/javascript/run.tpl           |    9 ++++-
>> test/random_port.ini              |   19 ++++++++++
>> 16 files changed, 125 insertions(+), 30 deletions(-)
>> ----------------------------------------------------------------------
>> 
>> 
>> [...]
>> http://git-wip-us.apache.org/repos/asf/couchdb/blob/d20e7926/test/javascript/run.tpl
>> ----------------------------------------------------------------------
>> diff --git a/test/javascript/run.tpl b/test/javascript/run.tpl
>> index 47d2f6e..ac78b50 100644
>> --- a/test/javascript/run.tpl
>> +++ b/test/javascript/run.tpl
>> @@ -17,6 +17,7 @@ SCRIPT_DIR=$SRC_DIR/share/www/script
>> JS_TEST_DIR=$SRC_DIR/test/javascript
>> 
>> COUCHJS=%abs_top_builddir%/src/couchdb/priv/couchjs
>> +COUCH_URI_FILE=%localstaterundir%/couch.uri
>> 
>> if [ "$#" -eq 0 ];
>> then
>> @@ -48,11 +49,15 @@ abort() {
>> if [ -z $COUCHDB_NO_START ]; then
>>        make dev
>> 	trap 'abort' 0 1 2 3 4 6 8 15
>> -	./utils/run -b -r 1
>> +	./utils/run -b -r 1 -n \
>> +		-a $SRC_DIR/etc/couchdb/default_dev.ini \
>> +		-a $SRC_DIR/test/random_port.ini \
>> +		-a $SRC_DIR/etc/couchdb/local_dev.ini
> 
> 
> Randall, this breaks vpath builds. removing the -n option and the -n lines makes it work for me.

… and the -a lines …

> 
> To reproduce, just run make distcheck on master. Inside of make distcheck, we'll run make check on a vpath which in turn calls make dev and utils/run in ./test/javascript/run. $SRC_DIR now points to _build/../ instead of of just ./ and thus makes things fail (I think). Either way, removing these lines makes make distcheck work for me. What were the reasons for adding these in the first place?
> 
> Maybe I've gotten in all wrong, but this holds us from getting make distcheck run on the various CI systems :)
> 
> Cheers
> Jan
> -- 
> 
> 
> 
> 
> 
>> 	sleep 1 # give it a sec
>> fi
>> 
>> -$COUCHJS -H \
>> +# start the tests
>> +$COUCHJS -H -u $COUCH_URI_FILE \
>> 	$SCRIPT_DIR/json2.js \
>> 	$SCRIPT_DIR/sha1.js \
>> 	$SCRIPT_DIR/oauth.js \
>> 
>