summaryrefslogtreecommitdiffstats
path: root/nixos
diff options
context:
space:
mode:
authorrnhmjoj <rnhmjoj@inventati.org>2023-01-26 00:22:21 +0100
committerrnhmjoj <rnhmjoj@inventati.org>2023-01-30 07:48:51 +0100
commitfc211deccf85739831181adf5b74be1ca811c653 (patch)
treef998b608e1c0aa2089c00df17e4d88d62799649b /nixos
parent688d658a9689194787f6df15b83daad7e78f20bc (diff)
nixos/tests/connman: init
Diffstat (limited to 'nixos')
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/connman.nix77
2 files changed, 78 insertions, 0 deletions
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 9bf85cd0b97d..9cfdcc3d5ca0 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -134,6 +134,7 @@ in {
cntr = handleTestOn ["aarch64-linux" "x86_64-linux"] ./cntr.nix {};
cockroachdb = handleTestOn ["x86_64-linux"] ./cockroachdb.nix {};
collectd = handleTest ./collectd.nix {};
+ connman = handleTest ./connman.nix {};
consul = handleTest ./consul.nix {};
containers-bridge = handleTest ./containers-bridge.nix {};
containers-custom-pkgs.nix = handleTest ./containers-custom-pkgs.nix {};
diff --git a/nixos/tests/connman.nix b/nixos/tests/connman.nix
new file mode 100644
index 000000000000..348b2a895a63
--- /dev/null
+++ b/nixos/tests/connman.nix
@@ -0,0 +1,77 @@
+import ./make-test-python.nix ({ pkgs, lib, ...}:
+{
+ name = "connman";
+ meta = with lib.maintainers; {
+ maintainers = [ rnhmjoj ];
+ };
+
+ # Router running radvd on VLAN 1
+ nodes.router = { ... }: {
+ imports = [ ../modules/profiles/minimal.nix ];
+
+ virtualisation.vlans = [ 1 ];
+
+ boot.kernel.sysctl."net.ipv6.conf.all.forwarding" = true;
+
+ networking = {
+ useDHCP = false;
+ interfaces.eth1.ipv6.addresses =
+ [ { address = "fd12::1"; prefixLength = 64; } ];
+ };
+
+ services.radvd = {
+ enable = true;
+ config = ''
+ interface eth1 {
+ AdvSendAdvert on;
+ AdvManagedFlag on;
+ AdvOtherConfigFlag on;
+ prefix fd12::/64 {
+ AdvAutonomous off;
+ };
+ };
+ '';
+ };
+ };
+
+ # Client running connman, connected to VLAN 1
+ nodes.client = { ... }: {
+ virtualisation.vlans = [ 1 ];
+
+ # add a virtual wlan interface
+ boot.kernelModules = [ "mac80211_hwsim" ];
+ boot.extraModprobeConfig = ''
+ options mac80211_hwsim radios=1
+ '';
+
+ # Note: the overrides are needed because the wifi is
+ # disabled with mkVMOverride in qemu-vm.nix.
+ services.connman.enable = lib.mkOverride 0 true;
+ services.connman.networkInterfaceBlacklist = [ "eth0" ];
+ networking.wireless.enable = lib.mkOverride 0 true;
+ networking.wireless.interfaces = [ "wlan0" ];
+ };
+
+ testScript =
+ ''
+ start_all()
+
+ with subtest("Router is ready"):
+ router.wait_for_unit("radvd.service")
+
+ with subtest("Daemons are running"):
+ client.wait_for_unit("wpa_supplicant-wlan0.service")
+ client.wait_for_unit("connman.service")
+ client.wait_until_succeeds("connmanctl state | grep -q ready")
+
+ with subtest("Wired interface is configured"):
+ client.wait_until_succeeds("ip -6 route | grep -q fd12::/64")
+ client.wait_until_succeeds("ping -c 1 fd12::1")
+
+ with subtest("Can set up a wireless access point"):
+ client.succeed("connmanctl enable wifi")
+ client.wait_until_succeeds("connmanctl tether wifi on nixos-test reproducibility | grep -q 'Enabled'")
+ client.wait_until_succeeds("iw wlan0 info | grep -q nixos-test")
+ '';
+})
+