| 
									
										
										
										
											2019-02-04 23:58:20 +01:00
										 |  |  | { system ? builtins.currentSystem | 
					
						
							|  |  |  | , config ? { } | 
					
						
							|  |  |  | , pkgs ? import ../../.. { inherit system config; } | 
					
						
							|  |  |  | }: | 
					
						
							| 
									
										
										
										
											2018-05-18 16:49:32 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-27 22:09:13 +01:00
										 |  |  | with import ../../lib/testing-python.nix { inherit system pkgs; }; | 
					
						
							|  |  |  | with pkgs.lib; | 
					
						
							| 
									
										
										
										
											2019-02-04 23:58:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-27 22:09:13 +01:00
										 |  |  | let | 
					
						
							| 
									
										
										
										
											2019-02-04 23:58:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-27 22:09:13 +01:00
										 |  |  |   inherit (import ./common.nix { inherit system; }) baseConfig; | 
					
						
							| 
									
										
										
										
											2019-02-04 23:58:20 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   hydraPkgs = { | 
					
						
							| 
									
										
										
										
											2020-09-27 23:27:51 +02:00
										 |  |  |     inherit (pkgs) hydra-unstable; | 
					
						
							| 
									
										
										
										
											2019-02-04 23:58:20 +01:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-27 22:09:13 +01:00
										 |  |  |   makeHydraTest = with pkgs.lib; name: package: makeTest { | 
					
						
							|  |  |  |     name = "hydra-${name}"; | 
					
						
							|  |  |  |     meta = with pkgs.stdenv.lib.maintainers; { | 
					
						
							|  |  |  |       maintainers = [ pstn lewo ma27 ]; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     machine = { pkgs, lib, ... }: { | 
					
						
							|  |  |  |       imports = [ baseConfig ]; | 
					
						
							|  |  |  |       services.hydra = { inherit package; }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     testScript = ''
 | 
					
						
							|  |  |  |       # let the system boot up | 
					
						
							|  |  |  |       machine.wait_for_unit("multi-user.target") | 
					
						
							|  |  |  |       # test whether the database is running | 
					
						
							|  |  |  |       machine.wait_for_unit("postgresql.service") | 
					
						
							|  |  |  |       # test whether the actual hydra daemons are running | 
					
						
							|  |  |  |       machine.wait_for_unit("hydra-init.service") | 
					
						
							|  |  |  |       machine.require_unit_state("hydra-queue-runner.service") | 
					
						
							|  |  |  |       machine.require_unit_state("hydra-evaluator.service") | 
					
						
							|  |  |  |       machine.require_unit_state("hydra-notify.service") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       machine.succeed("hydra-create-user admin --role admin --password admin") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # create a project with a trivial job | 
					
						
							|  |  |  |       machine.wait_for_open_port(3000) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # make sure the build as been successfully built | 
					
						
							|  |  |  |       machine.succeed("create-trivial-project.sh") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       machine.wait_until_succeeds( | 
					
						
							|  |  |  |           'curl -L -s http://localhost:3000/build/1 -H "Accept: application/json" |  jq .buildstatus | xargs test 0 -eq' | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       machine.wait_until_succeeds( | 
					
						
							|  |  |  |           'journalctl -eu hydra-notify.service -o cat | grep -q "sending mail notification to hydra@localhost"' | 
					
						
							|  |  |  |       ) | 
					
						
							|  |  |  |     '';
 | 
					
						
							|  |  |  |   }; | 
					
						
							| 
									
										
										
										
											2019-02-04 23:58:20 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | in | 
					
						
							| 
									
										
										
										
											2020-03-27 22:09:13 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | mapAttrs makeHydraTest hydraPkgs |