diff options
author | Franz Pletz <fpletz@fnordicwalking.de> | 2017-11-19 17:36:47 +0100 |
---|---|---|
committer | Franz Pletz <fpletz@fnordicwalking.de> | 2017-11-19 17:39:36 +0100 |
commit | 71b8437e2c6169210fdc1d528240c8b1ea0193ac (patch) | |
tree | f200a280cf4ee596428d94f57c3852ba6dbe8da2 | |
parent | a86d0d610c00346b80351003558ee8a458b4c258 (diff) | |
download | nixpkgs-71b8437e2c6169210fdc1d528240c8b1ea0193ac.tar nixpkgs-71b8437e2c6169210fdc1d528240c8b1ea0193ac.tar.gz nixpkgs-71b8437e2c6169210fdc1d528240c8b1ea0193ac.tar.bz2 nixpkgs-71b8437e2c6169210fdc1d528240c8b1ea0193ac.tar.lz nixpkgs-71b8437e2c6169210fdc1d528240c8b1ea0193ac.tar.xz nixpkgs-71b8437e2c6169210fdc1d528240c8b1ea0193ac.tar.zst nixpkgs-71b8437e2c6169210fdc1d528240c8b1ea0193ac.zip |
nixos/tests: add couchdb test
-rw-r--r-- | nixos/release.nix | 1 | ||||
-rw-r--r-- | nixos/tests/couchdb.nix | 56 |
2 files changed, 57 insertions, 0 deletions
diff --git a/nixos/release.nix b/nixos/release.nix index 367fdadd0f4..2dbe3a81ab2 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -235,6 +235,7 @@ in rec { tests.containers-tmpfs = callTest tests/containers-tmpfs.nix {}; tests.containers-hosts = callTest tests/containers-hosts.nix {}; tests.containers-macvlans = callTest tests/containers-macvlans.nix {}; + tests.couchdb = callTest tests/couchdb.nix {}; tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; }); tests.docker-edge = hydraJob (import tests/docker-edge.nix { system = "x86_64-linux"; }); tests.dovecot = callTest tests/dovecot.nix {}; diff --git a/nixos/tests/couchdb.nix b/nixos/tests/couchdb.nix new file mode 100644 index 00000000000..a3f675236bc --- /dev/null +++ b/nixos/tests/couchdb.nix @@ -0,0 +1,56 @@ +import ./make-test.nix ({ pkgs, lib, ...}: + +with lib; + +{ + name = "couchdb"; + meta = with pkgs.stdenv.lib.maintainers; { + maintainers = [ fpletz ]; + }; + + nodes = { + couchdb1 = + { pkgs, config, ... }: + + { environment.systemPackages = with pkgs; [ jq ]; + services.couchdb.enable = true; + }; + + couchdb2 = + { pkgs, config, ... }: + + { environment.systemPackages = with pkgs; [ jq ]; + services.couchdb.enable = true; + services.couchdb.package = pkgs.couchdb2; + }; + }; + + testScript = let + curlJqCheck = action: path: jqexpr: result: + pkgs.writeScript "curl-jq-check-${action}-${path}.sh" '' + RESULT=$(curl -X ${action} http://127.0.0.1:5984/${path} | jq -r '${jqexpr}') + echo $RESULT >&2 + if [ "$RESULT" != "${result}" ]; then + exit 1 + fi + ''; + in '' + startAll; + + $couchdb1->waitForUnit("couchdb.service"); + $couchdb1->waitUntilSucceeds("${curlJqCheck "GET" "" ".couchdb" "Welcome"}"); + $couchdb1->waitUntilSucceeds("${curlJqCheck "GET" "_all_dbs" ". | length" "2"}"); + $couchdb1->succeed("${curlJqCheck "PUT" "foo" ".ok" "true"}"); + $couchdb1->succeed("${curlJqCheck "GET" "_all_dbs" ". | length" "3"}"); + $couchdb1->succeed("${curlJqCheck "DELETE" "foo" ".ok" "true"}"); + $couchdb1->succeed("${curlJqCheck "GET" "_all_dbs" ". | length" "2"}"); + + $couchdb2->waitForUnit("couchdb.service"); + $couchdb2->waitUntilSucceeds("${curlJqCheck "GET" "" ".couchdb" "Welcome"}"); + $couchdb2->waitUntilSucceeds("${curlJqCheck "GET" "_all_dbs" ". | length" "0"}"); + $couchdb2->succeed("${curlJqCheck "PUT" "foo" ".ok" "true"}"); + $couchdb2->succeed("${curlJqCheck "GET" "_all_dbs" ". | length" "1"}"); + $couchdb2->succeed("${curlJqCheck "DELETE" "foo" ".ok" "true"}"); + $couchdb2->succeed("${curlJqCheck "GET" "_all_dbs" ". | length" "0"}"); + ''; +}) |