Example #1
0
    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))
Example #2
0
    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))
Example #4
0
 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))
Example #5
0
    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
Example #6
0
    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
Example #7
0
 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))
Example #8
0
 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))
Example #9
0
 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))
Example #10
0
 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))
Example #11
0
 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))
Example #12
0
    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))