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