@@ -221,7 +221,9 @@ func createTapDevice(ctx context.Context, tapName string) error {
221
221
}
222
222
223
223
func TestMultipleVMs_Isolated (t * testing.T ) {
224
- prepareIntegTest (t )
224
+ prepareIntegTest (t , func (cfg * Config ) {
225
+ cfg .JailerConfig .RuncBinaryPath = "/usr/local/bin/runc"
226
+ })
225
227
226
228
cases := []struct {
227
229
MaxContainers int32
@@ -276,7 +278,7 @@ func TestMultipleVMs_Isolated(t *testing.T) {
276
278
rootfsPath := defaultVMRootfsPath
277
279
278
280
fcClient := fccontrol .NewFirecrackerClient (pluginClient .Client ())
279
- _ , err = fcClient . CreateVM ( ctx , & proto.CreateVMRequest {
281
+ req := & proto.CreateVMRequest {
280
282
VMID : strconv .Itoa (vmID ),
281
283
MachineCfg : & proto.FirecrackerMachineConfiguration {
282
284
MemSizeMib : 512 ,
@@ -296,7 +298,13 @@ func TestMultipleVMs_Isolated(t *testing.T) {
296
298
},
297
299
ContainerCount : containerCount ,
298
300
JailerConfig : jailerConfig ,
299
- })
301
+ }
302
+
303
+ if jailerConfig != nil {
304
+ req .NetworkInterfaces = nil
305
+ }
306
+
307
+ _ , err = fcClient .CreateVM (ctx , req )
300
308
require .NoError (t , err , "failed to create vm" )
301
309
302
310
var containerWg sync.WaitGroup
@@ -306,18 +314,26 @@ func TestMultipleVMs_Isolated(t *testing.T) {
306
314
defer containerWg .Done ()
307
315
containerName := fmt .Sprintf ("container-%d-%d" , vmID , containerID )
308
316
snapshotName := fmt .Sprintf ("snapshot-%d-%d" , vmID , containerID )
317
+ processArgs := oci .WithProcessArgs ("/bin/sh" , "-c" , strings .Join ([]string {
318
+ fmt .Sprintf ("/bin/cat /sys/class/net/%s/address" , defaultVMNetDevName ),
319
+ "/usr/bin/readlink /proc/self/ns/mnt" ,
320
+ fmt .Sprintf ("/bin/sleep %d" , testTimeout / time .Second ),
321
+ }, " && " ))
322
+
323
+ if jailerConfig != nil {
324
+ // TODO: this if statement block can go away once we add netns
325
+ processArgs = oci .WithProcessArgs ("/bin/sh" , "-c" , strings .Join ([]string {
326
+ fmt .Sprintf ("/bin/sleep %d" , testTimeout / time .Second ),
327
+ }, " && " ))
328
+ }
309
329
310
330
// spawn a container that just prints the VM's eth0 mac address (which we have set uniquely per VM)
311
331
newContainer , err := client .NewContainer (ctx ,
312
332
containerName ,
313
333
containerd .WithSnapshotter (naiveSnapshotterName ),
314
334
containerd .WithNewSnapshot (snapshotName , image ),
315
335
containerd .WithNewSpec (
316
- oci .WithProcessArgs ("/bin/sh" , "-c" , strings .Join ([]string {
317
- fmt .Sprintf ("/bin/cat /sys/class/net/%s/address" , defaultVMNetDevName ),
318
- "/usr/bin/readlink /proc/self/ns/mnt" ,
319
- fmt .Sprintf ("/bin/sleep %d" , testTimeout / time .Second ),
320
- }, " && " )),
336
+ processArgs ,
321
337
oci .WithHostNamespace (specs .NetworkNamespace ),
322
338
firecrackeroci .WithVMID (strconv .Itoa (vmID )),
323
339
),
@@ -438,13 +454,21 @@ func TestMultipleVMs_Isolated(t *testing.T) {
438
454
}
439
455
440
456
stdoutLines := strings .Split (strings .TrimSpace (taskStdout .String ()), "\n " )
441
- require .Len (t , stdoutLines , 2 )
457
+ lines := 2
458
+ if jailerConfig != nil {
459
+ lines = 1
460
+ }
461
+ require .Len (t , stdoutLines , lines )
442
462
443
463
printedVMID := strings .TrimSpace (stdoutLines [0 ])
444
- require .Equal (t , vmIDtoMacAddr (uint (vmID )), printedVMID , "unexpected VMID output from container %q" , containerName )
464
+ // TODO: Remove this if statement once we can add a netns which
465
+ // will allow firecracker to have visibility of the tap devices.
466
+ if jailerConfig == nil {
467
+ require .Equal (t , vmIDtoMacAddr (uint (vmID )), printedVMID , "unexpected VMID output from container %q" , containerName )
445
468
446
- taskMntNS := strings .TrimSpace (stdoutLines [1 ])
447
- require .Equal (t , execMntNS , taskMntNS , "unexpected mnt NS output from container %q" , containerName )
469
+ taskMntNS := strings .TrimSpace (stdoutLines [1 ])
470
+ require .Equal (t , execMntNS , taskMntNS , "unexpected mnt NS output from container %q" , containerName )
471
+ }
448
472
449
473
case <- ctx .Done ():
450
474
require .Fail (t , "context cancelled" ,
@@ -572,7 +596,6 @@ func TestStubBlockDevices_Isolated(t *testing.T) {
572
596
},
573
597
},
574
598
ContainerCount : 5 ,
575
- JailerConfig : & proto.JailerConfig {},
576
599
})
577
600
require .NoError (t , err , "failed to create VM" )
578
601
@@ -700,7 +723,6 @@ func testCreateContainerWithSameName(t *testing.T, vmID string) {
700
723
IsRootDevice : true ,
701
724
},
702
725
ContainerCount : 2 ,
703
- JailerConfig : & proto.JailerConfig {},
704
726
})
705
727
require .NoError (t , err )
706
728
}
0 commit comments