Repository :
http://git.fedorahosted.org/cgit/copr.git
On branch : master
---------------------------------------------------------------
commit ceecd9a259b87d48cf90012b2e7442b235595396
Author: clime <clime(a)redhat.com>
Date: Fri Jan 29 17:38:57 2016 +0100
[backend] fix failing tests
---------------------------------------------------------------
backend/run_test.sh | 23 ++++++++-
backend/tests/{deamons => daemons}/test_backend.py | 49 +++----------------
.../tests/{deamons => daemons}/test_dispatcher.py | 2 +-
.../tests/{deamons => daemons}/test_job_grab.py | 51 ++++---------------
backend/tests/{deamons => daemons}/test_log.py | 0
.../tests/{deamons => daemons}/test_vm_master.py | 0
6 files changed, 39 insertions(+), 86 deletions(-)
diff --git a/backend/run_test.sh b/backend/run_test.sh
index a5941b9..06347c6 100755
--- a/backend/run_test.sh
+++ b/backend/run_test.sh
@@ -4,9 +4,26 @@ REDIS_PORT=7777
redis-server --port $REDIS_PORT &> _redis.log &
+COVPARAMS='--cov-report term-missing --cov ./backend --cov ./run'
-# PYTHONPATH=backend:run:$PYTHONPATH python -B -m pytest -s ./tests/ $@
-PYTHONPATH=backend:run:$PYTHONPATH python -B -m pytest -s --cov-report term-missing --cov
./backend --cov ./run ./tests/ $@
-# PYTHONPATH=../python/:./copr_cli:$PYTHONPATH python3 -B -m pytest --cov-report
term-missing --cov ./copr_cli/ $@
+while [[ $# > 1 ]]
+do
+ key="$1"
+ case $key in
+ --nocov)
+ COVPARAMS=""
+ ;;
+ *) # unknown option
+ ;;
+ esac
+shift # past argument or value
+done
+
+TESTS=./tests
+if [[ -n $@ ]]; then
+ TESTS=$@
+fi
+
+PYTHONPATH=backend:run:$PYTHONPATH python -B -m pytest -s $COVPARAMS $TESTS
kill %1
diff --git a/backend/tests/deamons/test_backend.py
b/backend/tests/daemons/test_backend.py
similarity index 85%
rename from backend/tests/deamons/test_backend.py
rename to backend/tests/daemons/test_backend.py
index e0a7efa..06a761f 100644
--- a/backend/tests/deamons/test_backend.py
+++ b/backend/tests/daemons/test_backend.py
@@ -31,9 +31,9 @@ COPR_VENDOR = "vendor"
MODULE_REF = "backend.daemons.backend"
@pytest.yield_fixture
-def mc_rt_queue():
- with mock.patch("{}.Queue".format(MODULE_REF)) as mc_queue:
- yield mc_queue
+def mc_rt_channel():
+ with mock.patch("{}.jobgrabcontrol.Channel".format(MODULE_REF)) as
mc_channel:
+ yield mc_channel
@pytest.yield_fixture
def mc_worker():
@@ -137,44 +137,10 @@ class TestBackend(object):
assert self.be.config_reader == self.bc_obj
assert self.bc_obj.read.called
- def test_clean_task_queue_error(self, init_be):
- mc_queue = MagicMock(length=1)
- mc_queue.dequeue.side_effect = retask.ConnectionError()
- self.be.task_queues[0] = mc_queue
-
- with pytest.raises(CoprBackendError):
- self.be.clean_task_queues()
-
- def test_clean_task_queue_ok(self, init_be):
- mc_queue = MagicMock(length=5)
-
- def decr():
- mc_queue.length -= 1
-
- mc_queue.dequeue.side_effect = decr
- self.be.task_queues[0] = mc_queue
- self.be.clean_task_queues()
-
- assert len(mc_queue.dequeue.call_args_list) == 5
-
- def test_init_task_queues(self, mc_rt_queue, init_be):
-
- mc_rt_queue.side_effect = lambda name: MagicMock(name=name)
- self.be.clean_task_queues = MagicMock()
+ def test_init_task_queues(self, mc_rt_channel, init_be):
+ self.be.jg_control = MagicMock()
self.be.init_task_queues()
-
- assert mc_rt_queue.call_args_list == \
- [mock.call("copr-be-0"), mock.call("copr-be-1")]
- assert self.be.task_queues[0].connect.called
- assert self.be.task_queues[1].connect.called
-
- def test_init_task_queues_error(self, mc_rt_queue, init_be):
-
- mc_rt_queue.return_value.connect.side_effect = ConnectionError()
- self.be.clean_task_queues = MagicMock()
-
- with pytest.raises(CoprBackendError):
- self.be.init_task_queues()
+ assert self.be.jg_control.backend_start.called
def test_update_conf(self, init_be):
test_obj = MagicMock()
@@ -260,12 +226,11 @@ class TestBackend(object):
self.be.terminate()
- assert self.be.clean_task_queues.called
assert not self.be.is_running
assert worker_alive.terminate_instance.called
assert worker_dead.terminate_instance.called
- def test_run(self, mc_time, mc_rt_queue, init_be):
+ def test_run(self, mc_time, mc_rt_channel, init_be):
worker_alive = MagicMock()
worker_alive.is_alive.return_value = True
worker_dead = MagicMock()
diff --git a/backend/tests/deamons/test_dispatcher.py
b/backend/tests/daemons/test_dispatcher.py
similarity index 99%
rename from backend/tests/deamons/test_dispatcher.py
rename to backend/tests/daemons/test_dispatcher.py
index 7fca938..783a98d 100644
--- a/backend/tests/deamons/test_dispatcher.py
+++ b/backend/tests/daemons/test_dispatcher.py
@@ -358,7 +358,7 @@ class TestDispatcher(object):
self.worker.task_queue = mc_tq
self.worker.starting_build = MagicMock()
- mc_tq.dequeue.return_value = MagicMock(data=self.task)
+ self.worker.jg.get_build = MagicMock(return_value=self.task)
obtained_job = self.worker.obtain_job()
assert obtained_job.__dict__ == self.job.__dict__
diff --git a/backend/tests/deamons/test_job_grab.py
b/backend/tests/daemons/test_job_grab.py
similarity index 87%
rename from backend/tests/deamons/test_job_grab.py
rename to backend/tests/daemons/test_job_grab.py
index 7632cb7..fc2c1bf 100644
--- a/backend/tests/deamons/test_job_grab.py
+++ b/backend/tests/daemons/test_job_grab.py
@@ -52,7 +52,7 @@ def mc_setproctitle():
@pytest.yield_fixture
def mc_retask_queue():
- with mock.patch("{}.Queue".format(MODULE_REF)) as mc_queue:
+ with mock.patch("{}.jobgrabcontrol.Channel".format(MODULE_REF)) as
mc_queue:
def make_queue(*args, **kwargs):
updated_kwargs = copy.deepcopy(kwargs)
updated_kwargs["spec"] = Queue
@@ -117,6 +117,7 @@ class TestJobGrab(object):
project_owner="foobar",
)
+
def teardown_method(self, method):
shutil.rmtree(self.tmp_dir_path)
@@ -134,30 +135,14 @@ class TestJobGrab(object):
@pytest.fixture
def init_jg(self, mc_retask_queue, mc_grc):
- self.jg = CoprJobGrab(self.opts, self.frontend_client)
- self.jg.connect_queues()
- self.jg.vm_manager = MagicMock()
-
- def test_connect_queues(self, mc_retask_queue, mc_grc):
- mc_rc = MagicMock()
- mc_grc.return_value = mc_rc
- self.jg = CoprJobGrab(self.opts, self.frontend_client)
-
- assert len(self.jg.task_queues_by_arch) == 0
- self.jg.connect_queues()
- # created retask queue
- expected = [call(u'copr-be-0'), call(u'copr-be-1')]
- assert mc_retask_queue.call_args_list == expected
- # connected to them
- for obj in self.jg.task_queues_by_arch.values():
- assert obj.connect.called
-
- assert not mc_rc.pubsub.called
+ self.jg = CoprJobGrab(self.opts)
+ self.jg.init_internal_structures()
+ self.jg.jg_control = MagicMock()
def test_listen_to_pubsub(self, mc_retask_queue, mc_grc):
mc_rc = MagicMock()
mc_grc.return_value = mc_rc
- self.jg = CoprJobGrab(self.opts, self.frontend_client)
+ self.jg = CoprJobGrab(self.opts)
assert not mc_rc.pubsub.called
self.jg.listen_to_pubsub()
@@ -170,9 +155,7 @@ class TestJobGrab(object):
self.jg.added_jobs_dict[d["task_id"]] = d
assert self.jg.route_build_task(self.task_dict_1) == 0
- assert self.jg.route_build_task(self.task_dict_2) == 0
- for obj in self.jg.task_queues_by_arch.values():
- assert not obj.enqueue.called
+ assert not self.jg.jg_control.add_build.called
def test_route_build_task_skip_too_much_added(self, init_jg):
for i in range(10):
@@ -181,34 +164,24 @@ class TestJobGrab(object):
self.jg.added_jobs_dict[task["task_id"]] = task
assert self.jg.route_build_task(self.task_dict_1) == 0
- for obj in self.jg.task_queues_by_arch.values():
- assert not obj.enqueue.called
+ assert not self.jg.jg_control.add_build.called
def test_route_build_task_missing_task_ud(self, init_jg):
assert self.jg.route_build_task({"task": "wrong_key"}) == 0
- for obj in self.jg.task_queues_by_arch.values():
- assert not obj.enqueue.called
+ assert not self.jg.jg_control.add_build.called
def test_route_build_task_correct_group_1(self, init_jg,):
-
assert self.jg.route_build_task(self.task_dict_1) == 1
- assert self.jg.task_queues_by_arch["x86_64"].enqueue.called
- assert not self.jg.task_queues_by_arch["armv7"].enqueue.called
+ assert self.jg.jg_control.add_build.call_args[0][0] == 0
def test_route_build_task_correct_group_2(self, init_jg, ):
-
assert self.jg.route_build_task(self.task_dict_2) == 1
- assert not self.jg.task_queues_by_arch["x86_64"].enqueue.called
- assert self.jg.task_queues_by_arch["armv7"].enqueue.called
+ assert self.jg.jg_control.add_build.call_args[0][0] == 1
def test_route_build_task_correct_group_error(self, init_jg):
-
with pytest.raises(CoprJobGrabError) as err:
self.jg.route_build_task(self.task_dict_bad_arch)
- assert not self.jg.task_queues_by_arch["x86_64"].enqueue.called
- assert not self.jg.task_queues_by_arch["armv7"].enqueue.called
-
@mock.patch("backend.daemons.job_grab.Action",
spec=backend.actions.Action)
def test_process_action(self, mc_action, init_jg):
test_action = MagicMock()
@@ -378,7 +351,6 @@ class TestJobGrab(object):
# self.jg.process_task_end_pubsub()
def test_run(self, mc_time, mc_setproctitle, init_jg, mc_grc):
- self.jg.connect_queues = MagicMock()
self.jg.process_task_end_pubsub = MagicMock()
self.jg.load_tasks = MagicMock()
self.jg.load_tasks.side_effect = [
@@ -391,5 +363,4 @@ class TestJobGrab(object):
self.jg.run()
assert mc_setproctitle.called
- assert self.jg.connect_queues.called_once
assert self.jg.load_tasks.called
diff --git a/backend/tests/deamons/test_log.py b/backend/tests/daemons/test_log.py
similarity index 100%
rename from backend/tests/deamons/test_log.py
rename to backend/tests/daemons/test_log.py
diff --git a/backend/tests/deamons/test_vm_master.py
b/backend/tests/daemons/test_vm_master.py
similarity index 100%
rename from backend/tests/deamons/test_vm_master.py
rename to backend/tests/daemons/test_vm_master.py