92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| import ./make-test.nix ({ lib, pkgs, ... }:
 | |
| 
 | |
| let
 | |
|   inherit (lib) mkMerge nameValuePair maintainers;
 | |
| 
 | |
|   baseGrafanaConf = {
 | |
|     services.grafana = {
 | |
|       enable = true;
 | |
|       addr = "localhost";
 | |
|       analytics.reporting.enable = false;
 | |
|       domain = "localhost";
 | |
|       security = {
 | |
|         adminUser = "testadmin";
 | |
|         adminPassword = "snakeoilpwd";
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   extraNodeConfs = {
 | |
|     postgresql = {
 | |
|       services.grafana.database = {
 | |
|         host = "127.0.0.1:5432";
 | |
|         user = "grafana";
 | |
|       };
 | |
|       services.postgresql = {
 | |
|         enable = true;
 | |
|         ensureDatabases = [ "grafana" ];
 | |
|         ensureUsers = [{
 | |
|           name = "grafana";
 | |
|           ensurePermissions."DATABASE grafana" = "ALL PRIVILEGES";
 | |
|         }];
 | |
|       };
 | |
|       systemd.services.grafana.after = [ "postgresql.service" ];
 | |
|     };
 | |
| 
 | |
|     mysql = {
 | |
|       services.grafana.database.user = "grafana";
 | |
|       services.mysql = {
 | |
|         enable = true;
 | |
|         ensureDatabases = [ "grafana" ];
 | |
|         ensureUsers = [{
 | |
|           name = "grafana";
 | |
|           ensurePermissions."grafana.*" = "ALL PRIVILEGES";
 | |
|         }];
 | |
|         package = pkgs.mariadb;
 | |
|       };
 | |
|       systemd.services.grafana.after = [ "mysql.service" ];
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   nodes = builtins.listToAttrs (map (dbName:
 | |
|     nameValuePair dbName (mkMerge [
 | |
|     baseGrafanaConf
 | |
|     (extraNodeConfs.${dbName} or {})
 | |
|   ])) [ "sqlite" "postgresql" "mysql" ]);
 | |
| 
 | |
| in {
 | |
|   name = "grafana";
 | |
| 
 | |
|   meta = with maintainers; {
 | |
|     maintainers = [ willibutz ];
 | |
|   };
 | |
| 
 | |
|   inherit nodes;
 | |
| 
 | |
|   testScript = ''
 | |
|     startAll();
 | |
| 
 | |
|     subtest "Grafana sqlite", sub {
 | |
|       $sqlite->waitForUnit("grafana.service");
 | |
|       $sqlite->waitForOpenPort(3000);
 | |
|       $sqlite->succeed("curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost");
 | |
|     };
 | |
| 
 | |
|     subtest "Grafana postgresql", sub {
 | |
|       $postgresql->waitForUnit("grafana.service");
 | |
|       $postgresql->waitForUnit("postgresql.service");
 | |
|       $postgresql->waitForOpenPort(3000);
 | |
|       $postgresql->waitForOpenPort(5432);
 | |
|       $postgresql->succeed("curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost");
 | |
|     };
 | |
| 
 | |
|     subtest "Grafana mysql", sub {
 | |
|       $mysql->waitForUnit("grafana.service");
 | |
|       $mysql->waitForUnit("mysql.service");
 | |
|       $mysql->waitForOpenPort(3000);
 | |
|       $mysql->waitForOpenPort(3306);
 | |
|       $mysql->succeed("curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost");
 | |
|     };
 | |
|   '';
 | |
| })
 | 
