コード例 #1
0
    def test_contents(self):
        """Testing function contents."""
        # Initialize key variables
        devicename = general.hashstring(general.randomstring())
        id_agent = general.hashstring(general.randomstring())
        agent_name = general.hashstring(general.randomstring())
        hosthash = general.hashstring(devicename)
        timestamp = general.normalized_timestamp()

        # Create a directory and filename for testing
        directory = tempfile.mkdtemp()
        filename = ('%s/%s_%s_%s.json') % (directory, timestamp, id_agent,
                                           hosthash)

        # Test with good data
        data = {
            'id_agent': id_agent,
            'agent': agent_name,
            'devicename': devicename,
            'timestamp': timestamp
        }
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        contents = result.contents()
        for key in contents.keys():
            self.assertEqual(contents[key], data[key])
        self.assertEqual(len(contents), len(data))
コード例 #2
0
class TestGetDeviceAgent(unittest.TestCase):
    """Checks all functions and methods."""

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

    # Initiazlize key variables
    data = {}
    data['devicename'] = general.randomstring()
    data['id_agent'] = general.randomstring()
    data['agent'] = general.randomstring()
    data['timestamp'] = int(time.time())

    # Setup database
    unittest_db.initialize_db()
    (idx_device_good, idx_agent_good) = unittest_db.setup_db_deviceagent(data)

    # Create device object
    good_device = db_deviceagent.GetDeviceAgent(
        idx_device_good, idx_agent_good)

    def test___init__(self):
        """Testing method __init__."""
        # Test with non existent IDXDevice
        record = db_deviceagent.GetDeviceAgent('bogus', 'bogus')
        self.assertEqual(record.exists(), False)

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

        # Test with known bad value
        expected = db_deviceagent.GetDeviceAgent(None, None)
        result = expected.exists()
        self.assertEqual(result, False)

    def test_enabled(self):
        """Testing method enabled."""
        # Testing with known good value
        result = self.good_device.enabled()
        self.assertEqual(result, True)

    def test_last_timestamp(self):
        """Testing method last_timestamp."""
        # Testing with known good value
        result = self.good_device.last_timestamp()
        self.assertEqual(result, self.data['timestamp'])

    def test_idx_deviceagent(self):
        """Testing method idx_deviceagent."""
        # Testing with known good value
        result = self.good_device.idx_deviceagent()
        self.assertEqual(result, 1)
コード例 #3
0
class TestFunctions(unittest.TestCase):
    """Checks all functions."""

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

    # Initiazlize key variables
    data = {}
    data['devicename'] = general.randomstring()
    data['id_agent'] = general.randomstring()
    data['agent'] = general.randomstring()
    data['timestamp'] = int(time.time())

    # Setup database
    unittest_db.initialize_db()
    (idx_device_good, idx_agent_good) = unittest_db.setup_db_deviceagent(data)

    def test_device_agent_exists(self):
        """Testing function device_agent_exists."""
        # Testing with known good value
        result = db_deviceagent.device_agent_exists(
            self.idx_device_good, self.idx_agent_good)
        self.assertEqual(result, True)

        # Testing with known good value
        result = db_deviceagent.device_agent_exists(None, None)
        self.assertEqual(result, False)

    def test_all_device_indices(self):
        """Testing function all_device_indices."""
        # Testing with known good value
        result = db_deviceagent.all_device_indices()
        self.assertEqual(result, [1])

    def test_device_indices(self):
        """Testing function device_indices."""
        # Testing with known good value
        result = db_deviceagent.device_indices(self.idx_agent_good)
        self.assertEqual(result, [1])

    def test_agent_indices(self):
        """Testing function agent_indices."""
        # Testing with known good value
        result = db_deviceagent.agent_indices(
            self.idx_agent_good)
        self.assertEqual(result, [1])

    def test_get_all_device_agents(self):
        """Testing function get_all_device_agents."""
        results = db_deviceagent.get_all_device_agents()
        for result in results:
            for key, _ in result.items():
                self.assertEqual(result[key], 1)
コード例 #4
0
    def test___init__(self):
        """Testing function __init__."""
        # Test non existent file
        directory = tempfile.mkdtemp()
        badfile = general.randomstring()
        result = validate._CheckFile(badfile)
        self.assertEqual(result.valid(), False)

        # Test bad filename, existing file (Non hex characters in name)
        badfile = ('%s/%s_%s_%s.json') % (directory, int(
            time.time()), general.randomstring(), general.randomstring())
        data = general.randomstring()
        with open(badfile, 'w') as f_handle:
            f_handle.write(data)
        result = validate._CheckFile(badfile)
        self.assertEqual(result.valid(), False)
        os.remove(badfile)

        # Test good filename, no data
        id_agent = general.hashstring(general.randomstring())
        hosthash = general.hashstring(general.randomstring())
        filename = ('%s/%s_%s_%s.json') % (directory, int(
            time.time()), id_agent, hosthash)
        data = general.randomstring()
        with open(filename, 'w') as f_handle:
            f_handle.write(data)
        result = validate._CheckFile(badfile)
        self.assertEqual(result.valid(), False)
        os.remove(filename)
コード例 #5
0
    def test_valid(self):
        """Testing function valid."""
        # Initialize key variables
        devicename = general.hashstring(general.randomstring())
        id_agent = general.hashstring(general.randomstring())
        agent_name = general.hashstring(general.randomstring())
        hosthash = general.hashstring(devicename)
        timestamp = general.normalized_timestamp()

        # Create a directory and filename for testing
        directory = tempfile.mkdtemp()
        filename = ('%s/%s_%s_%s.json') % (
            directory,
            timestamp,
            id_agent,
            hosthash)

        # Test with good data
        data = {
            'id_agent': id_agent,
            'agent': agent_name,
            'devicename': devicename,
            'timestamp': timestamp
        }
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        self.assertEqual(result.valid(), True)

        # Test with bad data (missing id_agent value)
        data = {
            'id_agent': '',
            'agent': agent_name,
            'devicename': devicename,
            'timestamp': timestamp
        }
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        self.assertEqual(result.valid(), False)

        # Cleanup
        os.remove(filename)
コード例 #6
0
    def test__read_data_from_file(self):
        """Testing function _read_data_from_file."""
        # Create filename
        document = tempfile.NamedTemporaryFile(delete=False)
        filename = document.name

        # Write non JSON to file and test
        data = general.randomstring()
        with open(filename, 'w') as f_handle:
            f_handle.write(data)
        result = validate._read_data_from_file(filename)
        self.assertEqual(bool(result), False)
        self.assertEqual(result, {})

        # Write JSON to file and test
        data = {'key0': 0, 'key1': 1, 'key2': 2, 'key3': 3, 'key4': 4}
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._read_data_from_file(filename)
        for key in result.keys():
            self.assertEqual(result[key], data[key])

        # Delete temporary file
        os.remove(filename)
コード例 #7
0
    def test__keys_in_filename(self):
        """Testing function _keys_in_filename."""
        # Initialize key variables
        id_agent = general.hashstring(general.randomstring())
        hosthash = general.hashstring(general.randomstring())
        timestamp = general.normalized_timestamp()

        # Create a directory and filename for testing
        directory = tempfile.mkdtemp()
        filename = ('%s/%s_%s_%s.json') % (directory, timestamp, id_agent,
                                           hosthash)

        # Test with good data
        data = {'id_agent': id_agent, 'timestamp': timestamp}
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        self.assertEqual(result._keys_in_filename(), True)

        # Test with bad data (missing id_agent value)
        data = {'id_agent': '', 'timestamp': timestamp}
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        self.assertEqual(result._keys_in_filename(), False)

        # Test with bad data (mismatched timestamp value)
        data = {'id_agent': id_agent, 'timestamp': 0}
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        self.assertEqual(result._keys_in_filename(), False)

        # Test with bad data (string timestamp value)
        data = {'id_agent': id_agent, 'timestamp': str(timestamp)}
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        self.assertEqual(result._keys_in_filename(), False)

        # Test with bad data (string timestamp value)
        data = {'id_agent': id_agent, 'timestamp': str(timestamp)}
        with open(filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(filename)
        self.assertEqual(result._keys_in_filename(), False)

        # Test with bad data
        # (non normalized timestamp value in filename and data)
        bad_time = timestamp + 1
        bad_filename = ('%s/%s_%s_%s.json') % (directory, bad_time, id_agent,
                                               hosthash)
        data = {'id_agent': id_agent, 'timestamp': str(timestamp)}
        with open(bad_filename, 'w') as f_handle:
            json.dump(data, f_handle)
        result = validate._CheckFile(bad_filename)
        self.assertEqual(result._keys_in_filename(), False)

        # Cleanup
        # Get all files in directory
        filenames = [
            filename for filename in os.listdir(directory)
            if os.path.isfile(os.path.join(directory, filename))
        ]
        # Get the full filepath for the cache file and post
        for filename in filenames:
            filepath = os.path.join(directory, filename)
            os.remove(filepath)
コード例 #8
0
    def __init__(self):
        """Method initializing the class."""
        # Initialize key variables
        self.data = {}
        self.data['idx_datapoint'] = 1
        self.data['idx_agentname'] = 1
        self.data['idx_billcode'] = 1
        self.data['idx_device'] = 1
        self.data['idx_deviceagent'] = 1
        self.data['idx_department'] = 1
        self.data['timestamp'] = general.normalized_timestamp()
        self.data['id_datapoint'] = general.hashstring(general.randomstring())
        self.data['devicename'] = general.hashstring(general.randomstring())
        self.data['id_agent'] = general.hashstring(general.randomstring())
        self.data['id_datapoint'] = general.hashstring(general.randomstring())
        self.data['devicename'] = general.hashstring(general.randomstring())
        self.data['device_description'] = general.hashstring(
            general.randomstring())
        self.data['agent_name'] = general.hashstring(general.randomstring())
        self.data['agent_source'] = general.hashstring(general.randomstring())
        self.data['agent_label'] = general.hashstring(general.randomstring())
        self.data['department_code'] = general.hashstring(
            general.randomstring())
        self.data['department_name'] = general.hashstring(
            general.randomstring())
        self.data['billcode_code'] = general.hashstring(general.randomstring())
        self.data['billcode_name'] = general.hashstring(general.randomstring())

        # Drop the database and create tables
        initialize_db()

        # Initialize agent variables
        agent_data = {}
        agent_data['devicename'] = self.data['devicename']
        agent_data['device_description'] = self.data['device_description']
        agent_data['id_agent'] = self.data['id_agent']
        agent_data['agent'] = self.data['agent_name']
        agent_data['timestamp'] = self.data['timestamp']
        (self.data['idx_device'],
         self.data['idx_agent']) = _setup_db_deviceagent(agent_data)

        # Get DeviceAgent index value
        deviceagent = hagent.GetDeviceAgent(self.data['idx_device'],
                                            self.data['idx_agent'])
        self.data['idx_deviceagent'] = deviceagent.idx_deviceagent()

        # Insert Department data into database
        dept_data = Department(name=self.data['department_name'].encode(),
                               code=self.data['department_code'].encode())
        database = db.Database()
        database.add_all([dept_data], 1035)

        # Insert Billcode data into database
        bill_data = Billcode(name=self.data['billcode_name'].encode(),
                             code=self.data['billcode_code'].encode())
        database = db.Database()
        database.add_all([bill_data], 1039)

        # Insert Datapoint data into database
        new_data = Datapoint(agent_source=self.data['agent_source'].encode(),
                             agent_label=self.data['agent_label'].encode(),
                             last_timestamp=self.data['timestamp'],
                             idx_deviceagent=self.data['idx_deviceagent'],
                             id_datapoint=self.data['id_datapoint'].encode())
        database = db.Database()
        database.add_all([new_data], 1072)
コード例 #9
0
    def test__valid_filename(self):
        """Testing function _valid_filename."""
        # Test bad filename
        filename = general.randomstring()
        result = validate._valid_filename(filename)
        self.assertEqual(result, False)

        # Test bad filename
        filename = str(int(time.time()))
        result = validate._valid_filename(filename)
        self.assertEqual(result, False)

        # Test bad filename
        filename = ('%s_%s') % (int(
            time.time()), general.hashstring(general.randomstring()))
        result = validate._valid_filename(filename)
        self.assertEqual(result, False)

        # Test bad filename
        filename = ('%s_%s_%s') % (int(
            time.time()), general.hashstring(general.randomstring()),
                                   general.hashstring(general.randomstring()))
        result = validate._valid_filename(filename)
        self.assertEqual(result, False)

        # Test bad filename (Non hex characters in name)
        filename = ('%s_%s') % (int(time.time()), general.randomstring())
        result = validate._valid_filename(filename)
        self.assertEqual(result, False)

        # Test bad filename (Non hex characters in name)
        filename = ('%s_%s_%s') % (int(
            time.time()), general.randomstring(), general.randomstring())
        result = validate._valid_filename(filename)
        self.assertEqual(result, False)

        # Test bad filename (Non hex characters in name)
        filename = ('%s_%s_%s.json') % (int(
            time.time()), general.randomstring(), general.randomstring())
        result = validate._valid_filename(filename)
        self.assertEqual(result, False)

        # Test good filename
        filename = ('%s_%s_%s.json') % (
            int(time.time()), general.hashstring(general.randomstring()),
            general.hashstring(general.randomstring()))
        result = validate._valid_filename(filename)
        self.assertEqual(result, True)
コード例 #10
0
    def __init__(self):
        """Method initializing the class."""
        # Initialize key variables
        self.data = {}
        self.data['idx_datapoint'] = 1
        self.data['idx_agentname'] = 1
        self.data['idx_billcode'] = 1
        self.data['idx_device'] = 1
        self.data['idx_deviceagent'] = 1
        self.data['idx_department'] = 1
        self.data['timestamp'] = general.normalized_timestamp()
        self.data['last_timestamp'] = general.normalized_timestamp()
        self.data['devicename'] = general.hashstring(general.randomstring())
        self.data['id_agent'] = general.hashstring(general.randomstring())
        self.data['id_datapoint'] = general.hashstring(general.randomstring())
        self.data['devicename'] = general.hashstring(general.randomstring())
        self.data['device_description'] = general.hashstring(
            general.randomstring())
        self.data['agent'] = general.hashstring(general.randomstring())
        self.data['agent_source'] = general.hashstring(general.randomstring())
        self.data['agent_label'] = general.hashstring(general.randomstring())
        self.data['department_code'] = general.hashstring(
            general.randomstring())
        self.data['department_name'] = general.hashstring(
            general.randomstring())
        self.data['billcode_code'] = general.hashstring(
            general.randomstring())
        self.data['billcode_name'] = general.hashstring(
            general.randomstring())

        # Define data to Insert
        self.data['values'] = []
        for timestamp in _timestamps():
            value_dict = {
                'idx_datapoint': self.data['idx_datapoint'],
                'value': timestamp * (1 + random.uniform(0, 1)),
                'timestamp': timestamp}
            self.data['values'].append(value_dict)

        # Drop the database and create tables
        initialize_db()

        # Initialize agent variables
        agent_data = {}
        agent_data['devicename'] = self.data['devicename']
        agent_data['device_description'] = self.data['device_description']
        agent_data['id_agent'] = self.data['id_agent']
        agent_data['agent'] = self.data['agent']
        agent_data['timestamp'] = self.data['timestamp']
        (
            self.data['idx_device'],
            self.data['idx_agent']) = _setup_db_deviceagent(agent_data)

        # Get DeviceAgent index value
        deviceagent = hagent.GetDeviceAgent(
            self.data['idx_device'], self.data['idx_agent'])
        self.data['idx_deviceagent'] = deviceagent.idx_deviceagent()

        # Insert Department data into database
        dept_data = Department(
            name=self.data['department_name'].encode(),
            code=self.data['department_code'].encode()
        )
        database = db.Database()
        database.add_all([dept_data], 1035)

        # Insert Billcode data into database
        bill_data = Billcode(
            name=self.data['billcode_name'].encode(),
            code=self.data['billcode_code'].encode()
        )
        database = db.Database()
        database.add_all([bill_data], 1039)

        # Insert Datapoint data into database
        new_data = Datapoint(
            agent_source=self.data['agent_source'].encode(),
            agent_label=self.data['agent_label'].encode(),
            last_timestamp=self.data['last_timestamp'],
            idx_deviceagent=self.data['idx_deviceagent'],
            id_datapoint=self.data['id_datapoint'].encode())
        database = db.Database()
        database.add_all([new_data], 1144)

        # Insert timeseries data into database
        new_data_list = []
        for item in self.data['values']:
            new_data_list.append(
                Data(
                    idx_datapoint=item['idx_datapoint'],
                    timestamp=item['timestamp'],
                    value=item['value']))

        database = db.Database()
        database.add_all(new_data_list, 1072)
コード例 #11
0
    def test___init__(self):
        """Testing function __init__."""
        # Initialize key variables
        directory = tempfile.mkdtemp()
        id_agent = self.data['id_agent']
        last_timestamp = self.data['timestamp']
        filepath = ('%s/%s_%s_%s.json') % (
            directory,
            last_timestamp,
            id_agent,
            general.hashstring(general.randomstring()))

        # Drop the database and create tables
        unittest_db.initialize_db()

        # Test with valid data
        result = validate.ValidateCache(data=self.data)
        self.assertEqual(result.valid(), True)

        # Test with invalid data (string)
        result = validate.ValidateCache(data='string')
        self.assertEqual(result.valid(), False)

        # Test with invalid data (string)
        data_dict = copy.deepcopy(self.data)
        data_dict.pop('agent', None)
        result = validate.ValidateCache(data=data_dict)
        self.assertEqual(result.valid(), False)

        # Write good data to file and test
        with open(filepath, 'w') as f_handle:
            json.dump(self.data, f_handle)
        result = validate.ValidateCache(filepath=filepath)
        self.assertEqual(result.valid(), True)

        #################################################################
        #################################################################
        # Add record to DeviceAgent table and test for validity with the
        # same data, which should be False
        #################################################################
        #################################################################

        unittest_db.setup_db_deviceagent(self.data)

        # Attempting to insert duplicate data should fail
        with open(filepath, 'w') as f_handle:
            json.dump(self.data, f_handle)
        result = validate.ValidateCache(filepath=filepath)
        self.assertEqual(result.valid(), False)

        #################################################################
        #################################################################
        # Test with invalid data in file
        #################################################################
        #################################################################

        # Drop the database and create tables
        unittest_db.initialize_db()

        # Write bad data to file and test
        data_dict = copy.deepcopy(self.data)
        data_dict.pop('agent', None)
        with open(filepath, 'w') as f_handle:
            json.dump(data_dict, f_handle)
        result = validate.ValidateCache(filepath=filepath)
        self.assertEqual(result.valid(), False)

        # Cleanup
        os.remove(filepath)
        os.removedirs(directory)