at 22.05-pre 2.1 kB view raw
1import ./make-test-python.nix ({ pkgs, ... }: 2 let 3 ifAddr = node: iface: (pkgs.lib.head node.config.networking.interfaces.${iface}.ipv4.addresses).address; 4 in { 5 name = "gobgpd"; 6 7 meta = with pkgs.lib.maintainers; { maintainers = [ higebu ]; }; 8 9 nodes = { 10 node1 = { nodes, ... }: { 11 environment.systemPackages = [ pkgs.gobgp ]; 12 networking.firewall.allowedTCPPorts = [ 179 ]; 13 services.gobgpd = { 14 enable = true; 15 settings = { 16 global = { 17 config = { 18 as = 64512; 19 router-id = "192.168.255.1"; 20 }; 21 }; 22 neighbors = [{ 23 config = { 24 neighbor-address = ifAddr nodes.node2 "eth1"; 25 peer-as = 64513; 26 }; 27 }]; 28 }; 29 }; 30 }; 31 node2 = { nodes, ... }: { 32 environment.systemPackages = [ pkgs.gobgp ]; 33 networking.firewall.allowedTCPPorts = [ 179 ]; 34 services.gobgpd = { 35 enable = true; 36 settings = { 37 global = { 38 config = { 39 as = 64513; 40 router-id = "192.168.255.2"; 41 }; 42 }; 43 neighbors = [{ 44 config = { 45 neighbor-address = ifAddr nodes.node1 "eth1"; 46 peer-as = 64512; 47 }; 48 }]; 49 }; 50 }; 51 }; 52 }; 53 54 testScript = { nodes, ... }: let 55 addr1 = ifAddr nodes.node1 "eth1"; 56 addr2 = ifAddr nodes.node2 "eth1"; 57 in 58 '' 59 start_all() 60 61 for node in node1, node2: 62 with subtest("should start gobgpd node"): 63 node.wait_for_unit("gobgpd.service") 64 with subtest("should open port 179"): 65 node.wait_for_open_port(179) 66 67 with subtest("should show neighbors by gobgp cli and BGP state should be ESTABLISHED"): 68 node1.wait_until_succeeds("gobgp neighbor ${addr2} | grep -q ESTABLISHED") 69 node2.wait_until_succeeds("gobgp neighbor ${addr1} | grep -q ESTABLISHED") 70 ''; 71 })