| 
									
										
										
										
											2014-11-19 23:18:44 +01:00
										 |  |  | { system ? builtins.currentSystem }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | with import ../lib/testing.nix { inherit system; }; | 
					
						
							|  |  |  | with import ../lib/qemu-flags.nix; | 
					
						
							|  |  |  | with pkgs.lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   iso = | 
					
						
							|  |  |  |     (import ../lib/eval-config.nix { | 
					
						
							|  |  |  |       inherit system; | 
					
						
							|  |  |  |       modules = | 
					
						
							|  |  |  |         [ ../modules/installer/cd-dvd/installation-cd-minimal.nix | 
					
						
							|  |  |  |           ../modules/testing/test-instrumentation.nix | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |     }).config.system.build.isoImage; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   makeBootTest = name: machineConfig: | 
					
						
							|  |  |  |     makeTest { | 
					
						
							|  |  |  |       inherit iso; | 
					
						
							|  |  |  |       name = "boot-" + name; | 
					
						
							|  |  |  |       nodes = { }; | 
					
						
							|  |  |  |       testScript = | 
					
						
							|  |  |  |         ''
 | 
					
						
							|  |  |  |           my $machine = createMachine({ ${machineConfig}, qemuFlags => '-m 768' }); | 
					
						
							|  |  |  |           $machine->start; | 
					
						
							|  |  |  |           $machine->waitForUnit("multi-user.target"); | 
					
						
							|  |  |  |           $machine->shutdown; | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | in { | 
					
						
							| 
									
										
										
										
											2016-05-25 10:21:14 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-01 19:02:36 +01:00
										 |  |  |     biosCdrom = makeBootTest "bios-cdrom" ''
 | 
					
						
							| 
									
										
										
										
											2014-11-19 23:18:44 +01:00
										 |  |  |         cdrom => glob("${iso}/iso/*.iso") | 
					
						
							|  |  |  |       '';
 | 
					
						
							| 
									
										
										
										
											2016-05-25 10:21:14 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-01 19:02:36 +01:00
										 |  |  |     biosUsb = makeBootTest "bios-usb" ''
 | 
					
						
							| 
									
										
										
										
											2014-11-19 23:18:44 +01:00
										 |  |  |         usb => glob("${iso}/iso/*.iso") | 
					
						
							|  |  |  |       '';
 | 
					
						
							| 
									
										
										
										
											2016-05-25 10:21:14 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-01 19:02:36 +01:00
										 |  |  |     uefiCdrom = makeBootTest "uefi-cdrom" ''
 | 
					
						
							| 
									
										
										
										
											2014-11-19 23:18:44 +01:00
										 |  |  |         cdrom => glob("${iso}/iso/*.iso"), | 
					
						
							|  |  |  |         bios => '${pkgs.OVMF}/FV/OVMF.fd' | 
					
						
							|  |  |  |       '';
 | 
					
						
							| 
									
										
										
										
											2016-05-25 10:21:14 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-01 19:02:36 +01:00
										 |  |  |     uefiUsb = makeBootTest "uefi-usb" ''
 | 
					
						
							| 
									
										
										
										
											2014-11-19 23:18:44 +01:00
										 |  |  |         usb => glob("${iso}/iso/*.iso"), | 
					
						
							|  |  |  |         bios => '${pkgs.OVMF}/FV/OVMF.fd' | 
					
						
							|  |  |  |       '';
 | 
					
						
							| 
									
										
										
										
											2016-05-25 10:21:14 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-08 13:53:27 +00:00
										 |  |  |     netboot = let | 
					
						
							|  |  |  |       config = (import ../lib/eval-config.nix { | 
					
						
							|  |  |  |           inherit system; | 
					
						
							|  |  |  |           modules = | 
					
						
							|  |  |  |             [ ../modules/installer/netboot/netboot.nix | 
					
						
							|  |  |  |               ../modules/testing/test-instrumentation.nix | 
					
						
							|  |  |  |               { key = "serial"; } | 
					
						
							|  |  |  |             ]; | 
					
						
							|  |  |  |         }).config; | 
					
						
							|  |  |  |       ipxeScriptDir = pkgs.writeTextFile { | 
					
						
							|  |  |  |         name = "ipxeScriptDir"; | 
					
						
							|  |  |  |         text = ''
 | 
					
						
							|  |  |  |           #!ipxe | 
					
						
							|  |  |  |           dhcp | 
					
						
							|  |  |  |           kernel bzImage init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} console=ttyS0 | 
					
						
							|  |  |  |           initrd initrd | 
					
						
							|  |  |  |           boot | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |         destination = "/boot.ipxe"; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2016-05-03 22:05:11 +02:00
										 |  |  |       ipxeBootDir = pkgs.symlinkJoin { | 
					
						
							|  |  |  |         name = "ipxeBootDir"; | 
					
						
							|  |  |  |         paths = [ | 
					
						
							|  |  |  |           config.system.build.netbootRamdisk | 
					
						
							|  |  |  |           config.system.build.kernel | 
					
						
							|  |  |  |           ipxeScriptDir | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2016-04-08 13:53:27 +00:00
										 |  |  |     in | 
					
						
							|  |  |  |       makeTest { | 
					
						
							|  |  |  |         name = "boot-netboot"; | 
					
						
							|  |  |  |         nodes = { }; | 
					
						
							|  |  |  |         testScript = | 
					
						
							|  |  |  |           ''
 | 
					
						
							|  |  |  |             my $machine = createMachine({ qemuFlags => '-boot order=n -net nic,model=e1000 -net user,tftp=${ipxeBootDir}/,bootfile=boot.ipxe -m 2000M' }); | 
					
						
							|  |  |  |             $machine->start; | 
					
						
							|  |  |  |             $machine->waitForUnit("multi-user.target"); | 
					
						
							|  |  |  |             $machine->shutdown; | 
					
						
							|  |  |  |           '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2016-05-03 22:05:11 +02:00
										 |  |  | } |