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:53 UTC

[couchdb] branch partition-size-tests created (now c0f430d)

This is an automated email from the ASF dual-hosted git repository.

garren pushed a change to branch partition-size-tests
in repository https://gitbox.apache.org/repos/asf/couchdb.git.


      at c0f430d  extra partition size tests

This branch includes the following new commits:

     new c0f430d  extra partition size tests

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[couchdb] 01/01: extra partition size tests

Posted by ga...@apache.org.
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