From 5c4d1561a90b357b7ae363306d4561d013cc6a42 Mon Sep 17 00:00:00 2001
From: SKAJohanVenter <aventer@ska.ac.za>
Date: Mon, 25 Oct 2021 17:28:18 +0200
Subject: [PATCH] SAR-288 Changed GetVersionInfo to long running

---
 pogo/CspSubElementController.xmi       | 2 +-
 pogo/CspSubElementObsDevice.xmi        | 2 +-
 pogo/CspSubElementSubarray.xmi         | 2 +-
 pogo/SKAAlarmHandler.xmi               | 2 +-
 pogo/SKABaseDevice.xmi                 | 2 +-
 pogo/SKACapability.xmi                 | 2 +-
 pogo/SKAController.xmi                 | 2 +-
 pogo/SKALogger.xmi                     | 2 +-
 pogo/SKAObsDevice.xmi                  | 2 +-
 pogo/SKASubarray.xmi                   | 2 +-
 pogo/SKATelState.xmi                   | 2 +-
 src/ska_tango_base/base/base_device.py | 7 ++++---
 tests/test_alarm_handler_device.py     | 9 +++++----
 tests/test_base_device.py              | 9 +++++----
 tests/test_controller_device.py        | 9 +++++----
 tests/test_csp_controller.py           | 9 +++++----
 tests/test_csp_obs_device.py           | 9 +++++----
 tests/test_csp_subarray.py             | 9 +++++----
 tests/test_logger_device.py            | 9 +++++----
 tests/test_obs_device.py               | 9 +++++----
 tests/test_subarray_device.py          | 9 +++++----
 tests/test_tel_state_device.py         | 9 +++++----
 22 files changed, 65 insertions(+), 54 deletions(-)

diff --git a/pogo/CspSubElementController.xmi b/pogo/CspSubElementController.xmi
index c861cbdb..a130f84c 100644
--- a/pogo/CspSubElementController.xmi
+++ b/pogo/CspSubElementController.xmi
@@ -71,7 +71,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/CspSubElementObsDevice.xmi b/pogo/CspSubElementObsDevice.xmi
index 7befab6d..af8d7f2f 100644
--- a/pogo/CspSubElementObsDevice.xmi
+++ b/pogo/CspSubElementObsDevice.xmi
@@ -53,7 +53,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/CspSubElementSubarray.xmi b/pogo/CspSubElementSubarray.xmi
index 489b6908..1ca79a91 100644
--- a/pogo/CspSubElementSubarray.xmi
+++ b/pogo/CspSubElementSubarray.xmi
@@ -56,7 +56,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/SKAAlarmHandler.xmi b/pogo/SKAAlarmHandler.xmi
index db01bd18..3f8f1945 100644
--- a/pogo/SKAAlarmHandler.xmi
+++ b/pogo/SKAAlarmHandler.xmi
@@ -118,7 +118,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState ]">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/SKABaseDevice.xmi b/pogo/SKABaseDevice.xmi
index a7f7ed3d..42261f49 100644
--- a/pogo/SKABaseDevice.xmi
+++ b/pogo/SKABaseDevice.xmi
@@ -46,7 +46,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="Version strings">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
     </commands>
diff --git a/pogo/SKACapability.xmi b/pogo/SKACapability.xmi
index b71acefe..524562f9 100644
--- a/pogo/SKACapability.xmi
+++ b/pogo/SKACapability.xmi
@@ -59,7 +59,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/SKAController.xmi b/pogo/SKAController.xmi
index 46679e7d..e77fb926 100644
--- a/pogo/SKAController.xmi
+++ b/pogo/SKAController.xmi
@@ -60,7 +60,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/SKALogger.xmi b/pogo/SKALogger.xmi
index 267dbfb0..3616550b 100644
--- a/pogo/SKALogger.xmi
+++ b/pogo/SKALogger.xmi
@@ -56,7 +56,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState ]">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/SKAObsDevice.xmi b/pogo/SKAObsDevice.xmi
index 3512f147..6caa6332 100644
--- a/pogo/SKAObsDevice.xmi
+++ b/pogo/SKAObsDevice.xmi
@@ -47,7 +47,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/SKASubarray.xmi b/pogo/SKASubarray.xmi
index f13224cf..280d53a2 100644
--- a/pogo/SKASubarray.xmi
+++ b/pogo/SKASubarray.xmi
@@ -55,7 +55,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/pogo/SKATelState.xmi b/pogo/SKATelState.xmi
index 009fed6b..210d8fee 100644
--- a/pogo/SKATelState.xmi
+++ b/pogo/SKATelState.xmi
@@ -51,7 +51,7 @@
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
       <argout description="[ name: EltTelState ]">
-        <type xsi:type="pogoDsl:StringArrayType"/>
+        <type xsi:type="pogoDsl:DevVarLongStringArray"/>
       </argout>
       <status abstract="false" inherited="true" concrete="true"/>
     </commands>
diff --git a/src/ska_tango_base/base/base_device.py b/src/ska_tango_base/base/base_device.py
index b17afb58..68345970 100644
--- a/src/ska_tango_base/base/base_device.py
+++ b/src/ska_tango_base/base/base_device.py
@@ -1183,8 +1183,8 @@ class SKABaseDevice(Device):
             return [f"{device.__class__.__name__}, {device.read_buildState()}"]
 
     @command(
-        dtype_out=("str",),
-        doc_out="Version strings",
+        dtype_out="DevVarLongStringArray",
+        doc_out="(ReturnType, 'Command unique ID')",
     )
     @DebugIt()
     def GetVersionInfo(self):
@@ -1198,7 +1198,8 @@ class SKABaseDevice(Device):
         :return: Version details of the device.
         """
         command = self.get_command_object("GetVersionInfo")
-        return command()
+        unique_id, return_code = self.component_manager.enqueue(command)
+        return [[return_code], [unique_id]]
         # PROTECTED REGION END #    //  SKABaseDevice.GetVersionInfo
 
     class ResetCommand(StateModelCommand, ResponseCommand):
diff --git a/tests/test_alarm_handler_device.py b/tests/test_alarm_handler_device.py
index 3e6c5bf6..f93a5a5f 100644
--- a/tests/test_alarm_handler_device.py
+++ b/tests/test_alarm_handler_device.py
@@ -97,11 +97,12 @@ class TestSKAAlarmHandler(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(SKAAlarmHandler.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  SKAAlarmHandler.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKAAlarmHandler.test_statsNrAlerts_decorators) ENABLED START #
diff --git a/tests/test_base_device.py b/tests/test_base_device.py
index c16219c5..deba667d 100644
--- a/tests/test_base_device.py
+++ b/tests/test_base_device.py
@@ -441,11 +441,12 @@ class TestSKABaseDevice(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(SKABaseDevice.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  SKABaseDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKABaseDevice.test_Reset_decorators) ENABLED START #
diff --git a/tests/test_controller_device.py b/tests/test_controller_device.py
index 6999b808..8173ddd5 100644
--- a/tests/test_controller_device.py
+++ b/tests/test_controller_device.py
@@ -95,11 +95,12 @@ class TestSKAController(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(SKAController.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  SKAController.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKAController.test_isCapabilityAchievable_failure_decorators) ENABLED START #
diff --git a/tests/test_csp_controller.py b/tests/test_csp_controller.py
index 55aab228..eadcf3d0 100644
--- a/tests/test_csp_controller.py
+++ b/tests/test_csp_controller.py
@@ -88,11 +88,12 @@ class TestCspSubElementController(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(CspSubelementController.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  CspSubelementController.test_GetVersionInfo
 
     # PROTECTED REGION ID(CspSubelementController.test_configurationProgress_decorators) ENABLED START #
diff --git a/tests/test_csp_obs_device.py b/tests/test_csp_obs_device.py
index 3aa5d0e6..a505efb4 100644
--- a/tests/test_csp_obs_device.py
+++ b/tests/test_csp_obs_device.py
@@ -97,11 +97,12 @@ class TestCspSubElementObsDevice(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(CspSubelementObsDevice.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  CspSubelementObsDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(CspSubelementObsDevice.test_buildState_decorators) ENABLED START #
diff --git a/tests/test_csp_subarray.py b/tests/test_csp_subarray.py
index 37a4d0b4..6d36bde9 100644
--- a/tests/test_csp_subarray.py
+++ b/tests/test_csp_subarray.py
@@ -98,11 +98,12 @@ class TestCspSubElementSubarray(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(CspSubelementSubarray.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  CspSubelementSubarray.test_GetVersionInfo
 
     # PROTECTED REGION ID(CspSubelementSubarray.test_configurationProgress_decorators) ENABLED START #
diff --git a/tests/test_logger_device.py b/tests/test_logger_device.py
index 2bdf46bb..f3a65923 100644
--- a/tests/test_logger_device.py
+++ b/tests/test_logger_device.py
@@ -81,11 +81,12 @@ class TestSKALogger(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(SKALogger.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  SKALogger.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKALogger.test_buildState_decorators) ENABLED START #
diff --git a/tests/test_obs_device.py b/tests/test_obs_device.py
index daceac14..6114ff50 100644
--- a/tests/test_obs_device.py
+++ b/tests/test_obs_device.py
@@ -84,11 +84,12 @@ class TestSKAObsDevice(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(SKAObsDevice.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  SKAObsDevice.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKAObsDevice.test_obsState_decorators) ENABLED START #
diff --git a/tests/test_subarray_device.py b/tests/test_subarray_device.py
index cceb1bdf..420e4608 100644
--- a/tests/test_subarray_device.py
+++ b/tests/test_subarray_device.py
@@ -122,11 +122,12 @@ class TestSKASubarray:
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(SKASubarray.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  SKASubarray.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKASubarray.test_Status_decorators) ENABLED START #
diff --git a/tests/test_tel_state_device.py b/tests/test_tel_state_device.py
index e771eb82..a6b14891 100644
--- a/tests/test_tel_state_device.py
+++ b/tests/test_tel_state_device.py
@@ -77,11 +77,12 @@ class TestSKATelState(object):
         """Test for GetVersionInfo."""
         # PROTECTED REGION ID(SKATelState.test_GetVersionInfo) ENABLED START #
         versionPattern = re.compile(
-            f"{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
-            "A set of generic base devices for SKA Telescope."
+            f"['{device_under_test.info().dev_class}, ska_tango_base, [0-9]+.[0-9]+.[0-9]+, "
+            "A set of generic base devices for SKA Telescope.']"
         )
-        versionInfo = device_under_test.GetVersionInfo()
-        assert (re.match(versionPattern, versionInfo[0])) is not None
+        device_under_test.GetVersionInfo()
+        versionInfo = device_under_test.longRunningCommandResult[2]
+        assert (re.match(versionPattern, versionInfo)) is not None
         # PROTECTED REGION END #    //  SKATelState.test_GetVersionInfo
 
     # PROTECTED REGION ID(SKATelState.test_buildState_decorators) ENABLED START #
-- 
GitLab