Exemplo n.º 1
0
def get_all_snaps(launchpad, logger):
    """
    Return all the snaps in Launchpad created by the user build.snapcraft.io
    """
    page = 1
    logger.debug(f"Getting Snaps from Launchpad - Page {page}")

    response = launchpad.request(
        "https://api.launchpad.net/devel/+snaps",
        params={
            "ws.op": "findByOwner",
            "owner": "/~build.snapcraft.io"
        },
    ).json()

    snaps = response["entries"]
    logaugment.add(logger, total_snaps=len(snaps))

    while "next_collection_link" in response:
        page += 1
        logger.debug(f"Getting Snaps from Launchpad - Page {page}")

        response = launchpad.request(response["next_collection_link"]).json()

        snaps.extend(response["entries"])
        logaugment.add(logger, total_snaps=len(snaps))

    logger.debug(f"Total snaps received: {len(snaps)}")

    return snaps
Exemplo n.º 2
0
    def test_augment_with_callable(self):
        def my_callable(record):
            return {'custom_key': record.filename}

        logaugment.add(self.logger, my_callable)
        self.logger.info('message')
        self.assertEqual(self.stream.getvalue(),
                         "This is the message: test_logaugment.py\n")
Exemplo n.º 3
0
 def test_remove_all_logaugment_adds(self):
     logaugment.add(self.logger, custom_key='custom-value-1')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-1\n")
     self.assertEqual(len(self.logger.filters), 1)
     logaugment.reset(self.logger)
     self.assertEqual(self.logger.filters, [])
Exemplo n.º 4
0
    def test_augment_with_callable(self):
        def my_callable(record):
            return {'custom_key': record.filename}

        logaugment.add(self.logger, my_callable)
        self.logger.info('message')
        self.assertEqual(self.stream.getvalue(),
                         "This is the message: test_logaugment.py\n")
Exemplo n.º 5
0
 def test_remove_all_logaugment_adds(self):
     logaugment.add(self.logger, custom_key='custom-value-1')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-1\n")
     self.assertEqual(len(self.logger.filters), 1)
     logaugment.reset(self.logger)
     self.assertEqual(self.logger.filters, [])
Exemplo n.º 6
0
def initializeLogger(logLevel):
	if(logLevel):
		logger = logging.getLogger()
		handler = logging.StreamHandler()
		formatter = logging.Formatter("%(levelname)s %(time_since_last)s: %(message)s")
		handler.setFormatter(formatter)
		logger.addHandler(handler)
		logger.setLevel(getattr(logging, logLevel))
		logaugment.add(logger, process_record)
Exemplo n.º 7
0
    def test_augment_with_callable_dictionary(self):
        class MyDictionary(dict):
            def __call__(self, *args, **kwargs):
                return {'custom_key': 'called_value'}

        my_dict = MyDictionary()
        my_dict['custom_key'] = 'stored_value'
        logaugment.add(self.logger, my_dict)
        self.logger.info('message')
        self.assertEqual(self.stream.getvalue(),
                         "This is the message: called_value\n")
Exemplo n.º 8
0
    def test_augment_with_callable_dictionary(self):
        class MyDictionary(dict):

            def __call__(self, *args, **kwargs):
                return {'custom_key': 'called_value'}

        my_dict = MyDictionary()
        my_dict['custom_key'] = 'stored_value'
        logaugment.add(self.logger, my_dict)
        self.logger.info('message')
        self.assertEqual(self.stream.getvalue(),
                         "This is the message: called_value\n")
Exemplo n.º 9
0
def get_logger(level):
    logger = logging.getLogger("script.output")
    handler = logging.StreamHandler()
    formatter = logging.Formatter(
        "%(asctime)s - %(levelname)s - %(current_snap)s/%(total_snaps)s"
        " - %(message)s",
        "%Y-%m-%d %H:%M:%S",
    )
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    logger.setLevel(level)

    logaugment.add(logger, current_snap=0, total_snaps=0)

    return logger
Exemplo n.º 10
0
    def test_augment_with_mapping(self):
        class MyMapping(collections.Mapping):
            def __init__(self, *args, **kwargs):
                super(MyMapping, self).__init__()
                self._data = {}
                self._data.update(kwargs)

            def __getitem__(self, key):
                return self._data[key]

            def __iter__(self):
                return iter(self._data)

            def __len__(self):
                return len(self._data)

        logaugment.add(self.logger, MyMapping(custom_key='new-value'))
        self.logger.info('message')
        self.assertEqual(self.stream.getvalue(),
                         "This is the message: new-value\n")
Exemplo n.º 11
0
    def test_augment_with_mapping(self):
        class MyMapping(collections.Mapping):

            def __init__(self, *args, **kwargs):
                super(MyMapping, self).__init__()
                self._data = {}
                self._data.update(kwargs)

            def __getitem__(self, key):
                return self._data[key]

            def __iter__(self):
                return iter(self._data)

            def __len__(self):
                return len(self._data)

        logaugment.add(self.logger, MyMapping(custom_key='new-value'))
        self.logger.info('message')
        self.assertEqual(self.stream.getvalue(),
                         "This is the message: new-value\n")
Exemplo n.º 12
0
 def test_augment_with_kwargs(self):
     logaugment.add(self.logger, custom_key='new-value')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: new-value\n")
Exemplo n.º 13
0
 def test_latest_set_value_takes_priority(self):
     logaugment.set(self.logger, custom_key='custom-value-2')
     logaugment.add(self.logger, custom_key='custom-value-1')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-1\n")
Exemplo n.º 14
0
 def test_none_is_a_valid_value(self):
     logaugment.add(self.logger, custom_key=None)
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(), "This is the message: None\n")
Exemplo n.º 15
0
 def test_augment_with_dictionary_and_extra(self):
     logaugment.add(self.logger, {'custom_key': 'new-value'})
     self.logger.info('message', extra={'custom_key': 'extra-value'})
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: extra-value\n")
Exemplo n.º 16
0
    def test_at_least_one_custom_key_needed(self):
        with self.assertRaises(ValueError):
            logaugment.add(self.logger)

        with self.assertRaises(ValueError):
            logaugment.set(self.logger)
Exemplo n.º 17
0
 def test_most_recent_value_is_used(self):
     logaugment.add(self.logger, custom_key='custom-value-1')
     logaugment.add(self.logger, custom_key='custom-value-2')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-2\n")
Exemplo n.º 18
0
 def test_latest_set_value_takes_priority(self):
     logaugment.set(self.logger, custom_key='custom-value-2')
     logaugment.add(self.logger, custom_key='custom-value-1')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-1\n")
Exemplo n.º 19
0
 def test_set_combines_add_and_remove(self):
     logaugment.add(self.logger, custom_key='custom-value-1')
     logaugment.set(self.logger, custom_key='custom-value-2')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-2\n")
Exemplo n.º 20
0
        logging_level = logging.DEBUG

    logger = helper.get_logger(logging_level)

    snaps = helper.get_all_snaps(launchpad, logger)
    current_snap = 0

    # Stats
    skipped_snaps = 0
    built_snaps = 0
    total_snaps = len(snaps)
    error_snaps = 0

    for snap in snaps:
        current_snap += 1
        logaugment.add(logger, current_snap=current_snap)

        try:
            if needs_building(snap, logger):
                logger.debug(f"Snap {snap['store_name']} needs building")

                if launchpad.is_snap_building(snap["store_name"]):
                    logger.debug(
                        f"Snap {snap['store_name']} is already being build")
                else:
                    logger.warning(f"BUILD {snap['store_name']}")
                    launchpad.build_snap(snap["store_name"])
                    built_snaps += 1
            else:
                skipped_snaps += 1
        except GitHubRateLimit as e:
Exemplo n.º 21
0
    def test_at_least_one_custom_key_needed(self):
        with self.assertRaises(ValueError):
            logaugment.add(self.logger)

        with self.assertRaises(ValueError):
            logaugment.set(self.logger)
Exemplo n.º 22
0
 def test_set_combines_add_and_remove(self):
     logaugment.add(self.logger, custom_key='custom-value-1')
     logaugment.set(self.logger, custom_key='custom-value-2')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-2\n")
Exemplo n.º 23
0
 def test_augment_with_dictionary_and_extra(self):
     logaugment.add(self.logger, {'custom_key': 'new-value'})
     self.logger.info('message', extra={'custom_key': 'extra-value'})
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: extra-value\n")
Exemplo n.º 24
0
 def test_most_recent_value_is_used(self):
     logaugment.add(self.logger, custom_key='custom-value-1')
     logaugment.add(self.logger, custom_key='custom-value-2')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: custom-value-2\n")
Exemplo n.º 25
0
 def test_none_is_a_valid_value(self):
     logaugment.add(self.logger, custom_key=None)
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: None\n")
Exemplo n.º 26
0
            *args,
            **kwargs)

    return wrapper


for level, color in zip(("info", "warn", "error", "debug"),
                        (45, GREY, RED, ORANGE)):
    setattr(logger, level, add_color(getattr(logger, level), color))

# logger.addHandler(handler)


# noinspection PyUnusedLocal
def process_record(record):
    """

    :param record: Previous log.
    :return: Time since last log.
    """
    now = datetime.datetime.utcnow()
    try:
        delta = now - process_record.now
    except AttributeError:
        delta = 0
    process_record.now = now
    return {'time_since_last': delta}


logaugment.add(logger, process_record)
Exemplo n.º 27
0
 def test_augment_with_kwargs(self):
     logaugment.add(self.logger, custom_key='new-value')
     self.logger.info('message')
     self.assertEqual(self.stream.getvalue(),
                      "This is the message: new-value\n")