def test_environment_ready_if_last_session_deployed_after_failed(self): """Test environment ready status If last session was deployed successfully and other session was failed - environment must have status "ready". Bug: #1413260 """ session = db_session.get_session() session.add(self.environment) now = timeutils.utcnow() session_1 = models.Session(environment=self.environment, user_id='test_user_id_1', version=OLD_VERSION, state=states.SessionState.DEPLOY_FAILURE, updated=now, description={}) session_2 = models.Session(environment=self.environment, user_id='test_user_id_2', version=LATEST_VERSION, state=states.SessionState.DEPLOYED, updated=now + dt.timedelta(minutes=1), description={}) session.add_all([session_1, session_2]) session.flush() expected_status = states.EnvironmentStatus.READY actual_status = environments.EnvironmentServices.get_status( self.environment.id) self.assertEqual(expected_status, actual_status)
def test_delete_failure_get_description(self): session = db_session.get_session() session.add(self.environment) now = timeutils.utcnow() session_1 = models.Session(environment=self.environment, user_id='test_user_id_1', version=OLD_VERSION, state=states.SessionState.DELETE_FAILURE, updated=now, description={}) session.add(session_1) session.flush() expected_status = states.EnvironmentStatus.DELETE_FAILURE self.assertEqual(expected_status, self.env_services.get_status(self.environment.id)) env_id = self.environment.id description = (self.env_services.get_environment_description( env_id, session_id=None, inner=False)) self.assertEqual({}, description)
def _create_session_with_state(self, environment, user_id, state): unit = db_session.get_session() session = models.Session() session.environment_id = environment.id session.user_id = user_id session.state = state session.version = environment.version with unit.begin(): unit.add(session)
def test_get_status(self): session = db_session.get_session() session.add(self.environment) now = timeutils.utcnow() session_1 = models.Session(environment=self.environment, user_id='test_user_id_1', version=OLD_VERSION, state=states.SessionState.DEPLOY_FAILURE, updated=now, description={}) session.add(session_1) session.flush() expected_status = states.EnvironmentStatus.DEPLOY_FAILURE self.assertEqual(expected_status, self.env_services.get_status(self.environment.id))
def test_report_env_stats(self, mock_notifier): now = timeutils.utcnow() later = now + dt.timedelta(minutes=1) session = db_session.get_session() environment1 = models.Environment( name='test_environment1', tenant_id='test_tenant_id1', version=2, id='test_env_id_1', created=now, updated=later, description={ 'Objects': { 'applications': ['app1'], 'services': ['service1'] } } ) environment2 = models.Environment( name='test_environment2', tenant_id='test_tenant_id2', version=1, id='test_env_id_2', created=now, updated=later, description={ 'Objects': { 'applications': ['app2'], 'services': ['service3'] } } ) environment3 = models.Environment( name='test_environment3', tenant_id='test_tenant_id2', version=1, id='test_env_id_3', created=now, updated=later, description={} ) session_1 = models.Session( environment=environment1, user_id='test_user_id', description={}, state=states.SessionState.DEPLOYED, version=1 ) session_2 = models.Session( environment=environment2, user_id='test_user_id', description={}, state=states.SessionState.DEPLOYED, version=0 ) session_3 = models.Session( environment=environment3, user_id='test_user_id', description={}, state=states.SessionState.DEPLOY_FAILURE, version=1 ) task_1 = models.Task( id='task_id_1', environment=environment1, description={}, created=now, started=now, updated=later, finished=later ) task_2 = models.Task( id='task_id_2', environment=environment2, description={}, created=now, started=now, updated=later, finished=later ) task_3 = models.Task( id='task_id_3', environment=environment3, description={}, created=now, started=now, updated=later, finished=later ) status_1 = models.Status( id='status_id_1', task_id='task_id_1', text='Deployed', level='info' ) status_2 = models.Status( id='status_id_2', task_id='task_id_2', text='Deployed', level='info' ) status_3 = models.Status( id='status_id_3', task_id='task_id_3', text='Something was wrong', level='error' ) session.add_all([environment1, environment2, environment3]) session.add_all([session_1, session_2, session_3]) session.add_all([task_1, task_2, task_3]) session.add_all([status_1, status_2, status_3]) session.flush() self.service.report_env_stats() self.assertEqual(mock_notifier.call_count, 2) dict_env_1 = {'version': 2, 'updated': later, 'tenant_id': u'test_tenant_id1', 'created': now, 'description_text': u'', 'status': 'ready', 'id': u'test_env_id_1', 'name': u'test_environment1'} dict_env_2 = {'version': 1, 'updated': later, 'tenant_id': u'test_tenant_id2', 'created': now, 'description_text': u'', 'status': 'ready', 'id': u'test_env_id_2', 'name': u'test_environment2'} calls = [mock.call('environment.exists', dict_env_1), mock.call('environment.exists', dict_env_2)] mock_notifier.assert_has_calls(calls)