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_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_start_run(self): # Just instantiating the object shouldn't create anything assert_false(os.path.exists(self.result_file_path)) self.run_results.start_run(self.scenario) # start_run opens the file for writing and dumps out the scenario. assert_equal(len(self.scenario.packb()), self._current_size()) # This is a bit white-box, but that's what we're here for... assert_greater(self._current_size(), 0) with open(self.result_file_path, "rb") as f: unpacker = msgpack.Unpacker(file_like=f) got_scenario = Scenario.unpackb(unpacker) 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(got_scenario, attr), getattr(self.scenario, attr))
def test_unpackb_backwards_compat(self): # Older ssbench didn't have a delete_after key in scenario data; make # sure we can still load those for reporting packed = msgpack.packb({ '_scenario_data': self.scenario._scenario_data, 'name': self.scenario.name, 'version': self.scenario.version, 'user_count': self.scenario.user_count, 'operation_count': self.scenario.operation_count, 'run_seconds': self.scenario.run_seconds, 'container_base': self.scenario.container_base, 'container_count': self.scenario.container_count, 'container_concurrency': self.scenario.container_concurrency, }) 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(self.scenario, attr))
def read_results(self): if self.results_file_path.endswith('.gz'): file_like = GzipFile(self.results_file_path, 'rb') else: file_like = open(self.results_file_path, 'rb') unpacker = msgpack.Unpacker(file_like=file_like) scenario = Scenario.unpackb(unpacker) return scenario, unpacker
def test_packb_unpackb(self): packed = self.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(self.scenario, attr))
def test_packb_unpackb(self): packed = self.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', 'delete_after' ]: assert_equal(getattr(unpacked, attr), getattr(self.scenario, attr))
def test_unpackb_given_unpacker(self): packed = self.scenario.packb() assert_is_instance(packed, bytes) file_like = StringIO(packed + msgpack.packb({'red': 'herring'})) unpacker = msgpack.Unpacker(file_like=file_like) unpacked = Scenario.unpackb(unpacker) 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(self.scenario, attr))
def test_unpackb_given_unpacker(self): packed = self.scenario.packb() assert_is_instance(packed, bytes) file_like = StringIO(packed + msgpack.packb({'red': 'herring'})) unpacker = msgpack.Unpacker(file_like=file_like) unpacked = Scenario.unpackb(unpacker) 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(self.scenario, attr))
def test_unpackb_backwards_compat(self): # Older ssbench didn't have a delete_after key in scenario data; make # sure we can still load those for reporting packed = msgpack.packb({ '_scenario_data': self.scenario._scenario_data, 'name': self.scenario.name, 'version': self.scenario.version, 'user_count': self.scenario.user_count, 'operation_count': self.scenario.operation_count, 'run_seconds': self.scenario.run_seconds, 'container_base': self.scenario.container_base, 'container_count': self.scenario.container_count, 'container_concurrency': self.scenario.container_concurrency, }) 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(self.scenario, attr))
def test_start_run(self): # Just instantiating the object shouldn't create anything assert_false(os.path.exists(self.result_file_path)) self.run_results.start_run(self.scenario) # start_run opens the file for writing and dumps out the scenario. assert_equal(len(self.scenario.packb()), self._current_size()) # This is a bit white-box, but that's what we're here for... assert_greater(self._current_size(), 0) with open(self.result_file_path, 'rb') as f: unpacker = msgpack.Unpacker(file_like=f) got_scenario = Scenario.unpackb(unpacker) 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(got_scenario, attr), getattr(self.scenario, attr))