From 2b0770bc5e0f5a3a690dbabae9bfc925b982315d Mon Sep 17 00:00:00 2001 From: Jan David Mol <mol@astron.nl> Date: Tue, 8 Mar 2016 14:19:06 +0000 Subject: [PATCH] Task #8437: Use MethodTrigger and addCleanup to reduce code --- .../Services/test/tRATaskSpecified.py | 63 +++++++------------ 1 file changed, 21 insertions(+), 42 deletions(-) diff --git a/SAS/ResourceAssignment/Services/test/tRATaskSpecified.py b/SAS/ResourceAssignment/Services/test/tRATaskSpecified.py index 94ca0643706..457028e2565 100644 --- a/SAS/ResourceAssignment/Services/test/tRATaskSpecified.py +++ b/SAS/ResourceAssignment/Services/test/tRATaskSpecified.py @@ -8,12 +8,12 @@ from RATaskSpecified import * from RABusListener import RATaskSpecifiedBusListener from lofar.parameterset import PyParameterSet from lofar.messaging import EventMessage, Service +from lofar.common.methodtrigger import MethodTrigger import unittest from glob import glob import uuid import datetime -from threading import Condition, Lock import logging logging.basicConfig(stream=sys.stdout, level=logging.INFO) @@ -73,6 +73,7 @@ class TestService(unittest.TestCase): self.busname = "%s-%s" % (sys.argv[0], str(uuid.uuid4())[:8]) self.bus = ToBus(self.busname, { "create": "always", "delete": "always", "node": { "type": "topic" } }) self.bus.open() + self.addCleanup(self.bus.close) # Define the services we use self.status_service = "%s/TaskStatus" % (self.busname,) @@ -102,44 +103,20 @@ class TestService(unittest.TestCase): PARSET_PREFIX + "Observation.Scheduler.predecessors": predecessors, } - self.parset_service = Service("TaskSpecification", TaskSpecificationService, busname=self.busname) - self.parset_service.start_listening() + parset_service = Service("TaskSpecification", TaskSpecificationService, busname=self.busname) + parset_service.start_listening() + self.addCleanup(parset_service.stop_listening) # ================================ # Setup listener to catch result # of our service # ================================ - class Listener(RATaskSpecifiedBusListener): - def __init__(self, **kwargs): - super(Listener, self).__init__(**kwargs) + listener = RATaskSpecifiedBusListener(busname=self.busname) + listener.start_listening() + self.addCleanup(listener.stop_listening) - self.messageReceived = False - self.lock = Lock() - self.cond = Condition(self.lock) - - def onTaskSpecified(self, sasId, modificationTime, resourceIndicators): - self.messageReceived = True - - self.sasID = sasId - self.resourceIndicators = resourceIndicators - - # Release waiting parent - with self.lock: - self.cond.notify() - - def waitForMessage(self): - with self.lock: - self.cond.wait(5.0) - return self.messageReceived - - self.listener = Listener(busname=self.busname) - self.listener.start_listening() - - def tearDown(self): - self.listener.stop_listening() - self.parset_service.stop_listening() - self.bus.close() + self.trigger = MethodTrigger(listener, "onTaskSpecified") def testNoPredecessors(self): """ @@ -158,13 +135,14 @@ class TestService(unittest.TestCase): tb.send(msg) # Wait for message to arrive - self.assertTrue(self.listener.waitForMessage()) + self.assertTrue(self.trigger.wait()) # Verify message - self.assertEqual(self.listener.sasID, 3) - self.assertNotIn("1", self.listener.resourceIndicators); - self.assertNotIn("2", self.listener.resourceIndicators); - self.assertIn("3", self.listener.resourceIndicators); + self.assertEqual(self.trigger.args[0], 3) + resourceIndicators = self.trigger.args[2] + self.assertNotIn("1", resourceIndicators) + self.assertNotIn("2", resourceIndicators) + self.assertIn("3", resourceIndicators); # Make sure we only requested one parset self.assertEqual(self.requested_parsets, 1) @@ -189,13 +167,14 @@ class TestService(unittest.TestCase): tb.send(msg) # Wait for message to arrive - self.assertTrue(self.listener.waitForMessage()) + self.assertTrue(self.trigger.wait()) # Verify message - self.assertEqual(self.listener.sasID, 1) - self.assertIn("1", self.listener.resourceIndicators); - self.assertIn("2", self.listener.resourceIndicators); - self.assertIn("3", self.listener.resourceIndicators); + self.assertEqual(self.trigger.args[0], 1) + resourceIndicators = self.trigger.args[2] + self.assertIn("1", resourceIndicators); + self.assertIn("2", resourceIndicators); + self.assertIn("3", resourceIndicators); # Make sure we only requested exactly three parsets self.assertEqual(self.requested_parsets, 3) -- GitLab