Message ID | 20200214145235.4378-4-ovoshcha@redhat.com |
---|---|
State | New |
Headers | show |
Series | Extension of migration tests | expand |
Hi Oksana, On 2/14/20 12:52 PM, Oksana Vohchana wrote: > Adds functions to check if service RDMA is enabled and gets the interface > where it was configured > > Signed-off-by: Oksana Vohchana <ovoshcha@redhat.com> > --- > tests/acceptance/migration.py | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/tests/acceptance/migration.py b/tests/acceptance/migration.py > index 8209dcf71d..bbd88f8dda 100644 > --- a/tests/acceptance/migration.py > +++ b/tests/acceptance/migration.py > @@ -11,12 +11,16 @@ > > > import tempfile > +import re > +import netifaces Since netifaces isn't a standard Python library that import might fail. The tests dependencies are listed in tests/requirements.txt, and installed in the environment created by `make check-acceptance`. If you want to ensure the test behaves well even when executed manually (i.e. not via `make check-acceptance`), you can add runtime checks as can be seen in tests/acceptance/machine_m68k_nextcube.py > from avocado_qemu import Test > from avocado import skipUnless > > from avocado.utils import network > from avocado.utils import wait > from avocado.utils.path import find_command > +from avocado.utils import service > +from avocado.utils import process > > > class Migration(Test): > @@ -58,6 +62,19 @@ class Migration(Test): > self.cancel('Failed to find a free port') > return port > > + def _if_rdma_enable(self): > + rdma_stat = service.ServiceManager() > + rdma = rdma_stat.status('rdma') > + return rdma Above function is used on patch04, but actually I don't think it needs to check this service for RoCE. It would be needed if it was using the rxe_cfg to configure the rdma link. Or am I missing something? > + > + def _get_ip_rdma(self): > + get_ip_rdma = process.run('rdma link show').stdout.decode() > + for line in get_ip_rdma.split('\n'): > + if re.search(r"ACTIVE", line): > + interface = line.split(" ")[-2] > + ip = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr'] > + return ip > + I suggest that it explicitly returns None if none is found. Thanks! - Wainer > > def test_migration_with_tcp_localhost(self): > dest_uri = 'tcp:localhost:%u' % self._get_free_port()
Hi Wainer, Thanks for review On Fri, Feb 21, 2020 at 8:31 PM Wainer dos Santos Moschetta < wainersm@redhat.com> wrote: > Hi Oksana, > > On 2/14/20 12:52 PM, Oksana Vohchana wrote: > > Adds functions to check if service RDMA is enabled and gets the interface > > where it was configured > > > > Signed-off-by: Oksana Vohchana <ovoshcha@redhat.com> > > --- > > tests/acceptance/migration.py | 17 +++++++++++++++++ > > 1 file changed, 17 insertions(+) > > > > diff --git a/tests/acceptance/migration.py > b/tests/acceptance/migration.py > > index 8209dcf71d..bbd88f8dda 100644 > > --- a/tests/acceptance/migration.py > > +++ b/tests/acceptance/migration.py > > @@ -11,12 +11,16 @@ > > > > > > import tempfile > > +import re > > +import netifaces > > Since netifaces isn't a standard Python library that import might fail. > > The tests dependencies are listed in tests/requirements.txt, and > installed in the environment created by `make check-acceptance`. If you > want to ensure the test behaves well even when executed manually (i.e. > not via `make check-acceptance`), you can add runtime checks as can be > seen in tests/acceptance/machine_m68k_nextcube.py > Thanks, a "runtime checks" is a good approach I'll improve it > > > from avocado_qemu import Test > > from avocado import skipUnless > > > > from avocado.utils import network > > from avocado.utils import wait > > from avocado.utils.path import find_command > > +from avocado.utils import service > > +from avocado.utils import process > > > > > > class Migration(Test): > > @@ -58,6 +62,19 @@ class Migration(Test): > > self.cancel('Failed to find a free port') > > return port > > > > + def _if_rdma_enable(self): > > + rdma_stat = service.ServiceManager() > > + rdma = rdma_stat.status('rdma') > > + return rdma > > > Above function is used on patch04, but actually I don't think it needs > to check this service for RoCE. It would be needed if it was using the > rxe_cfg to configure the rdma link. Or am I missing something? > > The function _if_rdma_enable() checks if RDMA service enabled in the system it does not depend on wich utils we will use to check if some network configuration present (rdma or rxe_cfg) > > + > > + def _get_ip_rdma(self): > > + get_ip_rdma = process.run('rdma link show').stdout.decode() > > + for line in get_ip_rdma.split('\n'): > > + if re.search(r"ACTIVE", line): > > + interface = line.split(" ")[-2] > > + ip = > netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr'] > > + return ip > > + > > I suggest that it explicitly returns None if none is found. > Ok, I agree I'll improve it > Thanks! > > - Wainer > > > > > def test_migration_with_tcp_localhost(self): > > dest_uri = 'tcp:localhost:%u' % self._get_free_port() > > Thanks!
diff --git a/tests/acceptance/migration.py b/tests/acceptance/migration.py index 8209dcf71d..bbd88f8dda 100644 --- a/tests/acceptance/migration.py +++ b/tests/acceptance/migration.py @@ -11,12 +11,16 @@ import tempfile +import re +import netifaces from avocado_qemu import Test from avocado import skipUnless from avocado.utils import network from avocado.utils import wait from avocado.utils.path import find_command +from avocado.utils import service +from avocado.utils import process class Migration(Test): @@ -58,6 +62,19 @@ class Migration(Test): self.cancel('Failed to find a free port') return port + def _if_rdma_enable(self): + rdma_stat = service.ServiceManager() + rdma = rdma_stat.status('rdma') + return rdma + + def _get_ip_rdma(self): + get_ip_rdma = process.run('rdma link show').stdout.decode() + for line in get_ip_rdma.split('\n'): + if re.search(r"ACTIVE", line): + interface = line.split(" ")[-2] + ip = netifaces.ifaddresses(interface)[netifaces.AF_INET][0]['addr'] + return ip + def test_migration_with_tcp_localhost(self): dest_uri = 'tcp:localhost:%u' % self._get_free_port()
Adds functions to check if service RDMA is enabled and gets the interface where it was configured Signed-off-by: Oksana Vohchana <ovoshcha@redhat.com> --- tests/acceptance/migration.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)