Beispiel #1
0
    def test_target_status_pass(self):
        """
        This tests to ensure a target's status is being set properly
        based on it's session statuses.
        """
        session1 = Database.create_session(None, 0)
        target = Database.get_target(session1.target_name)
        self.assertEqual(target.status, SESSION_STATUSES.get('inactive'))

        missing_timer = 2401 + SESSION_CHECK_THRESHOLD
        session2 = Database.create_session(target.name,
                                           time.time() - missing_timer, 1800,
                                           600)
        self.assertEqual(target.status, SESSION_STATUSES.get('missing'))

        session3 = Database.create_session(target.name)
        self.assertEqual(target.status, SESSION_STATUSES.get('active'))

        session3.timestamp = 0
        session3.save()
        self.assertEqual(target.status, SESSION_STATUSES.get('missing'))

        session2.timestamp = 0
        session2.save()
        self.assertEqual(target.status, SESSION_STATUSES.get('inactive'))
Beispiel #2
0
    def test_status(self):
        """
        Ensure that the proper status is set for a group action
        based on it's included actions.
        """
        # After creation, status should be queued
        group_action = Database.create_group_action()
        self.assertEqual(group_action.get_status(),
                         GROUP_ACTION_STATUSES.get('queued', 'queued'))

        # Send to a session, status should be in progress
        session = Database.create_session()
        group_action.actions[0].assign_to(session.session_id)
        self.assertEqual(
            group_action.get_status(),
            GROUP_ACTION_STATUSES.get('in progress', 'in progress'))

        # Submit a response to all actions, status should be success
        for action in group_action.actions:
            action.assign_to(session.session_id)
            response = Database.create_response()
            action.submit_response(response)
        self.assertEqual(group_action.get_status(),
                         GROUP_ACTION_STATUSES.get('success', 'success'))

        # Create a new group action, make all actions stale. Status should be stale
        group_action = Database.create_group_action()
        for action in group_action.actions:
            action.queue_time = 0
            action.save()
        self.assertEqual(group_action.get_status(),
                         GROUP_ACTION_STATUSES.get('stale', 'stale'))

        # Have a session check in, status should update to in progress
        group_action.actions[0].assign_to(session.session_id)
        self.assertEqual(
            group_action.get_status(),
            GROUP_ACTION_STATUSES.get('in progress', 'in progress'))

        # Submit a response, status should be mixed success
        response = Database.create_response()
        group_action.actions[0].submit_response(response)
        self.assertEqual(
            group_action.get_status(),
            GROUP_ACTION_STATUSES.get('mixed success', 'mixed success'))

        # Set all actions to failed. Status should be failed.
        group_action = Database.create_group_action()
        session = Database.create_session(None, 0)
        for action in group_action.actions:
            action.assign_to(session.session_id)
        self.assertEqual(group_action.get_status(),
                         GROUP_ACTION_STATUSES.get('failed', 'failed'))

        # Create a new group action, and cancel it. Status should be cancelled
        group_action = Database.create_group_action()
        group_action.cancel()
        self.assertEqual(group_action.get_status(),
                         GROUP_ACTION_STATUSES.get('cancelled', 'cancelled'))
Beispiel #3
0
    def test_target_rename_association(self):
        """
        Tests the RenameTarget API function, check to make sure Sessions, Targets, and Groups.
        """
        target = Database.create_target()
        target_name = target.name
        session_id = Database.create_session(target_name).session_id
        orig_group = Database.create_group('some_group')
        orig_group.whitelist_member(target.name)
        action_id = Database.create_action(target_name).action_id

        data = APIClient.rename_target(self.client, target_name, 'TEST')
        self.assertEqual(data['error'], False)
        target = Database.get_target('TEST')
        self.assertIsNotNone(target)
        with self.assertRaises(DoesNotExist):
            Database.get_target(target_name)

        self.assertEqual(target.name, 'TEST')

        session = Database.get_session(session_id)
        self.assertEqual(session.target_name, 'TEST')

        action = Database.get_action(action_id)
        self.assertEqual(action.target_name, 'TEST')

        group = Database.get_group(orig_group.name)
        self.assertIn(target.name, group.member_names)
Beispiel #4
0
    def test_status_pass(self):
        """
        This tests to ensure the session's status is being set properly.
        """
        session1 = Database.create_session('TEST1', time.time())
        self.assertEqual(session1.status, SESSION_STATUSES.get('active'))

        missing_timer = 2401 + SESSION_CHECK_THRESHOLD

        session2 = Database.create_session('TEST2',
                                           time.time() - missing_timer, 1800,
                                           600)
        self.assertEqual(session2.status, SESSION_STATUSES.get('missing'))

        missing_timer *= SESSION_CHECK_MODIFIER
        session3 = Database.create_session('TEST3',
                                           time.time() - missing_timer, 1800,
                                           600)
        self.assertEqual(session3.status, SESSION_STATUSES.get('inactive'))
Beispiel #5
0
 def test_create_pass(self):
     """
     This test will attempt to create a session model object.
     """
     timestamp = time.time()
     session = Database.create_session('TEST', timestamp)
     self.assertEqual(session.target_name, 'TEST')
     self.assertEqual(session.timestamp, timestamp)
     self.assertIsNotNone(session.history)
     self.assertIsNotNone(session.servers)
     self.assertIsNotNone(session.interval)
     self.assertIsNotNone(session.interval_delta)
Beispiel #6
0
    def test_migrate_target(self):
        """
        Tests the MigrateTarget API function.
        """
        old_target = Database.create_target()
        old_sessions = [
            Database.create_session(old_target.name),
            Database.create_session(old_target.name),
            Database.create_session(old_target.name),
            Database.create_session(old_target.name),
            Database.create_session(old_target.name),
        ]
        new_target = Database.create_target(None, None, {'updated': True})

        new_sessions = [
            Database.create_session(new_target.name),
            Database.create_session(new_target.name),
            Database.create_session(new_target.name),
            Database.create_session(new_target.name),
            Database.create_session(new_target.name),
        ]
        data = APIClient.migrate_target(self.client, old_target.name,
                                        new_target.name)
        self.assertEqual(data['error'], False)

        # Ensure new_target has old name, and still has facts
        target = Database.get_target(old_target.name)
        self.assertIsNotNone(target)
        self.assertEqual(target.facts['updated'], True)

        # Ensure new target name is gone
        with self.assertRaises(DoesNotExist):
            Database.get_target(new_target.name)

        # Ensure all sessions exist on new_target
        self.assertListEqual(
            sorted([
                session.session_id for session in old_sessions + new_sessions
            ]), sorted([session.session_id for session in target.sessions]))
Beispiel #7
0
    def test_find_pass(self):
        """
        This test creates a session and attempts to find it,
        it's target, and it's history document.
        """
        session1 = Database.create_session()

        session2 = Database.get_session(session1.session_id)
        self.assertEqual(session1, session2)

        self.assertIsNotNone(Database.get_target(session2.target_name))

        self.assertIsNotNone(session1.history)
        self.assertIsNotNone(session2.history)
Beispiel #8
0
    def test_status_pass(self):
        """
        This test will attempt to see if the action is assigned
        the correct statuses based on it's session.
        """
        action1 = Database.create_action()
        self.assertIsNone(action1.session_id)
        self.assertEqual(action1.status, ACTION_STATUSES.get('queued'))

        action1.cancelled = True
        self.assertEqual(action1.status, ACTION_STATUSES.get('cancelled'))
        action1.cancelled = False

        action1.queue_time = time.time() - (ACTION_STALE_THRESHOLD+1)
        action1.save()
        self.assertEqual(action1.status, ACTION_STATUSES.get('stale'))

        session1 = Database.create_session()
        action1.assign_to(session1.session_id)
        self.assertEqual(action1.status, ACTION_STATUSES.get('sent'))

        Database.missing_session(session1)
        self.assertEqual(action1.status, ACTION_STATUSES.get('failing'))

        session1.timestamp = 0
        session1.save()
        self.assertEqual(action1.status, ACTION_STATUSES.get('failed'))

        session1.timestamp = time.time()
        session1.save()
        response = Database.create_response(None, None, True)
        action1.submit_response(response)
        self.assertEqual(action1.status, ACTION_STATUSES.get('error'))

        response.error = False
        action1.submit_response(response)
        self.assertEqual(action1.status, ACTION_STATUSES.get('complete'))