def test_create_and_info(self): """ Create a db and use info() to validate """ # check if invalid configuration fails successfully for retention in (0, []): with AssertRaisesException(whisper.InvalidConfiguration('You must specify at least one archive configuration!')): whisper.create(self.filename, retention) # create a new db with a valid configuration whisper.create(self.filename, self.retention) # Ensure another file can't be created when one exists already with AssertRaisesException(whisper.InvalidConfiguration('File {0} already exists!'.format(self.filename))): whisper.create(self.filename, self.retention) info = whisper.info(self.filename) # check header information self.assertEqual(info['maxRetention'], max([a[0] * a[1] for a in self.retention])) self.assertEqual(info['aggregationMethod'], 'average') self.assertEqual(info['xFilesFactor'], 0.5) # check archive information self.assertEqual(len(info['archives']), len(self.retention)) self.assertEqual(info['archives'][0]['points'], self.retention[0][1]) self.assertEqual(info['archives'][0]['secondsPerPoint'], self.retention[0][0]) self.assertEqual(info['archives'][0]['retention'], self.retention[0][0] * self.retention[0][1]) self.assertEqual(info['archives'][1]['retention'], self.retention[1][0] * self.retention[1][1])
def test_number_of_points(self): """ number of points """ whisper.validateArchiveList(self.retention) with AssertRaisesException(whisper.InvalidConfiguration("Each archive must have at least enough points to consolidate to the next archive (archive1 consolidates 60 of archive0's points but it has only 30 total points)")): whisper.validateArchiveList([(1, 30), (60, 60)])
def test_timespan_coverage(self): """ timespan coverage """ whisper.validateArchiveList(self.retention) with AssertRaisesException(whisper.InvalidConfiguration('Lower precision archives must cover larger time intervals than higher precision archives (archive0: 60 seconds, archive1: 10 seconds)')): whisper.validateArchiveList([(1, 60), (10, 1)])
def test_even_precision_division(self): """ even precision division """ whisper.validateArchiveList([(60, 60), (6, 60)]) with AssertRaisesException(whisper.InvalidConfiguration("Higher precision archives' precision must evenly divide all lower precision archives' precision (archive0: 7, archive1: 60)")): whisper.validateArchiveList([(60, 60), (7, 60)])
def test_validate_archive_list(self): """ blank archive config """ with AssertRaisesException( whisper.InvalidConfiguration( 'You must specify at least one archive configuration!')): whisper.validateArchiveList([])
def test_duplicate(self): """ Checking duplicates """ # TODO: Fix the lies with whisper.validateArchiveList() saying it returns True/False self.assertIsNone(whisper.validateArchiveList(self.retention)) with AssertRaisesException(whisper.InvalidConfiguration('A Whisper database may not be configured having two archives with the same precision (archive0: (1, 60), archive1: (1, 60))')): whisper.validateArchiveList([(1, 60), (60, 60), (1, 60)])