summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/README.md8
-rw-r--r--tests/accel-pppd/general/test_basic.py (renamed from tests/accel-pppd/test_basic.py)4
-rw-r--r--tests/accel-pppd/general/test_pcre_negative_cases.py65
-rw-r--r--tests/accel-pppd/ipoe/dhcpv4/test_ipoe_shared_session_wo_auth.py14
-rw-r--r--tests/accel-pppd/pppoe/conftest.py17
-rw-r--r--tests/accel-pppd/pppoe/test_pppoe_disc.py8
-rw-r--r--tests/accel-pppd/pppoe/test_pppoe_pado_delay.py8
-rw-r--r--tests/accel-pppd/pppoe/test_pppoe_session_chap_secrets.py103
-rw-r--r--tests/accel-pppd/pppoe/test_pppoe_session_wo_auth.py11
-rw-r--r--tests/accel-pppd/pppoe/test_pppoe_vlan_mon.py8
-rw-r--r--tests/conftest.py18
11 files changed, 250 insertions, 14 deletions
diff --git a/tests/README.md b/tests/README.md
index d062ed46..689a16d8 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -6,7 +6,7 @@ These tests are done for Ubuntu and Debian distros. Please use latest stable Deb
Install pytest
-Using apt: `sudo apt install python3-pytest python3-pytest-dependency` or using pip: `sudo pip3 install pytest pytest-dependency`.
+Using apt: `sudo apt install python3-pytest python3-pytest-dependency python3-pytest-order` or using pip: `sudo pip3 install pytest pytest-dependency pytest-order`.
pytest-dependency version must be >= 0.5 (with 'scope' support)
@@ -43,13 +43,13 @@ sudo insmod build/drivers/ipoe/driver/ipoe.ko
```bash
# from this dir (tests)
-sudo python3 -m pytest -Wall -v
+sudo python3 -m pytest -Wall --order-dependencies -v
```
To skip tests related to ipoe and vlan_mon kernel modules:
```bash
# from this dir (tests)
-sudo python3 -m pytest -Wall -v -m "not ipoe_driver and not vlan_mon_driver"
+sudo python3 -m pytest -Wall --order-dependencies -v -m "not ipoe_driver and not vlan_mon_driver"
```
## Preparations (for coverage report)
@@ -83,7 +83,7 @@ Then insert kernel modules (ipoe.ko and vlan-mon.ko)
```bash
# from root dir (parent for this dir)
-sudo python3 -m pytest -Wall tests -v # execute tests to collect coverage data
+sudo python3 -m pytest -Wall --order-dependencies tests -v # execute tests to collect coverage data
mkdir tests/report
gcovr --config=tests/gcovr.conf # default report
gcovr --config=tests/gcovr.conf --csv # csv report
diff --git a/tests/accel-pppd/test_basic.py b/tests/accel-pppd/general/test_basic.py
index 2b2c6f71..9652ee0b 100644
--- a/tests/accel-pppd/test_basic.py
+++ b/tests/accel-pppd/general/test_basic.py
@@ -19,9 +19,11 @@ def accel_pppd_config():
log_tcp
#log_pgsql
+ connlimit
pptp
l2tp
sstp
+ radius
pppoe
ipoe
@@ -30,7 +32,6 @@ def accel_pppd_config():
auth_chap_md5
auth_pap
- radius
chap-secrets
ippool
@@ -39,7 +40,6 @@ def accel_pppd_config():
shaper
#net-snmp
logwtmp
- connlimit
ipv6_nd
ipv6_dhcp
diff --git a/tests/accel-pppd/general/test_pcre_negative_cases.py b/tests/accel-pppd/general/test_pcre_negative_cases.py
new file mode 100644
index 00000000..698c83ab
--- /dev/null
+++ b/tests/accel-pppd/general/test_pcre_negative_cases.py
@@ -0,0 +1,65 @@
+import pytest
+from common import process
+
+
+@pytest.fixture()
+def accel_pppd_config():
+ return """
+ [modules]
+ radius
+ pppoe
+
+ [core]
+ log-error=/dev/stderr
+
+ [log]
+ log-debug=/dev/stdout
+ log-file=/dev/stdout
+ log-emerg=/dev/stderr
+ level=5
+
+ [cli]
+ tcp=127.0.0.1:2001
+
+ [radius]
+
+ [pppoe]
+ """
+
+
+# test pcre-related negative cases
+def test_pcre_negative_cases(accel_pppd_instance, accel_cmd):
+
+ # test that accel-pppd started successfully
+ assert accel_pppd_instance
+
+ (exit_sh_sess, out_sh_sess, err_sh_sess) = process.run([accel_cmd, "show sessions match username 00("])
+ # test that 'show sessions' with invalid regexp reports the issue and error position
+ assert (
+ exit_sh_sess == 0
+ and len(out_sh_sess) > 0
+ and err_sh_sess == ""
+ and "match: " in out_sh_sess
+ and "at 3" in out_sh_sess
+ )
+
+
+ (exit_iface_add, out_iface_add, err_iface_add) = process.run([accel_cmd, "pppoe interface add re:000("])
+ # test that 'pppoe interface add' with invalid regexp reports the issue and error position
+ assert (
+ exit_iface_add == 0
+ and len(out_iface_add) > 0
+ and err_iface_add == ""
+ and "pppoe: " in out_iface_add
+ and "at 4" in out_iface_add
+ )
+
+ (exit_term, out_term, err_term) = process.run([accel_cmd, "terminate match username 00("])
+ # test that 'terminate' with invalid regexp reports the issue and error position
+ assert (
+ exit_term == 0
+ and len(out_term) > 0
+ and err_term == ""
+ and "match: " in out_term
+ and "at 3" in out_term
+ )
diff --git a/tests/accel-pppd/ipoe/dhcpv4/test_ipoe_shared_session_wo_auth.py b/tests/accel-pppd/ipoe/dhcpv4/test_ipoe_shared_session_wo_auth.py
index 104e4e9b..7ebb420a 100644
--- a/tests/accel-pppd/ipoe/dhcpv4/test_ipoe_shared_session_wo_auth.py
+++ b/tests/accel-pppd/ipoe/dhcpv4/test_ipoe_shared_session_wo_auth.py
@@ -9,7 +9,8 @@ def accel_pppd_config(veth_pair_netns):
return (
"""
[modules]
- pppoe
+ connlimit
+ radius
ipoe
ippool
@@ -20,16 +21,23 @@ def accel_pppd_config(veth_pair_netns):
[cli]
tcp=127.0.0.1:2001
+ [core]
+ log-error=/dev/stderr
+
[log]
log-debug=/dev/stdout
+ log-file=/dev/stdout
+ log-emerg=/dev/stderr
level=5
+ [radius]
+
[ipoe]
noauth=1
shared=1
gw-ip-address=192.0.2.1/24
- interface="""
- + veth_pair_netns["veth_a"]
+ interface=re:."""
+ + veth_pair_netns["veth_a"][1:]
)
diff --git a/tests/accel-pppd/pppoe/conftest.py b/tests/accel-pppd/pppoe/conftest.py
index 8ebaaed3..b3893200 100644
--- a/tests/accel-pppd/pppoe/conftest.py
+++ b/tests/accel-pppd/pppoe/conftest.py
@@ -1,5 +1,6 @@
-import pytest
+import pytest, subprocess, re
from common import pppd_process
+from packaging.version import Version
# pppd executable file name
@pytest.fixture()
@@ -13,11 +14,21 @@ def pppd(pytestconfig):
def pppd_config():
return ""
+# determines which plugin is required - pppoe.so (pppd 2.5.0+) or rp-pppoe.so (pppd <2.5.0)
+def pppd_plugin_so(pppd):
+ command = [pppd, "--version"]
+ result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
+ pppd_version = Version(re.search(r'\d+\.\d+\.\d+', result.stdout + result.stderr).group())
+ ref_version = Version("2.5.0")
+ if pppd_version >= ref_version:
+ return "pppoe.so"
+ else:
+ return "rp-pppoe.so"
# pppd configuration as command line args
@pytest.fixture()
-def pppd_args(pppd_config):
- return pppd_config.split()
+def pppd_args(pppd_config, pppd):
+ return ("plugin " + pppd_plugin_so(pppd) + "\n" + pppd_config).split()
# setup and teardown for tests that required running pppd (after accel-pppd)
diff --git a/tests/accel-pppd/pppoe/test_pppoe_disc.py b/tests/accel-pppd/pppoe/test_pppoe_disc.py
index eb069c42..64a0d295 100644
--- a/tests/accel-pppd/pppoe/test_pppoe_disc.py
+++ b/tests/accel-pppd/pppoe/test_pppoe_disc.py
@@ -8,15 +8,23 @@ def accel_pppd_config(veth_pair_netns):
return (
"""
[modules]
+ radius
pppoe
+ [core]
+ log-error=/dev/stderr
+
[log]
log-debug=/dev/stdout
+ log-file=/dev/stdout
+ log-emerg=/dev/stderr
level=5
[cli]
tcp=127.0.0.1:2001
+ [radius]
+
[pppoe]
ac-name=test-accel
interface="""
diff --git a/tests/accel-pppd/pppoe/test_pppoe_pado_delay.py b/tests/accel-pppd/pppoe/test_pppoe_pado_delay.py
index 96c73bf8..3a93d920 100644
--- a/tests/accel-pppd/pppoe/test_pppoe_pado_delay.py
+++ b/tests/accel-pppd/pppoe/test_pppoe_pado_delay.py
@@ -30,15 +30,23 @@ def accel_pppd_config(veth_pair_netns):
return (
"""
[modules]
+ radius
pppoe
+ [core]
+ log-error=/dev/stderr
+
[log]
log-debug=/dev/stdout
+ log-file=/dev/stdout
+ log-emerg=/dev/stderr
level=5
[cli]
tcp=127.0.0.1:2001
+ [radius]
+
[pppoe]
ac-name=test-accel
pado-delay=1500
diff --git a/tests/accel-pppd/pppoe/test_pppoe_session_chap_secrets.py b/tests/accel-pppd/pppoe/test_pppoe_session_chap_secrets.py
new file mode 100644
index 00000000..e8ac472d
--- /dev/null
+++ b/tests/accel-pppd/pppoe/test_pppoe_session_chap_secrets.py
@@ -0,0 +1,103 @@
+import pytest
+from common import process
+import time
+
+
+@pytest.fixture()
+def chap_secrets_config():
+ return "loginCSAB * pass123 192.0.2.37"
+
+
+@pytest.fixture()
+def accel_pppd_config(veth_pair_netns, chap_secrets_config_file):
+ print(
+ "accel_pppd_config veth_pair_netns: "
+ + str(veth_pair_netns)
+ + "chap_secrets_config_file"
+ + str(chap_secrets_config_file)
+ )
+ return (
+ """
+ [modules]
+ chap-secrets
+ pppoe
+ auth_pap
+
+ [core]
+ log-error=/dev/stderr
+
+ [log]
+ log-debug=/dev/stdout
+ log-file=/dev/stdout
+ log-emerg=/dev/stderr
+ level=5
+
+ [cli]
+ tcp=127.0.0.1:2001
+
+ [pppoe]
+ interface="""
+ + veth_pair_netns["veth_a"]
+ + """
+ [chap-secrets]
+ gw-ip-address=192.0.2.1
+ chap-secrets="""
+ + chap_secrets_config_file
+ )
+
+
+@pytest.fixture()
+def pppd_config(veth_pair_netns):
+ print("pppd_config veth_pair_netns: " + str(veth_pair_netns))
+ return (
+ """
+ nodetach
+ noipdefault
+ defaultroute
+ connect /bin/true
+ noauth
+ persist
+ mtu 1492
+ noaccomp
+ default-asyncmap
+ user loginCSAB
+ password pass123
+ nic-"""
+ + veth_pair_netns["veth_b"]
+ )
+
+
+# test pppoe session without auth check
+def test_pppoe_session_chap_secrets(pppd_instance, accel_cmd):
+
+ # test that pppd (with accel-pppd) started successfully
+ assert pppd_instance["is_started"]
+
+ # wait until session is started
+ max_wait_time = 10.0
+ sleep_time = 0.0
+ is_started = False # is session started
+ while sleep_time < max_wait_time:
+ (exit, out, err) = process.run(
+ [
+ accel_cmd,
+ "show sessions match username log.nCSAB username,ip,state",
+ ]
+ )
+ assert exit == 0 # accel-cmd fails
+ # print(out)
+ if "loginCSAB" in out and "192.0.2.37" in out and "active" in out:
+ # session is found
+ print(
+ "test_pppoe_session_chap_secrets: session found in (sec): "
+ + str(sleep_time)
+ )
+ is_started = True
+ break
+ time.sleep(0.1)
+ sleep_time += 0.1
+
+ print("test_pppoe_session_chap_secrets: last accel-cmd out: " + out)
+
+ # test that session is started
+ assert is_started == True
diff --git a/tests/accel-pppd/pppoe/test_pppoe_session_wo_auth.py b/tests/accel-pppd/pppoe/test_pppoe_session_wo_auth.py
index 0c8aa2c0..960b7c94 100644
--- a/tests/accel-pppd/pppoe/test_pppoe_session_wo_auth.py
+++ b/tests/accel-pppd/pppoe/test_pppoe_session_wo_auth.py
@@ -9,12 +9,18 @@ def accel_pppd_config(veth_pair_netns):
return (
"""
[modules]
+ radius
pppoe
auth_pap
ippool
+ [core]
+ log-error=/dev/stderr
+
[log]
log-debug=/dev/stdout
+ log-file=/dev/stdout
+ log-emerg=/dev/stderr
level=5
[auth]
@@ -27,6 +33,8 @@ def accel_pppd_config(veth_pair_netns):
[cli]
tcp=127.0.0.1:2001
+ [radius]
+
[pppoe]
interface="""
+ veth_pair_netns["veth_a"]
@@ -47,7 +55,6 @@ def pppd_config(veth_pair_netns):
mtu 1492
noaccomp
default-asyncmap
- plugin rp-pppoe.so
user loginAB
password pass123
nic-"""
@@ -69,7 +76,7 @@ def test_pppoe_session_wo_auth(pppd_instance, accel_cmd):
(exit, out, err) = process.run(
[
accel_cmd,
- "show sessions match username loginAB username,ip,state",
+ "show sessions match username log.nAB username,ip,state",
]
)
assert exit == 0 # accel-cmd fails
diff --git a/tests/accel-pppd/pppoe/test_pppoe_vlan_mon.py b/tests/accel-pppd/pppoe/test_pppoe_vlan_mon.py
index 670abc33..b73189c3 100644
--- a/tests/accel-pppd/pppoe/test_pppoe_vlan_mon.py
+++ b/tests/accel-pppd/pppoe/test_pppoe_vlan_mon.py
@@ -13,15 +13,23 @@ def accel_pppd_config(veth_pair_netns):
print(veth_pair_netns)
return """
[modules]
+ radius
pppoe
+ [core]
+ log-error=/dev/stderr
+
[log]
log-debug=/dev/stdout
+ log-file=/dev/stdout
+ log-emerg=/dev/stderr
level=5
[cli]
tcp=127.0.0.1:2001
+ [radius]
+
[pppoe]
ac-name=test-accel
vlan-mon=%s,10-20
diff --git a/tests/conftest.py b/tests/conftest.py
index d3733409..6687ed10 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -97,3 +97,21 @@ def veth_pair_netns(veth_pair_vlans_config):
# test teardown:
veth.delete_veth_pair_netns(veth_pair_netns_instance)
+
+# chap-secrets configuration as string (should be redefined by specific test)
+@pytest.fixture()
+def chap_secrets_config():
+ return ""
+
+
+# chap-secrets configuration file name
+@pytest.fixture()
+def chap_secrets_config_file(chap_secrets_config):
+ # test setup:
+ filename = config.make_tmp(chap_secrets_config)
+
+ # test execution
+ yield filename
+
+ # test teardown:
+ config.delete_tmp(filename)