def load_config_file(self, config_file): """ Load settings from a config file. Parameters : - config_file : name of the config file """ if not check_file(config_file): return False with open(config_file, 'r') as file_stream: config = yaml.load(file_stream) if "buildtimetrend" in config and \ is_dict(config["buildtimetrend"]): self.settings.add_items(config["buildtimetrend"]) set_loglevel(self.get_setting("loglevel")) # set Keen.io settings if "keen" in config: if "project_id" in config["keen"]: keen.project_id = config["keen"]["project_id"] if "write_key" in config["keen"]: keen.write_key = config["keen"]["write_key"] if "read_key" in config["keen"]: keen.read_key = config["keen"]["read_key"] if "master_key" in config["keen"]: keen.master_key = config["keen"]["master_key"] return True
def test_set_loglevel(self): """Test set_loglevel()""" logger = logging.getLogger(buildtimetrend.NAME) # test default loglevel self.assertEqual(logging.WARNING, logger.getEffectiveLevel()) # test setting loglevel to INFO set_loglevel("INFO") self.assertEqual(logging.INFO, logger.getEffectiveLevel()) # test setting loglevel to DEBUG set_loglevel("DEBUG") self.assertEqual(logging.DEBUG, logger.getEffectiveLevel()) # test setting loglevel to ERROR set_loglevel("ERROR") self.assertEqual(logging.ERROR, logger.getEffectiveLevel()) # test setting loglevel to CRITICAL set_loglevel("CRITICAL") self.assertEqual(logging.CRITICAL, logger.getEffectiveLevel()) # test setting loglevel to WARNING set_loglevel("WARNING") self.assertEqual(logging.WARNING, logger.getEffectiveLevel()) # error is thrown when called without parameters self.assertRaises(TypeError, set_loglevel) # error is thrown when called with an invalid parameter self.assertRaises(TypeError, set_loglevel, None) self.assertRaises(ValueError, set_loglevel, "invalid") # passing invalid tags should not change log level self.assertEqual(logging.WARNING, logger.getEffectiveLevel())
def test_process_argv(self): """Test processing cli arguments""" scriptname = "script.py" expected_ci = "travis" expected_build = "123" expected_job = "123.1" expected_branch = "branch1" expected_project_name = "test/project" expected_result = "passed" self.settings.add_setting("mode_keen", False) self.assertFalse(self.settings.get_setting("mode_keen")) self.assertFalse(self.settings.get_setting("mode_native")) self.assertEqual(logging.WARNING, logger.getEffectiveLevel()) argv = [ scriptname, "--log=INFO", "--ci={0!s}".format(expected_ci), "--build={0!s}".format(expected_build), "--job={0!s}".format(expected_job), "--branch={0!s}".format(expected_branch), "--repo={0!s}".format(expected_project_name), "--result={0!s}".format(expected_result), "--mode=keen", "--mode=native", "argument" ] self.assertListEqual(["argument"], self.settings.process_argv(argv)) # test setting loglevel to WARNING self.assertEqual(logging.INFO, logger.getEffectiveLevel()) # reset default loglevel set_loglevel("WARNING") # test other options self.assertEqual(expected_ci, self.settings.get_setting("ci_platform")) self.assertEqual(expected_build, self.settings.get_setting("build")) self.assertEqual(expected_job, self.settings.get_setting("job")) self.assertEqual(expected_branch, self.settings.get_setting("branch")) self.assertEqual(expected_project_name, self.settings.get_project_name()) self.assertEqual(expected_result, self.settings.get_setting("result")) self.assertTrue(self.settings.get_setting("mode_keen")) self.assertTrue(self.settings.get_setting("mode_native")) # no parameters self.assertListEqual([], self.settings.process_argv([scriptname])) self.assertEqual(None, self.settings.process_argv(None)) # invalid parameters self.assertEqual(None, self.settings.process_argv([scriptname, "-x"])) self.assertEqual(None, self.settings.process_argv([scriptname, "--invalid"])) # help self.assertEqual(None, self.settings.process_argv([scriptname, "-h"])) self.assertEqual(None, self.settings.process_argv([scriptname, "--help"]))
def setUp(self): """Initialise test environment before each test.""" # reinit settings singleton if self.settings is not None: self.settings.__init__() set_loglevel("WARNING") keen._client = None keen.project_id = None keen.write_key = None keen.read_key = None keen.master_key = None
def process_argv(self, argv): """ Process command line arguments. Returns a list with arguments (non-options) or None if options are invalid """ if argv is None: return None usage_string = '{0!s} -h --log=<log_level> --build=<buildID>' \ ' --job=<jobID> --branch=<branchname> --repo=<repo_slug>' \ ' --ci=<ci_platform> --result=<build_result>' \ ' --mode=<storage_mode>' usage_string = usage_string.format(argv[0]) options = { "--build": "build", "--job": "job", "--branch": "branch", "--ci": "ci_platform", "--result": "result" } try: opts, args = getopt.getopt( argv[1:], "h", [ "log=", "build=", "job=", "branch=", "repo=", "ci=", "result=", "mode=", "help"] ) except getopt.GetoptError: print(usage_string) return None # check options for opt, arg in opts: if opt in ('-h', "--help"): print(usage_string) return None elif opt == "--log": set_loglevel(arg) elif opt in options: self.add_setting(options[opt], arg) elif opt == "--repo": self.set_project_name(arg) elif opt == "--mode": self.set_mode(arg) return args
def process_argv(self, argv): """ Process command line arguments. Returns a list with arguments (non-options) or None if options are invalid """ if argv is None: return None usage_string = '{0!s} -h --log=<log_level> --build=<buildID>' \ ' --job=<jobID> --branch=<branchname> --repo=<repo_slug>' \ ' --ci=<ci_platform> --result=<build_result>' \ ' --mode=<storage_mode>' usage_string = usage_string.format(argv[0]) options = { "--build": "build", "--job": "job", "--branch": "branch", "--ci": "ci_platform", "--result": "result" } try: opts, args = getopt.getopt(argv[1:], "h", [ "log=", "build=", "job=", "branch=", "repo=", "ci=", "result=", "mode=", "help" ]) except getopt.GetoptError: print(usage_string) return None # check options for opt, arg in opts: if opt in ('-h', "--help"): print(usage_string) return None elif opt == "--log": set_loglevel(arg) elif opt in options: self.add_setting(options[opt], arg) elif opt == "--repo": self.set_project_name(arg) elif opt == "--mode": self.set_mode(arg) return args
def load_env_vars(self): """ Load environment variables. Assign the environment variable values to the corresponding setting. """ # assign environment variable values to setting value if self.env_var_to_settings("BTT_LOGLEVEL", "loglevel"): set_loglevel(self.get_setting("loglevel")) self.env_var_to_settings("TRAVIS_ACCOUNT_TOKEN", "travis_account_token") self.env_var_to_settings("BUILD_TREND_CONFIGFILE", "dashboard_configfile") self.env_var_to_settings("BTT_DATA_DETAIL", "data_detail") # load task queue environment variables self.load_env_vars_task_queue() # load multi build import environment variables self.load_env_vars_multi_import()
def test_process_argv(self): """Test processing cli arguments""" scriptname = "script.py" expected_ci = "travis" expected_build = "123" expected_job = "123.1" expected_branch = "branch1" expected_project_name = "test/project" expected_result = "passed" self.settings.add_setting("mode_keen", False) self.assertFalse(self.settings.get_setting("mode_keen")) self.assertFalse(self.settings.get_setting("mode_native")) self.assertEqual(logging.WARNING, logger.getEffectiveLevel()) argv = [ scriptname, "--log=INFO", "--ci={0!s}".format(expected_ci), "--build={0!s}".format(expected_build), "--job={0!s}".format(expected_job), "--branch={0!s}".format(expected_branch), "--repo={0!s}".format(expected_project_name), "--result={0!s}".format(expected_result), "--mode=keen", "--mode=native", "argument" ] self.assertListEqual(["argument"], self.settings.process_argv(argv)) # test setting loglevel to WARNING self.assertEqual(logging.INFO, logger.getEffectiveLevel()) # reset default loglevel set_loglevel("WARNING") # test other options self.assertEqual( expected_ci, self.settings.get_setting("ci_platform") ) self.assertEqual(expected_build, self.settings.get_setting("build")) self.assertEqual(expected_job, self.settings.get_setting("job")) self.assertEqual(expected_branch, self.settings.get_setting("branch")) self.assertEqual( expected_project_name, self.settings.get_project_name() ) self.assertEqual(expected_result, self.settings.get_setting("result")) self.assertTrue(self.settings.get_setting("mode_keen")) self.assertTrue(self.settings.get_setting("mode_native")) # no parameters self.assertListEqual([], self.settings.process_argv([scriptname])) self.assertEqual(None, self.settings.process_argv(None)) # invalid parameters self.assertEqual(None, self.settings.process_argv([scriptname, "-x"])) self.assertEqual( None, self.settings.process_argv([scriptname, "--invalid"]) ) # help self.assertEqual(None, self.settings.process_argv([scriptname, "-h"])) self.assertEqual( None, self.settings.process_argv([scriptname, "--help"]) )