at 23.05-pre 3.4 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 settings = { 10 analytics.reporting_enabled = false; 11 12 server = { 13 http_addr = "localhost"; 14 domain = "localhost"; 15 }; 16 17 security = { 18 admin_user = "testadmin"; 19 admin_password = "snakeoilpwd"; 20 }; 21 }; 22 }; 23 }; 24 25 extraNodeConfs = { 26 sqlite = {}; 27 28 declarativePlugins = { 29 services.grafana.declarativePlugins = [ pkgs.grafanaPlugins.grafana-clock-panel ]; 30 }; 31 32 postgresql = { 33 services.grafana.settings.database = { 34 host = "127.0.0.1:5432"; 35 user = "grafana"; 36 }; 37 services.postgresql = { 38 enable = true; 39 ensureDatabases = [ "grafana" ]; 40 ensureUsers = [{ 41 name = "grafana"; 42 ensurePermissions."DATABASE grafana" = "ALL PRIVILEGES"; 43 }]; 44 }; 45 systemd.services.grafana.after = [ "postgresql.service" ]; 46 }; 47 48 mysql = { 49 services.grafana.settings.database.user = "grafana"; 50 services.mysql = { 51 enable = true; 52 ensureDatabases = [ "grafana" ]; 53 ensureUsers = [{ 54 name = "grafana"; 55 ensurePermissions."grafana.*" = "ALL PRIVILEGES"; 56 }]; 57 package = pkgs.mariadb; 58 }; 59 systemd.services.grafana.after = [ "mysql.service" ]; 60 }; 61 }; 62 63 nodes = builtins.mapAttrs (_: val: mkMerge [ val baseGrafanaConf ]) extraNodeConfs; 64in { 65 name = "grafana-basic"; 66 67 meta = with maintainers; { 68 maintainers = [ willibutz ]; 69 }; 70 71 inherit nodes; 72 73 testScript = '' 74 start_all() 75 76 with subtest("Declarative plugins installed"): 77 declarativePlugins.wait_for_unit("grafana.service") 78 declarativePlugins.wait_for_open_port(3000) 79 declarativePlugins.succeed( 80 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/plugins | grep grafana-clock-panel" 81 ) 82 declarativePlugins.shutdown() 83 84 with subtest("Successful API query as admin user with sqlite db"): 85 sqlite.wait_for_unit("grafana.service") 86 sqlite.wait_for_open_port(3000) 87 print(sqlite.succeed( 88 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users -i" 89 )) 90 sqlite.succeed( 91 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep admin\@localhost" 92 ) 93 sqlite.shutdown() 94 95 with subtest("Successful API query as admin user with postgresql db"): 96 postgresql.wait_for_unit("grafana.service") 97 postgresql.wait_for_unit("postgresql.service") 98 postgresql.wait_for_open_port(3000) 99 postgresql.wait_for_open_port(5432) 100 postgresql.succeed( 101 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep admin\@localhost" 102 ) 103 postgresql.shutdown() 104 105 with subtest("Successful API query as admin user with mysql db"): 106 mysql.wait_for_unit("grafana.service") 107 mysql.wait_for_unit("mysql.service") 108 mysql.wait_for_open_port(3000) 109 mysql.wait_for_open_port(3306) 110 mysql.succeed( 111 "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep admin\@localhost" 112 ) 113 mysql.shutdown() 114 ''; 115})