def run(self):
        self.setup_logging(self.other_opts)

        bucket_overrides = {}
        if self.other_opts.bucket_overrides_file:
            bucket_overrides = get_bucket_overrides(self.other_opts.bucket_overrides_file)

        if self.other_opts.replay_json or self.other_opts.replay_json_inline:
            from .test_runner_json_replay import TestRunnerJSONReplay
            test_runner_class = TestRunnerJSONReplay
            self.test_runner_args['replay_json'] = self.other_opts.replay_json
            self.test_runner_args['replay_json_inline'] = self.other_opts.replay_json_inline
        elif self.other_opts.rerun_test_file:
            from .test_rerunner import TestRerunner
            test_runner_class = TestRerunner
            self.test_runner_args['rerun_test_file'] = self.other_opts.rerun_test_file
        else:
            test_runner_class = TestRunner

        # initialize reporters
        self.test_runner_args['test_reporters'] = self.get_reporters(
            self.other_opts, self.test_runner_args['plugin_modules']
        )

        runner = test_runner_class(
            self.test_path,
            bucket_overrides=bucket_overrides,
            bucket_count=self.other_opts.bucket_count,
            bucket_salt=self.other_opts.bucket_salt,
            bucket=self.other_opts.bucket,
            **self.test_runner_args
        )

        if self.runner_action == ACTION_LIST_SUITES:
            runner.list_suites()
            return True
        elif self.runner_action == ACTION_LIST_TESTS:
            runner.list_tests()
            return True
        elif self.runner_action == ACTION_RUN_TESTS:
            label_text = ""
            bucket_text = ""
            if self.other_opts.label:
                label_text = " " + self.other_opts.label
            if self.other_opts.bucket_count:
                salt_info = (' [salt: %s]' % self.other_opts.bucket_salt) if self.other_opts.bucket_salt else ''
                bucket_text = " (bucket %d of %d%s)" % (self.other_opts.bucket, self.other_opts.bucket_count, salt_info)
            log.info("starting test run%s%s", label_text, bucket_text)

            # Allow plugins to modify the test runner.
            for plugin_mod in self.test_runner_args['plugin_modules']:
                if hasattr(plugin_mod, "prepare_test_runner"):
                    plugin_mod.prepare_test_runner(self.test_runner_args['options'], runner)

            return runner.run()
Performs a datastore upload via the bulkloader.
dataset/ETHPy150Open Yelp/Testify/testify/test_program.py/TestProgram.run--crossover with--dataset/ETHPy150Open AppScale/appscale/AppServer/google/appengine/tools/appcfg.py/AppCfgApp.PerformUpload