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