github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/runc/libcontainer/cgroups/fs/stats_util_test.go (about)

     1  // +build linux
     2  
     3  package fs
     4  
     5  import (
     6  	"fmt"
     7  	"testing"
     8  
     9  	"github.com/Sirupsen/logrus"
    10  	"github.com/opencontainers/runc/libcontainer/cgroups"
    11  )
    12  
    13  func blkioStatEntryEquals(expected, actual []cgroups.BlkioStatEntry) error {
    14  	if len(expected) != len(actual) {
    15  		return fmt.Errorf("blkioStatEntries length do not match")
    16  	}
    17  	for i, expValue := range expected {
    18  		actValue := actual[i]
    19  		if expValue != actValue {
    20  			return fmt.Errorf("Expected blkio stat entry %v but found %v", expValue, actValue)
    21  		}
    22  	}
    23  	return nil
    24  }
    25  
    26  func expectBlkioStatsEquals(t *testing.T, expected, actual cgroups.BlkioStats) {
    27  	if err := blkioStatEntryEquals(expected.IoServiceBytesRecursive, actual.IoServiceBytesRecursive); err != nil {
    28  		logrus.Printf("blkio IoServiceBytesRecursive do not match - %s\n", err)
    29  		t.Fail()
    30  	}
    31  
    32  	if err := blkioStatEntryEquals(expected.IoServicedRecursive, actual.IoServicedRecursive); err != nil {
    33  		logrus.Printf("blkio IoServicedRecursive do not match - %s\n", err)
    34  		t.Fail()
    35  	}
    36  
    37  	if err := blkioStatEntryEquals(expected.IoQueuedRecursive, actual.IoQueuedRecursive); err != nil {
    38  		logrus.Printf("blkio IoQueuedRecursive do not match - %s\n", err)
    39  		t.Fail()
    40  	}
    41  
    42  	if err := blkioStatEntryEquals(expected.SectorsRecursive, actual.SectorsRecursive); err != nil {
    43  		logrus.Printf("blkio SectorsRecursive do not match - %s\n", err)
    44  		t.Fail()
    45  	}
    46  
    47  	if err := blkioStatEntryEquals(expected.IoServiceTimeRecursive, actual.IoServiceTimeRecursive); err != nil {
    48  		logrus.Printf("blkio IoServiceTimeRecursive do not match - %s\n", err)
    49  		t.Fail()
    50  	}
    51  
    52  	if err := blkioStatEntryEquals(expected.IoWaitTimeRecursive, actual.IoWaitTimeRecursive); err != nil {
    53  		logrus.Printf("blkio IoWaitTimeRecursive do not match - %s\n", err)
    54  		t.Fail()
    55  	}
    56  
    57  	if err := blkioStatEntryEquals(expected.IoMergedRecursive, actual.IoMergedRecursive); err != nil {
    58  		logrus.Printf("blkio IoMergedRecursive do not match - %v vs %v\n", expected.IoMergedRecursive, actual.IoMergedRecursive)
    59  		t.Fail()
    60  	}
    61  
    62  	if err := blkioStatEntryEquals(expected.IoTimeRecursive, actual.IoTimeRecursive); err != nil {
    63  		logrus.Printf("blkio IoTimeRecursive do not match - %s\n", err)
    64  		t.Fail()
    65  	}
    66  }
    67  
    68  func expectThrottlingDataEquals(t *testing.T, expected, actual cgroups.ThrottlingData) {
    69  	if expected != actual {
    70  		logrus.Printf("Expected throttling data %v but found %v\n", expected, actual)
    71  		t.Fail()
    72  	}
    73  }
    74  
    75  func expectHugetlbStatEquals(t *testing.T, expected, actual cgroups.HugetlbStats) {
    76  	if expected != actual {
    77  		logrus.Printf("Expected hugetlb stats %v but found %v\n", expected, actual)
    78  		t.Fail()
    79  	}
    80  }
    81  
    82  func expectMemoryStatEquals(t *testing.T, expected, actual cgroups.MemoryStats) {
    83  	expectMemoryDataEquals(t, expected.Usage, actual.Usage)
    84  	expectMemoryDataEquals(t, expected.SwapUsage, actual.SwapUsage)
    85  	expectMemoryDataEquals(t, expected.KernelUsage, actual.KernelUsage)
    86  
    87  	for key, expValue := range expected.Stats {
    88  		actValue, ok := actual.Stats[key]
    89  		if !ok {
    90  			logrus.Printf("Expected memory stat key %s not found\n", key)
    91  			t.Fail()
    92  		}
    93  		if expValue != actValue {
    94  			logrus.Printf("Expected memory stat value %d but found %d\n", expValue, actValue)
    95  			t.Fail()
    96  		}
    97  	}
    98  }
    99  
   100  func expectMemoryDataEquals(t *testing.T, expected, actual cgroups.MemoryData) {
   101  	if expected.Usage != actual.Usage {
   102  		logrus.Printf("Expected memory usage %d but found %d\n", expected.Usage, actual.Usage)
   103  		t.Fail()
   104  	}
   105  	if expected.MaxUsage != actual.MaxUsage {
   106  		logrus.Printf("Expected memory max usage %d but found %d\n", expected.MaxUsage, actual.MaxUsage)
   107  		t.Fail()
   108  	}
   109  	if expected.Failcnt != actual.Failcnt {
   110  		logrus.Printf("Expected memory failcnt %d but found %d\n", expected.Failcnt, actual.Failcnt)
   111  		t.Fail()
   112  	}
   113  	if expected.Limit != actual.Limit {
   114  		logrus.Printf("Expected memory limit %d but found %d\n", expected.Limit, actual.Limit)
   115  		t.Fail()
   116  	}
   117  }