Skip to content
Snippets Groups Projects
Commit 2f5ba8c6 authored by André Anjos's avatar André Anjos :speech_balloon:
Browse files

Merge branch 'legacy_algorithm_warning' into '1.5.x'

Legacy algorithm warning

See merge request !12
parents 1504b287 f1680a23
No related branches found
No related tags found
2 merge requests!17Merge development branch 1.5.x,!12Legacy algorithm warning
Pipeline #
......@@ -164,6 +164,9 @@ class Executor(object):
return False
else:
if self.algorithm.type == Algorithm.LEGACY:
logger.warning("%s is using LEGACY I/O API, please upgrade this algorithm as soon as possible" % self.algorithm.name)
while self.input_list.hasMoreData():
main_group = self.input_list.main_group
main_group.restricted_access = False
......
......@@ -25,6 +25,7 @@
# #
###############################################################################
import logging
from collections import namedtuple
......@@ -83,3 +84,34 @@ class MockDataSink(DataSink):
def isConnected(self):
return True
# Based on https://stackoverflow.com/a/20553331/5843716
class MockLoggingHandler(logging.Handler):
"""Mock logging handler to check for expected logs.
Messages are available from an instance's ``messages`` dict, in order,
indexed by a lowercase log level string (e.g., 'debug', 'info', etc.).
"""
def __init__(self, *args, **kwargs):
self.messages = {
'debug': [], 'info': [],
'warning': [], 'error': [],
'critical': [], 'extra': []
}
super(MockLoggingHandler, self).__init__(*args, **kwargs)
def emit(self, record):
"Store a message from ``record`` in the instance's ``messages`` dict."
try:
self.messages[record.levelname.lower()].append(record.getMessage())
except Exception:
self.handleError(record)
def reset(self):
self.acquire()
try:
for message_list in self.messages.values():
message_list.clear()
finally:
self.release()
......@@ -27,6 +27,7 @@
import unittest
import logging
import tempfile
import simplejson
import os
......@@ -46,6 +47,7 @@ from ..helpers import convert_experiment_configuration_to_container
from ..helpers import AccessMode
from . import prefix
from .mocks import MockLoggingHandler
CONFIGURATION = {
......@@ -164,8 +166,16 @@ class TestExecutor(unittest.TestCase):
def test_legacy_echo_1(self):
log_handler = MockLoggingHandler(level='DEBUG')
logging.getLogger().addHandler(log_handler)
log_messages = log_handler.messages
self.process('legacy/echo/1')
info_len = len(log_messages['warning'])
self.assertEqual(info_len, 1)
self.assertEqual(log_messages['warning'][info_len - 1], 'legacy/echo/1 is using LEGACY I/O API, please upgrade this algorithm as soon as possible')
def test_sequential_echo_1(self):
self.process('sequential/echo/1')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment