Skip to content

Testbed

Kaleb Fenley edited this page Jul 29, 2026 · 1 revision

Testbed

testbed/ boots a containerized ISC Kea on two simulated VLANs and drives real DHCP transactions against it, so you can verify EZ-Kea's changes actually reach a DHCP server — without touching your own network.

Requires Docker with the Compose plugin.

One-command path

From the repo root:

docker compose -f testbed/docker-compose.yml up -d
bash start_testbed.sh

start_testbed.sh sources the committed .env.testbed and starts EZ-Kea already pointed at the testbed. The Docker deployment fields under Global Settings come pre-populated, and "Apply Changes" reloads the containerized Kea over SIGHUP.

What the test suite covers

cd testbed && bash test_suite.sh

It exercises pool allocation, MAC reservations, DHCP option delivery (DNS, NTP, and a TR-069 ACS URL via vendor-encapsulated-options), and pool exhaustion, end to end against the real daemon.

Simulating clients

Two client containers are attached to vlan10 and vlan20:

cd testbed && ./run_clients.sh

This runs udhcpc on each client and prints the resulting kea-leases4.csv. To test a specific reservation, change a client's MAC in testbed/docker-compose.yml and re-run.

Pointing your own instance at it

Host paths — what EZ-Kea itself reads and writes:

DHCP_CONFIG_FILE=./testbed/data/etc/kea/kea-dhcp4.conf
DHCP_LEASES_FILE=./testbed/data/var/lib/kea/kea-leases4.csv
DHCP_LOG_FILE=./testbed/data/var/log/kea-dhcp4.log
BACKUP_DIR=./testbed/data/backups/

Kea commands, so syntax checks and reloads reach the container:

KEA_DHCP4_CMD="docker exec kea-testbed-kea-1 kea-dhcp4"
KEA_CTRL_CMD="docker exec kea-testbed-kea-1 keactrl"

In-container paths, because the binary runs in the container's own filesystem namespace where the host paths above don't exist:

DHCP_CONFIG_FILE_IN_CONTAINER=/etc/kea/kea-dhcp4.conf
DHCP_LOG_FILE_IN_CONTAINER=/var/log/kea-dhcp4.log

Two things that will bite you

keactrl reload fails in this testbed. keactrl requires /etc/kea/keactrl.conf, which isn't mounted into the container. Use the SIGHUP strategy instead:

KEA_RELOAD_STRATEGY=sighup
KEA_DOCKER_CONTAINER=kea-testbed-kea-1

Write your own config and Kea answers nothing. The committed kea-dhcp4.conf.example sets interfaces-config to eth0, eth1, eth2 — the three simulated VLAN interfaces attached to the container. A config written from scratch without that starts Kea with no interfaces configured at all, and it silently ignores DHCP traffic on every VLAN.

Full details in testbed/README.md.

Clone this wiki locally