#2 Add tests according to the CI
Opened a year ago by ssahani. Modified a year ago
rpms/ ssahani/libndp tests  into  master

Add tests according to the CI
Susant Sahani • a year ago  

@@ -0,0 +1,37 @@ 

+ # SPDX-License-Identifier: LGPL-2.1+

+ 

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ #

+ #   Makefile of /CoreOS/libndp

+ #   Description: Test if libndp ipv6 working ok

+ #   Author: Susant Sahani<susant@redhat.com>

+ #

+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ export TEST=/CoreOS/libndp

+ export TESTVERSION=1.0

+ BUILT_FILES=

+ FILES=$(METADATA) runtest.sh Makefile PURPOSE

+ .PHONY: all install download clean

+ run: $(FILES) build

+ 	./runtest.sh

+ build: $(BUILT_FILES)

+ 	test -x runtest.sh || chmod a+x runtest.sh

+ clean:

+ 	rm -f *~ $(BUILT_FILES)

+ include /usr/share/rhts/lib/rhts-make.include

+ $(METADATA): Makefile

+ 	@echo "Owner:           Susant Sahani<susant@redhat.com>" > $(METADATA)

+ 	@echo "Name:            $(TEST)" >> $(METADATA)

+ 	@echo "TestVersion:     $(TESTVERSION)" >> $(METADATA)

+ 	@echo "Path:            $(TEST_DIR)" >> $(METADATA)

+ 	@echo "Description:     Test if the ABI hasn't changed" >> $(METADATA)

+ 	@echo "Type:            Sanity" >> $(METADATA)

+ 	@echo "TestTime:        5m" >> $(METADATA)

+ 	@echo "RunFor:          libndp" >> $(METADATA)

+ 	@echo "Requires:        libndp radvd" >> $(METADATA)

+ 	@echo "Priority:        Normal" >> $(METADATA)

+ 	@echo "License:         GPLv2" >> $(METADATA)

+ 	@echo "Confidential:    no" >> $(METADATA)

+ 	@echo "Destructive:     no" >> $(METADATA)

+ 	@echo "Releases:        -Fedora 28" >> $(METADATA)

+ 	rhts-lint $(METADATA)

@@ -0,0 +1,3 @@ 

+ PURPOSE of /CoreOS/libndp

+ Description: IPv6 tests for libndp

+ Author: Susant Sahani<susant@redhat.com>

@@ -0,0 +1,220 @@ 

+ #!/usr/bin/env python3

+ # SPDX-License-Identifier: LGPL-2.1+

+ # ~~~

+ #   Description: llibndp provides a wrapper for IPv6 Neighbor Discovery Protocol.

+ #   Author: Susant Sahani <susant@redhat.com>

+ #   Copyright (c) 2018 Red Hat, Inc.

+ # ~~~

+ 

+ import errno

+ import os

+ import sys

+ import time

+ import unittest

+ import subprocess

+ import signal

+ import shutil

+ import psutil

+ import socket

+ from pyroute2 import IPRoute

+ 

+ LIBNDP_CI_DIR='/var/run/libndp-ci'

+ NDPTOOL_CI_LOG='/var/run/libndp-ci/ndptool.log'

+ 

+ RADVD_CONFIG_FILE='/var/run/libndp-ci/radvd.conf'

+ RADVD_PID_FILE='/var/run/libndp-ci/radvd.pid'

+ RADVD_LOG_FILE='/var/run/libndp-ci/radvd.log'

+ 

+ def setUpModule():

+     """Initialize the environment, and perform sanity checks on it."""

+ 

+     if shutil.which('ndptool') is None:

+         raise OSError(errno.ENOENT, 'ndptool not found')

+     if shutil.which('radvd') is None:

+         raise OSError(errno.ENOENT, 'radvd not found')

+ 

+ def tearDownModule():

+     pass

+ 

+ class GenericUtilities():

+     """Provide a set of utility functions start stop daemons, Setup veth """

+ 

+     def StartRadvd(self):

+         """Start radvd"""

+ 

+         subprocess.check_output(['radvd', '-d5', '-C', RADVD_CONFIG_FILE, '-p', RADVD_PID_FILE, '-l', RADVD_LOG_FILE])

+ 

+     def StartNDPTool(self):

+         """Start ndptool """

+ 

+         subprocess.check_output(['systemctl','start','ndptool-ci.service'])

+ 

+     def StopNDPTool(self):

+         """Stop ndptool """

+ 

+         subprocess.check_output(['systemctl','stop','ndptool-ci.service'])

+ 

+     def StopDaemon(self, pid_file):

+ 

+         with open(pid_file, 'r') as f:

+             pid = f.read().rstrip(' \t\r\n\0')

+             os.kill(int(pid), signal.SIGTERM)

+ 

+         os.remove(pid_file)

+ 

+     def findTextInFile(self, log_file, **kwargs):

+ 

+         if kwargs is not None:

+             with open (log_file, 'rt') as in_file:

+                 contents = in_file.read()

+                 for key in kwargs:

+                     self.assertRegex(contents, kwargs[key])

+ 

+                 in_file.close()

+ 

+     def EnableIPForwarding(self):

+ 

+         with open('/proc/sys/net/ipv6/conf/veth-peer/forwarding', 'a') as the_file:

+             the_file.write('1')

+ 

+             the_file.close()

+ 

+     def SetupVethInterface(self):

+         """Setup veth interface"""

+ 

+         ip = IPRoute()

+ 

+         ip.link('add', ifname='veth-test', peer='veth-peer', kind='veth')

+         idx_veth_test = ip.link_lookup(ifname='veth-test')[0]

+         idx_veth_peer = ip.link_lookup(ifname='veth-peer')[0]

+ 

+         ip.link('set', index=idx_veth_test, address='02:01:02:03:04:08')

+         ip.link('set', index=idx_veth_peer, address='02:01:02:03:04:09')

+ 

+         ip.link('set', index=idx_veth_test, state='up')

+         ip.link('set', index=idx_veth_peer, state='up')

+ 

+         ip.close()

+ 

+         self.EnableIPForwarding()

+ 

+         time.sleep(10)

+ 

+     def TearDownVethInterface(self):

+ 

+         ip = IPRoute()

+ 

+         ip.link('del', index=ip.link_lookup(ifname='veth-test')[0])

+         ip.close()

+ 

+ class LibNdpTests(unittest.TestCase, GenericUtilities):

+ 

+     def setUp(self):

+         self.SetupVethInterface()

+ 

+     def tearDown(self):

+         self.StopDaemon(RADVD_PID_FILE)

+         self.TearDownVethInterface()

+ 

+     def test_ndptool_gets_default_router_preference(self):

+         """ ndptool gets router preference  """

+ 

+         self.StartRadvd()

+ 

+         time.sleep(10)

+ 

+         self.StartNDPTool()

+ 

+         time.sleep(30)

+ 

+         self.StopNDPTool()

+ 

+         self.findTextInFile(NDPTOOL_CI_LOG,

+                             router_pref='Default router preference: high')

+ 

+     def test_ndptool_gets_link_source_address(self):

+         """ ndptool gets link source address  """

+ 

+         self.StartRadvd()

+ 

+         time.sleep(10)

+ 

+         self.StartNDPTool()

+ 

+         time.sleep(30)

+ 

+         self.StopNDPTool()

+ 

+         self.findTextInFile(NDPTOOL_CI_LOG,

+                             source_link_addr='Source linkaddr: 02:01:02:03:04:09')

+ 

+     def test_ndptool_gets_lifetime(self):

+         """ ndptool gets lifetime  """

+ 

+         self.StartRadvd()

+ 

+         time.sleep(10)

+ 

+         self.StartNDPTool()

+ 

+         time.sleep(30)

+ 

+         self.StopNDPTool()

+ 

+         self.findTextInFile(NDPTOOL_CI_LOG,

+                             prefix='Prefix: 2001:db8:1::/64, valid_time: 30s, preferred_time: 30s',

+                             dns_lifetime='Recursive DNS Servers: 2001:db8::1, 2001:db8::2, lifetime: 15s',

+                             search_lifetime='DNS Search List: branch.example.com example.com, lifetime: 15s',

+                             router_lifetime='Router lifetime: 30s')

+ 

+     def test_ndptool_gets_mtu(self):

+         """ ndptool gets MTU=1280 """

+ 

+         self.StartRadvd()

+ 

+         time.sleep(10)

+ 

+         self.StartNDPTool()

+ 

+         time.sleep(30)

+ 

+         self.StopNDPTool()

+ 

+         self.findTextInFile(NDPTOOL_CI_LOG,

+                             prefix='Prefix: 2001:db8:1::/64',

+                             mtu='MTU: 1280')

+ 

+     def test_ndptool_gets_rdnss_dnssl(self):

+         """ ndptool gets the RDNSS DNSSL """

+ 

+         self.StartRadvd()

+ 

+         time.sleep(10)

+ 

+         self.StartNDPTool()

+ 

+         time.sleep(30)

+ 

+         self.StopNDPTool()

+ 

+         self.findTextInFile(NDPTOOL_CI_LOG,

+                             Prefix='Prefix: 2001:db8:1::/64',

+                             rdnss='Recursive DNS Servers: 2001:db8::1, 2001:db8::2',

+                             dnssl='DNS Search List: branch.example.com example.com')

+ 

+     def test_ndptool_gets_prefix(self):

+ 

+         self.StartRadvd()

+ 

+         time.sleep(10)

+ 

+         self.StartNDPTool()

+         time.sleep(10)

+         self.StopNDPTool()

+ 

+         self.findTextInFile(NDPTOOL_CI_LOG,

+                             prefix='Prefix: 2001:db8:1::/64')

+ 

+ if __name__ == '__main__':

+     unittest.main(testRunner=unittest.TextTestRunner(stream=sys.stdout,

+                                                      verbosity=3))

@@ -0,0 +1,11 @@ 

+ [Unit]

+ Description=NDPTool

+ After=multi-user.target network.target

+ 

+ [Service]

+ Type=simple

+ ExecStart=/usr/bin/ndptool monitor -i veth-test

+ StandardOutput=file:/var/run/libndp-ci/ndptool.log

+ 

+ [Install]

+ WantedBy=multi-user.target

@@ -0,0 +1,36 @@ 

+ interface veth-peer

+ {

+         AdvManagedFlag on;

+         AdvSendAdvert on;

+         AdvLinkMTU 1280;

+ 

+         MaxRtrAdvInterval 15;

+         AdvDefaultLifetime 30;

+ 

+         AdvDefaultPreference high;

+ 

+      prefix 2001:db8:1:0::/64

+      {

+         AdvOnLink on;

+         AdvAutonomous on;

+         AdvRouterAddr off;

+         AdvPreferredLifetime 30;

+         AdvValidLifetime 30;

+      };

+ 

+ # RDNSS

+ # NOTE: This feature is not very widely implemented.

+ #

+         RDNSS 2001:db8::1 2001:db8::2

+         {

+                 AdvRDNSSLifetime 15;

+         };

+ 

+ #

+ # DNS Search Lists

+ #

+         DNSSL branch.example.com example.com

+         {

+                 AdvDNSSLLifetime 15;

+         };

+ };

@@ -0,0 +1,59 @@ 

+ #!/bin/bash

+ # SPDX-License-Identifier: LGPL-2.1+

+ # ~~~

+ #   runtest.sh of libndp

+ #   Description: lib IPv6 Neighbor Discovery Protocol.

+ #

+ #   Author: Susant Sahani <susant@redhat.com>

+ #   Copyright (c) 2018 Red Hat, Inc.

+ # ~~~

+ 

+ # Include Beaker environment

+ . /usr/share/beakerlib/beakerlib.sh || exit 1

+ 

+ PACKAGE_LIBNDP="libndp"

+ PACKAGE_RADVD="radvd"

+ 

+ LIBNDP_CI_DIR="/var/run/libndp-ci"

+ SERVICE_UNITDIR="/var/run/systemd/system"

+ 

+ rlJournalStart

+     rlPhaseStartSetup

+         rlAssertRpm $PACKAGE_LIBNDP

+         rlAssertRpm $PACKAGE_RADVD

+ 

+         rlRun "systemctl stop firewalld" 0,5

+         rlRun "setenforce 0" 0,1

+ 

+         rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1

+         rlRun "cp libndp-tests.py /usr/bin/"

+ 

+         rlRun "mkdir -p $LIBNDP_CI_DIR"

+         rlRun "cp *.conf $LIBNDP_CI_DIR"

+ 

+         rlRun "cp ndptool-ci.service $SERVICE_UNITDIR"

+         rlRun "systemctl daemon-reload"

+     rlPhaseEnd

+ 

+     rlPhaseStartTest

+         rlLog "Starting dhclient tests ..."

+         rlRun "/usr/bin/python3 /usr/bin/libndp-tests.py"

+     rlPhaseEnd

+ 

+     rlPhaseStartCleanup

+         rlRun "rm /usr/bin/libndp-tests.py"

+ 

+         rlRun "[ -e /sys/class/net/veth-test ] && ip link del veth-test" 0,1

+ 

+         rlRun "rm -rf $LIBNDP_CI_DIR"

+         rlRun "rm $SERVICE_UNITDIR/ndptool-ci.service"

+         rlRun "systemctl daemon-reload"

+ 

+         rlRun "setenforce 1" 0,1

+ 

+         rlLog "libndp tests done"

+     rlPhaseEnd

+ rlJournalPrintText

+ rlJournalEnd

+ 

+ rlGetTestState

file added
+14

@@ -0,0 +1,14 @@ 

+ - hosts: localhost

+   roles:

+     - role: standard-test-beakerlib

+       tags:

+         - classic

+       tests:

+         - ndp-tests

+       required_packages:

+         - python3

+         - systemd

+         - iproute

+         - python3-pyroute2

+         - libndp

+         - radvd

Add tests according to the CI

justification
Adds tests according to the CI wiki specifically the standard test interface in the spec.
The playbook includes Tier1 level test cases that have been tested in the following contexts and
is passing reliably: Classic. Test logs are stored in the artifacts directory.
The following steps are used to execute the tests using the standard test interface:

Test environment
Make sure you have installed packages from the spec

ansible-2.4.1.0-2.fc28.noarch
python2-dnf-2.7.5-1.fc28.noarch
libselinux-python-2.7-2.fc28.x86_64
standard-test-roles-2.5-1.fc28.noarch
Run tests for Classic
Snip of the example test run for Classic tests:
::   TEST PROTOCOL
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    Package       : libndp
    Installed     : libndp-1.6-5.fc28.x86_64
    beakerlib RPM : beakerlib-1.17-13.fc29.noarch
    Test version  : 1.0
    Test started  : 2018-06-13 21:12:24 IST
    Test finished :
    Test duration :
    Test name     : /CoreOS/libndp
    Distro        : Fedora release 29 (Rawhide)
    Hostname      : dell-per410-1.gsslab.pnq.redhat.com
    Architecture  : x86_64
    CPUs          : 8 x Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
    RAM size      : 7929 MB
    HDD size      : 15.94 GB

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Test description
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

PURPOSE of /CoreOS/libndp
Description: IPv6 tests for libndp
Author: Susant Sahani<susant@redhat.com>

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Setup
::   Setup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

libndp-1.6-5.fc28.x86_64
:: [ 21:12:25 ] :: [   PASS   ] :: Checking for the presence of libndp rpm
:: [ 21:12:25 ] :: [   PASS   ] :: Checking for the presence of libndp rpm
:: [ 21:12:25 ] :: [   LOG    ] :: Package versions:
:: [ 21:12:25 ] :: [   LOG    ] :: Package versions:
:: [ 21:12:25 ] :: [   LOG    ] ::   libndp-1.6-5.fc28.x86_64
:: [ 21:12:25 ] :: [   LOG    ] ::   libndp-1.6-5.fc28.x86_64
radvd-2.17-11.fc29.x86_64
:: [ 21:12:25 ] :: [   PASS   ] :: Checking for the presence of radvd rpm
:: [ 21:12:25 ] :: [   PASS   ] :: Checking for the presence of radvd rpm
:: [ 21:12:25 ] :: [   LOG    ] :: Package versions:
:: [ 21:12:25 ] :: [   LOG    ] :: Package versions:
:: [ 21:12:25 ] :: [   LOG    ] ::   radvd-2.17-11.fc29.x86_64
:: [ 21:12:25 ] :: [   LOG    ] ::   radvd-2.17-11.fc29.x86_64
:: [ 21:12:25 ] :: [  BEGIN   ] :: Running 'systemctl stop firewalld'
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'systemctl stop firewalld' (Expected 0,5, got 0)
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'systemctl stop firewalld' (Expected 0,5, got 0)
:: [ 21:12:25 ] :: [  BEGIN   ] :: Running 'setenforce 0'
setenforce: SELinux is disabled
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'setenforce 0' (Expected 0,1, got 1)
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'setenforce 0' (Expected 0,1, got 1)
:: [ 21:12:25 ] :: [  BEGIN   ] :: Running '[ -e /sys/class/net/veth-test ] && ip link del veth-test'
:: [ 21:12:25 ] :: [   PASS   ] :: Command '[ -e /sys/class/net/veth-test ] && ip link del veth-test' (Expected 0,1, got 1)
:: [ 21:12:25 ] :: [   PASS   ] :: Command '[ -e /sys/class/net/veth-test ] && ip link del veth-test' (Expected 0,1, got 1)
:: [ 21:12:25 ] :: [  BEGIN   ] :: Running 'cp libndp-tests.py /usr/bin/'
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'cp libndp-tests.py /usr/bin/' (Expected 0, got 0)
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'cp libndp-tests.py /usr/bin/' (Expected 0, got 0)
:: [ 21:12:25 ] :: [  BEGIN   ] :: Running 'mkdir -p /var/run/libndp-ci'
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'mkdir -p /var/run/libndp-ci' (Expected 0, got 0)
:: [ 21:12:25 ] :: [   PASS   ] :: Command 'mkdir -p /var/run/libndp-ci' (Expected 0, got 0)
:: [ 21:12:26 ] :: [  BEGIN   ] :: Running 'cp *.conf /var/run/libndp-ci'
:: [ 21:12:26 ] :: [   PASS   ] :: Command 'cp *.conf /var/run/libndp-ci' (Expected 0, got 0)
:: [ 21:12:26 ] :: [   PASS   ] :: Command 'cp *.conf /var/run/libndp-ci' (Expected 0, got 0)
:: [ 21:12:26 ] :: [  BEGIN   ] :: Running 'cp ndptool-ci.service /var/run/systemd/system'
:: [ 21:12:26 ] :: [   PASS   ] :: Command 'cp ndptool-ci.service /var/run/systemd/system' (Expected 0, got 0)
:: [ 21:12:26 ] :: [   PASS   ] :: Command 'cp ndptool-ci.service /var/run/systemd/system' (Expected 0, got 0)
:: [ 21:12:26 ] :: [  BEGIN   ] :: Running 'systemctl daemon-reload'
:: [ 21:12:26 ] :: [   PASS   ] :: Command 'systemctl daemon-reload' (Expected 0, got 0)
:: [ 21:12:26 ] :: [   PASS   ] :: Command 'systemctl daemon-reload' (Expected 0, got 0)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Duration: 1s
::   Duration: 1s
::   Assertions: 10 good, 0 bad
::   Assertions: 10 good, 0 bad
::   RESULT: PASS
::   RESULT: PASS

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Test
::   Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [ 21:12:26 ] :: [   LOG    ] :: Starting dhclient tests ...
:: [ 21:12:26 ] :: [   LOG    ] :: Starting dhclient tests ...
:: [ 21:12:26 ] :: [  BEGIN   ] :: Running '/usr/bin/python3 /usr/bin/libndp-tests.py'
test_libtool_gets_default_router_preference (__main__.LibNdpTests)
ndptool gets router preference ... [Jun 13 21:12:37] radvd (12844): IPv6 forwarding seems to be disabled, but continuing anyway
ok
test_libtool_gets_lifetime (__main__.LibNdpTests)
ndptool gets lifetime ... [Jun 13 21:13:27] radvd (12861): IPv6 forwarding seems to be disabled, but continuing anyway
ok
test_libtool_gets_link_source_address (__main__.LibNdpTests)
ndptool gets link source address ... [Jun 13 21:14:17] radvd (12876): IPv6 forwarding seems to be disabled, but continuing anyway
ok
test_libtool_gets_mtu (__main__.LibNdpTests)
ndptool gets MTU=1280 ... [Jun 13 21:15:07] radvd (12890): IPv6 forwarding seems to be disabled, but continuing anyway
ok
test_libtool_gets_prefix (__main__.LibNdpTests) ... [Jun 13 21:15:57] radvd (12906): IPv6 forwarding seems to be disabled, but continuing anyway
ok
test_libtool_gets_rdnss_dnssl (__main__.LibNdpTests)
ndptool gets the RDNSS DNSSL ... [Jun 13 21:16:28] radvd (12920): IPv6 forwarding seems to be disabled, but continuing anyway
ok

----------------------------------------------------------------------
Ran 6 tests in 280.999s

OK
:: [ 21:17:08 ] :: [   PASS   ] :: Command '/usr/bin/python3 /usr/bin/libndp-tests.py' (Expected 0, got 0)
:: [ 21:17:08 ] :: [   PASS   ] :: Command '/usr/bin/python3 /usr/bin/libndp-tests.py' (Expected 0, got 0)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Duration: 282s
::   Duration: 282s
::   Assertions: 1 good, 0 bad
::   Assertions: 1 good, 0 bad
::   RESULT: PASS
::   RESULT: PASS

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Cleanup
::   Cleanup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: [ 21:17:08 ] :: [  BEGIN   ] :: Running 'rm /usr/bin/libndp-tests.py'
:: [ 21:17:08 ] :: [   PASS   ] :: Command 'rm /usr/bin/libndp-tests.py' (Expected 0, got 0)
:: [ 21:17:08 ] :: [   PASS   ] :: Command 'rm /usr/bin/libndp-tests.py' (Expected 0, got 0)
:: [ 21:17:08 ] :: [  BEGIN   ] :: Running '[ -e /sys/class/net/veth-test ] && ip link del veth-test'
:: [ 21:17:08 ] :: [   PASS   ] :: Command '[ -e /sys/class/net/veth-test ] && ip link del veth-test' (Expected 0,1, got 1)
:: [ 21:17:08 ] :: [   PASS   ] :: Command '[ -e /sys/class/net/veth-test ] && ip link del veth-test' (Expected 0,1, got 1)
:: [ 21:17:08 ] :: [  BEGIN   ] :: Running 'rm -rf /var/run/libndp-ci'
:: [ 21:17:08 ] :: [   PASS   ] :: Command 'rm -rf /var/run/libndp-ci' (Expected 0, got 0)
:: [ 21:17:08 ] :: [   PASS   ] :: Command 'rm -rf /var/run/libndp-ci' (Expected 0, got 0)
:: [ 21:17:08 ] :: [  BEGIN   ] :: Running 'rm /var/run/systemd/system/ndptool-ci.service'
:: [ 21:17:08 ] :: [   PASS   ] :: Command 'rm /var/run/systemd/system/ndptool-ci.service' (Expected 0, got 0)
:: [ 21:17:08 ] :: [   PASS   ] :: Command 'rm /var/run/systemd/system/ndptool-ci.service' (Expected 0, got 0)
:: [ 21:17:08 ] :: [  BEGIN   ] :: Running 'systemctl daemon-reload'
:: [ 21:17:09 ] :: [   PASS   ] :: Command 'systemctl daemon-reload' (Expected 0, got 0)
:: [ 21:17:09 ] :: [   PASS   ] :: Command 'systemctl daemon-reload' (Expected 0, got 0)
:: [ 21:17:09 ] :: [  BEGIN   ] :: Running 'setenforce 1'
setenforce: SELinux is disabled
:: [ 21:17:09 ] :: [   PASS   ] :: Command 'setenforce 1' (Expected 0,1, got 1)
:: [ 21:17:09 ] :: [   PASS   ] :: Command 'setenforce 1' (Expected 0,1, got 1)
:: [ 21:17:09 ] :: [   LOG    ] :: libndp tests done
:: [ 21:17:09 ] :: [   LOG    ] :: libndp tests done
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::   Duration: 1s
::   Duration: 1s
::   Assertions: 6 good, 0 bad
::   Assertions: 6 good, 0 bad
::   RESULT: PASS
::   RESULT: PASS

rebased onto 58689a6

a year ago