summaryrefslogtreecommitdiff
path: root/src/mango/test/22-covering-index-test.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mango/test/22-covering-index-test.py')
-rw-r--r--src/mango/test/22-covering-index-test.py92
1 files changed, 73 insertions, 19 deletions
diff --git a/src/mango/test/22-covering-index-test.py b/src/mango/test/22-covering-index-test.py
index 52a7f3612..176dd2d81 100644
--- a/src/mango/test/22-covering-index-test.py
+++ b/src/mango/test/22-covering-index-test.py
@@ -13,19 +13,7 @@
import mango
-class CoveringIndexTests(mango.UserDocsTests):
- def is_covered(self, selector, fields, index, use_index=None):
- resp = self.db.find(selector, fields=fields, use_index=use_index, explain=True)
- self.assertEqual(resp["index"]["type"], "json")
- self.assertEqual(resp["index"]["name"], index)
- self.assertEqual(resp["mrargs"]["include_docs"], False)
- self.assertEqual(resp["covered"], True)
-
- def is_not_covered(self, selector, fields, use_index=None):
- resp = self.db.find(selector, fields=fields, use_index=use_index, explain=True)
- self.assertEqual(resp["mrargs"]["include_docs"], True)
- self.assertEqual(resp["covered"], False)
-
+class CoveringIndexTests:
def test_index_covers_query_1field_index_id(self):
self.is_covered({"age": {"$gte": 32}}, ["_id"], "age")
@@ -88,6 +76,45 @@ class CoveringIndexTests(mango.UserDocsTests):
use_index="twitter",
)
+
+class RegularCoveringIndexTests(mango.UserDocsTests, CoveringIndexTests):
+ @classmethod
+ def setUpClass(klass):
+ super(RegularCoveringIndexTests, klass).setUpClass()
+
+ def is_covered(self, selector, fields, index, use_index=None):
+ resp = self.db.find(selector, fields=fields, use_index=use_index, explain=True)
+ self.assertEqual(resp["index"]["type"], "json")
+ self.assertEqual(resp["index"]["name"], index)
+ self.assertEqual(resp["mrargs"]["include_docs"], False)
+ self.assertEqual(resp["covered"], True)
+
+ def is_not_covered(self, selector, fields, use_index=None):
+ resp = self.db.find(selector, fields=fields, use_index=use_index, explain=True)
+ self.assertEqual(resp["mrargs"]["include_docs"], True)
+ self.assertEqual(resp["covered"], False)
+
+ def test_covering_index_provides_correct_answer_2field_index(self):
+ docs = self.db.find(
+ {"company": {"$exists": True}, "manager": True},
+ sort=[{"company": "asc"}],
+ fields=["company"],
+ use_index="company_and_manager",
+ )
+ expected = [
+ {"company": "Affluex"},
+ {"company": "Globoil"},
+ {"company": "Lyria"},
+ {"company": "Manglo"},
+ {"company": "Myopium"},
+ {"company": "Niquent"},
+ {"company": "Oulu"},
+ {"company": "Prosely"},
+ {"company": "Tasmania"},
+ {"company": "Zialactic"},
+ ]
+ self.assertEqual(docs, expected)
+
def test_covering_index_provides_correct_answer_id(self):
docs = self.db.find({"age": {"$gte": 32}}, fields=["_id"])
expected = [
@@ -107,23 +134,50 @@ class CoveringIndexTests(mango.UserDocsTests):
]
self.assertEqual(docs, expected)
+
+class PartitionedCoveringIndexTests(mango.PartitionedUserDocsTests, CoveringIndexTests):
+ @classmethod
+ def setUpClass(klass):
+ super(PartitionedCoveringIndexTests, klass).setUpClass()
+
+ def is_covered(self, selector, fields, index, use_index=None):
+ resp = self.db.find(
+ selector, fields=fields, use_index=use_index, explain=True, partition="0"
+ )
+ self.assertEqual(resp["index"]["type"], "json")
+ self.assertEqual(resp["index"]["name"], index)
+ self.assertEqual(resp["mrargs"]["include_docs"], False)
+ self.assertEqual(resp["covered"], True)
+
+ def is_not_covered(self, selector, fields, use_index=None):
+ resp = self.db.find(
+ selector, fields=fields, use_index=use_index, explain=True, partition="0"
+ )
+ self.assertEqual(resp["mrargs"]["include_docs"], True)
+ self.assertEqual(resp["covered"], False)
+
def test_covering_index_provides_correct_answer_2field_index(self):
docs = self.db.find(
{"company": {"$exists": True}, "manager": True},
sort=[{"company": "asc"}],
fields=["company"],
use_index="company_and_manager",
+ partition="0",
)
expected = [
- {"company": "Affluex"},
- {"company": "Globoil"},
- {"company": "Lyria"},
{"company": "Manglo"},
- {"company": "Myopium"},
- {"company": "Niquent"},
{"company": "Oulu"},
{"company": "Prosely"},
{"company": "Tasmania"},
- {"company": "Zialactic"},
]
self.assertEqual(docs, expected)
+
+ def test_covering_index_provides_correct_answer_id(self):
+ docs = self.db.find({"age": {"$gte": 32}}, fields=["_id"], partition="0")
+ expected = [
+ {"_id": "0:0461444c-e60a-457d-a4bb-b8d811853f21"},
+ {"_id": "0:5b61abc1-a3d3-4092-b9d7-ced90e675536"},
+ {"_id": "0:71562648-6acb-42bc-a182-df6b1f005b09"},
+ {"_id": "0:b31dad3f-ae8b-4f86-8327-dfe8770beb27"},
+ ]
+ self.assertEqual(sorted(docs, key=lambda x: x["_id"]), expected)