def testPost_MigratesStoppageAlerts(self): testing_common.AddTests(['Master'], ['b'], {'suite': {'foo': {}}}) test_path = 'Master/b/suite/foo' test_key = utils.TestKey(test_path) test_container_key = utils.GetTestContainerKey(test_key) row_key = graph_data.Row(id=100, parent=test_container_key, value=5).put() stoppage_alert.CreateStoppageAlert(test_key.get(), row_key.get()).put() self.assertIsNotNone( stoppage_alert.GetStoppageAlert('Master/b/suite/foo', 100)) self.assertIsNone( stoppage_alert.GetStoppageAlert('Master/b/suite/bar', 100)) self.testapp.post( '/migrate_test_names', { 'old_pattern': 'Master/b/suite/foo', 'new_pattern': 'Master/b/suite/bar', }) self.ExecuteTaskQueueTasks('/migrate_test_names', migrate_test_names._TASK_QUEUE_NAME) self.assertIsNotNone( stoppage_alert.GetStoppageAlert('Master/b/suite/bar', 100)) self.assertIsNone( stoppage_alert.GetStoppageAlert('Master/b/suite/foo', 100))
def _CreateStoppageAlerts(test, last_row): """Yields put operations for any StoppageAlert that may be created. A stoppage alert is an alert created to warn people that data has not been received for a particular test for some length of time. An alert will only be created if the stoppage_alert_delay property of the sheriff is non-zero -- the value of this property is the number of days that should pass before an alert is created. Args: test: A Test entity. last_row: The Row entity that was last added. Yields: Either one op.db.Put, or nothing. """ if not test.sheriff: return sheriff_entity = test.sheriff.get() warn_sheriff_delay_days = sheriff_entity.stoppage_alert_delay if warn_sheriff_delay_days < 0: return now = datetime.datetime.now() warn_sheriff_delta = datetime.timedelta(days=warn_sheriff_delay_days) earliest_warn_time = now - warn_sheriff_delta if last_row.timestamp < earliest_warn_time: if not stoppage_alert.GetStoppageAlert(test.test_path, last_row.revision): yield op.db.Put(stoppage_alert.CreateStoppageAlert(test, last_row))
def testGetStoppageAlert_EntityExists_ReturnsEntity(self): test, row = self._AddSampleData() stoppage_alert.CreateStoppageAlert(test, row).put() self.assertIsNotNone( stoppage_alert.GetStoppageAlert(test.test_path, row.revision))
def testGetStoppageAlert_NoEntity_ReturnsNone(self): self.assertIsNone(stoppage_alert.GetStoppageAlert( 'M/b/suite/bar', 123))