From 5a3fdc3f95023d0cfe93f93d9a089b8d8858986a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rn=20K=C3=BCnsem=C3=B6ller?=
 <jkuensem@physik.uni-bielefeld.de>
Date: Mon, 9 Apr 2018 11:36:12 +0000
Subject: [PATCH] Task SW-111: signal is enabled for some tile tests as well on
 request by Henri. Status check is now less strict and expects ok-status to be
 one of the lines of the command output.

---
 LCU/checkhardware/check_hardware.py                |  8 +++++---
 LCU/checkhardware/config/FR606-check_hardware.conf |  6 +++++-
 LCU/checkhardware/test/t_check_hardware.py         | 12 ++++++------
 LCU/checkhardware/test/test-check_hardware.conf    |  8 ++++++--
 4 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/LCU/checkhardware/check_hardware.py b/LCU/checkhardware/check_hardware.py
index 200dd16a223..abc31864fb6 100755
--- a/LCU/checkhardware/check_hardware.py
+++ b/LCU/checkhardware/check_hardware.py
@@ -414,9 +414,10 @@ def wait_for_test_signal_status(status_cmd, status, timeout=30):
     for _ in range(timeout):
         out = check_output(status_cmd, shell=True)
         out = out.strip()
-        if out == status:
-            logger.info("Status ok.")
-            return status
+        for line in out.split('\n'):
+            if line.strip() == status:
+                logger.info("Status ok.")
+                return status
         else:
             logger.info('Wrong status: %s != %s. Try again...'% (out, status))
         time.sleep(1)
@@ -670,6 +671,7 @@ def main():
 
                         # if 'RCU%d' % mode in args or 'S%d' % mode in args:
                         if 'S%d' % mode in args:
+                            safely_start_test_signal_from_ParameterSet(tile_settings)
                             hba.check_rf_power(mode=mode, parset=tile_settings)
 
                         runtime = (time.time() - runstart)
diff --git a/LCU/checkhardware/config/FR606-check_hardware.conf b/LCU/checkhardware/config/FR606-check_hardware.conf
index 194709f2021..f1a1ca5777d 100755
--- a/LCU/checkhardware/config/FR606-check_hardware.conf
+++ b/LCU/checkhardware/config/FR606-check_hardware.conf
@@ -147,6 +147,10 @@ oscillation.min-peak-pwr= 6.0
 oscillation.passband= 1:511
 spurious.min-peak-pwr= 3.0
 spurious.passband= 1:511
+testsignal.start-cmd= echo set config 56.0 -10 | nc ncu 8093
+testsignal.stop-cmd= echo bye | nc ncu 8093
+testsignal.status-cmd= echo get config | nc ncu 8093
+testsignal.ok-status= Frequency: 56 MHz Power level: -10 dBm RF: ON
 
 [rcumode.5.element]
 rf.subbands= 105
@@ -164,7 +168,7 @@ spurious.passband= 1:511
 testsignal.start-cmd= echo set config 56.0 -10 | nc ncu 8093
 testsignal.stop-cmd= echo bye | nc ncu 8093
 testsignal.status-cmd= echo get config | nc ncu 8093
-testsignal.ok-status= 56.0 -10
+testsignal.ok-status= Frequency: 56 MHz Power level: -10 dBm RF: ON
 
 [rcumode.6.tile]
 short.mean-pwr.min= 55.0
diff --git a/LCU/checkhardware/test/t_check_hardware.py b/LCU/checkhardware/test/t_check_hardware.py
index e5aec15c8d8..3acf60b1706 100644
--- a/LCU/checkhardware/test/t_check_hardware.py
+++ b/LCU/checkhardware/test/t_check_hardware.py
@@ -61,7 +61,7 @@ class TestCheckHardware(unittest.TestCase):
             check_hardware.start_watchdog_daemon.assert_called_with(os.getpid(), stop_cmd)
 
     def test_safely_start_test_signal_from_ParameterSet(self):
-        """ Verify that the provided command is executed and handlers are registered correctly"""
+        """ Verify that the commands from ParameterSet are passed on to safely_start_test_signal"""
 
         start_cmd = 'echo set config 56.0 -10 | nc ncu 8093'
         stop_cmd = 'echo bye | nc ncu 8093'
@@ -113,7 +113,7 @@ class TestCheckHardware(unittest.TestCase):
 
         # test value
         status_cmd = 'mockme'
-        responses = ['ne', 'ja', 'ne']
+        responses = ['ne', 'garbage\n ja \n moregarbage', 'ne']
         waitfor = 'ja'
 
         with patch.object(check_hardware, 'check_output', MagicMock(side_effect=responses)):
@@ -123,7 +123,7 @@ class TestCheckHardware(unittest.TestCase):
 
             # assert correct behavior
             check_hardware.check_output.called_with(status_cmd, shell=True)   # command is executed
-            self.assertEqual(check_hardware.check_output.call_count, responses.index(waitfor) + 1)
+            self.assertEqual(check_hardware.check_output.call_count, 2)
 
     def test_register_signal_handlers_stops_test_signal_on_POSIX_signal(self):
         """ Verify that the provided command is executed and os._exit is called with correct return code """
@@ -224,8 +224,8 @@ class TestCheckHardware(unittest.TestCase):
         # test_values
         expected_start_cmd = "echo set config 56.0 -10 | nc ncu 8093"
         expected_stop_cmd = "echo bye | nc ncu 8093"
-        expected_status_cmd = "echo 56.0 -10"
-        expected_ok_status = "56.0 -10"
+        expected_status_cmd = "echo 'Frequency: 56 MHz Power level: -10 dBm RF: ON'"
+        expected_ok_status = "Frequency: 56 MHz Power level: -10 dBm RF: ON"
 
         # read settings
         f = os.environ.get('srcdir')+'/test-check_hardware.conf'
@@ -275,7 +275,7 @@ class TestCheckHardware(unittest.TestCase):
             # -TST (test mode)
             # -e5: (element test in mode 5)
             # Names optimized for disk space
-            testargs = ["check_hardware.py", '-TST', '-e5']
+            testargs = ["check_hardware.py", '-TST', '-s5']
             with patch.object(sys, 'argv', testargs):
                 # trigger action
                 check_hardware.main() # Warning: Something acts as a fork bomb when mocks are not setup properly!
diff --git a/LCU/checkhardware/test/test-check_hardware.conf b/LCU/checkhardware/test/test-check_hardware.conf
index c3428c1dab7..4b7c43ad06d 100644
--- a/LCU/checkhardware/test/test-check_hardware.conf
+++ b/LCU/checkhardware/test/test-check_hardware.conf
@@ -147,6 +147,10 @@ oscillation.min-peak-pwr= 6.0
 oscillation.passband= 1:511
 spurious.min-peak-pwr= 3.0
 spurious.passband= 1:511
+testsignal.start-cmd= echo set config 56.0 -10 | nc ncu 8093
+testsignal.stop-cmd= echo bye | nc ncu 8093
+testsignal.status-cmd= echo 'Frequency: 56 MHz Power level: -10 dBm RF: ON'
+testsignal.ok-status= Frequency: 56 MHz Power level: -10 dBm RF: ON
 
 [rcumode.5.element]
 rf.subbands= 105
@@ -163,8 +167,8 @@ spurious.min-peak-pwr= 3.0
 spurious.passband= 1:511
 testsignal.start-cmd= echo set config 56.0 -10 | nc ncu 8093
 testsignal.stop-cmd= echo bye | nc ncu 8093
-testsignal.status-cmd= echo 56.0 -10
-testsignal.ok-status= 56.0 -10
+testsignal.status-cmd= echo 'Frequency: 56 MHz Power level: -10 dBm RF: ON'
+testsignal.ok-status= Frequency: 56 MHz Power level: -10 dBm RF: ON
 
 [rcumode.6.tile]
 short.mean-pwr.min= 55.0
-- 
GitLab