diff options
Diffstat (limited to 'src/mango/test/22-covering-index-test.py')
-rw-r--r-- | src/mango/test/22-covering-index-test.py | 92 |
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) |