at 23.11-pre 2.8 kB view raw
1# This test does a basic functionality check for birdwatcher 2 3{ system ? builtins.currentSystem 4, pkgs ? import ../.. { inherit system; config = { }; } 5}: 6 7let 8 inherit (import ../lib/testing-python.nix { inherit system pkgs; }) makeTest; 9 inherit (pkgs.lib) optionalString; 10in 11makeTest { 12 name = "birdwatcher"; 13 nodes = { 14 host1 = { 15 environment.systemPackages = with pkgs; [ jq ]; 16 services.bird2 = { 17 enable = true; 18 config = '' 19 log syslog all; 20 21 debug protocols all; 22 23 router id 10.0.0.1; 24 25 protocol device { 26 } 27 28 protocol kernel kernel4 { 29 ipv4 { 30 import none; 31 export all; 32 }; 33 } 34 35 protocol kernel kernel6 { 36 ipv6 { 37 import none; 38 export all; 39 }; 40 } 41 ''; 42 }; 43 services.birdwatcher = { 44 enable = true; 45 settings = '' 46 [server] 47 allow_from = [] 48 allow_uncached = false 49 modules_enabled = ["status", 50 "protocols", 51 "protocols_bgp", 52 "protocols_short", 53 "routes_protocol", 54 "routes_peer", 55 "routes_table", 56 "routes_table_filtered", 57 "routes_table_peer", 58 "routes_filtered", 59 "routes_prefixed", 60 "routes_noexport", 61 "routes_pipe_filtered_count", 62 "routes_pipe_filtered" 63 ] 64 [status] 65 reconfig_timestamp_source = "bird" 66 reconfig_timestamp_match = "# created: (.*)" 67 filter_fields = [] 68 [bird] 69 listen = "0.0.0.0:29184" 70 config = "/etc/bird/bird2.conf" 71 birdc = "${pkgs.bird}/bin/birdc" 72 ttl = 5 # time to live (in minutes) for caching of cli output 73 [parser] 74 filter_fields = [] 75 [cache] 76 use_redis = false # if not using redis cache, activate housekeeping to save memory! 77 [housekeeping] 78 interval = 5 79 force_release_memory = true 80 ''; 81 }; 82 }; 83 }; 84 85 testScript = '' 86 start_all() 87 88 host1.wait_for_unit("bird2.service") 89 host1.wait_for_unit("birdwatcher.service") 90 host1.wait_for_open_port(29184) 91 host1.succeed("curl http://[::]:29184/status | jq -r .status.message | grep 'Daemon is up and running'") 92 host1.succeed("curl http://[::]:29184/protocols | jq -r .protocols.device1.state | grep 'up'") 93 ''; 94}