Esempio n. 1
0
    def add_datapoints(self):
        """Add new datapoints to the database.

        Args:
            None

        Returns:
            None

        """
        # Initialize key variables
        new_datapoint_ids = []

        # Add newly found datapoints to database if agent is enabled
        agent_object = agent.GetIDXAgent(self._idx_agent)
        if agent_object.enabled() is True:
            # Create map of DIDs to database row index values
            dp_metadata = self.get_datapoints()

            # Update datapoint metadata if not there
            # Use a dictionary query versus individual database calls
            # which was slow.
            for source in self.agent_data['sources']:
                id_datapoint = source['id_datapoint']
                if id_datapoint not in dp_metadata:
                    # This is a protection against the scenario where
                    # the very first contact from an agent is a result
                    # of a stream of data postings of cached data.
                    # The datapoints are not originally in the database
                    # and so there is the risk of duplicate insertions
                    if id_datapoint not in new_datapoint_ids:
                        self._add_datapoint(source)

                        # Note the datapoint that was added
                        new_datapoint_ids.append(id_datapoint)
Esempio n. 2
0
 def test_init(self):
     """Testing method init."""
     # Test with non existent AgentIDX
     record = db_agent.GetIDXAgent(-1)
     self.assertEqual(record.exists(), False)
     self.assertEqual(record.enabled(), None)
     self.assertEqual(record.idx_agent(), None)
     self.assertEqual(record.idx_agentname(), None)
Esempio n. 3
0
class APITestCase(unittest.TestCase):
    """Checks all functions and methods."""

    #########################################################################
    # General object setup
    #########################################################################

    # Setup database based on the config
    database = unittest_setup_db.TestData()

    # Define expected values
    expected = {}
    expected['idx_agent'] = database.idx_agent()

    # Retrieve data
    good_agent = db_agent.GetIDXAgent(expected['idx_agent'])

    def setUp(self):
        """Setup the environment prior to testing."""
        API.config['TESTING'] = True
        self.API = API.test_client()

    def test_agents(self):
        """Testing method / function agents."""
        # Initializing key variables
        response = self.API.get(
            '/infoset/api/v1/agents/{}'.format(self.expected['idx_agent']))
        data = json.loads(response.get_data(as_text=True))

        # Verify reponse code
        self.assertEqual(response.status_code, 200)

        # Verify response content
        self.assertEqual(isinstance(data, dict), True)
        self.assertEqual(data['id_agent'], self.good_agent.id_agent())
        self.assertEqual(data['exists'], self.good_agent.exists())
        self.assertEqual(data['enabled'], self.good_agent.enabled())

    def test_agents_query(self):
        """Testing method / function agents_query."""
        # Initializing key variables
        response = self.API.get('/infoset/api/v1/agents')
        data = json.loads(response.get_data(as_text=True))

        # Verify reponse code
        self.assertEqual(response.status_code, 200)

        # Verify response content
        self.assertEqual(isinstance(data, list), True)
        self.assertEqual(data[0]['id_agent'], self.good_agent.id_agent())
        self.assertEqual(data[0]['exists'], self.good_agent.exists())
        self.assertEqual(data[0]['enabled'], self.good_agent.enabled())
Esempio n. 4
0
class Other(unittest.TestCase):
    """Checks all functions and methods."""

    # Setup database based on the config
    database = unittest_setup_db.TestData()

    # Define expected values
    expected = {}
    expected['idx_agent'] = database.idx_agent()
    expected['idx_agentname'] = database.idx_agentname()
    expected['id_agent'] = database.id_agent()
    expected['enabled'] = True
    expected['exists'] = True

    # Retrieve data
    good_agent = db_agent.GetIDXAgent(expected['idx_agent'])

    def test_id_agent_exists(self):
        """Testing function id_agent_exists."""
        # Testing with known good value
        expected = True
        result = db_agent.id_agent_exists(self.expected['id_agent'])
        self.assertEqual(result, expected)

        # Testing with known bad value
        expected = False
        result = db_agent.id_agent_exists('bogus')
        self.assertEqual(result, expected)

    def test_idx_agent_exists(self):
        """Testing function idx_agent_exists."""
        # Testing with known good value
        expected = True
        result = db_agent.idx_agent_exists(self.expected['idx_agent'])
        self.assertEqual(result, expected)

        # Testing with known bad value
        expected = False
        result = db_agent.idx_agent_exists(None)
        self.assertEqual(result, expected)

    def test_get_all_agents(self):
        """Testing function get_all_agents."""
        # Testing with known good value
        result = db_agent.get_all_agents()
        self.assertEqual(isinstance(result, list), True)
        self.assertEqual(result[0]['idx_agent'], self.expected['idx_agent'])
        self.assertEqual(result[0]['exists'], self.expected['exists'])
        self.assertEqual(result[0]['enabled'], self.expected['enabled'])
        self.assertEqual(result[0]['idx_agentname'],
                         self.expected['idx_agentname'])
Esempio n. 5
0
def db_getidxagent(value):
    """Get Agent data from the DB by idx value.

    Args:
        None

    Returns:
        data: JSON data for the selected agent

    """
    # Return
    query = db_agent.GetIDXAgent(_integer(value))
    data = query.everything()
    return jsonify(data)
Esempio n. 6
0
def agents(idx_agent):
    """Get Agent data from the DB by idx value.

    Args:
        idx_agent: Agent table idx_agent

    Returns:
        data: JSON data for the selected agent

    """
    # Get data
    query = db_agent.GetIDXAgent(general.integerize(idx_agent))
    data = query.everything()

    # Return
    return jsonify(data)
Esempio n. 7
0
def agents(idx_agent):
    """Get Agent data from the DB by idx value.

    Args:
        idx_agent: Agent table idx_agent

    Returns:
        data: JSON data for the selected agent

    """
    # Get data from cache
    key = ('DB/Agent/idx_agent/{}'.format(idx_agent))
    cache_value = CACHE.get(key)

    # Process cache miss
    if cache_value is None:
        query = db_agent.GetIDXAgent(general.integerize(idx_agent))
        data = query.everything()
        CACHE.set(key, data)
    else:
        data = cache_value

    # Return
    return jsonify(data)
Esempio n. 8
0
class TestGetIDX(unittest.TestCase):
    """Checks all functions and methods."""

    #########################################################################
    # General object setup
    #########################################################################

    # Setup database based on the config
    database = unittest_setup_db.TestData()

    # Define expected values
    expected = {}
    expected['idx_agent'] = database.idx_agent()
    expected['idx_agentname'] = database.idx_agentname()
    expected['id_agent'] = database.id_agent()
    expected['agent'] = database.agent()
    expected['enabled'] = True
    expected['exists'] = True

    # Retrieve data
    good_agent = db_agent.GetIDXAgent(expected['idx_agent'])

    def test_init(self):
        """Testing method init."""
        # Test with non existent AgentIDX
        record = db_agent.GetIDXAgent(-1)
        self.assertEqual(record.exists(), False)
        self.assertEqual(record.enabled(), None)
        self.assertEqual(record.idx_agent(), None)
        self.assertEqual(record.agent(), None)
        self.assertEqual(record.idx_agentname(), None)

    def test_id_agent(self):
        """Testing method id_agent."""
        # Testing with known good value
        result = self.good_agent.id_agent()
        self.assertEqual(result, self.expected['id_agent'])

        # Testing with known bad value
        expected = ('bogus')
        result = self.good_agent.id_agent()
        self.assertNotEqual(result, expected)

    def test_idx_agent(self):
        """Testing method idx."""
        # Testing with known good value
        result = self.good_agent.idx_agent()
        self.assertEqual(result, self.expected['idx_agent'])

        # Testing with known bad value
        expected = ('bogus')
        result = self.good_agent.idx_agent()
        self.assertNotEqual(result, expected)

    def test_exists(self):
        """Testing method exists."""
        # Testing with known good value
        result = self.good_agent.exists()
        self.assertEqual(result, True)

    def test_idx_agentname(self):
        """Testing method idx_agentname."""
        # Testing with known good value
        result = self.good_agent.idx_agentname()
        self.assertEqual(result, self.expected['idx_agentname'])

    def test_agent(self):
        """Testing method name."""
        # Testing with known good value
        result = self.good_agent.agent()
        self.assertEqual(result, self.expected['agent'])

    def test_enabled(self):
        """Testing method enabled."""
        # Testing with known good value
        result = self.good_agent.enabled()
        self.assertEqual(result, self.expected['enabled'])

        # Testing with known bad value
        expected = ('bogus')
        result = self.good_agent.enabled()
        self.assertNotEqual(result, expected)

    def test_everything(self):
        """Testing method everything."""
        # Testing with known good value
        result = self.good_agent.everything()
        for key, _ in self.expected.items():
            self.assertEqual(result[key], self.expected[key])

        # Test the number and names of keys
        keys = [
            'idx_agent', 'idx_agentname', 'id_agent', 'enabled', 'agent',
            'exists'
        ]
        self.assertEqual(len(result), len(keys))
        for key in keys:
            self.assertEqual(key in result, True)
Esempio n. 9
0
class APITestCase(unittest.TestCase):
    """Checks all functions and methods."""

    #########################################################################
    # General object setup
    #########################################################################

    # Setup database based on the config
    database = unittest_setup_db.TestData()

    # Define expected values
    expected = {}
    expected['idx_agent'] = database.idx_agent()
    expected['id_agent'] = database.id_agent()

    # Retrieve data
    test_object = db_agent.GetIDXAgent(expected['idx_agent'])

    def setUp(self):
        """Setup the environment prior to testing."""
        # Test mode
        API.config['TESTING'] = True
        self.API = API.test_client()

    def test_agents(self):
        """Testing method / function agents."""
        # Clear the memory cache
        CACHE.clear()

        # Get results
        uri = ('/infoset/api/v1/agents/{}'.format(self.expected['idx_agent']))
        response = self.API.get(uri)
        result = json.loads(response.get_data(as_text=True))

        # Verify reponse code
        self.assertEqual(response.status_code, 200)

        # Verify response content
        self.assertEqual(isinstance(result, dict), True)
        self.assertEqual(result['id_agent'], self.test_object.id_agent())
        self.assertEqual(result['exists'], self.test_object.exists())
        self.assertEqual(result['enabled'], self.test_object.enabled())
        self.assertEqual(result['idx_agent'], self.test_object.idx_agent())
        self.assertEqual(result['idx_agentname'],
                         self.test_object.idx_agentname())
        self.assertEqual(result['agent'], self.test_object.agent())

        # Test the number and names of keys
        keys = [
            'idx_agent', 'idx_agentname', 'id_agent', 'enabled', 'agent',
            'exists'
        ]
        self.assertEqual(len(result), len(keys))
        for key in keys:
            self.assertEqual(key in result, True)

    def test_agents_query(self):
        """Testing method / function agents_query."""
        # Clear the memory cache
        CACHE.clear()

        # Get results
        response = self.API.get('/infoset/api/v1/agents')
        data = json.loads(response.get_data(as_text=True))
        result = data[0]

        # Verify reponse code
        self.assertEqual(response.status_code, 200)

        # Verify response content
        self.assertEqual(isinstance(data, list), True)
        self.assertEqual(result['id_agent'], self.test_object.id_agent())
        self.assertEqual(result['exists'], self.test_object.exists())
        self.assertEqual(result['enabled'], self.test_object.enabled())
        self.assertEqual(result['idx_agent'], self.test_object.idx_agent())
        self.assertEqual(result['idx_agentname'],
                         self.test_object.idx_agentname())
        self.assertEqual(result['agent'], self.test_object.agent())

        # Test the number and names of keys
        keys = [
            'idx_agent', 'idx_agentname', 'id_agent', 'enabled', 'agent',
            'exists'
        ]
        self.assertEqual(len(result), len(keys))
        for key in keys:
            self.assertEqual(key in result, True)

    def test_agents_query_2(self):
        """Testing method / function agents_query."""
        # Clear the memory cache
        CACHE.clear()

        # Get results
        uri = ('/infoset/api/v1/agents?id_agent={}'
               ''.format(self.expected['id_agent']))
        response = self.API.get(uri)
        data = json.loads(response.get_data(as_text=True))
        result = data[0]

        # Verify reponse code
        self.assertEqual(response.status_code, 200)

        # Verify response content
        self.assertEqual(isinstance(data, list), True)
        self.assertEqual(result['id_agent'], self.test_object.id_agent())
        self.assertEqual(result['exists'], self.test_object.exists())
        self.assertEqual(result['enabled'], self.test_object.enabled())
        self.assertEqual(result['agent'], self.test_object.agent())

        # Test the number and names of keys
        keys = [
            'idx_agent', 'idx_agentname', 'id_agent', 'enabled', 'agent',
            'exists'
        ]
        self.assertEqual(len(result), len(keys))
        for key in keys:
            self.assertEqual(key in result, True)
Esempio n. 10
0
class TestGetIDX(unittest.TestCase):
    """Checks all functions and methods."""

    #########################################################################
    # General object setup
    #########################################################################

    # Setup database
    (_, expected) = unittest_db.setup_db_agent()

    # Retrieve data
    good_agent = db_agent.GetIDXAgent(1)

    def test_init_getidx(self):
        """Testing method init."""
        # Test with non existent AgentIDX
        record = db_agent.GetIDXAgent(-1)
        self.assertEqual(record.exists(), False)

    def test_id_agent_getidx(self):
        """Testing method id_agent."""
        # Testing with known good value
        result = self.good_agent.id_agent()
        self.assertEqual(result, self.expected['id_agent'])

        # Testing with known bad value
        expected = ('bogus')
        result = self.good_agent.id_agent()
        self.assertNotEqual(result, expected)

    def test_name_getidx(self):
        """Testing method name."""
        # Testing with known good value
        result = self.good_agent.name()
        self.assertEqual(result, self.expected['name'])

        # Testing with known bad value
        expected = ('bogus')
        result = self.good_agent.name()
        self.assertNotEqual(result, expected)

    def test_exists(self):
        """Testing method exists."""
        # Testing with known good value
        result = self.good_agent.exists()
        self.assertEqual(result, True)

    def test_enabled_getidx(self):
        """Testing method enabled."""
        # Testing with known good value
        result = self.good_agent.enabled()
        self.assertEqual(result, self.expected['enabled'])

        # Testing with known bad value
        expected = ('bogus')
        result = self.good_agent.enabled()
        self.assertNotEqual(result, expected)

    def test_last_timestamp_getidx(self):
        """Testing method last_timestamp."""
        # Testing with known good value
        result = self.good_agent.last_timestamp()
        self.assertEqual(result, self.expected['last_timestamp'])

        # Testing with known bad value
        expected = ('bogus')
        result = self.good_agent.last_timestamp()
        self.assertNotEqual(result, expected)

    def test_everything_getidx(self):
        """Testing method everything."""
        # Testing with known good value
        result = self.good_agent.everything()
        for key, _ in self.expected.items():
            self.assertEqual(result[key], self.expected[key])
Esempio n. 11
0
 def test_init_getidx(self):
     """Testing method init."""
     # Test with non existent AgentIDX
     record = db_agent.GetIDXAgent(-1)
     self.assertEqual(record.exists(), False)