@@ -1554,7 +1554,7 @@ mod tests {
15541554 use net_util:: MacAddr ;
15551555
15561556 impl Vmm {
1557- fn get_kernel_cmdline ( & self ) -> & str {
1557+ fn get_kernel_cmdline_str ( & self ) -> & str {
15581558 if let Some ( ref k) = self . kernel_config {
15591559 k. cmdline . as_str ( )
15601560 } else {
@@ -1568,6 +1568,22 @@ mod tests {
15681568 . unwrap ( )
15691569 . remove_address ( id) ;
15701570 }
1571+
1572+ fn default_kernel_config ( & mut self ) {
1573+ let kernel_file_temp =
1574+ NamedTempFile :: new ( ) . expect ( "Failed to create temporary kernel file." ) ;
1575+ let kernel_path = String :: from ( kernel_file_temp. path ( ) . to_path_buf ( ) . to_str ( ) . unwrap ( ) ) ;
1576+ let kernel_file = File :: open ( kernel_path) . unwrap ( ) ;
1577+
1578+ let mut cmdline = kernel_cmdline:: Cmdline :: new ( x86_64:: layout:: CMDLINE_MAX_SIZE ) ;
1579+ assert ! ( cmdline. insert_str( DEFAULT_KERNEL_CMDLINE ) . is_ok( ) ) ;
1580+ let kernel_cfg = KernelConfig {
1581+ cmdline,
1582+ kernel_file,
1583+ cmdline_addr : GuestAddress ( x86_64:: layout:: CMDLINE_START ) ,
1584+ } ;
1585+ self . configure_kernel ( kernel_cfg) ;
1586+ }
15711587 }
15721588
15731589 struct DummyEpollHandler {
@@ -2031,10 +2047,6 @@ mod tests {
20312047 fn test_attach_block_devices ( ) {
20322048 let mut vmm = create_vmm_object ( InstanceState :: Uninitialized ) ;
20332049 let block_file = NamedTempFile :: new ( ) . unwrap ( ) ;
2034- let kernel_file_temp =
2035- NamedTempFile :: new ( ) . expect ( "Failed to create temporary kernel file." ) ;
2036- let kernel_path = String :: from ( kernel_file_temp. path ( ) . to_path_buf ( ) . to_str ( ) . unwrap ( ) ) ;
2037- let kernel_file = File :: open ( kernel_path) . unwrap ( ) ;
20382050
20392051 // Use Case 1: Root Block Device is not specified through PARTUUID.
20402052 let root_block_device = BlockDeviceConfig {
@@ -2052,19 +2064,14 @@ mod tests {
20522064 } ;
20532065 assert ! ( vmm. init_guest_memory( ) . is_ok( ) ) ;
20542066 assert ! ( vmm. guest_memory. is_some( ) ) ;
2055- let mut cmdline = kernel_cmdline:: Cmdline :: new ( x86_64:: layout:: CMDLINE_MAX_SIZE ) ;
2056- assert ! ( cmdline. insert_str( DEFAULT_KERNEL_CMDLINE ) . is_ok( ) ) ;
2057- let kernel_cfg = KernelConfig {
2058- cmdline,
2059- kernel_file,
2060- cmdline_addr : GuestAddress ( x86_64:: layout:: CMDLINE_START ) ,
2061- } ;
2062- vmm. configure_kernel ( kernel_cfg) ;
2067+
2068+ vmm. default_kernel_config ( ) ;
2069+
20632070 let guest_mem = vmm. guest_memory . clone ( ) . unwrap ( ) ;
20642071 let mut device_manager =
20652072 MMIODeviceManager :: new ( guest_mem. clone ( ) , x86_64:: get_32bit_gap_start ( ) as u64 ) ;
20662073 assert ! ( vmm. attach_block_devices( & mut device_manager) . is_ok( ) ) ;
2067- assert ! ( vmm. get_kernel_cmdline ( ) . contains( "root=/dev/vda" ) ) ;
2074+ assert ! ( vmm. get_kernel_cmdline_str ( ) . contains( "root=/dev/vda" ) ) ;
20682075
20692076 // Use Case 2: Root Block Device is specified through PARTUUID.
20702077 let mut vmm = create_vmm_object ( InstanceState :: Uninitialized ) ;
@@ -2076,10 +2083,6 @@ mod tests {
20762083 is_read_only : false ,
20772084 rate_limiter : None ,
20782085 } ;
2079- let kernel_file_temp =
2080- NamedTempFile :: new ( ) . expect ( "Failed to create temporary kernel file." ) ;
2081- let kernel_path = String :: from ( kernel_file_temp. path ( ) . to_path_buf ( ) . to_str ( ) . unwrap ( ) ) ;
2082- let kernel_file = File :: open ( kernel_path) . unwrap ( ) ;
20832086
20842087 // Test that creating a new block device returns the correct output.
20852088 match vmm. put_block_device ( root_block_device. clone ( ) ) {
@@ -2088,20 +2091,15 @@ mod tests {
20882091 } ;
20892092 assert ! ( vmm. init_guest_memory( ) . is_ok( ) ) ;
20902093 assert ! ( vmm. guest_memory. is_some( ) ) ;
2091- let mut cmdline = kernel_cmdline:: Cmdline :: new ( x86_64:: layout:: CMDLINE_MAX_SIZE ) ;
2092- assert ! ( cmdline. insert_str( DEFAULT_KERNEL_CMDLINE ) . is_ok( ) ) ;
2093- let kernel_cfg = KernelConfig {
2094- cmdline,
2095- kernel_file,
2096- cmdline_addr : GuestAddress ( x86_64:: layout:: CMDLINE_START ) ,
2097- } ;
2098- vmm. configure_kernel ( kernel_cfg) ;
2094+
2095+ vmm. default_kernel_config ( ) ;
2096+
20992097 let guest_mem = vmm. guest_memory . clone ( ) . unwrap ( ) ;
21002098 let mut device_manager =
21012099 MMIODeviceManager :: new ( guest_mem. clone ( ) , x86_64:: get_32bit_gap_start ( ) as u64 ) ;
21022100 assert ! ( vmm. attach_block_devices( & mut device_manager) . is_ok( ) ) ;
21032101 assert ! (
2104- vmm. get_kernel_cmdline ( )
2102+ vmm. get_kernel_cmdline_str ( )
21052103 . contains( "root=PARTUUID=0eaa91a0-01" )
21062104 ) ;
21072105
@@ -2115,10 +2113,6 @@ mod tests {
21152113 is_read_only : false ,
21162114 rate_limiter : None ,
21172115 } ;
2118- let kernel_file_temp =
2119- NamedTempFile :: new ( ) . expect ( "Failed to create temporary kernel file." ) ;
2120- let kernel_path = String :: from ( kernel_file_temp. path ( ) . to_path_buf ( ) . to_str ( ) . unwrap ( ) ) ;
2121- let kernel_file = File :: open ( kernel_path) . unwrap ( ) ;
21222116
21232117 // Test that creating a new block device returns the correct output.
21242118 match vmm. put_block_device ( non_root_block_device. clone ( ) ) {
@@ -2127,21 +2121,16 @@ mod tests {
21272121 } ;
21282122 assert ! ( vmm. init_guest_memory( ) . is_ok( ) ) ;
21292123 assert ! ( vmm. guest_memory. is_some( ) ) ;
2130- let mut cmdline = kernel_cmdline:: Cmdline :: new ( x86_64:: layout:: CMDLINE_MAX_SIZE ) ;
2131- assert ! ( cmdline. insert_str( DEFAULT_KERNEL_CMDLINE ) . is_ok( ) ) ;
2132- let kernel_cfg = KernelConfig {
2133- cmdline,
2134- kernel_file,
2135- cmdline_addr : GuestAddress ( x86_64:: layout:: CMDLINE_START ) ,
2136- } ;
2137- vmm. configure_kernel ( kernel_cfg) ;
2124+
2125+ vmm. default_kernel_config ( ) ;
2126+
21382127 let guest_mem = vmm. guest_memory . clone ( ) . unwrap ( ) ;
21392128 let mut device_manager =
21402129 MMIODeviceManager :: new ( guest_mem. clone ( ) , x86_64:: get_32bit_gap_start ( ) as u64 ) ;
21412130 assert ! ( vmm. attach_block_devices( & mut device_manager) . is_ok( ) ) ;
21422131 // Test that kernel commandline does not contain either /dev/vda or PARTUUID.
2143- assert ! ( !vmm. get_kernel_cmdline ( ) . contains( "root=PARTUUID=" ) ) ;
2144- assert ! ( !vmm. get_kernel_cmdline ( ) . contains( "root=/dev/vda" ) ) ;
2132+ assert ! ( !vmm. get_kernel_cmdline_str ( ) . contains( "root=PARTUUID=" ) ) ;
2133+ assert ! ( !vmm. get_kernel_cmdline_str ( ) . contains( "root=/dev/vda" ) ) ;
21452134
21462135 // Test that the non root device is attached.
21472136 assert ! (
@@ -2186,11 +2175,10 @@ mod tests {
21862175 #[ test]
21872176 fn test_rescan ( ) {
21882177 let mut vmm = create_vmm_object ( InstanceState :: Uninitialized ) ;
2178+ vmm. default_kernel_config ( ) ;
2179+
21892180 let root_file = NamedTempFile :: new ( ) . unwrap ( ) ;
21902181 let scratch_file = NamedTempFile :: new ( ) . unwrap ( ) ;
2191- let kernel_file_temp = NamedTempFile :: new ( ) . unwrap ( ) ;
2192- let kernel_path = String :: from ( kernel_file_temp. path ( ) . to_path_buf ( ) . to_str ( ) . unwrap ( ) ) ;
2193- let kernel_file = File :: open ( kernel_path) . unwrap ( ) ;
21942182
21952183 let root_block_device = BlockDeviceConfig {
21962184 drive_id : String :: from ( "root" ) ,
@@ -2214,22 +2202,19 @@ mod tests {
22142202
22152203 assert ! ( vmm. init_guest_memory( ) . is_ok( ) ) ;
22162204 assert ! ( vmm. guest_memory. is_some( ) ) ;
2217- let mut cmdline = kernel_cmdline:: Cmdline :: new ( x86_64:: layout:: CMDLINE_MAX_SIZE ) ;
2218- assert ! ( cmdline. insert_str( DEFAULT_KERNEL_CMDLINE ) . is_ok( ) ) ;
2219- let kernel_cfg = KernelConfig {
2220- cmdline : cmdline. clone ( ) ,
2221- kernel_file : kernel_file,
2222- cmdline_addr : GuestAddress ( x86_64:: layout:: CMDLINE_START ) ,
2223- } ;
2224- vmm. configure_kernel ( kernel_cfg) ;
2205+
22252206 let guest_mem = vmm. guest_memory . clone ( ) . unwrap ( ) ;
22262207 let mut device_manager =
22272208 MMIODeviceManager :: new ( guest_mem. clone ( ) , x86_64:: get_32bit_gap_start ( ) as u64 ) ;
22282209
22292210 let dummy_box = Box :: new ( DummyDevice { dummy : 0 } ) ;
2211+ // use a dummy command line as it is not used in this test.
22302212 let _addr = device_manager
2231- . register_device ( dummy_box, & mut cmdline, Some ( String :: from ( "not_root" ) ) )
2232- . unwrap ( ) ;
2213+ . register_device (
2214+ dummy_box,
2215+ & mut kernel_cmdline:: Cmdline :: new ( x86_64:: layout:: CMDLINE_MAX_SIZE ) ,
2216+ Some ( String :: from ( "not_root" ) ) ,
2217+ ) . unwrap ( ) ;
22332218
22342219 vmm. mmio_device_manager = Some ( device_manager) ;
22352220
0 commit comments