47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
		
		
			
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
|   | import ./make-test-python.nix ({ pkgs, latestKernel ? false, ... }: | ||
|  | 
 | ||
|  | { | ||
|  |   name = "systemd-analyze"; | ||
|  |   meta = with pkgs.stdenv.lib.maintainers; { | ||
|  |     maintainers = [ raskin ]; | ||
|  |   }; | ||
|  | 
 | ||
|  |   machine = | ||
|  |     { pkgs, lib, ... }: | ||
|  |     { boot.kernelPackages = lib.mkIf latestKernel pkgs.linuxPackages_latest; | ||
|  |       sound.enable = true; # needed for the factl test, /dev/snd/* exists without them but udev doesn't care then | ||
|  |     }; | ||
|  | 
 | ||
|  |   testScript = ''
 | ||
|  |     machine.wait_for_unit("multi-user.target") | ||
|  | 
 | ||
|  |     # We create a special output directory to copy it as a whole | ||
|  |     with subtest("Prepare output dir"): | ||
|  |         machine.succeed("mkdir systemd-analyze") | ||
|  | 
 | ||
|  | 
 | ||
|  |     # Save the output into a file with given name inside the common | ||
|  |     # output directory | ||
|  |     def run_systemd_analyze(args, name): | ||
|  |         tgt_dir = "systemd-analyze" | ||
|  |         machine.succeed( | ||
|  |             "systemd-analyze {} > {}/{} 2> {}/{}.err".format( | ||
|  |                 " ".join(args), tgt_dir, name, tgt_dir, name | ||
|  |             ) | ||
|  |         ) | ||
|  | 
 | ||
|  | 
 | ||
|  |     with subtest("Print statistics"): | ||
|  |         run_systemd_analyze(["blame"], "blame.txt") | ||
|  |         run_systemd_analyze(["critical-chain"], "critical-chain.txt") | ||
|  |         run_systemd_analyze(["dot"], "dependencies.dot") | ||
|  |         run_systemd_analyze(["plot"], "systemd-analyze.svg") | ||
|  | 
 | ||
|  |     # We copy the main graph into the $out (toplevel), and we also copy | ||
|  |     # the entire output directory with additional data | ||
|  |     with subtest("Copying the resulting data into $out"): | ||
|  |         machine.copy_from_vm("systemd-analyze/", "") | ||
|  |         machine.copy_from_vm("systemd-analyze/systemd-analyze.svg", "") | ||
|  |   '';
 | ||
|  | }) |