From 3ba8cede6fb31fadeba23f8d118bf22e81a3d9e2 Mon Sep 17 00:00:00 2001
From: Jorrit Schaap <schaap@astron.nl>
Date: Tue, 8 Oct 2019 16:42:23 +0200
Subject: [PATCH] SW-828: use temporary file to store state in

---
 SAS/OTDB_Services/test/t_TreeStatusEvents.py | 31 ++++++++++++--------
 1 file changed, 19 insertions(+), 12 deletions(-)

diff --git a/SAS/OTDB_Services/test/t_TreeStatusEvents.py b/SAS/OTDB_Services/test/t_TreeStatusEvents.py
index 5f1df337961..100bf4cf483 100644
--- a/SAS/OTDB_Services/test/t_TreeStatusEvents.py
+++ b/SAS/OTDB_Services/test/t_TreeStatusEvents.py
@@ -32,6 +32,8 @@ from lofar.messaging.messagebus import *
 from lofar.sas.otdb.TreeStatusEvents import create_service
 import threading
 import sys
+from datetime import datetime, timedelta
+from tempfile import NamedTemporaryFile
 
 import logging
 logger = logging.getLogger(__name__)
@@ -44,17 +46,22 @@ with OTDBTestInstance('t_TreeStatusEvents.in.unittest_db.dump.gz') as test_db:
         with tmp_exchange.create_temporary_queue() as tmp_queue:
             with tmp_queue.create_frombus() as frombus:
 
-                t = threading.Thread(target=create_service, args=(tmp_exchange.address, test_db.dbcreds, '/dev/null'))
-                t.daemon = True
-                t.start()
+                with NamedTemporaryFile(mode='w+') as state_file:
+                    state_file.file.write((datetime.utcnow()-timedelta(seconds=2)).strftime("%Y-%m-%d %H:%M:%S"))
+                    state_file.file.flush()
 
-                test_db.db.executeQuery("select setTreeState(1, %d, %d::INT2,'%s'::boolean);" % (1099266, 500, False))
-                test_db.db.commit()
+                    t = threading.Thread(target=create_service, args=(tmp_exchange.address, test_db.dbcreds, state_file.name))
+                    t.daemon = True
+                    t.start()
 
-                msg = frombus.receive(timeout=500, acknowledge=True)	  # TreeStateEvent are send every 2 seconds
-                logger.info(msg)
-                try:
-                    ok = (msg.content['treeID'] == 1099266 and msg.content['state'] == 'queued')
-                except IndexError:
-                    ok = False
-    sys.exit(not ok)   # 0 = success
+                    test_db.db.executeQuery("select setTreeState(1, %d, %d::INT2,'%s'::boolean);" % (1099266, 500, False))
+                    test_db.db.commit()
+
+                    msg = frombus.receive(timeout=500, acknowledge=True)	  # TreeStateEvent are send every 2 seconds
+                    logger.info(msg)
+                    try:
+                        ok = (msg.content['treeID'] == 1099266 and msg.content['state'] == 'queued')
+                    except IndexError:
+                        ok = False
+
+sys.exit(not ok)   # 0 = success
-- 
GitLab