nixos/tests/prosody: fix test prosody-mysql

Izorkin e69f11b7 3c5b611e

Changed files
+31 -42
nixos
tests
pkgs
development
lua-modules
+30 -41
nixos/tests/xmpp/prosody-mysql.nix
···
cert =
pkgs:
pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
-
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -subj '/CN=example.com/CN=uploads.example.com/CN=conference.example.com' -days 36500
mkdir -p $out
cp key.pem cert.pem $out
'';
createUsers =
pkgs:
-
pkgs.writeScriptBin "create-prosody-users" ''
-
#!${pkgs.bash}/bin/bash
set -e
-
-
# Creates and set password for the 2 xmpp test users.
-
#
-
# Doing that in a bash script instead of doing that in the test
-
# script allow us to easily provision the users when running that
-
# test interactively.
-
prosodyctl register cthon98 example.com nothunter2
prosodyctl register azurediamond example.com hunter2
'';
delUsers =
pkgs:
-
pkgs.writeScriptBin "delete-prosody-users" ''
-
#!${pkgs.bash}/bin/bash
set -e
-
-
# Deletes the test users.
-
#
-
# Doing that in a bash script instead of doing that in the test
-
# script allow us to easily provision the users when running that
-
# test interactively.
-
prosodyctl deluser cthon98@example.com
prosodyctl deluser azurediamond@example.com
'';
···
}:
{
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
-
console.keyMap = "fr-bepo";
networking.extraHosts = ''
-
${nodes.server.config.networking.primaryIPAddress} example.com
-
${nodes.server.config.networking.primaryIPAddress} conference.example.com
-
${nodes.server.config.networking.primaryIPAddress} uploads.example.com
'';
environment.systemPackages = [
(pkgs.callPackage ./xmpp-sendmessage.nix {
-
connectTo = nodes.server.config.networking.primaryIPAddress;
})
];
};
server =
-
{ config, pkgs, ... }:
{
nixpkgs.overlays = [
(self: super: {
···
})
];
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
-
console.keyMap = "fr-bepo";
networking.extraHosts = ''
-
${config.networking.primaryIPAddress} example.com
-
${config.networking.primaryIPAddress} conference.example.com
-
${config.networking.primaryIPAddress} uploads.example.com
'';
networking.firewall.enable = false;
environment.systemPackages = [
···
domain = "conference.example.com";
}
];
-
uploadHttp = {
domain = "uploads.example.com";
};
extraConfig = ''
···
};
};
-
testScript =
-
{ nodes, ... }:
-
''
-
# Check with mysql storage
-
mysql.wait_for_unit("mysql.service")
-
server.wait_for_unit("prosody.service")
-
server.succeed('prosodyctl status | grep "Prosody is running"')
-
server.succeed("create-prosody-users")
-
client.succeed("send-message")
-
server.succeed("delete-prosody-users")
-
'';
}
···
cert =
pkgs:
pkgs.runCommand "selfSignedCerts" { buildInputs = [ pkgs.openssl ]; } ''
+
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 365 \
+
-subj '/C=GB/CN=example.com' -addext "subjectAltName = DNS:example.com,DNS:uploads.example.com,DNS:conference.example.com"
mkdir -p $out
cp key.pem cert.pem $out
'';
+
# Creates and set password for the 2 xmpp test users.
+
#
+
# Doing that in a bash script instead of doing that in the test
+
# script allow us to easily provision the users when running that
+
# test interactively.
createUsers =
pkgs:
+
pkgs.writeShellScriptBin "create-prosody-users" ''
set -e
prosodyctl register cthon98 example.com nothunter2
prosodyctl register azurediamond example.com hunter2
'';
+
# Deletes the test users.
delUsers =
pkgs:
+
pkgs.writeShellScriptBin "delete-prosody-users" ''
set -e
prosodyctl deluser cthon98@example.com
prosodyctl deluser azurediamond@example.com
'';
···
}:
{
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
networking.extraHosts = ''
+
${nodes.server.networking.primaryIPAddress} example.com
+
${nodes.server.networking.primaryIPAddress} conference.example.com
+
${nodes.server.networking.primaryIPAddress} uploads.example.com
'';
environment.systemPackages = [
(pkgs.callPackage ./xmpp-sendmessage.nix {
+
connectTo = nodes.server.networking.primaryIPAddress;
})
];
};
+
server =
+
{ nodes, pkgs, ... }:
{
nixpkgs.overlays = [
(self: super: {
···
})
];
security.pki.certificateFiles = [ "${cert pkgs}/cert.pem" ];
networking.extraHosts = ''
+
${nodes.server.networking.primaryIPAddress} example.com
+
${nodes.server.networking.primaryIPAddress} conference.example.com
+
${nodes.server.networking.primaryIPAddress} uploads.example.com
'';
networking.firewall.enable = false;
environment.systemPackages = [
···
domain = "conference.example.com";
}
];
+
httpFileShare = {
domain = "uploads.example.com";
};
extraConfig = ''
···
};
};
+
testScript = _: ''
+
# Check with mysql storage
+
start_all()
+
mysql.wait_for_unit("mysql.service")
+
server.wait_for_unit("prosody.service")
+
server.succeed('prosodyctl status | grep "Prosody is running"')
+
server.succeed("create-prosody-users")
+
client.succeed("send-message")
+
server.succeed("delete-prosody-users")
+
'';
}
+1 -1
pkgs/development/lua-modules/overrides.nix
···
luarocksConfig = lib.recursiveUpdate oa.luarocksConfig {
variables = {
MYSQL_INCDIR = "${lib.getDev libmysqlclient}/include/";
-
MYSQL_LIBDIR = "${lib.getLib libmysqlclient}/lib/";
};
};
buildInputs = oa.buildInputs ++ [
···
luarocksConfig = lib.recursiveUpdate oa.luarocksConfig {
variables = {
MYSQL_INCDIR = "${lib.getDev libmysqlclient}/include/";
+
MYSQL_LIBDIR = "${lib.getLib libmysqlclient}/lib//mysql/";
};
};
buildInputs = oa.buildInputs ++ [