Exemplo n.º 1
0
        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
Exemplo n.º 2
0
        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
Exemplo n.º 3
0
    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())
Exemplo n.º 4
0
    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"]))
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
        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
Exemplo n.º 8
0
        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
Exemplo n.º 9
0
        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()
Exemplo n.º 10
0
        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()
Exemplo n.º 11
0
    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"])
        )