diff options
author | Juanjo Rodriguez <juanjo@apache.org> | 2020-05-25 08:11:45 +0200 |
---|---|---|
committer | Juanjo Rodriguez <jjrodrig@gmail.com> | 2020-05-27 00:25:17 +0200 |
commit | 70512e57649ac69312beffdc8243a2bf263f7611 (patch) | |
tree | fb42404474c7b1185a64c00a76c70d87d48519e4 | |
parent | dbed92e2431ca646aff8da39223a34c4891d75bc (diff) | |
download | couchdb-70512e57649ac69312beffdc8243a2bf263f7611.tar.gz |
move compact and replicate functions into CouchTestCase shared module
-rw-r--r-- | test/elixir/lib/couch/db_test.ex | 56 | ||||
-rw-r--r-- | test/elixir/test/auth_cache_test.exs | 15 | ||||
-rw-r--r-- | test/elixir/test/compact_test.exs | 12 | ||||
-rw-r--r-- | test/elixir/test/partition_size_limit_test.exs | 12 | ||||
-rw-r--r-- | test/elixir/test/purge_test.exs | 20 | ||||
-rw-r--r-- | test/elixir/test/replication_test.exs | 38 | ||||
-rw-r--r-- | test/elixir/test/rev_stemming_test.exs | 36 | ||||
-rw-r--r-- | test/elixir/test/users_db_test.exs | 22 |
8 files changed, 56 insertions, 155 deletions
diff --git a/test/elixir/lib/couch/db_test.ex b/test/elixir/lib/couch/db_test.ex index e3f32f839..a61db1424 100644 --- a/test/elixir/lib/couch/db_test.ex +++ b/test/elixir/lib/couch/db_test.ex @@ -278,6 +278,60 @@ defmodule Couch.DBTest do resp.body end + def compact(db_name) do + resp = Couch.post("/#{db_name}/_compact") + assert resp.status_code == 202 + + retry_until( + fn -> Map.get(info(db_name), "compact_running") == false end, + 200, + 10_000 + ) + + resp.body + end + + def replicate(src, tgt, options \\ []) do + username = System.get_env("EX_USERNAME") || "adm" + password = System.get_env("EX_PASSWORD") || "pass" + + {userinfo, options} = Keyword.pop(options, :userinfo) + + userinfo = + if userinfo == nil do + "#{username}:#{password}" + else + userinfo + end + + src = set_user(src, userinfo) + tgt = set_user(tgt, userinfo) + + defaults = [headers: [], body: %{}, timeout: 30_000] + options = defaults |> Keyword.merge(options) |> Enum.into(%{}) + + %{body: body} = options + body = [source: src, target: tgt] |> Enum.into(body) + options = Map.put(options, :body, body) + + resp = Couch.post("/_replicate", Enum.to_list(options)) + assert HTTPotion.Response.success?(resp), "#{inspect(resp)}" + resp.body + end + + defp set_user(uri, userinfo) do + case URI.parse(uri) do + %{scheme: nil} -> + uri + + %{userinfo: nil} = uri -> + URI.to_string(Map.put(uri, :userinfo, userinfo)) + + _ -> + uri + end + end + def view(db_name, view_name, options \\ nil, keys \\ nil) do [view_root, view_name] = String.split(view_name, "/") @@ -423,7 +477,7 @@ defmodule Couch.DBTest do Enum.each(setting.nodes, fn node_value -> node = elem(node_value, 0) value = elem(node_value, 1) - + if value == ~s(""\\n) or value == "" or value == nil do resp = Couch.delete( diff --git a/test/elixir/test/auth_cache_test.exs b/test/elixir/test/auth_cache_test.exs index 2ba396de7..8b7c29c71 100644 --- a/test/elixir/test/auth_cache_test.exs +++ b/test/elixir/test/auth_cache_test.exs @@ -66,14 +66,6 @@ defmodule AuthCacheTest do sess end - defp wait_until_compact_complete(db_name) do - retry_until( - fn -> Map.get(info(db_name), "compact_running") == false end, - 200, - 10_000 - ) - end - defp assert_cache(event, user, password, expect \\ :expect_login_success) do hits_before = hits() misses_before = misses() @@ -112,12 +104,6 @@ defmodule AuthCacheTest do end end - defp compact(db_name) do - resp = Couch.post("/#{db_name}/_compact") - assert resp.status_code == 202 - resp.body - end - def save_doc(db_name, body) do resp = Couch.put("/#{db_name}/#{body["_id"]}", body: body) assert resp.status_code in [201, 202] @@ -206,7 +192,6 @@ defmodule AuthCacheTest do # there was a cache hit assert_cache(:expect_hit, "johndoe", "123456") compact(db_name) - wait_until_compact_complete(db_name) assert_cache(:expect_hit, "johndoe", "123456") end end diff --git a/test/elixir/test/compact_test.exs b/test/elixir/test/compact_test.exs index d99a7a78e..461a1d347 100644 --- a/test/elixir/test/compact_test.exs +++ b/test/elixir/test/compact_test.exs @@ -82,18 +82,6 @@ defmodule CompactTest do assert Couch.post("/#{db}/_ensure_full_commit").body["ok"] == true end - defp compact(db) do - assert Couch.post("/#{db}/_compact").status_code == 202 - - retry_until( - fn -> - Couch.get("/#{db}").body["compact_running"] == false - end, - 200, - 20_000 - ) - end - defp get_info(db) do Couch.get("/#{db}").body end diff --git a/test/elixir/test/partition_size_limit_test.exs b/test/elixir/test/partition_size_limit_test.exs index 5141d0d8b..6ef686611 100644 --- a/test/elixir/test/partition_size_limit_test.exs +++ b/test/elixir/test/partition_size_limit_test.exs @@ -68,18 +68,6 @@ defmodule PartitionSizeLimitTest do assert resp.status_code in [201, 202] end - defp compact(db) do - assert Couch.post("/#{db}/_compact").status_code == 202 - - retry_until( - fn -> - Couch.get("/#{db}").body["compact_running"] == false - end, - 200, - 20_000 - ) - end - test "fill partition manually", context do db_name = context[:db_name] partition = "foo" diff --git a/test/elixir/test/purge_test.exs b/test/elixir/test/purge_test.exs index 3920b3f26..5fc03f16b 100644 --- a/test/elixir/test/purge_test.exs +++ b/test/elixir/test/purge_test.exs @@ -53,12 +53,7 @@ defmodule PurgeTest do test_all_docs_twice(db_name, num_docs, 0, 2) # purge sequences are preserved after compaction (COUCHDB-1021) - resp = Couch.post("/#{db_name}/_compact") - assert resp.status_code == 202 - - retry_until(fn -> - info(db_name)["compact_running"] == false - end) + compact(db_name) compacted_info = info(db_name) assert compacted_info["purge_seq"] == purged_info["purge_seq"] @@ -127,19 +122,6 @@ defmodule PurgeTest do delete_db(db_name_b) end - def replicate(src, tgt, options \\ []) do - defaults = [headers: [], body: %{}, timeout: 30_000] - options = defaults |> Keyword.merge(options) |> Enum.into(%{}) - - %{body: body} = options - body = [source: src, target: tgt] |> Enum.into(body) - options = Map.put(options, :body, body) - - resp = Couch.post("/_replicate", Enum.to_list(options)) - assert HTTPotion.Response.success?(resp), "#{inspect(resp)}" - resp.body - end - defp open_doc(db_name, id, expect \\ 200) do resp = Couch.get("/#{db_name}/#{id}") assert resp.status_code == expect diff --git a/test/elixir/test/replication_test.exs b/test/elixir/test/replication_test.exs index bdd683e97..075f65bfa 100644 --- a/test/elixir/test/replication_test.exs +++ b/test/elixir/test/replication_test.exs @@ -7,7 +7,6 @@ defmodule ReplicationTest do """ # TODO: Parameterize these - @admin_account "adm:pass" @db_pairs_prefixes [ {"remote-to-remote", "http://127.0.0.1:15984/", "http://127.0.0.1:15984/"} ] @@ -1584,30 +1583,6 @@ defmodule ReplicationTest do resp.body end - def replicate(src, tgt, options \\ []) do - {userinfo, options} = Keyword.pop(options, :userinfo) - - userinfo = - if userinfo == nil do - @admin_account - else - userinfo - end - - src = set_user(src, userinfo) - tgt = set_user(tgt, userinfo) - - defaults = [headers: [], body: %{}, timeout: 30_000] - options = defaults |> Keyword.merge(options) |> Enum.into(%{}) - - %{body: body} = options - body = [source: src, target: tgt] |> Enum.into(body) - options = Map.put(options, :body, body) - - resp = Couch.post("/_replicate", Enum.to_list(options)) - assert HTTPotion.Response.success?(resp), "#{inspect(resp)}" - resp.body - end def cancel_replication(src, tgt) do body = %{:cancel => true} @@ -1737,19 +1712,6 @@ defmodule ReplicationTest do end) end - def set_user(uri, userinfo) do - case URI.parse(uri) do - %{scheme: nil} -> - uri - - %{userinfo: nil} = uri -> - URI.to_string(Map.put(uri, :userinfo, userinfo)) - - _ -> - uri - end - end - def get_att1_data do File.read!(Path.expand("data/lorem.txt", __DIR__)) end diff --git a/test/elixir/test/rev_stemming_test.exs b/test/elixir/test/rev_stemming_test.exs index 51e959b48..9a16d481d 100644 --- a/test/elixir/test/rev_stemming_test.exs +++ b/test/elixir/test/rev_stemming_test.exs @@ -105,7 +105,6 @@ defmodule RevStemmingTest do assert length(resp.body["_revisions"]["ids"]) == @new_limit compact(db_name) - wait_until_compact_complete(db_name) # force reload because ETags don't honour compaction resp = @@ -147,28 +146,6 @@ defmodule RevStemmingTest do end end - defp build_uri(db_name) do - username = System.get_env("EX_USERNAME") || "adm" - password = System.get_env("EX_PASSWORD") || "pass" - - "/#{db_name}" - |> Couch.process_url() - |> URI.parse() - |> Map.put(:userinfo, "#{username}:#{password}") - |> URI.to_string() - end - - defp replicate(src, tgt) do - src_uri = build_uri(src) - tgt_uri = build_uri(tgt) - - body = %{source: src_uri, target: tgt_uri} - - resp = Couch.post("/_replicate", body: body) - assert resp.status_code == 200 - resp.body - end - def delete_db_on_exit(db_names) when is_list(db_names) do on_exit(fn -> Enum.each(db_names, fn name -> @@ -177,17 +154,4 @@ defmodule RevStemmingTest do end) end - defp compact(db_name) do - resp = Couch.post("/#{db_name}/_compact") - assert resp.status_code == 202 - resp.body - end - - defp wait_until_compact_complete(db_name) do - retry_until( - fn -> Map.get(info(db_name), "compact_running") == false end, - 200, - 10_000 - ) - end end diff --git a/test/elixir/test/users_db_test.exs b/test/elixir/test/users_db_test.exs index 1d34d8c9e..62877d542 100644 --- a/test/elixir/test/users_db_test.exs +++ b/test/elixir/test/users_db_test.exs @@ -50,28 +50,6 @@ defmodule UsersDbTest do create_db(@users_db_name) end - defp replicate(source, target, rep_options \\ []) do - headers = Keyword.get(rep_options, :headers, []) - body = Keyword.get(rep_options, :body, %{}) - - body = - body - |> Map.put("source", source) - |> Map.put("target", target) - - retry_until( - fn -> - resp = Couch.post("/_replicate", headers: headers, body: body, timeout: 10_000) - assert HTTPotion.Response.success?(resp) - assert resp.status_code == 200 - assert resp.body["ok"] - resp - end, - 500, - 20_000 - ) - end - defp save_as(db_name, doc, options) do session = Keyword.get(options, :use_session) expect_response = Keyword.get(options, :expect_response, [201, 202]) |