forked from mirrors/nixpkgs
clickhouse: fix module and package runtime
Although the package itself builds fine, the module fails because it tries to log into a non-existant file in `/var/log` which breaks the service. Patching to default config to log to stdout by default fixes the issue. Additionally this is the better solution as NixOS heavily relies on systemd (and thus journald) for logging. Also, the runtime relies on `/etc/localtime` to start, as it's not required by the module system we set UTC as sensitive default when using the module. To ensure that the service's basic functionality is available, a simple NixOS test has been added.
This commit is contained in:
parent
e5d6f9e329
commit
64d05bbdd2
|
@ -70,6 +70,11 @@ with lib;
|
|||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.clickhouse ];
|
||||
|
||||
# startup requires a `/etc/localtime` which only if exists if `time.timeZone != null`
|
||||
time.timeZone = mkDefault "UTC";
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ in
|
|||
cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {};
|
||||
chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {};
|
||||
cjdns = handleTest ./cjdns.nix {};
|
||||
clickhouse = handleTest ./clickhouse.nix {};
|
||||
cloud-init = handleTest ./cloud-init.nix {};
|
||||
codimd = handleTest ./codimd.nix {};
|
||||
containers-bridge = handleTest ./containers-bridge.nix {};
|
||||
|
|
25
nixos/tests/clickhouse.nix
Normal file
25
nixos/tests/clickhouse.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
import ./make-test.nix ({ pkgs, ... }: {
|
||||
name = "clickhouse";
|
||||
meta.maintainers = with pkgs.stdenv.lib.maintainers; [ ma27 ];
|
||||
|
||||
machine = {
|
||||
services.clickhouse.enable = true;
|
||||
};
|
||||
|
||||
testScript =
|
||||
let
|
||||
# work around quote/substitution complexity by Nix, Perl, bash and SQL.
|
||||
tableDDL = pkgs.writeText "ddl.sql" "CREATE TABLE `demo` (`value` FixedString(10)) engine = MergeTree PARTITION BY value ORDER BY tuple();";
|
||||
insertQuery = pkgs.writeText "insert.sql" "INSERT INTO `demo` (`value`) VALUES ('foo');";
|
||||
selectQuery = pkgs.writeText "select.sql" "SELECT * from `demo`";
|
||||
in
|
||||
''
|
||||
$machine->start();
|
||||
$machine->waitForUnit("clickhouse.service");
|
||||
$machine->waitForOpenPort(9000);
|
||||
|
||||
$machine->succeed("cat ${tableDDL} | clickhouse-client");
|
||||
$machine->succeed("cat ${insertQuery} | clickhouse-client");
|
||||
$machine->succeed("cat ${selectQuery} | clickhouse-client | grep foo");
|
||||
'';
|
||||
})
|
|
@ -36,6 +36,11 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postInstall = ''
|
||||
rm -rf $out/share/clickhouse-test
|
||||
|
||||
sed -i -e '\!<log>/var/log/clickhouse-server/clickhouse-server\.log</log>!d' \
|
||||
$out/etc/clickhouse-server/config.xml
|
||||
substituteInPlace $out/etc/clickhouse-server/config.xml \
|
||||
--replace "<errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog>" "<console>1</console>"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
|
Loading…
Reference in a new issue