make dummy integration test pass
This commit is contained in:
parent
cf3aed2e82
commit
309360a356
7 changed files with 108 additions and 37 deletions
6
docs/tutorials/integrationtests.md
Normal file
6
docs/tutorials/integrationtests.md
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Integration Tests
|
||||
|
||||
Integration tests configure real virtual machines and run tests on
|
||||
those to assert some properties.
|
||||
|
||||
You can find all integration tests under the [tests/integration](/tests/integration) directory.
|
40
tests/integration/common.nix
Normal file
40
tests/integration/common.nix
Normal file
|
@ -0,0 +1,40 @@
|
|||
{ nixpkgs, pkgs }:
|
||||
let
|
||||
generateManifestSrc =
|
||||
{name, tarball}:
|
||||
|
||||
pkgs.stdenv.mkDerivation {
|
||||
name = "${name}-manifest-src";
|
||||
buildCommand =
|
||||
''
|
||||
mkdir -p $out
|
||||
cd $out
|
||||
tar xfvj ${tarball}/tarballs/*.tar.bz2 --strip-components=1
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
disnixTest = system:
|
||||
{name, manifest, tarball, networkFile, externalNetworkFile ? false, testScript, dysnomiaStateDir ? "", postActivateTimeout ? 1}:
|
||||
|
||||
let
|
||||
manifestSrc = generateManifestSrc {
|
||||
inherit name tarball;
|
||||
};
|
||||
|
||||
network = if externalNetworkFile then import networkFile else import "${manifestSrc}/${networkFile}";
|
||||
in
|
||||
with import "${nixpkgs}/nixos/lib/testing-python.nix" { inherit system; };
|
||||
|
||||
simpleTest {
|
||||
nodes = network;
|
||||
inherit name;
|
||||
|
||||
testScript = import "${pkgs.disnixos}/share/disnixos/generate-testscript.nix" {
|
||||
inherit network testScript dysnomiaStateDir postActivateTimeout;
|
||||
inherit (pkgs) disnix daemon socat libxml2;
|
||||
inherit (pkgs.lib) concatMapStrings;
|
||||
manifestFile = "${manifest}/manifest.xml";
|
||||
};
|
||||
};
|
||||
}
|
6
tests/integration/default.nix
Normal file
6
tests/integration/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
|||
{ pkgs
|
||||
, utils
|
||||
}:
|
||||
{
|
||||
keycloak = pkgs.callPackage ./keycloak.nix {};
|
||||
}
|
|
@ -1,58 +1,75 @@
|
|||
{ nixpkgs ? <nixpkgs>
|
||||
, system ? builtins.currentSystem
|
||||
, systems ? [ "i686-linux" "x86_64-linux" ]
|
||||
}:
|
||||
|
||||
let
|
||||
pkgs = import nixpkgs {inherit system;};
|
||||
pkgs = import nixpkgs {};
|
||||
|
||||
disnixos = import "${pkgs.disnixos}/share/disnixos/testing.nix" {
|
||||
inherit nixpkgs system;
|
||||
inherit nixpkgs;
|
||||
};
|
||||
|
||||
version = "1.0";
|
||||
|
||||
disnixos2 = pkgs.callPackage ./common.nix { inherit nixpkgs; };
|
||||
in
|
||||
|
||||
rec {
|
||||
tarball = disnixos.sourceTarball {
|
||||
name = "testproject-zip";
|
||||
inherit version;
|
||||
src = ./.;
|
||||
src = ../../.;
|
||||
officialRelease = false;
|
||||
};
|
||||
|
||||
manifest =
|
||||
disnixos.buildManifest {
|
||||
name = "test-project-manifest";
|
||||
version = builtins.readFile ./version;
|
||||
inherit tarball;
|
||||
servicesFile = "keycloak/services.nix";
|
||||
networkFile = "keycloak/network.nix";
|
||||
distributionFile = "keycloak/distribution.nix";
|
||||
};
|
||||
builds = {
|
||||
simple = pkgs.lib.genAttrs systems (system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
|
||||
tests =
|
||||
disnixos.disnixTest {
|
||||
name = "test-project-tests";
|
||||
inherit tarball manifest;
|
||||
networkFile = "keycloak/network.nix";
|
||||
dysnomiaStateDir = /var/state/dysnomia;
|
||||
disnixos = import "${pkgs.disnixos}/share/disnixos/testing.nix" {
|
||||
inherit nixpkgs system;
|
||||
};
|
||||
in
|
||||
disnixos.buildManifest {
|
||||
name = "test-project-manifest";
|
||||
inherit version;
|
||||
inherit tarball;
|
||||
servicesFile = "tests/integration/keycloak/services.nix";
|
||||
networkFile = "tests/integration/keycloak/network.nix";
|
||||
distributionFile = "tests/integration/keycloak/distribution.nix";
|
||||
# extraParams = {
|
||||
# "extra-builtins-file" = ../../extra-builtins.nix;
|
||||
# };
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
tests = {
|
||||
simple = disnixos2.disnixTest builtins.currentSystem {
|
||||
name = "test-project-test";
|
||||
inherit tarball;
|
||||
manifest = builtins.getAttr (builtins.currentSystem) builds.simple;
|
||||
networkFile = "tests/integration/keycloak/network.nix";
|
||||
# dysnomiaStateDir = /var/state/dysnomia;
|
||||
testScript =
|
||||
''
|
||||
# Wait until the front-end application is deployed
|
||||
$test1->waitForFile("/var/tomcat/webapps/testapp");
|
||||
# Wait until the front-end application is deployed
|
||||
# $test1->waitForFile("/var/tomcat/webapps/testapp");
|
||||
|
||||
# Wait a little longer and capture the output of the entry page
|
||||
my $result = $test1->mustSucceed("sleep 10; curl --fail http://test2:8080/testapp");
|
||||
# Wait a little longer and capture the output of the entry page
|
||||
# my $result = $test1->mustSucceed("sleep 10; curl --fail http://test2:8080/testapp");
|
||||
'';
|
||||
};
|
||||
}
|
||||
};
|
||||
}.tests
|
||||
|
||||
# let
|
||||
# utils = import ../../utils.nix {
|
||||
# inherit pkgs;
|
||||
# inherit (pkgs) stdenv lib;
|
||||
# };
|
||||
# keycloak = import ../../pkgs/keycloak/unit.nix {
|
||||
# keycloak = import ../../keycloak/unit.nix {
|
||||
# inherit pkgs utils;
|
||||
# inherit (pkgs) stdenv lib;
|
||||
# };
|
|
@ -8,7 +8,7 @@ rec {
|
|||
|
||||
utils = pkgs.lib.callPackageWith pkgs ../../../utils.nix { };
|
||||
|
||||
customPkgs = import ../../../pkgs/all-packages.nix {
|
||||
customPkgs = import ../../../all-packages.nix {
|
||||
inherit system pkgs utils;
|
||||
};
|
||||
in
|
||||
|
@ -26,11 +26,11 @@ rec {
|
|||
};
|
||||
};
|
||||
|
||||
deployment.keys = {
|
||||
keycloakinitialadmin.text = ''
|
||||
KEYCLOAK_ADMIN_PASSWORD="${builtins.extraBuiltins.pass "keycloak.${domain}/admin"}"
|
||||
'';
|
||||
};
|
||||
# deployment.keys = {
|
||||
# keycloakinitialadmin.text = ''
|
||||
# KEYCLOAK_ADMIN_PASSWORD="${builtins.extraBuiltins.pass "keycloak.${domain}/admin"}"
|
||||
# '';
|
||||
# };
|
||||
|
||||
services = {
|
||||
openssh = {
|
|
@ -3,11 +3,12 @@
|
|||
let
|
||||
utils = pkgs.lib.callPackageWith pkgs ../../../utils.nix { };
|
||||
|
||||
customPkgs = import ../../../pkgs/all-packages.nix {
|
||||
customPkgs = import ../../../all-packages.nix {
|
||||
inherit system pkgs utils;
|
||||
};
|
||||
in
|
||||
{
|
||||
with utils;
|
||||
rec {
|
||||
KeycloakPostgresDB = customPkgs.mkPostgresDB {
|
||||
name = "KeycloakPostgresDB";
|
||||
database = "keycloak";
|
||||
|
@ -18,12 +19,13 @@ in
|
|||
|
||||
KeycloakService = customPkgs.mkKeycloakService {
|
||||
name = "KeycloakService";
|
||||
subdomain = "keycloak";
|
||||
|
||||
# Get these from infrastructure.nix
|
||||
user = "keycloak";
|
||||
group = "keycloak";
|
||||
|
||||
postgresServiceName = (utils.getTarget "KeycloakPostgresDB").containers.postgresql-database.service_name;
|
||||
postgresServiceName = (getTarget distribution "KeycloakPostgresDB").containers.postgresql-database.service_name;
|
||||
initialAdminUsername = "admin";
|
||||
|
||||
keys = {
|
||||
|
@ -32,13 +34,13 @@ in
|
|||
};
|
||||
|
||||
logLevel = "INFO";
|
||||
hostname = "keycloak.${getDomain "KeycloakService"}";
|
||||
hostname = "keycloak.${getDomain distribution "KeycloakService"}";
|
||||
|
||||
dbType = "postgres";
|
||||
dbDatabase = KeycloakPostgresDB.database;
|
||||
dbUsername = KeycloakPostgresDB.username;
|
||||
dbHost = {KeycloakPostgresDB}: KeycloakPostgresDB.target.properties.hostname;
|
||||
dbPort = (getTarget "KeycloakPostgresDB").containers.postgresql-database.port;
|
||||
dbPort = (getTarget distribution "KeycloakPostgresDB").containers.postgresql-database.port;
|
||||
|
||||
inherit KeycloakPostgresDB;
|
||||
};
|
Loading…
Reference in a new issue