def test_estimate_size_with_sampling_same_size(self): num_files = 2 * FileBasedSource.MIN_NUMBER_OF_FILES_TO_STAT pattern, _ = write_pattern([10] * num_files) # Each line will be of length 6 since write_pattern() uses # ('line' + line number + '\n') as data. self.assertEqual(6 * 10 * num_files, FileBasedSource(pattern).estimate_size())
def test_string_or_value_provider_only(self): str_file_pattern = tempfile.NamedTemporaryFile(delete=False).name self.assertEqual(str_file_pattern, FileBasedSource(str_file_pattern)._pattern.value) static_vp_file_pattern = StaticValueProvider(value_type=str, value=str_file_pattern) self.assertEqual(static_vp_file_pattern, FileBasedSource(static_vp_file_pattern)._pattern) runtime_vp_file_pattern = RuntimeValueProvider( option_name='arg', value_type=str, default_value=str_file_pattern) self.assertEqual(runtime_vp_file_pattern, FileBasedSource(runtime_vp_file_pattern)._pattern) invalid_file_pattern = 123 with self.assertRaises(TypeError): FileBasedSource(invalid_file_pattern)
def test_estimate_size_with_sampling_different_sizes(self): num_files = 2 * FileBasedSource.MIN_NUMBER_OF_FILES_TO_STAT # Each line will be of length 8 since write_pattern() uses # ('line' + line number + '\n') as data. base_size = 500 variance = 5 sizes = [] for _ in xrange(num_files): sizes.append( int(random.uniform(base_size - variance, base_size + variance))) pattern, _ = write_pattern(sizes) tolerance = 0.05 self.assertAlmostEqual(base_size * 8 * num_files, FileBasedSource(pattern).estimate_size(), delta=base_size * 8 * num_files * tolerance)