You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ch...@apache.org on 2014/09/05 04:30:11 UTC

[32/50] [abbrv] Move files out of test/couchdb into top level test/ folder

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_cors_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_cors_tests.erl b/test/couchdb/couchdb_cors_tests.erl
deleted file mode 100644
index 4e88ae7..0000000
--- a/test/couchdb/couchdb_cors_tests.erl
+++ /dev/null
@@ -1,344 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_cors_tests).
-
--include("couch_eunit.hrl").
--include_lib("couchdb/couch_db.hrl").
-
-
--define(ADMIN_USER, {user_ctx, #user_ctx{roles=[<<"_admin">>]}}).
--define(SUPPORTED_METHODS,
-        "GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT, COPY, OPTIONS").
--define(TIMEOUT, 1000).
-
-
-start() ->
-    {ok, Pid} = couch_server_sup:start_link(?CONFIG_CHAIN),
-    ok = couch_config:set("httpd", "enable_cors", "true", false),
-    ok = couch_config:set("vhosts", "example.com", "/", false),
-    Pid.
-
-stop(Pid) ->
-    couch_server_sup:stop(),
-    erlang:monitor(process, Pid),
-    receive
-        {'DOWN', _, _, Pid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, server_stop})
-    end.
-
-setup() ->
-    DbName = ?tempdb(),
-    {ok, Db} = couch_db:create(DbName, [?ADMIN_USER]),
-    couch_db:close(Db),
-
-    couch_config:set("cors", "credentials", "false", false),
-    couch_config:set("cors", "origins", "http://example.com", false),
-
-    Addr = couch_config:get("httpd", "bind_address", "127.0.0.1"),
-    Port = integer_to_list(mochiweb_socket_server:get(couch_httpd, port)),
-    Host = "http://" ++ Addr ++ ":" ++ Port,
-    {Host, ?b2l(DbName)}.
-
-setup({Mod, VHost}) ->
-    {Host, DbName} = setup(),
-    Url = case Mod of
-        server ->
-            Host;
-        db ->
-            Host ++ "/" ++ DbName
-    end,
-    DefaultHeaders = [{"Origin", "http://example.com"}]
-                     ++ maybe_append_vhost(VHost),
-    {Host, DbName, Url, DefaultHeaders}.
-
-teardown(DbName) when is_list(DbName) ->
-    ok = couch_server:delete(?l2b(DbName), [?ADMIN_USER]),
-    ok;
-teardown({_, DbName}) ->
-    teardown(DbName).
-
-teardown(_, {_, DbName, _, _}) ->
-    teardown(DbName).
-
-
-cors_test_() ->
-    Funs = [
-        fun should_not_allow_origin/2,
-        fun should_not_allow_origin_with_port_mismatch/2,
-        fun should_not_allow_origin_with_scheme_mismatch/2,
-        fun should_not_all_origin_due_case_mismatch/2,
-        fun should_make_simple_request/2,
-        fun should_make_preflight_request/2,
-        fun should_make_prefligh_request_with_port/2,
-        fun should_make_prefligh_request_with_scheme/2,
-        fun should_make_prefligh_request_with_wildcard_origin/2,
-        fun should_make_request_with_credentials/2,
-        fun should_make_origin_request_with_auth/2,
-        fun should_make_preflight_request_with_auth/2
-    ],
-    {
-        "CORS (COUCHDB-431)",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            [
-                cors_tests(Funs),
-                vhost_cors_tests(Funs),
-                headers_tests()
-            ]
-        }
-    }.
-
-headers_tests() ->
-    {
-        "Various headers tests",
-        {
-            foreach,
-            fun setup/0, fun teardown/1,
-            [
-                fun should_not_return_cors_headers_for_invalid_origin/1,
-                fun should_not_return_cors_headers_for_invalid_origin_preflight/1,
-                fun should_make_request_against_attachment/1,
-                fun should_make_range_request_against_attachment/1,
-                fun should_make_request_with_if_none_match_header/1
-            ]
-        }
-    }.
-
-cors_tests(Funs) ->
-    {
-        "CORS tests",
-        [
-            make_test_case(server, false, Funs),
-            make_test_case(db, false, Funs)
-        ]
-    }.
-
-vhost_cors_tests(Funs) ->
-    {
-        "Virtual Host CORS",
-        [
-            make_test_case(server, true, Funs),
-            make_test_case(db, true, Funs)
-        ]
-    }.
-
-make_test_case(Mod, UseVhost, Funs) ->
-    {
-        case Mod of server -> "Server"; db -> "Database" end,
-        {foreachx, fun setup/1, fun teardown/2, [{{Mod, UseVhost}, Fun}
-                                                 || Fun <- Funs]}
-    }.
-
-
-should_not_allow_origin(_, {_, _, Url, Headers0}) ->
-    ?_assertEqual(undefined,
-        begin
-            couch_config:delete("cors", "origins", false),
-            Headers1 = proplists:delete("Origin", Headers0),
-            Headers = [{"Origin", "http://127.0.0.1"}]
-                      ++ Headers1,
-            {ok, _, Resp, _} = test_request:get(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_not_allow_origin_with_port_mismatch({_, VHost}, {_, _, Url, _}) ->
-    ?_assertEqual(undefined,
-        begin
-            Headers = [{"Origin", "http://example.com:5984"},
-                       {"Access-Control-Request-Method", "GET"}]
-                      ++ maybe_append_vhost(VHost),
-            {ok, _, Resp, _} = test_request:options(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_not_allow_origin_with_scheme_mismatch({_, VHost}, {_, _, Url, _}) ->
-    ?_assertEqual(undefined,
-        begin
-            Headers = [{"Origin", "http://example.com:5984"},
-                       {"Access-Control-Request-Method", "GET"}]
-                      ++ maybe_append_vhost(VHost),
-            {ok, _, Resp, _} = test_request:options(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_not_all_origin_due_case_mismatch({_, VHost}, {_, _, Url, _}) ->
-    ?_assertEqual(undefined,
-        begin
-            Headers = [{"Origin", "http://ExAmPlE.CoM"},
-                       {"Access-Control-Request-Method", "GET"}]
-                      ++ maybe_append_vhost(VHost),
-            {ok, _, Resp, _} = test_request:options(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_make_simple_request(_, {_, _, Url, DefaultHeaders}) ->
-    ?_test(begin
-        {ok, _, Resp, _} = test_request:get(Url, DefaultHeaders),
-        ?assertEqual(
-            undefined,
-            proplists:get_value("Access-Control-Allow-Credentials", Resp)),
-        ?assertEqual(
-            "http://example.com",
-            proplists:get_value("Access-Control-Allow-Origin", Resp)),
-        ?assertEqual(
-            "Cache-Control, Content-Type, Server",
-            proplists:get_value("Access-Control-Expose-Headers", Resp))
-    end).
-
-should_make_preflight_request(_, {_, _, Url, DefaultHeaders}) ->
-    ?_assertEqual(?SUPPORTED_METHODS,
-        begin
-            Headers = DefaultHeaders
-                      ++ [{"Access-Control-Request-Method", "GET"}],
-            {ok, _, Resp, _} = test_request:options(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Methods", Resp)
-        end).
-
-should_make_prefligh_request_with_port({_, VHost}, {_, _, Url, _}) ->
-    ?_assertEqual("http://example.com:5984",
-        begin
-            couch_config:set("cors", "origins", "http://example.com:5984",
-                             false),
-            Headers = [{"Origin", "http://example.com:5984"},
-                       {"Access-Control-Request-Method", "GET"}]
-                      ++ maybe_append_vhost(VHost),
-            {ok, _, Resp, _} = test_request:options(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_make_prefligh_request_with_scheme({_, VHost}, {_, _, Url, _}) ->
-    ?_assertEqual("https://example.com:5984",
-        begin
-            couch_config:set("cors", "origins", "https://example.com:5984",
-                             false),
-            Headers = [{"Origin", "https://example.com:5984"},
-                       {"Access-Control-Request-Method", "GET"}]
-                      ++ maybe_append_vhost(VHost),
-            {ok, _, Resp, _} = test_request:options(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_make_prefligh_request_with_wildcard_origin({_, VHost}, {_, _, Url, _}) ->
-    ?_assertEqual("https://example.com:5984",
-        begin
-            couch_config:set("cors", "origins", "*", false),
-            Headers = [{"Origin", "https://example.com:5984"},
-                       {"Access-Control-Request-Method", "GET"}]
-                      ++ maybe_append_vhost(VHost),
-            {ok, _, Resp, _} = test_request:options(Url, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_make_request_with_credentials(_, {_, _, Url, DefaultHeaders}) ->
-    ?_assertEqual("true",
-        begin
-            ok = couch_config:set("cors", "credentials", "true", false),
-            {ok, _, Resp, _} = test_request:options(Url, DefaultHeaders),
-            proplists:get_value("Access-Control-Allow-Credentials", Resp)
-        end).
-
-should_make_origin_request_with_auth(_, {_, _, Url, DefaultHeaders}) ->
-    ?_assertEqual("http://example.com",
-        begin
-            Hashed = couch_passwords:hash_admin_password(<<"test">>),
-            couch_config:set("admins", "test", Hashed, false),
-            {ok, _, Resp, _} = test_request:get(
-                Url, DefaultHeaders, [{basic_auth, {"test", "test"}}]),
-            couch_config:delete("admins", "test", false),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_make_preflight_request_with_auth(_, {_, _, Url, DefaultHeaders}) ->
-    ?_assertEqual(?SUPPORTED_METHODS,
-        begin
-            Hashed = couch_passwords:hash_admin_password(<<"test">>),
-            couch_config:set("admins", "test", Hashed, false),
-            Headers = DefaultHeaders
-                      ++ [{"Access-Control-Request-Method", "GET"}],
-            {ok, _, Resp, _} = test_request:options(
-                Url, Headers, [{basic_auth, {"test", "test"}}]),
-            couch_config:delete("admins", "test", false),
-            proplists:get_value("Access-Control-Allow-Methods", Resp)
-        end).
-
-should_not_return_cors_headers_for_invalid_origin({Host, _}) ->
-    ?_assertEqual(undefined,
-        begin
-            Headers = [{"Origin", "http://127.0.0.1"}],
-            {ok, _, Resp, _} = test_request:get(Host, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_not_return_cors_headers_for_invalid_origin_preflight({Host, _}) ->
-    ?_assertEqual(undefined,
-        begin
-            Headers = [{"Origin", "http://127.0.0.1"},
-                       {"Access-Control-Request-Method", "GET"}],
-            {ok, _, Resp, _} = test_request:options(Host, Headers),
-            proplists:get_value("Access-Control-Allow-Origin", Resp)
-        end).
-
-should_make_request_against_attachment({Host, DbName}) ->
-    {"COUCHDB-1689",
-     ?_assertEqual(200,
-         begin
-             Url = Host ++ "/" ++ DbName,
-             {ok, Code0, _, _} = test_request:put(
-                 Url ++ "/doc/file.txt", [{"Content-Type", "text/plain"}],
-                 "hello, couch!"),
-             ?assert(Code0 =:= 201),
-             {ok, Code, _, _} = test_request:get(
-                 Url ++ "/doc?attachments=true",
-                 [{"Origin", "http://example.com"}]),
-             Code
-         end)}.
-
-should_make_range_request_against_attachment({Host, DbName}) ->
-    {"COUCHDB-1689",
-     ?_assertEqual(206,
-         begin
-             Url = Host ++ "/" ++ DbName,
-             {ok, Code0, _, _} = test_request:put(
-                 Url ++ "/doc/file.txt",
-                 [{"Content-Type", "application/octet-stream"}],
-                 "hello, couch!"),
-             ?assert(Code0 =:= 201),
-             {ok, Code, _, _} = test_request:get(
-                 Url ++ "/doc/file.txt", [{"Origin", "http://example.com"},
-                                          {"Range", "bytes=0-6"}]),
-             Code
-         end)}.
-
-should_make_request_with_if_none_match_header({Host, DbName}) ->
-    {"COUCHDB-1697",
-     ?_assertEqual(304,
-         begin
-             Url = Host ++ "/" ++ DbName,
-             {ok, Code0, Headers0, _} = test_request:put(
-                 Url ++ "/doc", [{"Content-Type", "application/json"}], "{}"),
-             ?assert(Code0 =:= 201),
-             ETag = proplists:get_value("ETag", Headers0),
-             {ok, Code, _, _} = test_request:get(
-                 Url ++ "/doc", [{"Origin", "http://example.com"},
-                                 {"If-None-Match", ETag}]),
-             Code
-        end)}.
-
-
-maybe_append_vhost(true) ->
-    [{"Host", "http://example.com"}];
-maybe_append_vhost(false) ->
-    [].

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_csp_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_csp_tests.erl b/test/couchdb/couchdb_csp_tests.erl
deleted file mode 100644
index adb0e6d..0000000
--- a/test/couchdb/couchdb_csp_tests.erl
+++ /dev/null
@@ -1,96 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_csp_tests).
-
--include("couch_eunit.hrl").
-
--define(TIMEOUT, 1000).
-
-
-start() ->
-    {ok, Pid} = couch_server_sup:start_link(?CONFIG_CHAIN),
-    Pid.
-
-stop(Pid) ->
-    couch_server_sup:stop(),
-    erlang:monitor(process, Pid),
-    receive
-        {'DOWN', _, _, Pid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, server_stop})
-    end.
-
-setup() ->
-    ok = couch_config:set("csp", "enable", "true", false),
-    Addr = couch_config:get("httpd", "bind_address", "127.0.0.1"),
-    Port = integer_to_list(mochiweb_socket_server:get(couch_httpd, port)),
-    lists:concat(["http://", Addr, ":", Port, "/_utils/"]).
-
-teardown(_) ->
-    ok.
-
-
-csp_test_() ->
-    {
-        "Content Security Policy tests",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            {
-                foreach,
-                fun setup/0, fun teardown/1,
-                [
-                    fun should_not_return_any_csp_headers_when_disabled/1,
-                    fun should_apply_default_policy/1,
-                    fun should_return_custom_policy/1,
-                    fun should_only_enable_csp_when_true/1
-                ]
-            }
-        }
-    }.
-
-
-should_not_return_any_csp_headers_when_disabled(Url) ->
-    ?_assertEqual(undefined,
-        begin
-            ok = couch_config:set("csp", "enable", "false", false),
-            {ok, _, Headers, _} = test_request:get(Url),
-            proplists:get_value("Content-Security-Policy", Headers)
-        end).
-
-should_apply_default_policy(Url) ->
-    ?_assertEqual(
-        "default-src 'self'; img-src 'self'; font-src 'self'; "
-        "script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline';",
-        begin
-            {ok, _, Headers, _} = test_request:get(Url),
-            proplists:get_value("Content-Security-Policy", Headers)
-        end).
-
-should_return_custom_policy(Url) ->
-    ?_assertEqual("default-src 'http://example.com';",
-        begin
-            ok = couch_config:set("csp", "header_value",
-                                  "default-src 'http://example.com';", false),
-            {ok, _, Headers, _} = test_request:get(Url),
-            proplists:get_value("Content-Security-Policy", Headers)
-        end).
-
-should_only_enable_csp_when_true(Url) ->
-    ?_assertEqual(undefined,
-        begin
-            ok = couch_config:set("csp", "enable", "tru", false),
-            {ok, _, Headers, _} = test_request:get(Url),
-            proplists:get_value("Content-Security-Policy", Headers)
-        end).

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_file_compression_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_file_compression_tests.erl b/test/couchdb/couchdb_file_compression_tests.erl
deleted file mode 100644
index fd3f513..0000000
--- a/test/couchdb/couchdb_file_compression_tests.erl
+++ /dev/null
@@ -1,239 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_file_compression_tests).
-
--include("couch_eunit.hrl").
--include_lib("couchdb/couch_db.hrl").
-
--define(ADMIN_USER, {user_ctx, #user_ctx{roles=[<<"_admin">>]}}).
--define(DDOC_ID, <<"_design/test">>).
--define(DOCS_COUNT, 5000).
--define(TIMEOUT, 30000).
-
-
-start() ->
-    {ok, Pid} = couch_server_sup:start_link(?CONFIG_CHAIN),
-    Pid.
-
-stop(Pid) ->
-    erlang:monitor(process, Pid),
-    couch_server_sup:stop(),
-    receive
-        {'DOWN', _, _, Pid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, server_stop})
-    end.
-
-setup() ->
-    couch_config:set("couchdb", "file_compression", "none", false),
-    DbName = ?tempdb(),
-    {ok, Db} = couch_db:create(DbName, [?ADMIN_USER]),
-    ok = populate_db(Db, ?DOCS_COUNT),
-    DDoc = couch_doc:from_json_obj({[
-        {<<"_id">>, ?DDOC_ID},
-        {<<"language">>, <<"javascript">>},
-        {<<"views">>, {[
-                {<<"by_id">>, {[
-                    {<<"map">>, <<"function(doc){emit(doc._id, doc.string);}">>}
-                ]}}
-            ]}
-        }
-    ]}),
-    {ok, _} = couch_db:update_doc(Db, DDoc, []),
-    refresh_index(DbName),
-    ok = couch_db:close(Db),
-    DbName.
-
-teardown(DbName) ->
-    ok = couch_server:delete(DbName, [?ADMIN_USER]),
-    ok.
-
-
-couch_auth_cache_test_() ->
-    {
-        "CouchDB file compression tests",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            {
-                foreach,
-                fun setup/0, fun teardown/1,
-                [
-                    fun should_use_none/1,
-                    fun should_use_deflate_1/1,
-                    fun should_use_deflate_9/1,
-                    fun should_use_snappy/1,
-                    fun should_compare_compression_methods/1
-                ]
-            }
-        }
-    }.
-
-
-should_use_none(DbName) ->
-    couch_config:set("couchdb", "file_compression", "none", false),
-    {
-        "Use no compression",
-        [
-            {"compact database", ?_test(compact_db(DbName))},
-            {"compact view", ?_test(compact_view(DbName))}
-        ]
-    }.
-
-should_use_deflate_1(DbName) ->
-    couch_config:set("couchdb", "file_compression", "deflate_1", false),
-    {
-        "Use deflate compression at level 1",
-        [
-            {"compact database", ?_test(compact_db(DbName))},
-            {"compact view", ?_test(compact_view(DbName))}
-        ]
-    }.
-
-should_use_deflate_9(DbName) ->
-    couch_config:set("couchdb", "file_compression", "deflate_9", false),
-    {
-        "Use deflate compression at level 9",
-        [
-            {"compact database", ?_test(compact_db(DbName))},
-            {"compact view", ?_test(compact_view(DbName))}
-        ]
-    }.
-
-should_use_snappy(DbName) ->
-    couch_config:set("couchdb", "file_compression", "snappy", false),
-    {
-        "Use snappy compression",
-        [
-            {"compact database", ?_test(compact_db(DbName))},
-            {"compact view", ?_test(compact_view(DbName))}
-        ]
-    }.
-
-should_compare_compression_methods(DbName) ->
-    {"none > snappy > deflate_1 > deflate_9",
-     {timeout, ?TIMEOUT div 1000, ?_test(compare_compression_methods(DbName))}}.
-
-compare_compression_methods(DbName) ->
-    couch_config:set("couchdb", "file_compression", "none", false),
-    compact_db(DbName),
-    compact_view(DbName),
-    DbSizeNone = db_disk_size(DbName),
-    ViewSizeNone = view_disk_size(DbName),
-
-    couch_config:set("couchdb", "file_compression", "snappy", false),
-    compact_db(DbName),
-    compact_view(DbName),
-    DbSizeSnappy = db_disk_size(DbName),
-    ViewSizeSnappy = view_disk_size(DbName),
-
-    ?assert(DbSizeNone > DbSizeSnappy),
-    ?assert(ViewSizeNone > ViewSizeSnappy),
-
-    couch_config:set("couchdb", "file_compression", "deflate_1", false),
-    compact_db(DbName),
-    compact_view(DbName),
-    DbSizeDeflate1 = db_disk_size(DbName),
-    ViewSizeDeflate1 = view_disk_size(DbName),
-
-    ?assert(DbSizeSnappy > DbSizeDeflate1),
-    ?assert(ViewSizeSnappy > ViewSizeDeflate1),
-
-    couch_config:set("couchdb", "file_compression", "deflate_9", false),
-    compact_db(DbName),
-    compact_view(DbName),
-    DbSizeDeflate9 = db_disk_size(DbName),
-    ViewSizeDeflate9 = view_disk_size(DbName),
-
-    ?assert(DbSizeDeflate1 > DbSizeDeflate9),
-    ?assert(ViewSizeDeflate1 > ViewSizeDeflate9).
-
-
-populate_db(_Db, NumDocs) when NumDocs =< 0 ->
-    ok;
-populate_db(Db, NumDocs) ->
-    Docs = lists:map(
-        fun(_) ->
-            couch_doc:from_json_obj({[
-                {<<"_id">>, couch_uuids:random()},
-                {<<"string">>, ?l2b(lists:duplicate(1000, $X))}
-            ]})
-        end,
-        lists:seq(1, 500)),
-    {ok, _} = couch_db:update_docs(Db, Docs, []),
-    populate_db(Db, NumDocs - 500).
-
-refresh_index(DbName) ->
-    {ok, Db} = couch_db:open_int(DbName, []),
-    {ok, DDoc} = couch_db:open_doc(Db, ?DDOC_ID, [ejson_body]),
-    couch_mrview:query_view(Db, DDoc, <<"by_id">>, [{stale, false}]),
-    ok = couch_db:close(Db).
-
-compact_db(DbName) ->
-    DiskSizeBefore = db_disk_size(DbName),
-    {ok, Db} = couch_db:open_int(DbName, []),
-    {ok, CompactPid} = couch_db:start_compact(Db),
-    MonRef = erlang:monitor(process, CompactPid),
-    receive
-        {'DOWN', MonRef, process, CompactPid, normal} ->
-            ok;
-        {'DOWN', MonRef, process, CompactPid, Reason} ->
-            erlang:error({assertion_failed,
-                          [{module, ?MODULE},
-                           {line, ?LINE},
-                           {reason, "Error compacting database: "
-                                    ++ couch_util:to_list(Reason)}]})
-    after ?TIMEOUT ->
-        erlang:error({assertion_failed,
-                      [{module, ?MODULE},
-                       {line, ?LINE},
-                       {reason, "Timeout waiting for database compaction"}]})
-    end,
-    ok = couch_db:close(Db),
-    DiskSizeAfter = db_disk_size(DbName),
-    ?assert(DiskSizeBefore > DiskSizeAfter).
-
-compact_view(DbName) ->
-    DiskSizeBefore = view_disk_size(DbName),
-    {ok, MonRef} = couch_mrview:compact(DbName, ?DDOC_ID, [monitor]),
-    receive
-        {'DOWN', MonRef, process, _CompactPid, normal} ->
-            ok;
-        {'DOWN', MonRef, process, _CompactPid, Reason} ->
-            erlang:error({assertion_failed,
-                          [{module, ?MODULE},
-                           {line, ?LINE},
-                           {reason, "Error compacting view group: "
-                                    ++ couch_util:to_list(Reason)}]})
-    after ?TIMEOUT ->
-        erlang:error({assertion_failed,
-                      [{module, ?MODULE},
-                       {line, ?LINE},
-                       {reason, "Timeout waiting for view group compaction"}]})
-    end,
-    DiskSizeAfter = view_disk_size(DbName),
-    ?assert(DiskSizeBefore > DiskSizeAfter).
-
-db_disk_size(DbName) ->
-    {ok, Db} = couch_db:open_int(DbName, []),
-    {ok, Info} = couch_db:get_db_info(Db),
-    ok = couch_db:close(Db),
-    couch_util:get_value(disk_size, Info).
-
-view_disk_size(DbName) ->
-    {ok, Db} = couch_db:open_int(DbName, []),
-    {ok, DDoc} = couch_db:open_doc(Db, ?DDOC_ID, [ejson_body]),
-    {ok, Info} = couch_mrview:get_info(Db, DDoc),
-    ok = couch_db:close(Db),
-    couch_util:get_value(disk_size, Info).

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_http_proxy_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_http_proxy_tests.erl b/test/couchdb/couchdb_http_proxy_tests.erl
deleted file mode 100644
index acb1974..0000000
--- a/test/couchdb/couchdb_http_proxy_tests.erl
+++ /dev/null
@@ -1,462 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_http_proxy_tests).
-
--include("couch_eunit.hrl").
-
--record(req, {method=get, path="", headers=[], body="", opts=[]}).
-
--define(CONFIG_FIXTURE_TEMP,
-    begin
-        FileName = filename:join([?TEMPDIR, ?tempfile() ++ ".ini"]),
-        {ok, Fd} = file:open(FileName, write),
-        ok = file:truncate(Fd),
-        ok = file:close(Fd),
-        FileName
-    end).
--define(TIMEOUT, 5000).
-
-
-start() ->
-    % we have to write any config changes to temp ini file to not loose them
-    % when supervisor will kill all children due to reaching restart threshold
-    % (each httpd_global_handlers changes causes couch_httpd restart)
-    couch_server_sup:start_link(?CONFIG_CHAIN ++ [?CONFIG_FIXTURE_TEMP]),
-    % 49151 is IANA Reserved, let's assume no one is listening there
-    couch_config:set("httpd_global_handlers", "_error",
-        "{couch_httpd_proxy, handle_proxy_req, <<\"http://127.0.0.1:49151/\">>}"
-    ),
-    ok.
-
-stop(_) ->
-    couch_server_sup:stop(),
-    ok.
-
-setup() ->
-    {ok, Pid} = test_web:start_link(),
-    Value = lists:flatten(io_lib:format(
-        "{couch_httpd_proxy, handle_proxy_req, ~p}",
-        [list_to_binary(proxy_url())])),
-    couch_config:set("httpd_global_handlers", "_test", Value),
-    % let couch_httpd restart
-    timer:sleep(100),
-    Pid.
-
-teardown(Pid) ->
-    erlang:monitor(process, Pid),
-    test_web:stop(),
-    receive
-        {'DOWN', _, _, Pid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, test_web_stop})
-    end.
-
-
-http_proxy_test_() ->
-    {
-        "HTTP Proxy handler tests",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            {
-                foreach,
-                fun setup/0, fun teardown/1,
-                [
-                    fun should_proxy_basic_request/1,
-                    fun should_return_alternative_status/1,
-                    fun should_respect_trailing_slash/1,
-                    fun should_proxy_headers/1,
-                    fun should_proxy_host_header/1,
-                    fun should_pass_headers_back/1,
-                    fun should_use_same_protocol_version/1,
-                    fun should_proxy_body/1,
-                    fun should_proxy_body_back/1,
-                    fun should_proxy_chunked_body/1,
-                    fun should_proxy_chunked_body_back/1,
-                    fun should_rewrite_location_header/1,
-                    fun should_not_rewrite_external_locations/1,
-                    fun should_rewrite_relative_location/1,
-                    fun should_refuse_connection_to_backend/1
-                ]
-            }
-
-        }
-    }.
-
-
-should_proxy_basic_request(_) ->
-    Remote = fun(Req) ->
-        'GET' = Req:get(method),
-        "/" = Req:get(path),
-        0 = Req:get(body_length),
-        <<>> = Req:recv_body(),
-        {ok, {200, [{"Content-Type", "text/plain"}], "ok"}}
-    end,
-    Local = fun
-        ({ok, "200", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    ?_test(check_request(#req{}, Remote, Local)).
-
-should_return_alternative_status(_) ->
-    Remote = fun(Req) ->
-        "/alternate_status" = Req:get(path),
-        {ok, {201, [], "ok"}}
-    end,
-    Local = fun
-        ({ok, "201", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{path = "/alternate_status"},
-    ?_test(check_request(Req, Remote, Local)).
-
-should_respect_trailing_slash(_) ->
-    Remote = fun(Req) ->
-        "/trailing_slash/" = Req:get(path),
-        {ok, {200, [], "ok"}}
-    end,
-    Local = fun
-        ({ok, "200", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{path="/trailing_slash/"},
-    ?_test(check_request(Req, Remote, Local)).
-
-should_proxy_headers(_) ->
-    Remote = fun(Req) ->
-        "/passes_header" = Req:get(path),
-        "plankton" = Req:get_header_value("X-CouchDB-Ralph"),
-        {ok, {200, [], "ok"}}
-    end,
-    Local = fun
-        ({ok, "200", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{
-        path="/passes_header",
-        headers=[{"X-CouchDB-Ralph", "plankton"}]
-    },
-    ?_test(check_request(Req, Remote, Local)).
-
-should_proxy_host_header(_) ->
-    Remote = fun(Req) ->
-        "/passes_host_header" = Req:get(path),
-        "www.google.com" = Req:get_header_value("Host"),
-        {ok, {200, [], "ok"}}
-    end,
-    Local = fun
-        ({ok, "200", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{
-        path="/passes_host_header",
-        headers=[{"Host", "www.google.com"}]
-    },
-    ?_test(check_request(Req, Remote, Local)).
-
-should_pass_headers_back(_) ->
-    Remote = fun(Req) ->
-        "/passes_header_back" = Req:get(path),
-        {ok, {200, [{"X-CouchDB-Plankton", "ralph"}], "ok"}}
-    end,
-    Local = fun
-        ({ok, "200", Headers, "ok"}) ->
-            lists:member({"X-CouchDB-Plankton", "ralph"}, Headers);
-        (_) ->
-            false
-    end,
-    Req = #req{path="/passes_header_back"},
-    ?_test(check_request(Req, Remote, Local)).
-
-should_use_same_protocol_version(_) ->
-    Remote = fun(Req) ->
-        "/uses_same_version" = Req:get(path),
-        {1, 0} = Req:get(version),
-        {ok, {200, [], "ok"}}
-    end,
-    Local = fun
-        ({ok, "200", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{
-        path="/uses_same_version",
-        opts=[{http_vsn, {1, 0}}]
-    },
-    ?_test(check_request(Req, Remote, Local)).
-
-should_proxy_body(_) ->
-    Remote = fun(Req) ->
-        'PUT' = Req:get(method),
-        "/passes_body" = Req:get(path),
-        <<"Hooray!">> = Req:recv_body(),
-        {ok, {201, [], "ok"}}
-    end,
-    Local = fun
-        ({ok, "201", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{
-        method=put,
-        path="/passes_body",
-        body="Hooray!"
-    },
-    ?_test(check_request(Req, Remote, Local)).
-
-should_proxy_body_back(_) ->
-    BodyChunks = [<<"foo">>, <<"bar">>, <<"bazinga">>],
-    Remote = fun(Req) ->
-        'GET' = Req:get(method),
-        "/passes_eof_body" = Req:get(path),
-        {raw, {200, [{"Connection", "close"}], BodyChunks}}
-    end,
-    Local = fun
-        ({ok, "200", _, "foobarbazinga"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{path="/passes_eof_body"},
-    ?_test(check_request(Req, Remote, Local)).
-
-should_proxy_chunked_body(_) ->
-    BodyChunks = [<<"foo">>, <<"bar">>, <<"bazinga">>],
-    Remote = fun(Req) ->
-        'POST' = Req:get(method),
-        "/passes_chunked_body" = Req:get(path),
-        RecvBody = fun
-            ({Length, Chunk}, [Chunk | Rest]) ->
-                Length = size(Chunk),
-                Rest;
-            ({0, []}, []) ->
-                ok
-        end,
-        ok = Req:stream_body(1024 * 1024, RecvBody, BodyChunks),
-        {ok, {201, [], "ok"}}
-    end,
-    Local = fun
-        ({ok, "201", _, "ok"}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{
-        method=post,
-        path="/passes_chunked_body",
-        headers=[{"Transfer-Encoding", "chunked"}],
-        body=chunked_body(BodyChunks)
-    },
-    ?_test(check_request(Req, Remote, Local)).
-
-should_proxy_chunked_body_back(_) ->
-    ?_test(begin
-        Remote = fun(Req) ->
-            'GET' = Req:get(method),
-            "/passes_chunked_body_back" = Req:get(path),
-            BodyChunks = [<<"foo">>, <<"bar">>, <<"bazinga">>],
-            {chunked, {200, [{"Transfer-Encoding", "chunked"}], BodyChunks}}
-        end,
-        Req = #req{
-            path="/passes_chunked_body_back",
-            opts=[{stream_to, self()}]
-        },
-
-        Resp = check_request(Req, Remote, no_local),
-        ?assertMatch({ibrowse_req_id, _}, Resp),
-        {_, ReqId} = Resp,
-
-        % Grab headers from response
-        receive
-            {ibrowse_async_headers, ReqId, "200", Headers} ->
-                ?assertEqual("chunked",
-                             proplists:get_value("Transfer-Encoding", Headers)),
-            ibrowse:stream_next(ReqId)
-        after 1000 ->
-            throw({error, timeout})
-        end,
-
-        ?assertEqual(<<"foobarbazinga">>, recv_body(ReqId, [])),
-        ?assertEqual(was_ok, test_web:check_last())
-    end).
-
-should_refuse_connection_to_backend(_) ->
-    Local = fun
-        ({ok, "500", _, _}) ->
-            true;
-        (_) ->
-            false
-    end,
-    Req = #req{opts=[{url, server_url("/_error")}]},
-    ?_test(check_request(Req, no_remote, Local)).
-
-should_rewrite_location_header(_) ->
-    {
-        "Testing location header rewrites",
-        do_rewrite_tests([
-            {"Location", proxy_url() ++ "/foo/bar",
-                         server_url() ++ "/foo/bar"},
-            {"Content-Location", proxy_url() ++ "/bing?q=2",
-                                 server_url() ++ "/bing?q=2"},
-            {"Uri", proxy_url() ++ "/zip#frag",
-                    server_url() ++ "/zip#frag"},
-            {"Destination", proxy_url(),
-                            server_url() ++ "/"}
-        ])
-    }.
-
-should_not_rewrite_external_locations(_) ->
-    {
-        "Testing no rewrite of external locations",
-        do_rewrite_tests([
-            {"Location", external_url() ++ "/search",
-                         external_url() ++ "/search"},
-            {"Content-Location", external_url() ++ "/s?q=2",
-                                 external_url() ++ "/s?q=2"},
-            {"Uri", external_url() ++ "/f#f",
-                    external_url() ++ "/f#f"},
-            {"Destination", external_url() ++ "/f?q=2#f",
-                            external_url() ++ "/f?q=2#f"}
-        ])
-    }.
-
-should_rewrite_relative_location(_) ->
-    {
-        "Testing relative rewrites",
-        do_rewrite_tests([
-            {"Location", "/foo",
-                         server_url() ++ "/foo"},
-            {"Content-Location", "bar",
-                                 server_url() ++ "/bar"},
-            {"Uri", "/zing?q=3",
-                    server_url() ++ "/zing?q=3"},
-            {"Destination", "bing?q=stuff#yay",
-                            server_url() ++ "/bing?q=stuff#yay"}
-        ])
-    }.
-
-
-do_rewrite_tests(Tests) ->
-    lists:map(fun({Header, Location, Url}) ->
-        should_rewrite_header(Header, Location, Url)
-    end, Tests).
-
-should_rewrite_header(Header, Location, Url) ->
-    Remote = fun(Req) ->
-        "/rewrite_test" = Req:get(path),
-        {ok, {302, [{Header, Location}], "ok"}}
-    end,
-    Local = fun
-        ({ok, "302", Headers, "ok"}) ->
-            ?assertEqual(Url, couch_util:get_value(Header, Headers)),
-            true;
-        (E) ->
-            ?debugFmt("~p", [E]),
-            false
-    end,
-    Req = #req{path="/rewrite_test"},
-    {Header, ?_test(check_request(Req, Remote, Local))}.
-
-
-server_url() ->
-    server_url("/_test").
-
-server_url(Resource) ->
-    Addr = couch_config:get("httpd", "bind_address"),
-    Port = integer_to_list(mochiweb_socket_server:get(couch_httpd, port)),
-    lists:concat(["http://", Addr, ":", Port, Resource]).
-
-proxy_url() ->
-    "http://127.0.0.1:" ++ integer_to_list(test_web:get_port()).
-
-external_url() ->
-    "https://google.com".
-
-check_request(Req, Remote, Local) ->
-    case Remote of
-        no_remote ->
-            ok;
-        _ ->
-            test_web:set_assert(Remote)
-    end,
-    Url = case proplists:lookup(url, Req#req.opts) of
-        none ->
-            server_url() ++ Req#req.path;
-        {url, DestUrl} ->
-            DestUrl
-    end,
-    Opts = [{headers_as_is, true} | Req#req.opts],
-    Resp =ibrowse:send_req(
-        Url, Req#req.headers, Req#req.method, Req#req.body, Opts
-    ),
-    %?debugFmt("ibrowse response: ~p", [Resp]),
-    case Local of
-        no_local ->
-            ok;
-        _ ->
-            ?assert(Local(Resp))
-    end,
-    case {Remote, Local} of
-        {no_remote, _} ->
-            ok;
-        {_, no_local} ->
-            ok;
-        _ ->
-            ?assertEqual(was_ok, test_web:check_last())
-    end,
-    Resp.
-
-chunked_body(Chunks) ->
-    chunked_body(Chunks, []).
-
-chunked_body([], Acc) ->
-    iolist_to_binary(lists:reverse(Acc, "0\r\n\r\n"));
-chunked_body([Chunk | Rest], Acc) ->
-    Size = to_hex(size(Chunk)),
-    chunked_body(Rest, ["\r\n", Chunk, "\r\n", Size | Acc]).
-
-to_hex(Val) ->
-    to_hex(Val, []).
-
-to_hex(0, Acc) ->
-    Acc;
-to_hex(Val, Acc) ->
-    to_hex(Val div 16, [hex_char(Val rem 16) | Acc]).
-
-hex_char(V) when V < 10 -> $0 + V;
-hex_char(V) -> $A + V - 10.
-
-recv_body(ReqId, Acc) ->
-    receive
-        {ibrowse_async_response, ReqId, Data} ->
-            recv_body(ReqId, [Data | Acc]);
-        {ibrowse_async_response_end, ReqId} ->
-            iolist_to_binary(lists:reverse(Acc));
-        Else ->
-            throw({error, unexpected_mesg, Else})
-    after ?TIMEOUT ->
-        throw({error, timeout})
-    end.

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_modules_load_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_modules_load_tests.erl b/test/couchdb/couchdb_modules_load_tests.erl
deleted file mode 100644
index 4eaa42b..0000000
--- a/test/couchdb/couchdb_modules_load_tests.erl
+++ /dev/null
@@ -1,68 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_modules_load_tests).
-
--include("couch_eunit.hrl").
-
-
-modules_load_test_() ->
-    {
-        "Verify that all modules loads",
-        should_load_modules()
-    }.
-
-
-should_load_modules() ->
-    Modules = [
-        couch_auth_cache,
-        couch_btree,
-        couch_changes,
-        couch_compress,
-        couch_config,
-        couch_config_writer,
-        couch_db,
-        couch_db_update_notifier,
-        couch_db_update_notifier_sup,
-        couch_db_updater,
-        couch_doc,
-        % Fails unless couch_config gen_server is started.
-        % couch_ejson_compare,
-        couch_event_sup,
-        couch_external_manager,
-        couch_external_server,
-        couch_file,
-        couch_httpd,
-        couch_httpd_db,
-        couch_httpd_external,
-        couch_httpd_misc_handlers,
-        couch_httpd_rewrite,
-        couch_httpd_stats_handlers,
-        couch_key_tree,
-        couch_log,
-        couch_os_process,
-        couch_query_servers,
-        couch_ref_counter,
-        couch_server,
-        couch_server_sup,
-        couch_stats_aggregator,
-        couch_stats_collector,
-        couch_stream,
-        couch_task_status,
-        couch_util,
-        couch_work_queue,
-        json_stream_parse
-    ],
-    [should_load_module(Mod) || Mod <- Modules].
-
-should_load_module(Mod) ->
-    {atom_to_list(Mod), ?_assertMatch({module, _}, code:load_file(Mod))}.

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_os_daemons_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_os_daemons_tests.erl b/test/couchdb/couchdb_os_daemons_tests.erl
deleted file mode 100644
index aa949c9..0000000
--- a/test/couchdb/couchdb_os_daemons_tests.erl
+++ /dev/null
@@ -1,228 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_os_daemons_tests).
-
--include("couch_eunit.hrl").
-
-%% keep in sync with couchdb/couch_os_daemons.erl
--record(daemon, {
-    port,
-    name,
-    cmd,
-    kill,
-    status=running,
-    cfg_patterns=[],
-    errors=[],
-    buf=[]
-}).
-
--define(DAEMON_CONFIGER, "os_daemon_configer.escript").
--define(DAEMON_LOOPER, "os_daemon_looper.escript").
--define(DAEMON_BAD_PERM, "os_daemon_bad_perm.sh").
--define(DAEMON_CAN_REBOOT, "os_daemon_can_reboot.sh").
--define(DAEMON_DIE_ON_BOOT, "os_daemon_die_on_boot.sh").
--define(DAEMON_DIE_QUICKLY, "os_daemon_die_quickly.sh").
--define(DELAY, 100).
--define(TIMEOUT, 1000).
-
-
-setup(DName) ->
-    {ok, CfgPid} = couch_config:start_link(?CONFIG_CHAIN),
-    {ok, OsDPid} = couch_os_daemons:start_link(),
-    couch_config:set("os_daemons", DName,
-                     filename:join([?FIXTURESDIR, DName]), false),
-    timer:sleep(?DELAY),  % sleep a bit to let daemon set kill flag
-    {CfgPid, OsDPid}.
-
-teardown(_, {CfgPid, OsDPid}) ->
-    erlang:monitor(process, CfgPid),
-    couch_config:stop(),
-    receive
-        {'DOWN', _, _, CfgPid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, config_stop})
-    end,
-
-    erlang:monitor(process, OsDPid),
-    exit(OsDPid, normal),
-    receive
-        {'DOWN', _, _, OsDPid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, os_daemon_stop})
-    end.
-
-
-os_daemons_test_() ->
-    {
-        "OS Daemons tests",
-        {
-            foreachx,
-            fun setup/1, fun teardown/2,
-            [{?DAEMON_LOOPER, Fun} || Fun <- [
-                fun should_check_daemon/2,
-                fun should_check_daemon_table_form/2,
-                fun should_clean_tables_on_daemon_remove/2,
-                fun should_spawn_multiple_daemons/2,
-                fun should_keep_alive_one_daemon_on_killing_other/2
-            ]]
-        }
-    }.
-
-configuration_reader_test_() ->
-    {
-        "OS Daemon requests CouchDB configuration",
-        {
-            foreachx,
-            fun setup/1, fun teardown/2,
-            [{?DAEMON_CONFIGER,
-              fun should_read_write_config_settings_by_daemon/2}]
-
-        }
-    }.
-
-error_test_() ->
-    {
-        "OS Daemon process error tests",
-        {
-            foreachx,
-            fun setup/1, fun teardown/2,
-            [{?DAEMON_BAD_PERM, fun should_fail_due_to_lack_of_permissions/2},
-             {?DAEMON_DIE_ON_BOOT, fun should_die_on_boot/2},
-             {?DAEMON_DIE_QUICKLY, fun should_die_quickly/2},
-             {?DAEMON_CAN_REBOOT, fun should_not_being_halted/2}]
-        }
-    }.
-
-
-should_check_daemon(DName, _) ->
-    ?_test(begin
-        {ok, [D]} = couch_os_daemons:info([table]),
-        check_daemon(D, DName)
-    end).
-
-should_check_daemon_table_form(DName, _) ->
-    ?_test(begin
-        {ok, Tab} = couch_os_daemons:info(),
-        [D] = ets:tab2list(Tab),
-        check_daemon(D, DName)
-    end).
-
-should_clean_tables_on_daemon_remove(DName, _) ->
-    ?_test(begin
-        couch_config:delete("os_daemons", DName, false),
-        {ok, Tab2} = couch_os_daemons:info(),
-        ?_assertEqual([], ets:tab2list(Tab2))
-    end).
-
-should_spawn_multiple_daemons(DName, _) ->
-    ?_test(begin
-        couch_config:set("os_daemons", "bar",
-                         filename:join([?FIXTURESDIR, DName]), false),
-        couch_config:set("os_daemons", "baz",
-                         filename:join([?FIXTURESDIR, DName]), false),
-        timer:sleep(?DELAY),
-        {ok, Daemons} = couch_os_daemons:info([table]),
-        lists:foreach(fun(D) ->
-            check_daemon(D)
-        end, Daemons),
-        {ok, Tab} = couch_os_daemons:info(),
-        lists:foreach(fun(D) ->
-            check_daemon(D)
-        end, ets:tab2list(Tab))
-    end).
-
-should_keep_alive_one_daemon_on_killing_other(DName, _) ->
-    ?_test(begin
-        couch_config:set("os_daemons", "bar",
-                         filename:join([?FIXTURESDIR, DName]), false),
-        timer:sleep(?DELAY),
-        {ok, Daemons} = couch_os_daemons:info([table]),
-        lists:foreach(fun(D) ->
-            check_daemon(D)
-        end, Daemons),
-
-        couch_config:delete("os_daemons", "bar", false),
-        timer:sleep(?DELAY),
-        {ok, [D2]} = couch_os_daemons:info([table]),
-        check_daemon(D2, DName),
-
-        {ok, Tab} = couch_os_daemons:info(),
-        [T] = ets:tab2list(Tab),
-        check_daemon(T, DName)
-    end).
-
-should_read_write_config_settings_by_daemon(DName, _) ->
-    ?_test(begin
-        % have to wait till daemon run all his tests
-        % see daemon's script for more info
-        timer:sleep(?TIMEOUT),
-        {ok, [D]} = couch_os_daemons:info([table]),
-        check_daemon(D, DName)
-    end).
-
-should_fail_due_to_lack_of_permissions(DName, _) ->
-    ?_test(should_halts(DName, 1000)).
-
-should_die_on_boot(DName, _) ->
-    ?_test(should_halts(DName, 1000)).
-
-should_die_quickly(DName, _) ->
-    ?_test(should_halts(DName, 4000)).
-
-should_not_being_halted(DName, _) ->
-    ?_test(begin
-        timer:sleep(1000),
-        {ok, [D1]} = couch_os_daemons:info([table]),
-        check_daemon(D1, DName, 0),
-
-        % Should reboot every two seconds. We're at 1s, so wait
-        % until 3s to be in the middle of the next invocation's
-        % life span.
-
-        timer:sleep(2000),
-        {ok, [D2]} = couch_os_daemons:info([table]),
-        check_daemon(D2, DName, 1),
-
-        % If the kill command changed, that means we rebooted the process.
-        ?assertNotEqual(D1#daemon.kill, D2#daemon.kill)
-    end).
-
-should_halts(DName, Time) ->
-    timer:sleep(Time),
-    {ok, [D]} = couch_os_daemons:info([table]),
-    check_dead(D, DName),
-    couch_config:delete("os_daemons", DName, false).
-
-check_daemon(D) ->
-    check_daemon(D, D#daemon.name).
-
-check_daemon(D, Name) ->
-    check_daemon(D, Name, 0).
-
-check_daemon(D, Name, Errs) ->
-    ?assert(is_port(D#daemon.port)),
-    ?assertEqual(Name, D#daemon.name),
-    ?assertNotEqual(undefined, D#daemon.kill),
-    ?assertEqual(running, D#daemon.status),
-    ?assertEqual(Errs, length(D#daemon.errors)),
-    ?assertEqual([], D#daemon.buf).
-
-check_dead(D, Name) ->
-    ?assert(is_port(D#daemon.port)),
-    ?assertEqual(Name, D#daemon.name),
-    ?assertNotEqual(undefined, D#daemon.kill),
-    ?assertEqual(halted, D#daemon.status),
-    ?assertEqual(nil, D#daemon.errors),
-    ?assertEqual(nil, D#daemon.buf).

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_os_proc_pool.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_os_proc_pool.erl b/test/couchdb/couchdb_os_proc_pool.erl
deleted file mode 100644
index 1bb266e..0000000
--- a/test/couchdb/couchdb_os_proc_pool.erl
+++ /dev/null
@@ -1,179 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_os_proc_pool).
-
--include("couch_eunit.hrl").
--include_lib("couchdb/couch_db.hrl").
-
--define(TIMEOUT, 3000).
-
-
-start() ->
-    {ok, Pid} = couch_server_sup:start_link(?CONFIG_CHAIN),
-    couch_config:set("query_server_config", "os_process_limit", "3", false),
-    Pid.
-
-stop(Pid) ->
-    couch_server_sup:stop(),
-    erlang:monitor(process, Pid),
-    receive
-        {'DOWN', _, _, Pid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, server_stop})
-    end.
-
-
-os_proc_pool_test_() ->
-    {
-        "OS processes pool tests",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            [
-                should_block_new_proc_on_full_pool(),
-                should_free_slot_on_proc_unexpected_exit()
-            ]
-        }
-    }.
-
-
-should_block_new_proc_on_full_pool() ->
-    ?_test(begin
-        Client1 = spawn_client(),
-        Client2 = spawn_client(),
-        Client3 = spawn_client(),
-
-        ?assertEqual(ok, ping_client(Client1)),
-        ?assertEqual(ok, ping_client(Client2)),
-        ?assertEqual(ok, ping_client(Client3)),
-
-        Proc1 = get_client_proc(Client1, "1"),
-        Proc2 = get_client_proc(Client2, "2"),
-        Proc3 = get_client_proc(Client3, "3"),
-
-        ?assertNotEqual(Proc1, Proc2),
-        ?assertNotEqual(Proc2, Proc3),
-        ?assertNotEqual(Proc3, Proc1),
-
-        Client4 = spawn_client(),
-        ?assertEqual(timeout, ping_client(Client4)),
-
-        ?assertEqual(ok, stop_client(Client1)),
-        ?assertEqual(ok, ping_client(Client4)),
-
-        Proc4 = get_client_proc(Client4, "4"),
-        ?assertEqual(Proc1, Proc4),
-
-        lists:map(fun(C) ->
-            ?assertEqual(ok, stop_client(C))
-        end, [Client2, Client3, Client4])
-    end).
-
-should_free_slot_on_proc_unexpected_exit() ->
-    ?_test(begin
-        Client1 = spawn_client(),
-        Client2 = spawn_client(),
-        Client3 = spawn_client(),
-
-        ?assertEqual(ok, ping_client(Client1)),
-        ?assertEqual(ok, ping_client(Client2)),
-        ?assertEqual(ok, ping_client(Client3)),
-
-        Proc1 = get_client_proc(Client1, "1"),
-        Proc2 = get_client_proc(Client2, "2"),
-        Proc3 = get_client_proc(Client3, "3"),
-
-        ?assertNotEqual(Proc1, Proc2),
-        ?assertNotEqual(Proc2, Proc3),
-        ?assertNotEqual(Proc3, Proc1),
-
-        ?assertEqual(ok, kill_client(Client1)),
-
-        Client4 = spawn_client(),
-        ?assertEqual(ok, ping_client(Client4)),
-
-        Proc4 = get_client_proc(Client4, "4"),
-        ?assertNotEqual(Proc4, Proc1),
-        ?assertNotEqual(Proc2, Proc4),
-        ?assertNotEqual(Proc3, Proc4),
-
-        lists:map(fun(C) ->
-            ?assertEqual(ok, stop_client(C))
-        end, [Client2, Client3, Client4])
-    end).
-
-
-spawn_client() ->
-    Parent = self(),
-    Ref = make_ref(),
-    Pid = spawn(fun() ->
-        Proc = couch_query_servers:get_os_process(<<"javascript">>),
-        loop(Parent, Ref, Proc)
-    end),
-    {Pid, Ref}.
-
-ping_client({Pid, Ref}) ->
-    Pid ! ping,
-    receive
-        {pong, Ref} ->
-            ok
-    after ?TIMEOUT ->
-        timeout
-    end.
-
-get_client_proc({Pid, Ref}, ClientName) ->
-    Pid ! get_proc,
-    receive
-        {proc, Ref, Proc} -> Proc
-    after ?TIMEOUT ->
-        erlang:error({assertion_failed,
-                     [{module, ?MODULE},
-                      {line, ?LINE},
-                      {reason, "Timeout getting client "
-                               ++ ClientName ++ " proc"}]})
-    end.
-
-stop_client({Pid, Ref}) ->
-    Pid ! stop,
-    receive
-        {stop, Ref} ->
-            ok
-    after ?TIMEOUT ->
-        timeout
-    end.
-
-kill_client({Pid, Ref}) ->
-    Pid ! die,
-    receive
-        {die, Ref} ->
-            ok
-    after ?TIMEOUT ->
-        timeout
-    end.
-
-loop(Parent, Ref, Proc) ->
-    receive
-        ping ->
-            Parent ! {pong, Ref},
-            loop(Parent, Ref, Proc);
-        get_proc  ->
-            Parent ! {proc, Ref, Proc},
-            loop(Parent, Ref, Proc);
-        stop ->
-            couch_query_servers:ret_os_process(Proc),
-            Parent ! {stop, Ref};
-        die ->
-            Parent ! {die, Ref},
-            exit(some_error)
-    end.

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_update_conflicts_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_update_conflicts_tests.erl b/test/couchdb/couchdb_update_conflicts_tests.erl
deleted file mode 100644
index 7226860..0000000
--- a/test/couchdb/couchdb_update_conflicts_tests.erl
+++ /dev/null
@@ -1,243 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_update_conflicts_tests).
-
--include("couch_eunit.hrl").
--include_lib("couchdb/couch_db.hrl").
-
--define(i2l(I), integer_to_list(I)).
--define(ADMIN_USER, {userctx, #user_ctx{roles=[<<"_admin">>]}}).
--define(DOC_ID, <<"foobar">>).
--define(NUM_CLIENTS, [100, 500, 1000, 2000, 5000, 10000]).
--define(TIMEOUT, 10000).
-
-
-start() ->
-    {ok, Pid} = couch_server_sup:start_link(?CONFIG_CHAIN),
-    couch_config:set("couchdb", "delayed_commits", "true", false),
-    Pid.
-
-stop(Pid) ->
-    erlang:monitor(process, Pid),
-    couch_server_sup:stop(),
-    receive
-        {'DOWN', _, _, Pid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, server_stop})
-    end.
-
-setup() ->
-    DbName = ?tempdb(),
-    {ok, Db} = couch_db:create(DbName, [?ADMIN_USER, overwrite]),
-    Doc = couch_doc:from_json_obj({[{<<"_id">>, ?DOC_ID},
-                                    {<<"value">>, 0}]}),
-    {ok, Rev} = couch_db:update_doc(Db, Doc, []),
-    ok = couch_db:close(Db),
-    RevStr = couch_doc:rev_to_str(Rev),
-    {DbName, RevStr}.
-setup(_) ->
-    setup().
-
-teardown({DbName, _}) ->
-    ok = couch_server:delete(DbName, []),
-    ok.
-teardown(_, {DbName, _RevStr}) ->
-    teardown({DbName, _RevStr}).
-
-
-view_indexes_cleanup_test_() ->
-    {
-        "Update conflicts",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            [
-                concurrent_updates(),
-                couchdb_188()
-            ]
-        }
-    }.
-
-concurrent_updates()->
-    {
-        "Concurrent updates",
-        {
-            foreachx,
-            fun setup/1, fun teardown/2,
-            [{NumClients, fun should_concurrently_update_doc/2}
-             || NumClients <- ?NUM_CLIENTS]
-        }
-    }.
-
-couchdb_188()->
-    {
-        "COUCHDB-188",
-        {
-            foreach,
-            fun setup/0, fun teardown/1,
-            [fun should_bulk_create_delete_doc/1]
-        }
-    }.
-
-
-should_concurrently_update_doc(NumClients, {DbName, InitRev})->
-     {?i2l(NumClients) ++ " clients",
-      {inorder,
-       [{"update doc",
-         {timeout, ?TIMEOUT div 1000,
-          ?_test(concurrent_doc_update(NumClients, DbName, InitRev))}},
-        {"ensure in single leaf",
-         ?_test(ensure_in_single_revision_leaf(DbName))}]}}.
-
-should_bulk_create_delete_doc({DbName, InitRev})->
-    ?_test(bulk_delete_create(DbName, InitRev)).
-
-
-concurrent_doc_update(NumClients, DbName, InitRev) ->
-    Clients = lists:map(
-        fun(Value) ->
-            ClientDoc = couch_doc:from_json_obj({[
-                {<<"_id">>, ?DOC_ID},
-                {<<"_rev">>, InitRev},
-                {<<"value">>, Value}
-            ]}),
-            Pid = spawn_client(DbName, ClientDoc),
-            {Value, Pid, erlang:monitor(process, Pid)}
-        end,
-        lists:seq(1, NumClients)),
-
-    lists:foreach(fun({_, Pid, _}) -> Pid ! go end, Clients),
-
-    {NumConflicts, SavedValue} = lists:foldl(
-        fun({Value, Pid, MonRef}, {AccConflicts, AccValue}) ->
-            receive
-                {'DOWN', MonRef, process, Pid, {ok, _NewRev}} ->
-                    {AccConflicts, Value};
-                {'DOWN', MonRef, process, Pid, conflict} ->
-                    {AccConflicts + 1, AccValue};
-                {'DOWN', MonRef, process, Pid, Error} ->
-                    erlang:error({assertion_failed,
-                         [{module, ?MODULE},
-                          {line, ?LINE},
-                          {reason, "Client " ++ ?i2l(Value)
-                                             ++ " got update error: "
-                                             ++ couch_util:to_list(Error)}]})
-            after ?TIMEOUT div 2 ->
-                 erlang:error({assertion_failed,
-                         [{module, ?MODULE},
-                          {line, ?LINE},
-                          {reason, "Timeout waiting for client "
-                                   ++ ?i2l(Value) ++ " to die"}]})
-            end
-        end, {0, nil}, Clients),
-    ?assertEqual(NumClients - 1, NumConflicts),
-
-    {ok, Db} = couch_db:open_int(DbName, []),
-    {ok, Leaves} = couch_db:open_doc_revs(Db, ?DOC_ID, all, []),
-    ok = couch_db:close(Db),
-    ?assertEqual(1, length(Leaves)),
-
-    [{ok, Doc2}] = Leaves,
-    {JsonDoc} = couch_doc:to_json_obj(Doc2, []),
-    ?assertEqual(SavedValue, couch_util:get_value(<<"value">>, JsonDoc)).
-
-ensure_in_single_revision_leaf(DbName) ->
-    {ok, Db} = couch_db:open_int(DbName, []),
-    {ok, Leaves} = couch_db:open_doc_revs(Db, ?DOC_ID, all, []),
-    ok = couch_db:close(Db),
-    [{ok, Doc}] = Leaves,
-
-    %% FIXME: server restart won't work from test side
-    %% stop(ok),
-    %% start(),
-
-    {ok, Db2} = couch_db:open_int(DbName, []),
-    {ok, Leaves2} = couch_db:open_doc_revs(Db2, ?DOC_ID, all, []),
-    ok = couch_db:close(Db2),
-    ?assertEqual(1, length(Leaves2)),
-
-    [{ok, Doc2}] = Leaves,
-    ?assertEqual(Doc, Doc2).
-    
-bulk_delete_create(DbName, InitRev) ->
-    {ok, Db} = couch_db:open_int(DbName, []),
-    
-    DeletedDoc = couch_doc:from_json_obj({[
-        {<<"_id">>, ?DOC_ID},
-        {<<"_rev">>, InitRev},
-        {<<"_deleted">>, true}
-    ]}),
-    NewDoc = couch_doc:from_json_obj({[
-        {<<"_id">>, ?DOC_ID},
-        {<<"value">>, 666}
-    ]}),
-
-    {ok, Results} = couch_db:update_docs(Db, [DeletedDoc, NewDoc], []),
-    ok = couch_db:close(Db),
-
-    ?assertEqual(2, length([ok || {ok, _} <- Results])),
-    [{ok, Rev1}, {ok, Rev2}] = Results,
-    
-    {ok, Db2} = couch_db:open_int(DbName, []),
-    {ok, [{ok, Doc1}]} = couch_db:open_doc_revs(
-        Db2, ?DOC_ID, [Rev1], [conflicts, deleted_conflicts]),
-    {ok, [{ok, Doc2}]} = couch_db:open_doc_revs(
-        Db2, ?DOC_ID, [Rev2], [conflicts, deleted_conflicts]),
-    ok = couch_db:close(Db2),
-
-    {Doc1Props} = couch_doc:to_json_obj(Doc1, []),
-    {Doc2Props} = couch_doc:to_json_obj(Doc2, []),
-
-    %% Document was deleted
-    ?assert(couch_util:get_value(<<"_deleted">>, Doc1Props)),
-    %% New document not flagged as deleted
-    ?assertEqual(undefined, couch_util:get_value(<<"_deleted">>,
-                                                 Doc2Props)),
-    %% New leaf revision has the right value
-    ?assertEqual(666, couch_util:get_value(<<"value">>,
-                                           Doc2Props)),
-    %% Deleted document has no conflicts
-    ?assertEqual(undefined, couch_util:get_value(<<"_conflicts">>,
-                                                 Doc1Props)),
-    %% Deleted document has no deleted conflicts
-    ?assertEqual(undefined, couch_util:get_value(<<"_deleted_conflicts">>,
-                                                 Doc1Props)),
-    %% New leaf revision doesn't have conflicts
-    ?assertEqual(undefined, couch_util:get_value(<<"_conflicts">>,
-                                                 Doc1Props)),
-    %% New leaf revision doesn't have deleted conflicts
-    ?assertEqual(undefined, couch_util:get_value(<<"_deleted_conflicts">>,
-                                                 Doc1Props)),
-
-    %% Deleted revision has position 2
-    ?assertEqual(2, element(1, Rev1)),
-    %% New leaf revision has position 1
-    ?assertEqual(1, element(1, Rev2)).
-
-
-spawn_client(DbName, Doc) ->
-    spawn(fun() ->
-        {ok, Db} = couch_db:open_int(DbName, []),
-        receive
-            go -> ok
-        end,
-        erlang:yield(),
-        Result = try
-            couch_db:update_doc(Db, Doc, [])
-        catch _:Error ->
-            Error
-        end,
-        ok = couch_db:close(Db),
-        exit(Result)
-    end).

http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/0ce84d8e/test/couchdb/couchdb_vhosts_tests.erl
----------------------------------------------------------------------
diff --git a/test/couchdb/couchdb_vhosts_tests.erl b/test/couchdb/couchdb_vhosts_tests.erl
deleted file mode 100644
index 94b1957..0000000
--- a/test/couchdb/couchdb_vhosts_tests.erl
+++ /dev/null
@@ -1,441 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-%   http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(couchdb_vhosts_tests).
-
--include("couch_eunit.hrl").
--include_lib("couchdb/couch_db.hrl").
-
--define(ADMIN_USER, {user_ctx, #user_ctx{roles=[<<"_admin">>]}}).
--define(TIMEOUT, 1000).
--define(iofmt(S, A), lists:flatten(io_lib:format(S, A))).
-
-
-start() ->
-    {ok, Pid} = couch_server_sup:start_link(?CONFIG_CHAIN),
-    Pid.
-
-stop(Pid) ->
-    erlang:monitor(process, Pid),
-    couch_server_sup:stop(),
-    receive
-        {'DOWN', _, _, Pid, _} ->
-            ok
-    after ?TIMEOUT ->
-        throw({timeout, server_stop})
-    end.
-
-setup() ->
-    DbName = ?tempdb(),
-    {ok, Db} = couch_db:create(DbName, [?ADMIN_USER]),
-    Doc = couch_doc:from_json_obj({[
-        {<<"_id">>, <<"doc1">>},
-        {<<"value">>, 666}
-    ]}),
-
-    Doc1 = couch_doc:from_json_obj({[
-        {<<"_id">>, <<"_design/doc1">>},
-        {<<"shows">>, {[
-            {<<"test">>, <<"function(doc, req) {
-            return { json: {
-                    requested_path: '/' + req.requested_path.join('/'),
-                    path: '/' + req.path.join('/')}};}">>}
-        ]}},
-        {<<"rewrites">>, [
-            {[
-                {<<"from">>, <<"/">>},
-                {<<"to">>, <<"_show/test">>}
-            ]}
-        ]}
-    ]}),
-    {ok, _} = couch_db:update_docs(Db, [Doc, Doc1]),
-    couch_db:ensure_full_commit(Db),
-    couch_db:close(Db),
-
-    Addr = couch_config:get("httpd", "bind_address", "127.0.0.1"),
-    Port = integer_to_list(mochiweb_socket_server:get(couch_httpd, port)),
-    Url = "http://" ++ Addr ++ ":" ++ Port,
-    {Url, ?b2l(DbName)}.
-
-setup_oauth() ->
-    DbName = ?tempdb(),
-    {ok, Db} = couch_db:create(DbName, [?ADMIN_USER]),
-
-    couch_config:set("couch_httpd_auth", "authentication_db",
-                     ?b2l(?tempdb()), false),
-    couch_config:set("oauth_token_users", "otoksec1", "joe", false),
-    couch_config:set("oauth_consumer_secrets", "consec1", "foo", false),
-    couch_config:set("oauth_token_secrets", "otoksec1", "foobar", false),
-    couch_config:set("couch_httpd_auth", "require_valid_user", "true", false),
-
-    ok = couch_config:set(
-        "vhosts", "oauth-example.com",
-        "/" ++ ?b2l(DbName) ++ "/_design/test/_rewrite/foobar", false),
-
-    DDoc = couch_doc:from_json_obj({[
-        {<<"_id">>, <<"_design/test">>},
-        {<<"language">>, <<"javascript">>},
-        {<<"rewrites">>, [
-            {[
-                {<<"from">>, <<"foobar">>},
-                {<<"to">>, <<"_info">>}
-            ]}
-        ]}
-    ]}),
-    {ok, _} = couch_db:update_doc(Db, DDoc, []),
-
-    couch_db:ensure_full_commit(Db),
-    couch_db:close(Db),
-
-    Addr = couch_config:get("httpd", "bind_address", "127.0.0.1"),
-    Port = integer_to_list(mochiweb_socket_server:get(couch_httpd, port)),
-    Url = "http://" ++ Addr ++ ":" ++ Port,
-    {Url, ?b2l(DbName)}.
-
-teardown({_, DbName}) ->
-    ok = couch_server:delete(?l2b(DbName), []),
-    ok.
-
-
-vhosts_test_() ->
-    {
-        "Virtual Hosts rewrite tests",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            {
-                foreach,
-                fun setup/0, fun teardown/1,
-                [
-                    fun should_return_database_info/1,
-                    fun should_return_revs_info/1,
-                    fun should_serve_utils_for_vhost/1,
-                    fun should_return_virtual_request_path_field_in_request/1,
-                    fun should_return_real_request_path_field_in_request/1,
-                    fun should_match_wildcard_vhost/1,
-                    fun should_return_db_info_for_wildcard_vhost_for_custom_db/1,
-                    fun should_replace_rewrite_variables_for_db_and_doc/1,
-                    fun should_return_db_info_for_vhost_with_resource/1,
-                    fun should_return_revs_info_for_vhost_with_resource/1,
-                    fun should_return_db_info_for_vhost_with_wildcard_resource/1,
-                    fun should_return_path_for_vhost_with_wildcard_host/1
-                ]
-            }
-        }
-    }.
-
-oauth_test_() ->
-    {
-        "Virtual Hosts OAuth tests",
-        {
-            setup,
-            fun start/0, fun stop/1,
-            {
-                foreach,
-                fun setup_oauth/0, fun teardown/1,
-                [
-                    fun should_require_auth/1,
-                    fun should_succeed_oauth/1,
-                    fun should_fail_oauth_with_wrong_credentials/1
-                ]
-            }
-        }
-    }.
-
-
-should_return_database_info({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "example.com", "/" ++ DbName, false),
-        case test_request:get(Url, [], [{host_header, "example.com"}]) of
-            {ok, _, _, Body} ->
-                {JsonBody} = ejson:decode(Body),
-                ?assert(proplists:is_defined(<<"db_name">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_return_revs_info({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "example.com", "/" ++ DbName, false),
-        case test_request:get(Url ++ "/doc1?revs_info=true", [],
-                              [{host_header, "example.com"}]) of
-            {ok, _, _, Body} ->
-                {JsonBody} = ejson:decode(Body),
-                ?assert(proplists:is_defined(<<"_revs_info">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_serve_utils_for_vhost({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "example.com", "/" ++ DbName, false),
-        case test_request:get(Url ++ "/_utils/index.html", [],
-                              [{host_header, "example.com"}]) of
-            {ok, _, _, Body} ->
-                ?assertMatch(<<"<!DOCTYPE html>", _/binary>>, Body);
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_return_virtual_request_path_field_in_request({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "example1.com",
-                              "/" ++ DbName ++ "/_design/doc1/_rewrite/",
-                              false),
-        case test_request:get(Url, [], [{host_header, "example1.com"}]) of
-            {ok, _, _, Body} ->
-                {Json} = ejson:decode(Body),
-                ?assertEqual(<<"/">>,
-                             proplists:get_value(<<"requested_path">>, Json));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_return_real_request_path_field_in_request({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "example1.com",
-                              "/" ++ DbName ++ "/_design/doc1/_rewrite/",
-                              false),
-        case test_request:get(Url, [], [{host_header, "example1.com"}]) of
-            {ok, _, _, Body} ->
-                {Json} = ejson:decode(Body),
-                Path = ?l2b("/" ++ DbName ++ "/_design/doc1/_show/test"),
-                ?assertEqual(Path, proplists:get_value(<<"path">>, Json));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_match_wildcard_vhost({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "*.example.com",
-                              "/" ++ DbName ++ "/_design/doc1/_rewrite", false),
-        case test_request:get(Url, [], [{host_header, "test.example.com"}]) of
-            {ok, _, _, Body} ->
-                {Json} = ejson:decode(Body),
-                Path = ?l2b("/" ++ DbName ++ "/_design/doc1/_show/test"),
-                ?assertEqual(Path, proplists:get_value(<<"path">>, Json));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_return_db_info_for_wildcard_vhost_for_custom_db({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", ":dbname.example1.com",
-                              "/:dbname", false),
-        Host = DbName ++ ".example1.com",
-        case test_request:get(Url, [], [{host_header, Host}]) of
-            {ok, _, _, Body} ->
-                {JsonBody} = ejson:decode(Body),
-                ?assert(proplists:is_defined(<<"db_name">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_replace_rewrite_variables_for_db_and_doc({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts",":appname.:dbname.example1.com",
-                              "/:dbname/_design/:appname/_rewrite/", false),
-        Host = "doc1." ++ DbName ++ ".example1.com",
-        case test_request:get(Url, [], [{host_header, Host}]) of
-            {ok, _, _, Body} ->
-                {Json} = ejson:decode(Body),
-                Path = ?l2b("/" ++ DbName ++ "/_design/doc1/_show/test"),
-                ?assertEqual(Path, proplists:get_value(<<"path">>, Json));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_return_db_info_for_vhost_with_resource({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts",
-                              "example.com/test", "/" ++ DbName, false),
-        ReqUrl = Url ++ "/test",
-        case test_request:get(ReqUrl, [], [{host_header, "example.com"}]) of
-            {ok, _, _, Body} ->
-                {JsonBody} = ejson:decode(Body),
-                ?assert(proplists:is_defined(<<"db_name">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-
-should_return_revs_info_for_vhost_with_resource({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts",
-                              "example.com/test", "/" ++ DbName, false),
-        ReqUrl = Url ++ "/test/doc1?revs_info=true",
-        case test_request:get(ReqUrl, [], [{host_header, "example.com"}]) of
-            {ok, _, _, Body} ->
-                {JsonBody} = ejson:decode(Body),
-                ?assert(proplists:is_defined(<<"_revs_info">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_return_db_info_for_vhost_with_wildcard_resource({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "*.example2.com/test", "/*", false),
-        ReqUrl = Url ++ "/test",
-        Host = DbName ++ ".example2.com",
-        case test_request:get(ReqUrl, [], [{host_header, Host}]) of
-            {ok, _, _, Body} ->
-                {JsonBody} = ejson:decode(Body),
-                ?assert(proplists:is_defined(<<"db_name">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_return_path_for_vhost_with_wildcard_host({Url, DbName}) ->
-    ?_test(begin
-        ok = couch_config:set("vhosts", "*/test1",
-                              "/" ++ DbName ++ "/_design/doc1/_show/test",
-                              false),
-        case test_request:get(Url ++ "/test1") of
-            {ok, _, _, Body} ->
-                {Json} = ejson:decode(Body),
-                Path = ?l2b("/" ++ DbName ++ "/_design/doc1/_show/test"),
-                ?assertEqual(Path, proplists:get_value(<<"path">>, Json));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_require_auth({Url, _}) ->
-    ?_test(begin
-        case test_request:get(Url, [], [{host_header, "oauth-example.com"}]) of
-            {ok, Code, _, Body} ->
-                ?assertEqual(401, Code),
-                {JsonBody} = ejson:decode(Body),
-                ?assertEqual(<<"unauthorized">>,
-                             couch_util:get_value(<<"error">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_succeed_oauth({Url, _}) ->
-    ?_test(begin
-        AuthDbName = couch_config:get("couch_httpd_auth", "authentication_db"),
-        JoeDoc = couch_doc:from_json_obj({[
-            {<<"_id">>, <<"org.couchdb.user:joe">>},
-            {<<"type">>, <<"user">>},
-            {<<"name">>, <<"joe">>},
-            {<<"roles">>, []},
-            {<<"password_sha">>, <<"fe95df1ca59a9b567bdca5cbaf8412abd6e06121">>},
-            {<<"salt">>, <<"4e170ffeb6f34daecfd814dfb4001a73">>}
-        ]}),
-        {ok, AuthDb} = couch_db:open_int(?l2b(AuthDbName), [?ADMIN_USER]),
-        {ok, _} = couch_db:update_doc(AuthDb, JoeDoc, [?ADMIN_USER]),
-
-        Host = "oauth-example.com",
-        Consumer = {"consec1", "foo", hmac_sha1},
-        SignedParams = oauth:sign(
-            "GET", "http://" ++ Host ++ "/", [], Consumer, "otoksec1", "foobar"),
-        OAuthUrl = oauth:uri(Url, SignedParams),
-
-        case test_request:get(OAuthUrl, [], [{host_header, Host}]) of
-            {ok, Code, _, Body} ->
-                ?assertEqual(200, Code),
-                {JsonBody} = ejson:decode(Body),
-                ?assertEqual(<<"test">>,
-                             couch_util:get_value(<<"name">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).
-
-should_fail_oauth_with_wrong_credentials({Url, _}) ->
-    ?_test(begin
-        AuthDbName = couch_config:get("couch_httpd_auth", "authentication_db"),
-        JoeDoc = couch_doc:from_json_obj({[
-            {<<"_id">>, <<"org.couchdb.user:joe">>},
-            {<<"type">>, <<"user">>},
-            {<<"name">>, <<"joe">>},
-            {<<"roles">>, []},
-            {<<"password_sha">>, <<"fe95df1ca59a9b567bdca5cbaf8412abd6e06121">>},
-            {<<"salt">>, <<"4e170ffeb6f34daecfd814dfb4001a73">>}
-        ]}),
-        {ok, AuthDb} = couch_db:open_int(?l2b(AuthDbName), [?ADMIN_USER]),
-        {ok, _} = couch_db:update_doc(AuthDb, JoeDoc, [?ADMIN_USER]),
-
-        Host = "oauth-example.com",
-        Consumer = {"consec1", "bad_secret", hmac_sha1},
-        SignedParams = oauth:sign(
-            "GET", "http://" ++ Host ++ "/", [], Consumer, "otoksec1", "foobar"),
-        OAuthUrl = oauth:uri(Url, SignedParams),
-
-        case test_request:get(OAuthUrl, [], [{host_header, Host}]) of
-            {ok, Code, _, Body} ->
-                ?assertEqual(401, Code),
-                {JsonBody} = ejson:decode(Body),
-                ?assertEqual(<<"unauthorized">>,
-                             couch_util:get_value(<<"error">>, JsonBody));
-            Else ->
-                erlang:error({assertion_failed,
-                             [{module, ?MODULE},
-                              {line, ?LINE},
-                              {reason, ?iofmt("Request failed: ~p", [Else])}]})
-        end
-    end).