at 22.05-pre 3.3 kB view raw
1import ./make-test-python.nix ({ lib, pkgs, ... }: 2 3let 4 inherit (lib) mkMerge nameValuePair maintainers; 5 6 baseGrafanaConf = { 7 services.grafana = { 8 enable = true; 9 addr = "localhost"; 10 analytics.reporting.enable = false; 11 domain = "localhost"; 12 security = { 13 adminUser = "testadmin"; 14 adminPassword = "snakeoilpwd"; 15 }; 16 }; 17 }; 18 19 extraNodeConfs = { 20 declarativePlugins = { 21 services.grafana.declarativePlugins = [ pkgs.grafanaPlugins.grafana-clock-panel ]; 22 }; 23 24 postgresql = { 25 services.grafana.database = { 26 host = "127.0.0.1:5432"; 27 user = "grafana"; 28 }; 29 services.postgresql = { 30 enable = true; 31 ensureDatabases = [ "grafana" ]; 32 ensureUsers = [{ 33 name = "grafana"; 34 ensurePermissions."DATABASE grafana" = "ALL PRIVILEGES"; 35 }]; 36 }; 37 systemd.services.grafana.after = [ "postgresql.service" ]; 38 }; 39 40 mysql = { 41 services.grafana.database.user = "grafana"; 42 services.mysql = { 43 enable = true; 44 ensureDatabases = [ "grafana" ]; 45 ensureUsers = [{ 46 name = "grafana"; 47 ensurePermissions."grafana.*" = "ALL PRIVILEGES"; 48 }]; 49 package = pkgs.mariadb; 50 }; 51 systemd.services.grafana.after = [ "mysql.service" ]; 52 }; 53 }; 54 55 nodes = builtins.listToAttrs (map (dbName: 56 nameValuePair dbName (mkMerge [ 57 baseGrafanaConf 58 (extraNodeConfs.${dbName} or {}) 59 ])) [ "sqlite" "declarativePlugins" "postgresql" "mysql" ]); 60 61in { 62 name = "grafana"; 63 64 meta = with maintainers; { 65 maintainers = [ willibutz ]; 66 }; 67 68 inherit nodes; 69 70 testScript = '' 71 start_all() 72 73 with subtest("Declarative plugins installed"): 74 declarativePlugins.wait_for_unit("grafana.service") 75 declarativePlugins.wait_for_open_port(3000) 76 declarativePlugins.succeed( 77 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/plugins | grep grafana-clock-panel" 78 ) 79 declarativePlugins.shutdown() 80 81 with subtest("Successful API query as admin user with sqlite db"): 82 sqlite.wait_for_unit("grafana.service") 83 sqlite.wait_for_open_port(3000) 84 sqlite.succeed( 85 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep testadmin\@localhost" 86 ) 87 sqlite.shutdown() 88 89 with subtest("Successful API query as admin user with postgresql db"): 90 postgresql.wait_for_unit("grafana.service") 91 postgresql.wait_for_unit("postgresql.service") 92 postgresql.wait_for_open_port(3000) 93 postgresql.wait_for_open_port(5432) 94 postgresql.succeed( 95 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep testadmin\@localhost" 96 ) 97 postgresql.shutdown() 98 99 with subtest("Successful API query as admin user with mysql db"): 100 mysql.wait_for_unit("grafana.service") 101 mysql.wait_for_unit("mysql.service") 102 mysql.wait_for_open_port(3000) 103 mysql.wait_for_open_port(3306) 104 mysql.succeed( 105 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep testadmin\@localhost" 106 ) 107 mysql.shutdown() 108 ''; 109})