@@ -21,6 +21,7 @@ import (
21
21
"context"
22
22
"fmt"
23
23
"os"
24
+ "os/exec"
24
25
"path/filepath"
25
26
"strconv"
26
27
"strings"
@@ -481,15 +482,38 @@ func TestRunBlkioWeightCgroupV2(t *testing.T) {
481
482
482
483
func TestRunBlkioSettingCgroupV2 (t * testing.T ) {
483
484
testCase := nerdtest .Setup ()
485
+ testCase .Require = nerdtest .Rootful
486
+
487
+ // Create dummy device path
488
+ dummyDev := "/dev/dummy-zero"
489
+
490
+ testCase .Setup = func (data test.Data , helpers test.Helpers ) {
491
+ // Create dummy device
492
+ helperCmd := exec .Command ("mknod" , dummyDev , "c" , "1" , "5" )
493
+ if out , err := helperCmd .CombinedOutput (); err != nil {
494
+ t .Fatalf ("cannot create %q: %q: %v" , dummyDev , string (out ), err )
495
+ }
496
+ }
497
+
498
+ testCase .Cleanup = func (data test.Data , helpers test.Helpers ) {
499
+ // Clean up the dummy device
500
+ if err := exec .Command ("rm" , "-f" , dummyDev ).Run (); err != nil {
501
+ t .Logf ("failed to remove device %s: %v" , dummyDev , err )
502
+ }
503
+ }
484
504
485
505
testCase .SubTests = []* test.Case {
486
506
{
487
507
Description : "blkio-weight" ,
508
+ Require : nerdtest .CGroupV2 ,
488
509
Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
489
510
return helpers .Command ("run" , "-d" , "--name" , data .Identifier (),
490
511
"--blkio-weight" , "150" ,
491
512
testutil .AlpineImage , "sleep" , "infinity" )
492
513
},
514
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
515
+ helpers .Anyhow ("rm" , "-f" , data .Identifier ())
516
+ },
493
517
Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
494
518
return & test.Expected {
495
519
ExitCode : 0 ,
@@ -506,9 +530,12 @@ func TestRunBlkioSettingCgroupV2(t *testing.T) {
506
530
Require : nerdtest .CGroupV2 ,
507
531
Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
508
532
return helpers .Command ("run" , "-d" , "--name" , data .Identifier (),
509
- "--blkio-weight-device" , "/dev/sda :100" ,
533
+ "--blkio-weight-device" , dummyDev + " :100" ,
510
534
testutil .AlpineImage , "sleep" , "infinity" )
511
535
},
536
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
537
+ helpers .Anyhow ("rm" , "-f" , data .Identifier ())
538
+ },
512
539
Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
513
540
return & test.Expected {
514
541
ExitCode : 0 ,
@@ -523,12 +550,21 @@ func TestRunBlkioSettingCgroupV2(t *testing.T) {
523
550
},
524
551
{
525
552
Description : "device-read-bps" ,
526
- Require : nerdtest .CGroupV2 ,
553
+ Require : require .All (
554
+ nerdtest .CGroupV2 ,
555
+ // Docker cli (v26.1.3) available in github runners has a bug where some of the blkio options
556
+ // do not work https://github.com/docker/cli/issues/5321. The fix has been merged to the latest releases
557
+ // but not currently available in the v26 release.
558
+ require .Not (nerdtest .Docker ),
559
+ ),
527
560
Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
528
561
return helpers .Command ("run" , "-d" , "--name" , data .Identifier (),
529
- "--device-read-bps" , "/dev/sda :1048576" ,
562
+ "--device-read-bps" , dummyDev + " :1048576" ,
530
563
testutil .AlpineImage , "sleep" , "infinity" )
531
564
},
565
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
566
+ helpers .Anyhow ("rm" , "-f" , data .Identifier ())
567
+ },
532
568
Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
533
569
return & test.Expected {
534
570
ExitCode : 0 ,
@@ -543,12 +579,21 @@ func TestRunBlkioSettingCgroupV2(t *testing.T) {
543
579
},
544
580
{
545
581
Description : "device-write-bps" ,
546
- Require : nerdtest .CGroupV2 ,
582
+ Require : require .All (
583
+ nerdtest .CGroupV2 ,
584
+ // Docker cli (v26.1.3) available in github runners has a bug where some of the blkio options
585
+ // do not work https://github.com/docker/cli/issues/5321. The fix has been merged to the latest releases
586
+ // but not currently available in the v26 release.
587
+ require .Not (nerdtest .Docker ),
588
+ ),
547
589
Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
548
590
return helpers .Command ("run" , "-d" , "--name" , data .Identifier (),
549
- "--device-write-bps" , "/dev/sda :2097152" ,
591
+ "--device-write-bps" , dummyDev + " :2097152" ,
550
592
testutil .AlpineImage , "sleep" , "infinity" )
551
593
},
594
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
595
+ helpers .Anyhow ("rm" , "-f" , data .Identifier ())
596
+ },
552
597
Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
553
598
return & test.Expected {
554
599
ExitCode : 0 ,
@@ -563,12 +608,21 @@ func TestRunBlkioSettingCgroupV2(t *testing.T) {
563
608
},
564
609
{
565
610
Description : "device-read-iops" ,
566
- Require : nerdtest .CGroupV2 ,
611
+ Require : require .All (
612
+ nerdtest .CGroupV2 ,
613
+ // Docker cli (v26.1.3) available in github runners has a bug where some of the blkio options
614
+ // do not work https://github.com/docker/cli/issues/5321. The fix has been merged to the latest releases
615
+ // but not currently available in the v26 release.
616
+ require .Not (nerdtest .Docker ),
617
+ ),
567
618
Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
568
619
return helpers .Command ("run" , "-d" , "--name" , data .Identifier (),
569
- "--device-read-iops" , "/dev/sda :1000" ,
620
+ "--device-read-iops" , dummyDev + " :1000" ,
570
621
testutil .AlpineImage , "sleep" , "infinity" )
571
622
},
623
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
624
+ helpers .Anyhow ("rm" , "-f" , data .Identifier ())
625
+ },
572
626
Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
573
627
return & test.Expected {
574
628
ExitCode : 0 ,
@@ -583,12 +637,21 @@ func TestRunBlkioSettingCgroupV2(t *testing.T) {
583
637
},
584
638
{
585
639
Description : "device-write-iops" ,
586
- Require : nerdtest .CGroupV2 ,
640
+ Require : require .All (
641
+ nerdtest .CGroupV2 ,
642
+ // Docker cli (v26.1.3) available in github runners has a bug where some of the blkio options
643
+ // do not work https://github.com/docker/cli/issues/5321. The fix has been merged to the latest releases
644
+ // but not currently available in the v26 release.
645
+ require .Not (nerdtest .Docker ),
646
+ ),
587
647
Command : func (data test.Data , helpers test.Helpers ) test.TestableCommand {
588
648
return helpers .Command ("run" , "-d" , "--name" , data .Identifier (),
589
- "--device-write-iops" , "/dev/sda :2000" ,
649
+ "--device-write-iops" , dummyDev + " :2000" ,
590
650
testutil .AlpineImage , "sleep" , "infinity" )
591
651
},
652
+ Cleanup : func (data test.Data , helpers test.Helpers ) {
653
+ helpers .Anyhow ("rm" , "-f" , data .Identifier ())
654
+ },
592
655
Expected : func (data test.Data , helpers test.Helpers ) * test.Expected {
593
656
return & test.Expected {
594
657
ExitCode : 0 ,
0 commit comments