Make the StatefulConnection class to work with priviliged ports

Root permissions are required to bind a listener to priviliged
ports (<1024). Need to make sure that StatefulConnection class
can work with that

Change-Id: I74581b4b15b7a857cd5845644c776175246a5293
diff --git a/neutron_tempest_plugin/common/utils.py b/neutron_tempest_plugin/common/utils.py
index 4ccec72..c28ce74 100644
--- a/neutron_tempest_plugin/common/utils.py
+++ b/neutron_tempest_plugin/common/utils.py
@@ -155,6 +155,8 @@
         self.port = target_port
         self.connection_started = False
         self.test_attempt = 0
+        self.test_timeout = 10
+        self.test_sleep = 1
 
     def __enter__(self):
         return self
@@ -173,13 +175,21 @@
 
         self.server_ssh.exec_command(
                 'echo "{}" > input.txt'.format(self.test_str))
-        server_exec_method('tail -f input.txt | nc -lp '
+        server_exec_method('tail -f input.txt | sudo nc -lp '
                 '{} &> output.txt &'.format(self.port))
         self.client_ssh.exec_command(
                 'echo "{}" > input.txt'.format(self.test_str))
-        client_exec_method('tail -f input.txt | nc {} {} &>'
+        client_exec_method('tail -f input.txt | sudo nc {} {} &>'
                 'output.txt &'.format(self.ip, self.port))
 
+    def _nc_is_running(self):
+        server = process_is_running(self.server_ssh, 'nc')
+        client = process_is_running(self.client_ssh, 'nc')
+        if client and server:
+            return True
+        else:
+            return False
+
     def _test_connection(self):
         if not self.connection_started:
             self._start_connection()
@@ -188,6 +198,9 @@
                     'echo "{}" >> input.txt'.format(self.test_str))
             self.client_ssh.exec_command(
                     'echo "{}" >> input.txt & sleep 1'.format(self.test_str))
+        wait_until_true(self._nc_is_running,
+                        timeout=self.test_timeout,
+                        sleep=self.test_sleep)
         try:
             self.server_ssh.exec_command(
                     'grep {} output.txt'.format(self.test_str))
@@ -209,8 +222,11 @@
 
     def test_connection(self, should_pass=True, timeout=10, sleep_timer=1):
         self.should_pass = should_pass
-        wait_until_true(
-                self._test_connection, timeout=timeout, sleep=sleep_timer)
+        self.test_timeout = timeout
+        self.test_sleep = sleep_timer
+        wait_until_true(self._test_connection,
+                        timeout=self.test_timeout,
+                        sleep=self.test_sleep)
 
     def __exit__(self, type, value, traceback):
         self.server_ssh.exec_command('sudo killall nc || killall nc || '