You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ga...@apache.org on 2019/01/14 08:44:54 UTC
[couchdb] 01/01: extra partition size tests
This is an automated email from the ASF dual-hosted git repository.
garren pushed a commit to branch partition-size-tests
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit c0f430d45c6e4cbebff26fab463882c8ed191711
Author: Garren Smith <ga...@gmail.com>
AuthorDate: Mon Jan 14 10:44:30 2019 +0200
extra partition size tests
---
test/elixir/test/partition_size_test.exs | 101 +++++++++++++++++++++++++++++++
1 file changed, 101 insertions(+)
diff --git a/test/elixir/test/partition_size_test.exs b/test/elixir/test/partition_size_test.exs
index 289d1e1..4d48ea3 100644
--- a/test/elixir/test/partition_size_test.exs
+++ b/test/elixir/test/partition_size_test.exs
@@ -74,6 +74,18 @@ defmodule PartitionSizeTest do
assert info["sizes"]["active"] == 0
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 "simple partition size", context do
db_name = context[:db_name]
save_doc(db_name, %{_id: "foo:bar", val: 42})
@@ -262,4 +274,93 @@ defmodule PartitionSizeTest do
db_info = get_db_info(db_name)
assert esize == db_info["sizes"]["external"]
end
+
+ test "compaction decreases size of partition", context do
+ db_name = context[:db_name]
+ mk_docs(db_name)
+
+ partition = "000"
+
+ doc_id = "#{partition}:doc-with-attachment"
+ doc = %{
+ _id: doc_id,
+ _attachments: %{
+ "foo.txt": %{
+ content_type: "text/plain",
+ data: Base.encode64("This is a text document to save")
+ }
+ }
+ }
+
+
+ doc_rev = save_doc(db_name, doc)
+
+ resp = Couch.delete("/#{db_name}/#{doc_id}", query: %{rev: doc_rev})
+ assert resp.status_code == 200
+
+ info1 = get_partition_info(db_name, partition)
+
+ compact(db_name)
+
+ info2 = get_partition_info(db_name, partition)
+
+ assert info2["sizes"]["active"] <= info1["sizes"]["active"]
+ assert info2["sizes"]["external"] <= info1["sizes"]["external"]
+ end
+
+ test "partition activity not affect other partition sizes", context do
+ db_name = context[:db_name]
+ mk_docs(db_name)
+
+ partition1 = "000"
+ partition2 = "001"
+
+ doc_id = "#{partition1}:doc-with-attachment"
+
+ info2 = get_partition_info(db_name, partition2)
+
+ doc = %{
+ _id: doc_id,
+ _attachments: %{
+ "foo.txt": %{
+ content_type: "text/plain",
+ data: Base.encode64("This is a text document to save")
+ }
+ }
+ }
+
+ doc_rev = save_doc(db_name, doc)
+
+ info2_attach = get_partition_info(db_name, partition2)
+ assert info2 == info2_attach
+
+ doc = Enum.into(%{
+ another: "add another field",
+ _rev: doc_rev
+ }, doc)
+
+ doc_rev = save_doc(db_name, doc)
+
+ info2_update = get_partition_info(db_name, partition2)
+ assert info2 == info2_update
+
+ resp = Couch.delete("/#{db_name}/#{doc_id}", query: %{rev: doc_rev})
+ assert resp.status_code == 200
+
+ compact(db_name)
+
+ info2_compact = get_partition_info(db_name, partition2)
+ assert info2 == info2_compact
+ end
+
+ test "unknown partition return's zero", context do
+ db_name = context[:db_name]
+ mk_docs(db_name)
+
+ info = get_partition_info(db_name, "unknown")
+ assert info["doc_count"] == 0
+ assert info["doc_del_count"] == 0
+ assert info["sizes"]["external"] == 0
+ assert info["sizes"]["active"] == 0
+ end
end