summaryrefslogtreecommitdiff
path: root/buildscripts/tests
diff options
context:
space:
mode:
authorYves Duhem <yves.duhem@mongodb.com>2017-07-18 16:43:17 -0400
committerYves Duhem <yves.duhem@mongodb.com>2017-07-28 17:17:10 -0400
commit2318942c2ec98c0107a83d72f352d2878490ce09 (patch)
treece2f86ead07626417e5126dcc69b4baefeeb1531 /buildscripts/tests
parent01dfdbcc283551e9128b769e3c8852162370dd68 (diff)
downloadmongo-2318942c2ec98c0107a83d72f352d2878490ce09.tar.gz
SERVER-30210 Script to fetch the test lifecycle tags
Diffstat (limited to 'buildscripts/tests')
-rw-r--r--buildscripts/tests/test_fetch_test_lifecycle.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/buildscripts/tests/test_fetch_test_lifecycle.py b/buildscripts/tests/test_fetch_test_lifecycle.py
new file mode 100644
index 00000000000..471199b1d9a
--- /dev/null
+++ b/buildscripts/tests/test_fetch_test_lifecycle.py
@@ -0,0 +1,79 @@
+"""Unit tests for the fetch_test_lifecycle.py script."""
+
+import unittest
+
+import buildscripts.fetch_test_lifecycle as fetch
+
+
+class TestFetchTestLifecycle(unittest.TestCase):
+ def test_get_metadata_revision(self):
+ metadata_repo = MockMetadataRepository([("metadata_revision_05", "mongo_revision_06"),
+ ("metadata_revision_04", "mongo_revision_06"),
+ ("metadata_revision_03", "mongo_revision_02"),
+ ("metadata_revision_02", "mongo_revision_02"),
+ ("metadata_revision_01", None)])
+
+ mongo_repo = MockMongoRepository(["mongo_revision_07",
+ "mongo_revision_06",
+ "mongo_revision_05",
+ "mongo_revision_04",
+ "mongo_revision_03",
+ "mongo_revision_02",
+ "mongo_revision_01"])
+
+ self._check_metadata_revision(metadata_repo, mongo_repo,
+ "mongo_revision_07",
+ "metadata_revision_05")
+
+ self._check_metadata_revision(metadata_repo, mongo_repo,
+ "mongo_revision_06",
+ "metadata_revision_05")
+
+ self._check_metadata_revision(metadata_repo, mongo_repo,
+ "mongo_revision_05",
+ "metadata_revision_03")
+
+ self._check_metadata_revision(metadata_repo, mongo_repo,
+ "mongo_revision_04",
+ "metadata_revision_03")
+
+ self._check_metadata_revision(metadata_repo, mongo_repo,
+ "mongo_revision_03",
+ "metadata_revision_03")
+
+ self._check_metadata_revision(metadata_repo, mongo_repo,
+ "mongo_revision_02",
+ "metadata_revision_03")
+
+ self._check_metadata_revision(metadata_repo, mongo_repo,
+ "mongo_revision_01",
+ None)
+
+ def _check_metadata_revision(self, metadata_repo, mongo_repo, mongo_revision,
+ expected_metadata_revision):
+ metadata_revision = fetch._get_metadata_revision(metadata_repo, mongo_repo, "project",
+ mongo_revision)
+ self.assertEqual(expected_metadata_revision, metadata_revision)
+
+
+class MockMongoRepository(object):
+ def __init__(self, revisions):
+ self.revisions = revisions
+
+ def is_ancestor(self, parent, child):
+ return (parent in self.revisions and child in self.revisions and
+ self.revisions.index(parent) >= self.revisions.index(child))
+
+
+class MockMetadataRepository(object):
+ def __init__(self, references_revisions):
+ self.references_revisions = references_revisions
+
+ def list_revisions(self):
+ return [r[0] for r in self.references_revisions]
+
+ def get_reference(self, revision, project):
+ for (metadata_revision, mongo_revision) in self.references_revisions:
+ if metadata_revision == revision:
+ return mongo_revision
+ return None