| 
									
										
										
										
											2018-11-11 17:41:11 +09:00
										 |  |  | { system ? builtins.currentSystem, | 
					
						
							|  |  |  |   config ? {}, | 
					
						
							|  |  |  |   pkgs ? import ../.. { inherit system config; } | 
					
						
							|  |  |  | }: | 
					
						
							| 
									
										
										
										
											2017-11-14 02:56:03 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-11-11 17:41:11 +09:00
										 |  |  | with import ../lib/testing.nix { inherit system pkgs; }; | 
					
						
							| 
									
										
										
										
											2017-11-14 02:56:03 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   makeTest = import ./make-test.nix; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   makeZfsTest = name: | 
					
						
							|  |  |  |     { kernelPackage ? pkgs.linuxPackages_latest | 
					
						
							|  |  |  |     , enableUnstable ? false | 
					
						
							|  |  |  |     , extraTest ? "" | 
					
						
							|  |  |  |     }: | 
					
						
							|  |  |  |     makeTest { | 
					
						
							|  |  |  |       name = "zfs-" + name; | 
					
						
							|  |  |  |       meta = with pkgs.stdenv.lib.maintainers; { | 
					
						
							|  |  |  |         maintainers = [ adisbladis ]; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-20 20:56:59 +00:00
										 |  |  |       machine = { pkgs, ... }: | 
					
						
							| 
									
										
										
										
											2017-11-14 02:56:03 +08:00
										 |  |  |         { | 
					
						
							|  |  |  |           virtualisation.emptyDiskImages = [ 4096 ]; | 
					
						
							|  |  |  |           networking.hostId = "deadbeef"; | 
					
						
							|  |  |  |           boot.kernelPackages = kernelPackage; | 
					
						
							|  |  |  |           boot.supportedFilesystems = [ "zfs" ]; | 
					
						
							|  |  |  |           boot.zfs.enableUnstable = enableUnstable; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           environment.systemPackages = with pkgs; [ | 
					
						
							|  |  |  |             parted | 
					
						
							|  |  |  |           ]; | 
					
						
							|  |  |  |         }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       testScript = ''
 | 
					
						
							|  |  |  |         $machine->succeed("modprobe zfs"); | 
					
						
							|  |  |  |         $machine->succeed("zpool status"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $machine->succeed("ls /dev"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $machine->succeed( | 
					
						
							|  |  |  |           "mkdir /tmp/mnt", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           "udevadm settle", | 
					
						
							|  |  |  |           "parted --script /dev/vdb mklabel msdos", | 
					
						
							|  |  |  |           "parted --script /dev/vdb -- mkpart primary 1024M -1s", | 
					
						
							|  |  |  |           "udevadm settle", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           "zpool create rpool /dev/vdb1", | 
					
						
							|  |  |  |           "zfs create -o mountpoint=legacy rpool/root", | 
					
						
							|  |  |  |           "mount -t zfs rpool/root /tmp/mnt", | 
					
						
							|  |  |  |           "udevadm settle", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           "umount /tmp/mnt", | 
					
						
							|  |  |  |           "zpool destroy rpool", | 
					
						
							|  |  |  |           "udevadm settle" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       '' + extraTest;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   stable = makeZfsTest "stable" { }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   unstable = makeZfsTest "unstable" { | 
					
						
							|  |  |  |     enableUnstable = true; | 
					
						
							|  |  |  |     extraTest = ''
 | 
					
						
							|  |  |  |       $machine->succeed( | 
					
						
							|  |  |  |         "echo password | zpool create -o altroot='/tmp/mnt' -O encryption=aes-256-gcm -O keyformat=passphrase rpool /dev/vdb1", | 
					
						
							|  |  |  |         "zfs create -o mountpoint=legacy rpool/root", | 
					
						
							|  |  |  |         "mount -t zfs rpool/root /tmp/mnt", | 
					
						
							|  |  |  |         "udevadm settle", | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         "umount /tmp/mnt", | 
					
						
							|  |  |  |         "zpool destroy rpool", | 
					
						
							|  |  |  |         "udevadm settle" | 
					
						
							|  |  |  |       ); | 
					
						
							|  |  |  |     '';
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   installer = (import ./installer.nix { }).zfsroot; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |