# Smoke test edge01.waw in a multi-VM NixOS test.
#
# This brings up three VMs:
# - dut/edge01
# - bgpspeaker, which simulates bgp upstreams
# - customs, which simulates customs.hackerspace.pl.
#
# We use EoIP to build up virtual ethernet links between the machines, and
# to run VLANs on that. We don't just use plain 'vlans' from NixOS tests as
# we actually want to run 802.1q ourselves from the edge01 config.
#
# Everything else is pretty much straightforward. Bring up everything, ping
# stuff. We don't really test much else than internet routing.
#
# To run this:
#  nix-build -A bgpwtf.machines.tests.edge01-waw
#
# To debug this:
#  nix-build -A bgpwtf.machines.tests.edge01-waw.driver && result/bin/nixos-test-driver
#  >>> start_all()

{ hscloud, pkgsSrc, pkgs, lib, ... }:

with lib;

let

mkBGPSpeaker = let
in { config, pkgs, ... }: {
  networking.hostName = "bgpspeaker";
  virtualisation.memorySize = 1024;
  virtualisation.vlans = [ 1 ];
  imports = [
    ../modules/eoip.nix
  ];

  hscloud.eoip.interfaces."nnet" = {
    parent = "eth1";
    localV4 = "192.168.1.3";
    remoteV4 = "192.168.1.2";
    id = 100;
  };
  networking.interfaces."nnet" = {
    virtual = true;
    virtualType = "tap";
  };
  networking.vlans = {
    "vl-globalmix" = { interface = "nnet"; id = 466; };
  };
  networking.interfaces."vl-globalmix" = {
    ipv4.addresses = [{ address = "185.235.70.44"; prefixLength = 31; }];
    ipv6.addresses = [{ address = "2001:67c:778:fd40::b9eb:462c"; prefixLength = 127; }];
  };

  services.bird2 = {
    enable = true;
    config = ''
      log syslog all;
      debug protocols { states, interfaces, events }
      router id 185.235.70.44;

      protocol device {
        scan time 10;
      };
      protocol kernel kernel_v4 {
        ipv4 {
          import none;
          export all;
        };
      }
      protocol kernel kernel_v6 {
        ipv6 {
          import none;
          export all;
        };
      }
      ipv4 table globalmix4;
      ipv6 table globalmix6;

      protocol pipe pipe_globalmix4 {
        table master4;
        peer table globalmix4;
        import all;
        export none;
      };
      protocol pipe pipe_globalmix6 {
        table master6;
        peer table globalmix6;
        import all;
        export none;
      };

      protocol static static_globalmix_originate_v4 {
        ipv4 {
          table globalmix4;
          import all;
        };
        route 8.8.8.0/24 blackhole;
      }
      protocol static static_globalmix_originate_v6 {
        ipv6 {
          table globalmix6;
          import all;
        };
        route 2a00:1450:4016::/48 blackhole;
      }
      protocol bgp bgp_globalmix_v4 {
        ipv4 {
          table globalmix4;
          export all;
          import all;
        };
        local 185.235.70.44 as 62081;
        neighbor 185.235.70.45 as 204880;
      };
      protocol bgp bgp_globalmix_v6 {
        ipv6 {
          table globalmix6;
          export all;
          import all;
        };
        local 2001:67c:778:fd40::b9eb:462c as 62081;
        neighbor 2001:67c:778:fd40::b9eb:462d as 204880;
      };
    '';
  };
  networking.firewall.enable = false;
  networking.useDHCP = false;
  networking.interfaces.lo.ipv4.addresses = [ { address = "8.8.8.1"; prefixLength = 32; } ];
  networking.interfaces.lo.ipv6.addresses = [ { address = "2a00:1450:4016:801::200e"; prefixLength = 128; } ];
  environment.systemPackages = with pkgs; [
    tcpdump htop dstat file
  ];

};


test = import "${pkgsSrc}/nixos/tests/make-test-python.nix" ({ pkgs, libs, ... }: {
  name = "test-edge01-waw-e2e";

  nodes = {
    dut = { config, pkgs, ... }: {
      imports = [
        ../edge01.waw.bgp.wtf.nix
        ../modules/eoip.nix
      ];
      virtualisation.memorySize = 1024;
      virtualisation.vlans = [
        1 2
      ];

      hscloud.eoip.interfaces = {
        "e1-nnet" = { parent = "eth1"; localV4 = "192.168.1.2"; remoteV4 = "192.168.1.3"; id = 100; };
        "e2-customs" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.1"; id = 200; };
        "e3-mgmt" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.111"; id = 300; }; # not connected
        "e4-oob" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.112"; id = 400; }; # not connected
        "e7-dcsw" = { parent = "eth2"; localV4 = "192.168.2.2"; remoteV4 = "192.168.2.113"; id = 500; }; # not connected
      };
      networking.interfaces = {
        "e1-nnet" = { virtual = true; virtualType = "tap"; };
        "e2-customs" = { virtual = true; virtualType = "tap"; };
        "e3-mgmt" = { virtual = true; virtualType = "tap"; };
        "e4-oob" = { virtual = true; virtualType = "tap"; };
        "e7-dcsw" = { virtual = true; virtualType = "tap"; };
      };
      hscloud.anchorvm = {
        blkdev = "/anchor.img";
        ram = 32;
      };
      systemd.services.anchorTestImg = {
        requiredBy = [ "anchorvm.service" ];
        serviceConfig = {
          Type = "oneshot";
          ExecStart = "${pkgs.coreutils}/bin/truncate -s 128m /anchor.img";
        };
      };
    };

    speaker = mkBGPSpeaker;

    customs = { config, pkgs, ... }: {
      imports = [
        ../modules/eoip.nix
      ];
      environment.systemPackages = with pkgs; [
        tcpdump htop dstat file dhcpcd
      ];
      virtualisation.memorySize = 1024;
      virtualisation.vlans = [
        2
      ];
      networking.firewall.enable = false;
      networking.useDHCP = false;
      networking.defaultGateway = "185.236.240.4";
      networking.defaultGateway6 = "2a0d:eb00:2137:1::2";
      networking.interfaces."edge" = {
        virtual = true;
        virtualType = "tap";
        ipv4.addresses = [{ address = "185.236.240.5"; prefixLength = 31; }];
        ipv6.addresses = [{ address = "2a0d:eb00:2137:1::3"; prefixLength = 127; }];
      };
      hscloud.eoip.interfaces."edge" = {
        parent = "eth2";
        localV4 = "192.168.2.1";
        remoteV4 = "192.168.2.2";
        id = 200;
      };
      networking.bridges."lan".interfaces = [];
      networking.interfaces."lan" = {
        ipv4.addresses = [{ address = "10.8.1.2"; prefixLength = 23; }];
        ipv6.addresses = [{ address = "2a0d:eb00:4242::1"; prefixLength = 64; }];
      };
      services.bird2 = {
        enable = true;
        config = ''
          log syslog all;
          debug protocols { states, interfaces, events }
          router id 185.236.240.5;

          protocol device {
            scan time 10;
          };
          protocol kernel kernel_v4 {
            ipv4 {
              import none;
              export all;
            };
          }
          protocol kernel kernel_v6 {
            ipv6 {
              import none;
              export all;
            };
          }

          protocol ospf v3 ospf_hswaw {
            ipv6 {
              import all;
              export all;
            };
            area 0.0.0.0 {
               interface "edge" {
                 cost 10;
                 type bcast;
               };
               interface "lan" {
                 cost 10;
                 stub yes;
                 type bcast;
                 check link no;
               };
            };
          }
        '';
      };
    };
  };

  testScript = ''
    start_all()

    edge01.wait_for_unit("bird2.service")
    # Wait for BGP to settle.
    edge01.wait_until_succeeds("ping 185.235.70.44 -c 1 -w 2")
    edge01.wait_until_succeeds("birdc show route for 8.8.8.1 table all | grep via")
    edge01.wait_until_succeeds(
        "birdc show route for 2a00:1450:4016:801::200e table all | grep via"
    )
    edge01.succeed("ping 8.8.8.1 -c 1 -w 2")

    # ping from customs to globalmix must succeed.
    customs.succeed("ping 8.8.8.1 -c 1 -w 2")
    customs.succeed("ping 2a00:1450:4016:801::200e -c 1 -w 2")

    # edge01 must announce exactly one v4 prefix.
    bgpspeaker.succeed("birdc show route protocol bgp_globalmix_v4 | grep unicast")
    bgpspeaker.fail(
        "birdc show route protocol bgp_globalmix_v4 | grep unicast | grep -v 185.236.240.0/23"
    )

    # edge01 must announce exactly one v6 prefix.
    bgpspeaker.succeed("birdc show route protocol bgp_globalmix_v6 | grep unicast")
    bgpspeaker.fail(
        "birdc show route protocol bgp_globalmix_v6 | grep unicast | grep -v 2a0d:eb00::/32"
    )

    # customer networks must be reachable from globalmix
    bgpspeaker.succeed("ping 185.236.240.10 -c 1 -w 2")
    bgpspeaker.succeed("ping 2a0d:eb00:8000::1 -c 1 -w 2")
    bgpspeaker.succeed("ping 185.236.240.12 -c 1 -w 2")
    bgpspeaker.succeed("ping 185.236.240.105 -c 1 -w 2")
    bgpspeaker.succeed("ping 2a0d:eb00:8003::1 -c 1 -w 2")

    # dhcp agent must be reachable
    customs.succeed("ping 185.236.240.18 -c 1 -w 2")
  '';
});

in test { inherit pkgs; inherit (pkgs) libs; }
