コード例 #1
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'))
コード例 #2
0
 def test_get(self):
     """
     Attempt to fetch a GroupAction document
     """
     group_action1 = Database.create_group_action()
     group_action2 = Database.get_group_action(group_action1.group_action_id)
     self.assertEqual(group_action1.group_action_id, group_action2.group_action_id)
コード例 #3
0
 def test_get_by_id(self):
     """
     Attempt to get a GroupAction by ID
     """
     group_action1 = Database.create_group_action().group_action_id
     group_action2 = GroupAction.get_by_id(group_action1)
     self.assertIsNotNone(group_action2)
     self.assertEqual(group_action1, group_action2.group_action_id)
コード例 #4
0
 def test_cancel(self):
     """
     Test cancelling a group action.
     """
     group_action = Database.create_group_action()
     group_action.cancel()
     for action in group_action.actions:
         self.assertEqual(action.status, ACTION_STATUSES.get('cancelled', 'cancelled'))
         self.assertEqual(action.cancelled, True)
     self.assertEqual(group_action.cancelled, True)
コード例 #5
0
 def test_get(self):
     """
     This test will pass if it finds the correct group action.
     """
     group_action = Database.create_group_action()
     data = APIClient.get_group_action(self.client,
                                       group_action.group_action_id)
     self.assertEqual(data['error'], False)
     self.assertListEqual(sorted(data['group_action']['action_ids']),
                          sorted(group_action.action_ids))
コード例 #6
0
 def test_list(self):
     """
     This test will create a few action objects through the API, and then test listing them.
     """
     group_actions = [
         Database.create_group_action().group_action_id,
         #Database.create_group_action().group_action_id,
         #Database.create_group_action().group_action_id,
         #Database.create_group_action().group_action_id,
         #Database.create_group_action().group_action_id,
     ]
     data = APIClient.list_group_actions(self.client)
     self.assertEqual(data['error'], False)
     self.assertListEqual(sorted(list(data['group_actions'].keys())),
                          sorted(group_actions))
コード例 #7
0
 def test_cancel(self):
     """
     This test will pass if an action is successfully cancelled.
     """
     group_action = Database.create_group_action()
     self.assertEqual(group_action.cancelled, False)
     data = APIClient.cancel_group_action(self.client,
                                          group_action.group_action_id)
     self.assertEqual(data['error'], False)
     group_action = Database.get_group_action(group_action.group_action_id)
     self.assertEqual(group_action.cancelled, True)
     self.assertEqual(group_action.get_status(),
                      GROUP_ACTION_STATUSES.get('cancelled', 'cancelled'))
     for action in group_action.actions:
         self.assertEqual(action.cancelled, True)
         self.assertEqual(action.status,
                          ACTION_STATUSES.get('cancelled', 'cancelled'))
コード例 #8
0
 def test_create(self):
     """
     Attempt to create a GroupAction document
     """
     targets = [
         Database.create_target().name,
         Database.create_target().name,
         Database.create_target().name,
         Database.create_target().name,
         Database.create_target().name,
     ]
     Database.create_group('test_group', targets)
     group_action = Database.create_group_action('test_group', 'exec echo hi')
     self.assertEqual(group_action.cancelled, False)
     self.assertEqual(group_action.action_string, 'exec echo hi')
     for action in group_action.actions:
         self.assertEqual(action.action_string, 'exec echo hi')
         self.assertIn(action.target_name, targets)