Merge pull request #297262 from StillerHarpo/monetdb-nixos-test

nixos/monetdb: Init nixos test

authored by Weijia Wang and committed by GitHub ff41f713 069d6244

+78
+1
nixos/tests/all-tests.nix
··· 543 543 mod_perl = handleTest ./mod_perl.nix {}; 544 544 molly-brown = handleTest ./molly-brown.nix {}; 545 545 monado = handleTest ./monado.nix {}; 546 + monetdb = handleTest ./monetdb.nix {}; 546 547 monica = handleTest ./web-apps/monica.nix {}; 547 548 mongodb = handleTest ./mongodb.nix {}; 548 549 moodle = handleTest ./moodle.nix {};
+77
nixos/tests/monetdb.nix
··· 1 + import ./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 + })