Unverified Commit d2c13800 authored by Ilan Joselevich's avatar Ilan Joselevich Committed by GitHub
Browse files

nixos/unifi: refactor test and package + update to 9.1.119 (#400950)

parents b348661a 50dae144
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1393,7 +1393,7 @@ in
  ulogd = handleTest ./ulogd/ulogd.nix { };
  umurmur = handleTest ./umurmur.nix { };
  unbound = handleTest ./unbound.nix { };
  unifi = handleTest ./unifi.nix { };
  unifi = runTest ./unifi.nix;
  unit-php = runTest ./web-servers/unit-php.nix;
  unit-perl = handleTest ./web-servers/unit-perl.nix { };
  upnp.iptables = handleTest ./upnp.nix { useNftables = false; };
+27 −42
Original line number Diff line number Diff line
# Test UniFi controller
{ lib, ... }:

{
  system ? builtins.currentSystem,
  config ? {
    allowUnfree = true;
  },
  pkgs ? import ../.. { inherit system config; },
}:

with import ../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;

let
  makeAppTest =
    unifi:
    makeTest {
      name = "unifi-controller-${unifi.version}";
      meta = with pkgs.lib.maintainers; {
        maintainers = [
  name = "unifi";

  meta.maintainers = with lib.maintainers; [
    patryk27
    zhaofengli
  ];
      };

      nodes.server = {
        nixpkgs.config = config;
  node.pkgsReadOnly = false;

        services.unifi = {
          enable = true;
          unifiPackage = unifi;
          openFirewall = false;
        };
  nodes.machine = {
    nixpkgs.config.allowUnfree = true;

    services.unifi.enable = true;
  };

  testScript = ''
        server.wait_for_unit("unifi.service")
        server.wait_until_succeeds("curl -Lk https://localhost:8443 >&2", timeout=300)
    import json

    start_all()

    machine.wait_for_unit("unifi.service")
    machine.wait_for_open_port(8880)

    status = json.loads(machine.succeed("curl --silent --show-error --fail-with-body http://localhost:8880/status"))
    assert status["meta"]["rc"] == "ok"
  '';
    };
in
with pkgs;
{
  unifi8 = makeAppTest unifi8;
}
+22 −26
Original line number Diff line number Diff line
{
  lib,
  stdenv,
  stdenvNoCC,
  dpkg,
  fetchurl,
  nixosTests,
  systemd,
  autoPatchelfHook,
}:

stdenv.mkDerivation rec {
stdenvNoCC.mkDerivation (finalAttrs: {
  pname = "unifi-controller";
  version = "9.0.114";
  version = "9.1.119";

  # see https://community.ui.com/releases / https://www.ui.com/download/unifi
  src = fetchurl {
    url = "https://dl.ui.com/unifi/${version}/unifi_sysvinit_all.deb";
    hash = "sha256-3xumIIzr+tx60kPhPfSs2Kz2iJ39Kt5934Vca/MpUu4=";
    url = "https://dl.ui.com/unifi/${finalAttrs.version}/unifi_sysvinit_all.deb";
    hash = "sha256-YKioJZG8lnVCIh1hrMxFElBKLPHurxWiGJMHKDlX1yE=";
  };

  nativeBuildInputs = [ dpkg ];
  nativeBuildInputs = [
    dpkg
    autoPatchelfHook
  ];

  buildInputs = [
    systemd
  ];

  installPhase = ''
    runHook preInstall

    mkdir -p $out
    cd ./usr/lib/unifi
    cp -ar dl lib webapps $out
    cp -ar usr/lib/unifi/{dl,lib,webapps} $out

    runHook postInstall
  '';

  postInstall =
    if stdenv.hostPlatform.system == "x86_64-linux" then
      ''
        patchelf --add-needed "${systemd}/lib/libsystemd.so.0" "$out/lib/native/Linux/x86_64/libubnt_sdnotify_jni.so"
      ''
    else if stdenv.hostPlatform.system == "aarch64-linux" then
      ''
        patchelf --add-needed "${systemd}/lib/libsystemd.so.0" "$out/lib/native/Linux/aarch64/libubnt_sdnotify_jni.so"
      ''
    else
      null;

  passthru.tests = {
    unifi = nixosTests.unifi;
  };
  passthru.tests = { inherit (nixosTests) unifi; };

  meta = with lib; {
    homepage = "http://www.ubnt.com/";
    homepage = "https://www.ui.com";
    description = "Controller for Ubiquiti UniFi access points";
    sourceProvenance = with sourceTypes; [ binaryBytecode ];
    license = licenses.unfree;
    platforms = platforms.unix;
    platforms = [
      "x86_64-linux"
      "aarch64-linux"
    ];
    maintainers = with maintainers; [
      globin
      patryk27
    ];
  };
}
})