1{ pkgs, package, ... }:
2{
3 name = "clickhouse";
4 meta.maintainers = with pkgs.lib.maintainers; [
5 jpds
6 thevar1able
7 ];
8
9 nodes.machine = {
10 services.clickhouse = {
11 enable = true;
12 inherit package;
13 };
14 virtualisation.memorySize = 4096;
15 };
16
17 testScript =
18 let
19 # work around quote/substitution complexity by Nix, Perl, bash and SQL.
20 tableDDL = pkgs.writeText "ddl.sql" "CREATE TABLE `demo` (`value` FixedString(10)) engine = MergeTree PARTITION BY value ORDER BY tuple();";
21 insertQuery = pkgs.writeText "insert.sql" "INSERT INTO `demo` (`value`) VALUES ('foo');";
22 selectQuery = pkgs.writeText "select.sql" "SELECT * from `demo`";
23 in
24 ''
25 machine.start()
26 machine.wait_for_unit("clickhouse.service")
27 machine.wait_for_open_port(9000)
28
29 machine.succeed(
30 "cat ${tableDDL} | clickhouse-client"
31 )
32 machine.succeed(
33 "cat ${insertQuery} | clickhouse-client"
34 )
35 machine.succeed(
36 "cat ${selectQuery} | clickhouse-client | grep foo"
37 )
38 '';
39}