summaryrefslogtreecommitdiff
path: root/gae/webapp/src/tasks/indexing_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'gae/webapp/src/tasks/indexing_test.py')
-rw-r--r--gae/webapp/src/tasks/indexing_test.py191
1 files changed, 191 insertions, 0 deletions
diff --git a/gae/webapp/src/tasks/indexing_test.py b/gae/webapp/src/tasks/indexing_test.py
new file mode 100644
index 0000000..5d14a56
--- /dev/null
+++ b/gae/webapp/src/tasks/indexing_test.py
@@ -0,0 +1,191 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+import unittest
+
+try:
+ from unittest import mock
+except ImportError:
+ import mock
+
+from webapp.src.proto import model
+from webapp.src.tasks import indexing
+from webapp.src.testing import unittest_base
+
+
+class IndexingHandlerTest(unittest_base.UnitTestBase):
+ """Tests for IndexingHandler.
+
+ Attributes:
+ testbed: A Testbed instance which provides local unit testing.
+ indexing_handler: A mock IndexingHandler instance.
+ """
+
+ def setUp(self):
+ """Initializes test"""
+ super(IndexingHandlerTest, self).setUp()
+ # Mocking IndexingHandler.
+ self.indexing_handler = indexing.IndexingHandler(mock.Mock())
+ self.indexing_handler.request = mock.Mock()
+
+ def testSingleJobReindexing(self):
+ """Asserts re-indexing links job and schedule successfully."""
+
+ print("\nCreating a single schedule...")
+ schedule = self.GenerateScheduleModel()
+ schedule.put()
+
+ schedules = model.ScheduleModel.query().fetch()
+ self.assertEqual(1, len(schedules))
+
+ print("Creating a job for stored schedule...")
+ for schedule in schedules:
+ job = model.JobModel()
+ job.priority = schedule.priority
+ job.test_name = schedule.test_name
+ job.period = schedule.period
+ job.build_storage_type = schedule.build_storage_type
+ job.manifest_branch = schedule.manifest_branch
+ job.build_target = schedule.build_target
+ job.pab_account_id = schedule.device_pab_account_id
+ job.shards = schedule.shards
+ job.retry_count = schedule.retry_count
+ job.gsi_storage_type = schedule.gsi_storage_type
+ job.gsi_branch = schedule.gsi_branch
+ job.gsi_build_target = schedule.gsi_build_target
+ job.gsi_pab_account_id = schedule.gsi_pab_account_id
+ job.gsi_vendor_version = schedule.gsi_vendor_version
+ job.test_storage_type = schedule.test_storage_type
+ job.test_branch = schedule.test_branch
+ job.test_build_target = schedule.test_build_target
+ job.test_pab_account_id = schedule.test_pab_account_id
+ job.put()
+
+ jobs = model.JobModel.query().fetch()
+ self.assertEqual(1, len(jobs))
+
+ print("Seeking children jobs before re-indexing...")
+ jobs = model.JobModel.query().fetch()
+ for job in jobs:
+ parent_key = job.parent_schedule
+ self.assertIsNone(parent_key)
+
+ print("Seeking children jobs after re-indexing...")
+ self.indexing_handler.request.get = mock.MagicMock(return_value="job")
+ self.indexing_handler.post()
+ jobs = model.JobModel.query().fetch()
+ for job in jobs:
+ parent_key = job.parent_schedule
+ parent_schedule = parent_key.get()
+ self.assertEqual(
+ True,
+ ((parent_schedule.priority == job.priority) and
+ (parent_schedule.test_name == job.test_name) and
+ (parent_schedule.period == job.period) and
+ (parent_schedule.build_storage_type == job.build_storage_type)
+ and (parent_schedule.manifest_branch == job.manifest_branch)
+ and (parent_schedule.build_target == job.build_target) and
+ (parent_schedule.device_pab_account_id == job.pab_account_id)
+ and (parent_schedule.shards == job.shards) and
+ (parent_schedule.retry_count == job.retry_count) and
+ (parent_schedule.gsi_storage_type == job.gsi_storage_type) and
+ (parent_schedule.gsi_branch == job.gsi_branch) and
+ (parent_schedule.gsi_build_target == job.gsi_build_target) and
+ (parent_schedule.gsi_pab_account_id == job.gsi_pab_account_id)
+ and
+ (parent_schedule.test_storage_type == job.test_storage_type)
+ and (parent_schedule.test_branch == job.test_branch) and
+ (parent_schedule.test_build_target == job.test_build_target)
+ and (parent_schedule.test_pab_account_id ==
+ job.test_pab_account_id)))
+
+ def testMultiJobReindexing(self):
+ """Asserts re-indexing links job and schedule successfully."""
+ print("\nCreating four schedules...")
+ for num in xrange(4):
+ schedule = self.GenerateScheduleModel(test_name=str(num + 1))
+ schedule.put()
+ schedule.put()
+
+ schedules = model.ScheduleModel.query().fetch()
+ self.assertEqual(4, len(schedules))
+
+ print("Creating jobs as number of test_name...")
+ for schedule in schedules:
+ for _ in xrange(int(schedule.test_name)):
+ job = model.JobModel()
+ job.priority = schedule.priority
+ job.test_name = schedule.test_name
+ job.period = schedule.period
+ job.build_storage_type = schedule.build_storage_type
+ job.manifest_branch = schedule.manifest_branch
+ job.build_target = schedule.build_target
+ job.pab_account_id = schedule.device_pab_account_id
+ job.shards = schedule.shards
+ job.retry_count = schedule.retry_count
+ job.gsi_storage_type = schedule.gsi_storage_type
+ job.gsi_branch = schedule.gsi_branch
+ job.gsi_build_target = schedule.gsi_build_target
+ job.gsi_pab_account_id = schedule.gsi_pab_account_id
+ job.gsi_vendor_version = schedule.gsi_vendor_version
+ job.test_storage_type = schedule.test_storage_type
+ job.test_branch = schedule.test_branch
+ job.test_build_target = schedule.test_build_target
+ job.test_pab_account_id = schedule.test_pab_account_id
+ job.put()
+
+ jobs = model.JobModel.query().fetch()
+ self.assertEqual(10, len(jobs))
+
+ print("Seeking children jobs before re-indexing...")
+ jobs = model.JobModel.query().fetch()
+ for job in jobs:
+ parent_key = job.parent_schedule
+ self.assertIsNone(parent_key)
+
+ print("Seeking children jobs after re-indexing...")
+ self.indexing_handler.request.get = mock.MagicMock(return_value="job")
+ self.indexing_handler.post()
+ jobs = model.JobModel.query().fetch()
+ for job in jobs:
+ parent_key = job.parent_schedule
+ parent_schedule = parent_key.get()
+ self.assertEqual(
+ True,
+ ((parent_schedule.priority == job.priority) and
+ (parent_schedule.test_name == job.test_name) and
+ (parent_schedule.period == job.period) and
+ (parent_schedule.build_storage_type == job.build_storage_type)
+ and (parent_schedule.manifest_branch == job.manifest_branch)
+ and (parent_schedule.build_target == job.build_target) and
+ (parent_schedule.device_pab_account_id == job.pab_account_id)
+ and (parent_schedule.shards == job.shards) and
+ (parent_schedule.retry_count == job.retry_count) and
+ (parent_schedule.gsi_storage_type == job.gsi_storage_type) and
+ (parent_schedule.gsi_branch == job.gsi_branch) and
+ (parent_schedule.gsi_build_target == job.gsi_build_target) and
+ (parent_schedule.gsi_pab_account_id == job.gsi_pab_account_id)
+ and
+ (parent_schedule.test_storage_type == job.test_storage_type)
+ and (parent_schedule.test_branch == job.test_branch) and
+ (parent_schedule.test_build_target == job.test_build_target)
+ and (parent_schedule.test_pab_account_id ==
+ job.test_pab_account_id)))
+
+
+if __name__ == "__main__":
+ unittest.main()