...

Source file src/github.com/opencontainers/runc/libcontainer/intelrdt/intelrdt_test.go

Documentation: github.com/opencontainers/runc/libcontainer/intelrdt

     1  package intelrdt
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"strings"
     7  	"testing"
     8  )
     9  
    10  func TestIntelRdtSetL3CacheSchema(t *testing.T) {
    11  	helper := NewIntelRdtTestUtil(t)
    12  
    13  	const (
    14  		l3CacheSchemaBefore = "L3:0=f;1=f0"
    15  		l3CacheSchemeAfter  = "L3:0=f0;1=f"
    16  	)
    17  
    18  	helper.writeFileContents(map[string]string{
    19  		"schemata": l3CacheSchemaBefore + "\n",
    20  	})
    21  
    22  	helper.config.IntelRdt.L3CacheSchema = l3CacheSchemeAfter
    23  	intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
    24  	if err := intelrdt.Set(helper.config); err != nil {
    25  		t.Fatal(err)
    26  	}
    27  
    28  	tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
    29  	if err != nil {
    30  		t.Fatalf("Failed to parse file 'schemata' - %s", err)
    31  	}
    32  	values := strings.Split(tmpStrings, "\n")
    33  	value := values[0]
    34  
    35  	if value != l3CacheSchemeAfter {
    36  		t.Fatal("Got the wrong value, set 'schemata' failed.")
    37  	}
    38  }
    39  
    40  func TestIntelRdtSetMemBwSchema(t *testing.T) {
    41  	helper := NewIntelRdtTestUtil(t)
    42  
    43  	const (
    44  		memBwSchemaBefore = "MB:0=20;1=70"
    45  		memBwSchemeAfter  = "MB:0=70;1=20"
    46  	)
    47  
    48  	helper.writeFileContents(map[string]string{
    49  		"schemata": memBwSchemaBefore + "\n",
    50  	})
    51  
    52  	helper.config.IntelRdt.MemBwSchema = memBwSchemeAfter
    53  	intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
    54  	if err := intelrdt.Set(helper.config); err != nil {
    55  		t.Fatal(err)
    56  	}
    57  
    58  	tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
    59  	if err != nil {
    60  		t.Fatalf("Failed to parse file 'schemata' - %s", err)
    61  	}
    62  	values := strings.Split(tmpStrings, "\n")
    63  	value := values[0]
    64  
    65  	if value != memBwSchemeAfter {
    66  		t.Fatal("Got the wrong value, set 'schemata' failed.")
    67  	}
    68  }
    69  
    70  func TestIntelRdtSetMemBwScSchema(t *testing.T) {
    71  	helper := NewIntelRdtTestUtil(t)
    72  
    73  	const (
    74  		memBwScSchemaBefore = "MB:0=5000;1=7000"
    75  		memBwScSchemeAfter  = "MB:0=9000;1=4000"
    76  	)
    77  
    78  	helper.writeFileContents(map[string]string{
    79  		"schemata": memBwScSchemaBefore + "\n",
    80  	})
    81  
    82  	helper.config.IntelRdt.MemBwSchema = memBwScSchemeAfter
    83  	intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
    84  	if err := intelrdt.Set(helper.config); err != nil {
    85  		t.Fatal(err)
    86  	}
    87  
    88  	tmpStrings, err := getIntelRdtParamString(helper.IntelRdtPath, "schemata")
    89  	if err != nil {
    90  		t.Fatalf("Failed to parse file 'schemata' - %s", err)
    91  	}
    92  	values := strings.Split(tmpStrings, "\n")
    93  	value := values[0]
    94  
    95  	if value != memBwScSchemeAfter {
    96  		t.Fatal("Got the wrong value, set 'schemata' failed.")
    97  	}
    98  }
    99  
   100  func TestApply(t *testing.T) {
   101  	helper := NewIntelRdtTestUtil(t)
   102  
   103  	const closID = "test-clos"
   104  
   105  	helper.config.IntelRdt.ClosID = closID
   106  	intelrdt := newManager(helper.config, "", helper.IntelRdtPath)
   107  	if err := intelrdt.Apply(1234); err == nil {
   108  		t.Fatal("unexpected success when applying pid")
   109  	}
   110  	if _, err := os.Stat(filepath.Join(helper.IntelRdtPath, closID)); err == nil {
   111  		t.Fatal("closid dir should not exist")
   112  	}
   113  
   114  	// Dir should be created if some schema has been specified
   115  	intelrdt.config.IntelRdt.L3CacheSchema = "L3:0=f"
   116  	if err := intelrdt.Apply(1235); err != nil {
   117  		t.Fatalf("Apply() failed: %v", err)
   118  	}
   119  
   120  	pids, err := getIntelRdtParamString(intelrdt.GetPath(), "tasks")
   121  	if err != nil {
   122  		t.Fatalf("failed to read tasks file: %v", err)
   123  	}
   124  	if pids != "1235" {
   125  		t.Fatalf("unexpected tasks file, expected '1235', got %q", pids)
   126  	}
   127  }
   128  

View as plain text