0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-20 17:10:46 +03:00
nixpkgs/nixos/tests/mycelium/default.nix
Florian Klink bb05bee4e5 nixosTests.mycelium: make less flaky
We immediately expected for the other peer to be available in the peer
list, right after startup, but that's racy.

Instead try the pinging multiple times until it succeeds (max 10 times),
then check the list of peers for completion.
2025-05-24 11:59:35 +03:00

73 lines
1.8 KiB
Nix

import ../make-test-python.nix (
{ lib, ... }:
let
peer1-ip = "538:f40f:1c51:9bd9:9569:d3f6:d0a1:b2df";
peer2-ip = "5b6:6776:fee0:c1f3:db00:b6a8:d013:d38f";
in
{
name = "mycelium";
meta.maintainers = with lib.maintainers; [ lassulus ];
nodes = {
peer1 =
{ config, pkgs, ... }:
{
virtualisation.vlans = [ 1 ];
networking.interfaces.eth1.ipv4.addresses = [
{
address = "192.168.1.11";
prefixLength = 24;
}
];
services.mycelium = {
enable = true;
addHostedPublicNodes = false;
openFirewall = true;
keyFile = ./peer1.key;
peers = [
"quic://192.168.1.12:9651"
"tcp://192.168.1.12:9651"
];
};
};
peer2 =
{ config, pkgs, ... }:
{
virtualisation.vlans = [ 1 ];
networking.interfaces.eth1.ipv4.addresses = [
{
address = "192.168.1.12";
prefixLength = 24;
}
];
services.mycelium = {
enable = true;
addHostedPublicNodes = false;
openFirewall = true;
keyFile = ./peer2.key;
};
};
};
testScript = ''
start_all()
peer1.wait_for_unit("network-online.target")
peer2.wait_for_unit("network-online.target")
peer1.wait_for_unit("mycelium.service")
peer2.wait_for_unit("mycelium.service")
# Give mycelium some time to discover the other peer
peer1.wait_until_succeeds("ping -c1 ${peer2-ip}", timeout=10)
peer2.succeed("ping -c1 ${peer1-ip}")
peer1.succeed("mycelium peers list | grep 192.168.1.12")
peer2.succeed("mycelium peers list | grep 192.168.1.11")
'';
}
)