fix(hftest): retrieve telnet port from FVP log

Parse model log looking for actual port model is listening to, default
to 5000 if not found.

Change-Id: I19a0ebd2703f34d79921f577cb44e441280823ca
Signed-off-by: Federico Recanati <federico.recanati@arm.com>
diff --git a/test/hftest/hftest.py b/test/hftest/hftest.py
index ea29bc5..3794147 100755
--- a/test/hftest/hftest.py
+++ b/test/hftest/hftest.py
@@ -562,8 +562,9 @@
         self.compile_dt(run_state, dt)
 
         # Create file to capture model stdout and stderr
-        fvp_out = args.artifacts.create_file(args.global_run_name, ".model.log")
-        self.fvp_out_f = open(fvp_out, "a")
+        self.fvp_out_filename = args.artifacts.create_file(
+            args.global_run_name, ".model.log")
+        self.fvp_out_f = open(self.fvp_out_filename, "a")
 
         # Generate the FVP model arguments
         self.fvp_args = self.gen_fvp_args(None, None, dt)
@@ -612,6 +613,14 @@
         # APIs. Therefore, removing from list of command arguments:
         return fvp_args[3:]
 
+    def get_telnet_port(self):
+        # Get telnet port by parsing log file, default to 5000
+        self.fvp_out_f.flush()
+        log = read_file(self.fvp_out_filename)
+        port = re.match(
+            'terminal_0: Listening for serial connection on port ([0-9]+)', log)
+        return port.group(1) if port else 5000
+
     def process_start(self):
         self.process = subprocess.Popen(self.fvp_args,
                                         stdout = self.fvp_out_f,
@@ -620,7 +629,7 @@
         time.sleep(1.0)
         # Start telnet session
         try:
-            self.comm = Telnet("localhost", 5000)
+            self.comm = Telnet("localhost", self.get_telnet_port())
         except ConnectionError as e:
             self.finish()
             raise e