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  }