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", "")
							 | 
						||
| 
								 | 
							
								  '';
							 | 
						||
| 
								 | 
							
								})
							 |