| 
									
										
										
										
											2019-12-15 17:01:03 +01:00
										 |  |  | import ./make-test-python.nix ({ pkgs, ...}: { | 
					
						
							| 
									
										
										
										
											2018-06-08 22:30:24 +02:00
										 |  |  |   name = "haproxy"; | 
					
						
							|  |  |  |   nodes = { | 
					
						
							| 
									
										
										
										
											2018-07-20 20:56:59 +00:00
										 |  |  |     machine = { ... }: { | 
					
						
							| 
									
										
										
										
											2018-06-08 22:30:24 +02:00
										 |  |  |       imports = [ ../modules/profiles/minimal.nix ]; | 
					
						
							|  |  |  |       services.haproxy = { | 
					
						
							|  |  |  |         enable = true; | 
					
						
							|  |  |  |         config = ''
 | 
					
						
							|  |  |  |           defaults | 
					
						
							|  |  |  |             timeout connect 10s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           backend http_server | 
					
						
							|  |  |  |             mode http | 
					
						
							|  |  |  |             server httpd [::1]:8000 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           frontend http | 
					
						
							|  |  |  |             bind *:80 | 
					
						
							|  |  |  |             mode http | 
					
						
							| 
									
										
										
										
											2019-11-08 13:47:13 +08:00
										 |  |  |             option http-use-htx | 
					
						
							|  |  |  |             http-request use-service prometheus-exporter if { path /metrics } | 
					
						
							| 
									
										
										
										
											2018-06-08 22:30:24 +02:00
										 |  |  |             use_backend http_server | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |       services.httpd = { | 
					
						
							|  |  |  |         enable = true; | 
					
						
							| 
									
										
										
										
											2019-11-04 16:24:55 -05:00
										 |  |  |         virtualHosts.localhost = { | 
					
						
							|  |  |  |           documentRoot = pkgs.writeTextDir "index.txt" "We are all good!"; | 
					
						
							|  |  |  |           adminAddr = "notme@yourhost.local"; | 
					
						
							|  |  |  |           listen = [{ | 
					
						
							|  |  |  |             ip = "::1"; | 
					
						
							|  |  |  |             port = 8000; | 
					
						
							|  |  |  |           }]; | 
					
						
							|  |  |  |         }; | 
					
						
							| 
									
										
										
										
											2018-06-08 22:30:24 +02:00
										 |  |  |       }; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  |   testScript = ''
 | 
					
						
							| 
									
										
										
										
											2019-12-15 17:01:03 +01:00
										 |  |  |     start_all() | 
					
						
							|  |  |  |     machine.wait_for_unit("multi-user.target") | 
					
						
							|  |  |  |     machine.wait_for_unit("haproxy.service") | 
					
						
							|  |  |  |     machine.wait_for_unit("httpd.service") | 
					
						
							| 
									
										
										
										
											2020-09-15 15:38:02 -07:00
										 |  |  |     assert "We are all good!" in machine.succeed("curl -fk http://localhost:80/index.txt") | 
					
						
							| 
									
										
										
										
											2019-12-15 17:01:03 +01:00
										 |  |  |     assert "haproxy_process_pool_allocated_bytes" in machine.succeed( | 
					
						
							| 
									
										
										
										
											2020-09-15 15:38:02 -07:00
										 |  |  |         "curl -fk http://localhost:80/metrics" | 
					
						
							| 
									
										
										
										
											2019-12-15 17:01:03 +01:00
										 |  |  |     ) | 
					
						
							| 
									
										
										
										
											2020-05-20 09:29:27 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     with subtest("reload"): | 
					
						
							|  |  |  |         machine.succeed("systemctl reload haproxy") | 
					
						
							|  |  |  |         # wait some time to ensure the following request hits the reloaded haproxy | 
					
						
							|  |  |  |         machine.sleep(5) | 
					
						
							|  |  |  |         assert "We are all good!" in machine.succeed( | 
					
						
							| 
									
										
										
										
											2020-09-15 15:38:02 -07:00
										 |  |  |             "curl -fk http://localhost:80/index.txt" | 
					
						
							| 
									
										
										
										
											2020-05-20 09:29:27 +02:00
										 |  |  |         ) | 
					
						
							| 
									
										
										
										
											2018-06-08 22:30:24 +02:00
										 |  |  |   '';
 | 
					
						
							|  |  |  | }) |