diff --git a/swh/scheduler/tests/test_api_client.py b/swh/scheduler/tests/test_api_client.py --- a/swh/scheduler/tests/test_api_client.py +++ b/swh/scheduler/tests/test_api_client.py @@ -7,8 +7,8 @@ from swh.core.tests.server_testing import ServerTestFixture from swh.scheduler import get_scheduler -from swh.scheduler.tests.test_scheduler import CommonSchedulerTest from swh.scheduler.api.server import app +from swh.scheduler.tests.test_scheduler import CommonSchedulerTest class RemoteSchedulerTest(CommonSchedulerTest, ServerTestFixture, diff --git a/swh/scheduler/tests/test_scheduler.py b/swh/scheduler/tests/test_scheduler.py --- a/swh/scheduler/tests/test_scheduler.py +++ b/swh/scheduler/tests/test_scheduler.py @@ -9,15 +9,15 @@ import random import unittest import uuid +from collections import defaultdict +import psycopg2 from arrow import utcnow -from collections import defaultdict from nose.plugins.attrib import attr -from nose.tools import istest -import psycopg2 from swh.core.tests.db_testing import SingleDbTestFixture from swh.scheduler import get_scheduler + from . import DATA_DIR @@ -85,8 +85,7 @@ self.cursor.execute('truncate table %s cascade' % table) self.conn.commit() - @istest - def add_task_type(self): + def test_add_task_type(self): tt, tt2 = self.task_types.values() self.backend.create_task_type(tt) self.assertEqual(tt, self.backend.get_task_type(tt['type'])) @@ -97,8 +96,7 @@ self.assertEqual(tt, self.backend.get_task_type(tt['type'])) self.assertEqual(tt2, self.backend.get_task_type(tt2['type'])) - @istest - def get_task_types(self): + def test_get_task_types(self): tt, tt2 = self.task_types.values() self.backend.create_task_type(tt) self.backend.create_task_type(tt2) @@ -149,8 +147,7 @@ for tt in self.task_types.values(): self.backend.create_task_type(tt) - @istest - def create_tasks(self): + def test_create_tasks(self): priority_ratio = self._priority_ratio() self._create_task_types() num_tasks_priority = 100 @@ -206,8 +203,7 @@ for priority, ratio in priority_ratio.items() }) - @istest - def peek_ready_tasks_no_priority(self): + def test_peek_ready_tasks_no_priority(self): self._create_task_types() t = utcnow() task_type = self.task1_template['type'] @@ -258,8 +254,7 @@ priority_ratio[row[0]] = row[1] return priority_ratio - @istest - def peek_ready_tasks_mixed_priorities(self): + def test_peek_ready_tasks_mixed_priorities(self): priority_ratio = self._priority_ratio() self._create_task_types() t = utcnow() @@ -317,8 +312,7 @@ self.assertEqual(count_tasks_per_priority[None], num_tasks) - @istest - def grab_ready_tasks(self): + def test_grab_ready_tasks(self): priority_ratio = self._priority_ratio() self._create_task_types() t = utcnow() @@ -347,8 +341,7 @@ self.assertEqual(peeked, grabbed) self.assertEqual(peeked['priority'], grabbed['priority']) - @istest - def get_tasks(self): + def test_get_tasks(self): self._create_task_types() t = utcnow() tasks = self._tasks_from_template(self.task1_template, t, 100) @@ -362,8 +355,7 @@ ret = self.backend.get_tasks(task['id'] for task in cur_tasks) self.assertCountEqual(ret, cur_tasks) - @istest - def filter_task_to_archive(self): + def test_filter_task_to_archive(self): """Filtering only list disabled recurring or completed oneshot tasks """ @@ -439,8 +431,7 @@ self.assertEqual(actual_filtered_per_status, status_per_policy) - @istest - def delete_archived_tasks(self): + def test_delete_archived_tasks(self): self._create_task_types() _time = utcnow() recurring = self._tasks_from_template( diff --git a/swh/scheduler/tests/test_task.py b/swh/scheduler/tests/test_task.py --- a/swh/scheduler/tests/test_task.py +++ b/swh/scheduler/tests/test_task.py @@ -5,24 +5,20 @@ import unittest -from nose.tools import istest - from swh.scheduler import task from .celery_testing import CeleryTestFixture class Task(CeleryTestFixture, unittest.TestCase): - @istest - def not_implemented_task(self): + def test_not_implemented_task(self): class NotImplementedTask(task.Task): pass with self.assertRaises(NotImplementedError): NotImplementedTask().run() - @istest - def add_task(self): + def test_add_task(self): class AddTask(task.Task): def run_task(self, x, y): return x + y diff --git a/swh/scheduler/tests/test_utils.py b/swh/scheduler/tests/test_utils.py --- a/swh/scheduler/tests/test_utils.py +++ b/swh/scheduler/tests/test_utils.py @@ -4,9 +4,7 @@ # See top-level LICENSE file for more information import unittest - from datetime import timezone -from nose.tools import istest from unittest.mock import patch from swh.scheduler import utils @@ -14,9 +12,8 @@ class UtilsTest(unittest.TestCase): - @istest @patch('swh.scheduler.utils.datetime') - def create_oneshot_task_dict_simple(self, mock_datetime): + def test_create_oneshot_task_dict_simple(self, mock_datetime): mock_datetime.now.return_value = 'some-date' actual_task = utils.create_oneshot_task_dict('some-task-type') @@ -35,9 +32,8 @@ self.assertEqual(actual_task, expected_task) mock_datetime.now.assert_called_once_with(tz=timezone.utc) - @istest @patch('swh.scheduler.utils.datetime') - def create_oneshot_task_dict_other_call(self, mock_datetime): + def test_create_oneshot_task_dict_other_call(self, mock_datetime): mock_datetime.now.return_value = 'some-other-date' actual_task = utils.create_oneshot_task_dict( diff --git a/swh/scheduler/tests/updater/test_backend.py b/swh/scheduler/tests/updater/test_backend.py --- a/swh/scheduler/tests/updater/test_backend.py +++ b/swh/scheduler/tests/updater/test_backend.py @@ -7,16 +7,15 @@ import unittest from arrow import utcnow -from nose.plugins.attrib import attr -from nose.tools import istest from hypothesis import given from hypothesis.strategies import sets +from nose.plugins.attrib import attr from swh.core.tests.db_testing import SingleDbTestFixture +from swh.scheduler.tests import DATA_DIR from swh.scheduler.updater.backend import SchedulerUpdaterBackend from swh.scheduler.updater.events import SWHEvent -from swh.scheduler.tests import DATA_DIR from . import from_regex @@ -48,12 +47,11 @@ self._empty_tables() super().tearDown() - @istest @given(sets( from_regex( r'^https://somewhere[.]org/[a-z0-9]{5,7}/[a-z0-9]{3,10}$'), min_size=10, max_size=15)) - def cache_read(self, urls): + def test_cache_read(self, urls): def gen_events(urls): for url in urls: yield SWHEvent({ diff --git a/swh/scheduler/tests/updater/test_consumer.py b/swh/scheduler/tests/updater/test_consumer.py --- a/swh/scheduler/tests/updater/test_consumer.py +++ b/swh/scheduler/tests/updater/test_consumer.py @@ -4,18 +4,16 @@ # See top-level LICENSE file for more information import unittest +from itertools import chain from hypothesis import given -from hypothesis.strategies import sampled_from, lists, tuples, text +from hypothesis.strategies import lists, sampled_from, text, tuples -from itertools import chain -from nose.tools import istest +from swh.scheduler.updater.consumer import UpdaterConsumer +from swh.scheduler.updater.events import LISTENED_EVENTS, SWHEvent from . import UpdaterTestUtil, from_regex -from swh.scheduler.updater.events import SWHEvent, LISTENED_EVENTS -from swh.scheduler.updater.consumer import UpdaterConsumer - class FakeSchedulerUpdaterBackend: def __init__(self): @@ -57,8 +55,7 @@ def setUp(self): self.updater = FakeUpdaterConsumerRaise() - @istest - def running_raise(self): + def test_running_raise(self): """Raising during run should finish fine. """ @@ -94,8 +91,7 @@ def setUp(self): self.updater = FakeUpdaterConsumerNoEvent() - @istest - def running_does_not_consume(self): + def test_running_does_not_consume(self): """Run with no events should do just fine""" # given self.assertEqual(self.updater.count, 0) @@ -150,7 +146,6 @@ class UpdaterConsumerWithEventTest(UpdaterTestUtil, unittest.TestCase): - @istest @given(lists(tuples(sampled_from(LISTENED_EVENTS), # event type from_regex(r'^[a-z0-9]{5,10}/[a-z0-9]{7,12}$'), # name text()), # origin type @@ -164,7 +159,7 @@ text(), # origin type sampled_from(EVENT_KEYS)), # keys to drop min_size=3, max_size=10)) - def running(self, events, uninteresting_events, incomplete_events): + def test_running(self, events, uninteresting_events, incomplete_events): """Interesting events are written to cache, others are dropped """ diff --git a/swh/scheduler/tests/updater/test_events.py b/swh/scheduler/tests/updater/test_events.py --- a/swh/scheduler/tests/updater/test_events.py +++ b/swh/scheduler/tests/updater/test_events.py @@ -6,10 +6,9 @@ import unittest from hypothesis import given -from hypothesis.strategies import text, sampled_from -from nose.tools import istest +from hypothesis.strategies import sampled_from, text -from swh.scheduler.updater.events import SWHEvent, LISTENED_EVENTS +from swh.scheduler.updater.events import LISTENED_EVENTS, SWHEvent from swh.scheduler.updater.ghtorrent import events from . import UpdaterTestUtil @@ -25,15 +24,13 @@ class EventTest(UpdaterTestUtil, unittest.TestCase): - @istest @given(sampled_from(LISTENED_EVENTS), text(), text()) - def is_interesting_ok(self, event_type, name, origin_type): + def test_is_interesting_ok(self, event_type, name, origin_type): evt = self._make_simple_event(event_type, name, origin_type) self.assertTrue(SWHEvent(evt).is_interesting()) - @istest @given(text(), text(), text()) - def is_interested_with_noisy_event_should_be_ko( + def test_is_interested_with_noisy_event_should_be_ko( self, event_type, name, origin_type): if event_type in LISTENED_EVENTS: # just in case something good is generated, skip it @@ -41,8 +38,7 @@ evt = self._make_simple_event(event_type, name, origin_type) self.assertFalse(SWHEvent(evt).is_interesting()) - @istest @given(sampled_from(WRONG_EVENTS), text(), text()) - def is_interesting_ko(self, event_type, name, origin_type): + def test_is_interesting_ko(self, event_type, name, origin_type): evt = self._make_simple_event(event_type, name, origin_type) self.assertFalse(SWHEvent(evt).is_interesting()) diff --git a/swh/scheduler/tests/updater/test_ghtorrent.py b/swh/scheduler/tests/updater/test_ghtorrent.py --- a/swh/scheduler/tests/updater/test_ghtorrent.py +++ b/swh/scheduler/tests/updater/test_ghtorrent.py @@ -4,17 +4,16 @@ # See top-level LICENSE file for more information import unittest +from unittest.mock import patch from hypothesis import given from hypothesis.strategies import sampled_from -from nose.tools import istest -from unittest.mock import patch from swh.scheduler.updater.events import SWHEvent -from swh.scheduler.updater.ghtorrent import ( - events, GHTorrentConsumer, INTERESTING_EVENT_KEYS) +from swh.scheduler.updater.ghtorrent import (INTERESTING_EVENT_KEYS, + GHTorrentConsumer, events) -from . import from_regex, UpdaterTestUtil +from . import UpdaterTestUtil, from_regex def event_values(): @@ -73,7 +72,6 @@ self.consumer = GHTorrentConsumer(self.fake_config, _connection_class=FakeConnection) - @istest def test_init(self): # given # check init is ok @@ -85,11 +83,9 @@ self.fake_config['rabbitmq_prefetch_read']) self.assertEqual(self.consumer.config, self.fake_config) - @istest def test_has_events(self): self.assertTrue(self.consumer.has_events()) - @istest def test_connection(self): # when self.consumer.open_connection() @@ -108,10 +104,9 @@ self.assertTrue(self.consumer.conn._release) self.assertIsInstance(self.consumer.channel, FakeChannel) - @istest @given(sampled_from(EVENT_TYPES), from_regex(r'^[a-z0-9]{5,7}/[a-z0-9]{3,10}$')) - def convert_event_ok(self, event_type, name): + def test_convert_event_ok(self, event_type, name): input_event = self._make_event(event_type, name, 'git') actual_event = self.consumer.convert_event(input_event) @@ -128,11 +123,10 @@ } self.assertEqual(event, expected_event) - @istest @given(sampled_from(EVENT_TYPES), from_regex(r'^[a-z0-9]{5,7}/[a-z0-9]{3,10}$'), sampled_from(INTERESTING_EVENT_KEYS)) - def convert_event_ko(self, event_type, name, missing_data_key): + def test_convert_event_ko(self, event_type, name, missing_data_key): input_event = self._make_incomplete_event( event_type, name, 'git', missing_data_key) @@ -141,8 +135,7 @@ self.assertIsNone(actual_converted_event) @patch('swh.scheduler.updater.ghtorrent.collect_replies') - @istest - def consume_events(self, mock_collect_replies): + def test_consume_events(self, mock_collect_replies): # given self.consumer.queue = 'fake-queue' # hack self.consumer.open_connection() diff --git a/swh/scheduler/tests/updater/test_writer.py b/swh/scheduler/tests/updater/test_writer.py --- a/swh/scheduler/tests/updater/test_writer.py +++ b/swh/scheduler/tests/updater/test_writer.py @@ -6,16 +6,13 @@ import os import unittest - from nose.plugins.attrib import attr -from nose.tools import istest from swh.core.tests.db_testing import DbTestFixture -from swh.scheduler.updater.events import SWHEvent +from swh.scheduler.tests import DATA_DIR +from swh.scheduler.updater.events import LISTENED_EVENTS, SWHEvent from swh.scheduler.updater.writer import UpdaterWriter -from swh.scheduler.updater.events import LISTENED_EVENTS -from swh.scheduler.tests import DATA_DIR from . import UpdaterTestUtil @@ -75,8 +72,7 @@ self.scheduler_updater_backend.close_connection() super().tearDown() - @istest - def run_ko(self): + def test_run_ko(self): """Only git tasks are supported for now, other types are dismissed. """ @@ -108,8 +104,7 @@ # other reads after writes are still empty since it's not supported self.assertEqual(len(r), 0) - @istest - def run_ok(self): + def test_run_ok(self): """Only git origin are supported for now """