From 5d1847d55499441be17d490bdad1e6e29d064d90 Mon Sep 17 00:00:00 2001
From: lukken <lukken@astron.nl>
Date: Wed, 22 Sep 2021 08:11:52 +0000
Subject: [PATCH] L2SS-340: Some clean up and basic sst integration tests

---
 CDB/integration_ConfigDb.json        |  2 +-
 devices/clients/statistics_client.py |  1 +
 devices/clients/tcp_replicator.py    |  9 ++++-----
 devices/clients/udp_receiver.py      | 16 ++++++++++------
 devices/devices/sdp/sst.py           |  6 ------
 devices/devices/sdp/statistics.py    |  1 -
 sbin/run_integration_test.sh         |  6 +++++-
 7 files changed, 21 insertions(+), 20 deletions(-)

diff --git a/CDB/integration_ConfigDb.json b/CDB/integration_ConfigDb.json
index a3e0bd8b0..37a8ea390 100644
--- a/CDB/integration_ConfigDb.json
+++ b/CDB/integration_ConfigDb.json
@@ -95,7 +95,7 @@
                                 "5001"
                             ],
                             "Statistics_Client_TCP_Port": [
-                                "5002"
+                                "5000"
                             ],
                             "OPC_Server_Name": [
                                 "sdptr-sim"
diff --git a/devices/clients/statistics_client.py b/devices/clients/statistics_client.py
index fdbb80fe0..d3597147d 100644
--- a/devices/clients/statistics_client.py
+++ b/devices/clients/statistics_client.py
@@ -26,6 +26,7 @@ class StatisticsClient(CommClient):
         host: hostname to listen on
         port: port number to listen on
         """
+
         self.udp_options = udp_options
         self.tcp_options = tcp_options
         self.queuesize = queuesize
diff --git a/devices/clients/tcp_replicator.py b/devices/clients/tcp_replicator.py
index df5e173b1..79d2dfdf4 100644
--- a/devices/clients/tcp_replicator.py
+++ b/devices/clients/tcp_replicator.py
@@ -1,9 +1,8 @@
-from threading import Condition
-from threading import Thread
-from threading import Semaphore
 from queue import Empty
 from queue import Queue
-
+from threading import Condition
+from threading import Semaphore
+from threading import Thread
 import asyncio
 import logging
 
@@ -226,7 +225,7 @@ class TCPReplicator(Thread, StatisticsClientThread):
 
         tcp_server = await loop.create_server(
             lambda: TCPReplicator.TCPServerProtocol(options, connected_clients),
-            options['tcp_bind'], options['tcp_port'])
+            options['tcp_bind'], options['tcp_port'], reuse_address=True)
 
     async def _process_queue(self):
         """Take a packet from the queue and reschedule this task"""
diff --git a/devices/clients/udp_receiver.py b/devices/clients/udp_receiver.py
index 1968028c8..aaa7fe49a 100644
--- a/devices/clients/udp_receiver.py
+++ b/devices/clients/udp_receiver.py
@@ -1,8 +1,8 @@
-from queue import Queue
 from queue import Full
+from queue import Queue
 from threading import Thread
-import numpy
 import logging
+import numpy
 import socket
 import time
 
@@ -18,6 +18,8 @@ class UDPReceiver(Thread, StatisticsClientThread):
 
     # Default options for UDPReceiver
     _default_options = {
+        "udp_host": None,
+        "udp_port": None,
         "poll_timeout": 0.1,
     }
 
@@ -25,18 +27,20 @@ class UDPReceiver(Thread, StatisticsClientThread):
         self.collector_queue = collector_queue
         self.replicator_queue = replicator_queue
 
-        self.options = self._parse_options(options)
-
         try:
-            self.host = self.options['udp_host']
+            options['udp_host']
         except KeyError:
             raise
 
         try:
-            self.port = self.options['udp_port']
+            options['udp_port']
         except KeyError:
             raise
 
+        self.options = self._parse_options(options)
+
+        self.host = self.options['udp_host']
+        self.port = self.options['udp_port']
         self.poll_timeout = self.options['poll_timeout']
 
         self.parameters = {
diff --git a/devices/devices/sdp/sst.py b/devices/devices/sdp/sst.py
index 792162fd5..62fbc260e 100644
--- a/devices/devices/sdp/sst.py
+++ b/devices/devices/sdp/sst.py
@@ -27,12 +27,6 @@ from tango import AttrWriteType
 from clients.attribute_wrapper import attribute_wrapper
 from clients.opcua_client import OPCUAConnection
 from clients.statistics_client import StatisticsClient
-
-from devices.hardware_device import hardware_device
-
-from common.lofar_git import get_version
-from common.lofar_logging import device_logging_to_python, log_exceptions
-
 from devices.sdp.statistics import Statistics
 from devices.sdp.statistics_collector import SSTCollector
 
diff --git a/devices/devices/sdp/statistics.py b/devices/devices/sdp/statistics.py
index ba6731ddc..71d19ee74 100644
--- a/devices/devices/sdp/statistics.py
+++ b/devices/devices/sdp/statistics.py
@@ -21,7 +21,6 @@ sys.path.append(parentdir)
 from abc import ABCMeta, abstractmethod
 
 # PyTango imports
-from tango.server import run
 from tango.server import device_property, attribute
 from tango import AttrWriteType
 # Additional import
diff --git a/sbin/run_integration_test.sh b/sbin/run_integration_test.sh
index b2925b408..39d266ac1 100755
--- a/sbin/run_integration_test.sh
+++ b/sbin/run_integration_test.sh
@@ -6,10 +6,14 @@ if [ -z "$LOFAR20_DIR" ]; then
   exit 1
 fi
 
-# Start all required containers
+# Restart all required containers
 cd "$LOFAR20_DIR/docker-compose" || exit 1
+make stop device-sdp device-pcc device-sst sdptr-sim pypcc-sim
 make start databaseds dsconfig device-sdp device-pcc device-sst jupyter elk sdptr-sim pypcc-sim
 
+# Give dsconfig and databaseds time to start
+sleep 15
+
 # Update the dsconfig
 cd "$TANGO_LOFAR_LOCAL_DIR" || exit 1
 sbin/update_ConfigDb.sh CDB/integration_ConfigDb.json
-- 
GitLab