98 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
import ./make-test-python.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 = ''
 | 
						|
    start_all()
 | 
						|
 | 
						|
    with subtest("Successful API query as admin user with sqlite db"):
 | 
						|
        sqlite.wait_for_unit("grafana.service")
 | 
						|
        sqlite.wait_for_open_port(3000)
 | 
						|
        sqlite.succeed(
 | 
						|
            "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost"
 | 
						|
        )
 | 
						|
        sqlite.shutdown()
 | 
						|
 | 
						|
    with subtest("Successful API query as admin user with postgresql db"):
 | 
						|
        postgresql.wait_for_unit("grafana.service")
 | 
						|
        postgresql.wait_for_unit("postgresql.service")
 | 
						|
        postgresql.wait_for_open_port(3000)
 | 
						|
        postgresql.wait_for_open_port(5432)
 | 
						|
        postgresql.succeed(
 | 
						|
            "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost"
 | 
						|
        )
 | 
						|
        postgresql.shutdown()
 | 
						|
 | 
						|
    with subtest("Successful API query as admin user with mysql db"):
 | 
						|
        mysql.wait_for_unit("grafana.service")
 | 
						|
        mysql.wait_for_unit("mysql.service")
 | 
						|
        mysql.wait_for_open_port(3000)
 | 
						|
        mysql.wait_for_open_port(3306)
 | 
						|
        mysql.succeed(
 | 
						|
            "curl -sSfN -u testadmin:snakeoilpwd http://127.0.0.1:3000/api/org/users | grep -q testadmin\@localhost"
 | 
						|
        )
 | 
						|
        mysql.shutdown()
 | 
						|
  '';
 | 
						|
})
 |