{ms,enb}_srs: add method to read kpi from a test run

this method uses the kpi_analyzer module for analyzing
stdout, CSV metrics and the logfile (if present).

if the module can't be loaded, no KPI will be added.

Change-Id: I28226a375f9ac4e08424c488062ae6a74a19af92
diff --git a/src/osmo_gsm_tester/obj/srslte_common.py b/src/osmo_gsm_tester/obj/srslte_common.py
new file mode 100644
index 0000000..33f12d4
--- /dev/null
+++ b/src/osmo_gsm_tester/obj/srslte_common.py
@@ -0,0 +1,45 @@
+# osmo_gsm_tester: common methods shared among srsLTE components
+#
+# Copyright (C) 2020 by Software Radio Systems Ltd
+#
+# Author: Andre Puschmann <andre@softwareradiosystems.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+from ..core import log
+
+class srslte_common(): # don't inherit from log.Origin here but instead use .name() from whoever inherits from us
+
+  def __init__(self):
+    self.log_file = None
+    self.process = None
+    self.metrics_file = None
+
+  def get_kpis(self):
+      ''' Use the srsLTE KPI analyzer module (part of srsLTE.git) if available to collect KPIs '''
+      kpis = {}
+      try:
+          # Please make sure the srsLTE scripts folder is included in your PYTHONPATH env variable
+          from kpi_analyzer import kpi_analyzer
+          analyzer = kpi_analyzer(self.name())
+          if self.log_file is not None:
+              kpis["log_" + self.name()] = analyzer.get_kpi_from_logfile(self.log_file)
+          if self.process.get_output_file('stdout') is not None:
+              kpis["stdout_" + self.name()] = analyzer.get_kpi_from_stdout(self.process.get_output_file('stdout'))
+          if self.metrics_file is not None:
+              kpis["csv_" + self.name()] = analyzer.get_kpi_from_csv(self.metrics_file)
+      except ImportError:
+          self.log("Can't load KPI analyzer module.")
+
+      return kpis