github.com/opencontainers/runc@v1.2.0-rc.1.0.20240520010911-492dc558cdd6/libcontainer/system/kernelparam/lookup_test.go (about) 1 package kernelparam 2 3 import ( 4 "testing" 5 "testing/fstest" 6 ) 7 8 func TestLookupKernelBootParameters(t *testing.T) { 9 for _, test := range []struct { 10 cmdline string 11 lookupParameters []string 12 expectedKernelParameters map[string]string 13 }{ 14 { 15 cmdline: "root=/dev/sda1 ro console=ttyS0 console=tty0", 16 lookupParameters: []string{"root"}, 17 expectedKernelParameters: map[string]string{ 18 "root": "/dev/sda1", 19 }, 20 }, 21 { 22 cmdline: "ro runc.kernel_parameter=a_value console=ttyS0 console=tty0", 23 lookupParameters: []string{"runc.kernel_parameter"}, 24 expectedKernelParameters: map[string]string{ 25 "runc.kernel_parameter": "a_value", 26 }, 27 }, 28 { 29 cmdline: "ro runc.kernel_parameter_a=value_a runc.kernel_parameter_b=value_a:value_b", 30 lookupParameters: []string{ 31 "runc.kernel_parameter_a", 32 "runc.kernel_parameter_b", 33 }, 34 expectedKernelParameters: map[string]string{ 35 "runc.kernel_parameter_a": "value_a", 36 "runc.kernel_parameter_b": "value_a:value_b", 37 }, 38 }, 39 { 40 cmdline: "root=/dev/sda1 ro console=ttyS0 console=tty0", 41 lookupParameters: []string{"runc.kernel_parameter_a"}, 42 expectedKernelParameters: map[string]string{}, 43 }, 44 } { 45 params, err := LookupKernelBootParameters(fstest.MapFS{ 46 "proc/cmdline": &fstest.MapFile{Data: []byte(test.cmdline + "\n")}, 47 }, test.lookupParameters...) 48 if err != nil { 49 t.Fatalf("unexpected error: %s", err) 50 } 51 if len(params) != len(test.expectedKernelParameters) { 52 t.Fatalf("expected %d parameters, got %d", len(test.expectedKernelParameters), len(params)) 53 } 54 for k, v := range test.expectedKernelParameters { 55 if params[k] != v { 56 t.Fatalf("expected parameter %s to be %s, got %s", k, v, params[k]) 57 } 58 } 59 } 60 }