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

     1  // +build linux
     2  
     3  package fs
     4  
     5  import (
     6  	"io/ioutil"
     7  	"math"
     8  	"os"
     9  	"path/filepath"
    10  	"strconv"
    11  	"testing"
    12  )
    13  
    14  const (
    15  	cgroupFile  = "cgroup.file"
    16  	floatValue  = 2048.0
    17  	floatString = "2048"
    18  )
    19  
    20  func TestGetCgroupParamsInt(t *testing.T) {
    21  	// Setup tempdir.
    22  	tempDir, err := ioutil.TempDir("", "cgroup_utils_test")
    23  	if err != nil {
    24  		t.Fatal(err)
    25  	}
    26  	defer os.RemoveAll(tempDir)
    27  	tempFile := filepath.Join(tempDir, cgroupFile)
    28  
    29  	// Success.
    30  	err = ioutil.WriteFile(tempFile, []byte(floatString), 0755)
    31  	if err != nil {
    32  		t.Fatal(err)
    33  	}
    34  	value, err := getCgroupParamUint(tempDir, cgroupFile)
    35  	if err != nil {
    36  		t.Fatal(err)
    37  	} else if value != floatValue {
    38  		t.Fatalf("Expected %d to equal %f", value, floatValue)
    39  	}
    40  
    41  	// Success with new line.
    42  	err = ioutil.WriteFile(tempFile, []byte(floatString+"\n"), 0755)
    43  	if err != nil {
    44  		t.Fatal(err)
    45  	}
    46  	value, err = getCgroupParamUint(tempDir, cgroupFile)
    47  	if err != nil {
    48  		t.Fatal(err)
    49  	} else if value != floatValue {
    50  		t.Fatalf("Expected %d to equal %f", value, floatValue)
    51  	}
    52  
    53  	// Success with negative values
    54  	err = ioutil.WriteFile(tempFile, []byte("-12345"), 0755)
    55  	if err != nil {
    56  		t.Fatal(err)
    57  	}
    58  	value, err = getCgroupParamUint(tempDir, cgroupFile)
    59  	if err != nil {
    60  		t.Fatal(err)
    61  	} else if value != 0 {
    62  		t.Fatalf("Expected %d to equal %d", value, 0)
    63  	}
    64  
    65  	// Success with negative values lesser than min int64
    66  	s := strconv.FormatFloat(math.MinInt64, 'f', -1, 64)
    67  	err = ioutil.WriteFile(tempFile, []byte(s), 0755)
    68  	if err != nil {
    69  		t.Fatal(err)
    70  	}
    71  	value, err = getCgroupParamUint(tempDir, cgroupFile)
    72  	if err != nil {
    73  		t.Fatal(err)
    74  	} else if value != 0 {
    75  		t.Fatalf("Expected %d to equal %d", value, 0)
    76  	}
    77  
    78  	// Not a float.
    79  	err = ioutil.WriteFile(tempFile, []byte("not-a-float"), 0755)
    80  	if err != nil {
    81  		t.Fatal(err)
    82  	}
    83  	_, err = getCgroupParamUint(tempDir, cgroupFile)
    84  	if err == nil {
    85  		t.Fatal("Expecting error, got none")
    86  	}
    87  
    88  	// Unknown file.
    89  	err = os.Remove(tempFile)
    90  	if err != nil {
    91  		t.Fatal(err)
    92  	}
    93  	_, err = getCgroupParamUint(tempDir, cgroupFile)
    94  	if err == nil {
    95  		t.Fatal("Expecting error, got none")
    96  	}
    97  }