def test_packb_unpackb_with_run_seconds(self): self.scenario_dict['run_seconds'] = 27 self.write_scenario_file() scenario = Scenario(self.stub_scenario_file, version='0.1.1') assert_equal(27, scenario.run_seconds) assert_equal(None, scenario.operation_count) packed = scenario.packb() assert_is_instance(packed, bytes) unpacked = Scenario.unpackb(packed) assert_is_instance(unpacked, Scenario) for attr in [ 'name', '_scenario_data', 'user_count', 'operation_count', 'run_seconds', 'container_base', 'container_count', 'containers', 'container_concurrency', 'sizes_by_name', 'version', 'bench_size_thresholds' ]: assert_equal(getattr(unpacked, attr), getattr(scenario, attr)) scenario = Scenario(self.stub_scenario_file, run_seconds=88, operation_count=99) assert_equal(88, scenario.run_seconds) assert_equal(None, scenario.operation_count) packed = scenario.packb() assert_is_instance(packed, bytes) unpacked = Scenario.unpackb(packed) assert_is_instance(unpacked, Scenario) for attr in [ 'name', '_scenario_data', 'user_count', 'operation_count', 'run_seconds', 'container_base', 'container_count', 'containers', 'container_concurrency', 'sizes_by_name', 'version', 'bench_size_thresholds' ]: assert_equal(getattr(unpacked, attr), getattr(scenario, attr))
def test_invalid_user_count(self): self.scenario_dict['user_count'] = -1 self.write_scenario_file() with assert_raises(ValueError): Scenario(self.stub_scenario_file) with assert_raises(ValueError): Scenario(self.stub_scenario_file, user_count=0)
def test_containers_custom_policy(self): self.scenario_dict['policy'] = 'candlestick' self.write_scenario_file() scenario = Scenario(self.stub_scenario_file) assert_list_equal( scenario.containers, ['ssbench_%06d_candlestick' % i for i in xrange(100)])
def test_constructor_overrides(self): scenario = Scenario(self.stub_scenario_file, container_count=21, user_count=37, operation_count=101) assert_equal(21, len(scenario.containers)) assert_equal(37, scenario.user_count) assert_equal(101, scenario.operation_count)
def test_containers_custom(self): self.scenario_dict['container_base'] = 'iggy' self.scenario_dict['container_count'] = 77 self.scenario_dict['container_concurrency'] = 13 self.write_scenario_file() scenario = Scenario(self.stub_scenario_file) assert_list_equal(scenario.containers, ['iggy_%06d_default_policy' % i for i in xrange(77)]) assert_equal(13, scenario.container_concurrency)
def test_bench_jobs_with_run_seconds(self): initial_handler = lambda s, f: 17 signal.signal(signal.SIGALRM, initial_handler) self.scenario_dict['operation_count'] = 1 self.scenario_dict['run_seconds'] = 1 self.write_scenario_file() scenario = Scenario(self.stub_scenario_file) start_time = time.time() jobs = list(scenario.bench_jobs()) delta_t = time.time() - start_time # Count should be greater than 1, for sure... assert_greater(len(jobs), 1) # +/- 10ms seems good: assert_almost_equal(delta_t, scenario.run_seconds, delta=0.01) restored_handler = signal.signal(signal.SIGALRM, signal.SIG_DFL) assert_equal(restored_handler, initial_handler)
def setUp(self): superclass = super(ScenarioFixture, self) if hasattr(superclass, 'setUp'): superclass.setUp() if not hasattr(self, 'stub_scenario_file'): self.tmp_file = tempfile.NamedTemporaryFile() self.stub_scenario_file = self.tmp_file.name if not getattr(self, 'scenario_dict', None): self.scenario_dict = dict( name='Test1 - Happy go lucky', sizes=[ dict(name='tiny', size_min=99, size_max=100), dict(name='small', size_min=199, size_max=200, crud_profile=[73, 12, 5, 10]), dict(name='medium', size_min=299, size_max=300), dict(name='red herring', size_min=9999, size_max=9999), dict(name='large', size_min=399, size_max=400, crud_profile=[13, 17, 19, 51]) ], initial_files=dict(tiny=700, small=400, medium=200, large=100), # From first POC input, all file size percentages can be # derived directly from the distribution of initial files. So # we take that shortcut in the definition of scenarios. operation_count=20000, # C R U D crud_profile=[10, 7, 4, 1], # maybe make this a dict? user_count=1, ) self.write_scenario_file() self.scenario = Scenario(self.stub_scenario_file) self.scenario_noop = ScenarioNoop(self.stub_scenario_file)
def test_no_op_count_or_run_seconds(self): with assert_raises(ValueError): self.scenario_dict.pop('run_seconds', None) self.scenario_dict.pop('operation_count', None) self.write_scenario_file() Scenario(self.stub_scenario_file)
def test_no_filename_or__scenario_data(self): with assert_raises(ValueError): self.write_scenario_file() Scenario()
def test_open_fails(self): with assert_raises(IOError): # It also logs, but I'm too lazy to test that Scenario('some file which will not be present!')
def test_basic_instantiation_with_block_size(self): # very whitebox: scenario = Scenario(self.stub_scenario_file, block_size=987) assert_dict_equal(self.scenario_dict, scenario._scenario_data) assert_equal(ssbench.version, scenario.version) assert_equal(987, scenario.block_size)