Unverified Commit f451c385 authored by Adam C. Stephens's avatar Adam C. Stephens Committed by GitHub
Browse files

openvswitch: remove kernel, add tests (#344653)

parents 38fb1499 52335fc1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -741,6 +741,7 @@ in {
  image-contents = handleTest ./image-contents.nix {};
  openvscode-server = handleTest ./openvscode-server.nix {};
  open-webui = runTest ./open-webui.nix;
  openvswitch = runTest ./openvswitch.nix;
  orangefs = handleTest ./orangefs.nix {};
  os-prober = handleTestOn ["x86_64-linux"] ./os-prober.nix {};
  osquery = handleTestOn ["x86_64-linux"] ./osquery.nix {};
+62 −0
Original line number Diff line number Diff line
{
  name = "openvswitch";

  nodes = {
    node1 = {
      virtualisation.vlans = [ 1 ];

      networking = {
        useNetworkd = true;
        useDHCP = false;
        firewall.enable = false;

        vswitches.vs0 = {
          interfaces = {
            eth1 = { };
          };
        };

      };

      systemd.network.networks."40-vs0" = {
        name = "vs0";
        networkConfig.Address = "10.0.0.1/24";
      };

    };

    node2 = {
      virtualisation.vlans = [ 1 ];

      networking = {
        useNetworkd = true;
        useDHCP = false;
        firewall.enable = false;

        vswitches.vs0 = {
          interfaces = {
            eth1 = { };
          };
        };

      };

      systemd.network.networks."40-vs0" = {
        name = "vs0";
        networkConfig.Address = "10.0.0.2/24";
      };
    };
  };

  testScript = # python
    ''
      start_all()
      node1.wait_for_unit("ovsdb.service")
      node1.wait_for_unit("ovs-vswitchd.service")
      node2.wait_for_unit("ovsdb.service")
      node2.wait_for_unit("ovs-vswitchd.service")

      node1.succeed("ping -c3 10.0.0.2")
      node2.succeed("ping -c3 10.0.0.1")
    '';
}
+23 −22
Original line number Diff line number Diff line
{
  withDPDK ? false,

  lib,
  stdenv,
  fetchFromGitHub,

  autoconf,
  automake,
  dpdk,
  fetchFromGitHub,
  installShellFiles,
  iproute2,
  kernel ? null,
  libcap_ng,
  libpcap,
  libtool,
  makeWrapper,
  nix-update-script,
  nixosTests,
  numactl,
  openssl,
  perl,
  pkg-config,
  procps,
  python3,
  tcpdump,
  sphinxHook,
  tcpdump,
  util-linux,
  which,
  makeWrapper,
  withDPDK ? false,
  dpdk,
  numactl,
  libpcap,
}:

let
  _kernel = kernel;
in
stdenv.mkDerivation rec {
  pname = if withDPDK then "openvswitch-dpdk" else "openvswitch";
  version = "3.4.0";

  kernel = lib.optional (_kernel != null) _kernel.dev;

  src = fetchFromGitHub {
    owner = "openvswitch";
    repo = "ovs";
@@ -84,14 +81,11 @@ stdenv.mkDerivation rec {

  preConfigure = "./boot.sh";

  configureFlags =
    [
  configureFlags = [
    "--localstatedir=/var"
    "--sharedstatedir=/var"
    "--sbindir=$(out)/bin"
    ]
    ++ (lib.optionals (_kernel != null) [ "--with-linux" ])
    ++ (lib.optionals withDPDK [ "--with-dpdk=shared" ]);
  ] ++ (lib.optionals withDPDK [ "--with-dpdk=shared" ]);

  # Leave /var out of this!
  installFlags = [
@@ -131,7 +125,14 @@ stdenv.mkDerivation rec {
      setuptools
    ]);

  passthru.updateScript = nix-update-script { };
  passthru = {
    tests = {
      default = nixosTests.openvswitch;
      incus = nixosTests.incus-lts.openvswitch;
    };

    updateScript = nix-update-script { };
  };

  meta = with lib; {
    changelog = "https://www.openvswitch.org/releases/NEWS-${version}.txt";