Skip to content

Commit

Permalink
Add unit tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
sbernard31 committed Oct 5, 2020
1 parent b56cea8 commit 3b3eef2
Show file tree
Hide file tree
Showing 7 changed files with 605 additions and 0 deletions.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,16 @@ Sbulb supports the sd_notify(3) mechanism, but does not require systemd or any s

# Performance
See [our wiki page](https://github.com/AirVantage/sbulb/wiki/Benchmark) about that.

# Unit Tests
To launch unit tests :

```
sudo python3 -m unittest # all tests
sudo python3 -m unittest sbulb.tests.IPv4TestCase # only 1 test case
sudo python3 -m unittest sbulb.tests.IPv4TestCase.test_lru # only 1 test
```
Tests needs [bcc](https://github.com/iovisor/bcc) v0.14 ([python3-bpfcc](https://packages.debian.org/buster-backports/python3-bpfcc)) and [scapy](https://scapy.net/) ([python3-scapy](https://packages.debian.org/buster/python3-scapy)).

# XDP/Bpf

Expand Down
18 changes: 18 additions & 0 deletions sbulb/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import unittest

from sbulb.tests.test_config import ConfigTestCase
from sbulb.tests.test_loadbalancer import IPv4TestCase
from sbulb.tests.test_loadbalancer import IPv6TestCase


def suite():
suite = unittest.TestSuite()
suite.addTest(ConfigTestCase())
suite.addTest(IPv4TestCase())
suite.addTest(IPv6TestCase())
return suite


if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())
3 changes: 3 additions & 0 deletions sbulb/tests/ipv4.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[Real Servers]
192.0.0.1
192.0.0.2
4 changes: 4 additions & 0 deletions sbulb/tests/ipv6.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[Real Servers]
2a01:e0a:3a8:d8c0:8809:cda:9245:4311
2a01:e0a:3a8:d8c0:8809:cda:9245:4322
2a01:e0a:3a8:d8c0:8809:cda:9245:4333
51 changes: 51 additions & 0 deletions sbulb/tests/test_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
from ipaddress import IPv6Address, IPv4Address
import ipaddress
import unittest

from sbulb import Cfg


class ConfigTestCase(unittest.TestCase):

def test_ipv4(self):
cfg = Cfg();
cfg.ifnet = "test"
cfg.virtual_server_ip = ipaddress.ip_address("10.0.0.1")
cfg.ip_version = cfg.virtual_server_ip.version
cfg.ports = [5683]
cfg.config_file = "./sbulb/tests/ipv4.cfg"

self.assertEqual([], cfg.real_server_ips)
cfg.validate(True);
self.assertEqual(2, len(cfg.real_server_ips))

servers = cfg.load_real_server();
self.assertEqual(cfg.real_server_ips, servers)
self.assertTrue(
all((type(s) is IPv4Address) for s in servers))

self.assertFalse(cfg.config_file_changed())

def test_ipv6(self):
cfg = Cfg();
cfg.ifnet = "test"
cfg.virtual_server_ip = ipaddress.ip_address(\
"2222:0000:0000:0000:0000:0000:0000:0001")
cfg.ip_version = cfg.virtual_server_ip.version
cfg.ports = [5683]
cfg.config_file = "./sbulb/tests/ipv6.cfg"

self.assertEqual([], cfg.real_server_ips)
cfg.validate(True);
self.assertEqual(3, len(cfg.real_server_ips))

servers = cfg.load_real_server();
self.assertEqual(cfg.real_server_ips, servers)
self.assertTrue(
all((type(s) is IPv6Address) for s in servers))

self.assertFalse(cfg.config_file_changed())


if __name__ == '__main__':
unittest.main()
Loading

0 comments on commit 3b3eef2

Please sign in to comment.