at master 2.6 kB view raw
1{ pkgs, ... }: 2let 3 creds = pkgs.writeText ".monetdb" '' 4 user=monetdb 5 password=monetdb 6 ''; 7 createUser = pkgs.writeText "createUser.sql" '' 8 CREATE USER "voc" WITH PASSWORD 'voc' NAME 'VOC Explorer' SCHEMA "sys"; 9 CREATE SCHEMA "voc" AUTHORIZATION "voc"; 10 ALTER USER "voc" SET SCHEMA "voc"; 11 ''; 12 credsVoc = pkgs.writeText ".monetdb" '' 13 user=voc 14 password=voc 15 ''; 16 transaction = pkgs.writeText "transaction" '' 17 START TRANSACTION; 18 CREATE TABLE test (id int, data varchar(30)); 19 ROLLBACK; 20 ''; 21 vocData = pkgs.fetchzip { 22 url = "https://dev.monetdb.org/Assets/VOC/voc_dump.zip"; 23 hash = "sha256-sQ5acTsSAiXQfOgt2PhN7X7Z9TZGZtLrPPxgQT2pCGQ="; 24 }; 25 onboardPeople = pkgs.writeText "onboardPeople" '' 26 CREATE VIEW onboard_people AS 27 SELECT * FROM ( 28 SELECT 'craftsmen' AS type, craftsmen.* FROM craftsmen 29 UNION ALL 30 SELECT 'impotenten' AS type, impotenten.* FROM impotenten 31 UNION ALL 32 SELECT 'passengers' AS type, passengers.* FROM passengers 33 UNION ALL 34 SELECT 'seafarers' AS type, seafarers.* FROM seafarers 35 UNION ALL 36 SELECT 'soldiers' AS type, soldiers.* FROM soldiers 37 UNION ALL 38 SELECT 'total' AS type, total.* FROM total 39 ) AS onboard_people_table; 40 SELECT type, COUNT(*) AS total 41 FROM onboard_people GROUP BY type ORDER BY type; 42 ''; 43 onboardExpected = pkgs.lib.strings.replaceStrings [ "\n" ] [ "\\n" ] '' 44 +------------+-------+ 45 | type | total | 46 +============+=======+ 47 | craftsmen | 2349 | 48 | impotenten | 938 | 49 | passengers | 2813 | 50 | seafarers | 4468 | 51 | soldiers | 4177 | 52 | total | 2467 | 53 +------------+-------+ 54 ''; 55in 56{ 57 name = "monetdb"; 58 meta = with pkgs.lib.maintainers; { 59 maintainers = [ StillerHarpo ]; 60 }; 61 nodes.machine.services.monetdb.enable = true; 62 testScript = '' 63 machine.start() 64 machine.wait_for_unit("monetdb") 65 machine.succeed("monetdbd create mydbfarm") 66 machine.succeed("monetdbd start mydbfarm") 67 machine.succeed("monetdb create voc") 68 machine.succeed("monetdb release voc") 69 machine.succeed("cp ${creds} ./.monetdb") 70 assert "hello world" in machine.succeed("mclient -d voc -s \"SELECT 'hello world'\"") 71 machine.succeed("mclient -d voc ${createUser}") 72 machine.succeed("cp ${credsVoc} ./.monetdb") 73 machine.succeed("mclient -d voc ${transaction}") 74 machine.succeed("mclient -d voc ${vocData}/voc_dump.sql") 75 assert "8131" in machine.succeed("mclient -d voc -s \"SELECT count(*) FROM voyages\"") 76 assert "${onboardExpected}" in machine.succeed("mclient -d voc ${onboardPeople}") 77 78 ''; 79}