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_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)
Example #3
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)])
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
0
 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)
Example #9
0
 def test_no_filename_or__scenario_data(self):
     with assert_raises(ValueError):
         self.write_scenario_file()
         Scenario()
Example #10
0
 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!')
Example #11
0
 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)