mirror of
https://github.com/opencontainers/runc.git
synced 2025-10-05 07:27:03 +08:00

Check that the ClosID directory pre-exists if no L3 or MB schema has been specified. Conform with the following line from runtime-spec (config-linux): If closID is set, and neither of l3CacheSchema and memBwSchema are set, runtime MUST check if corresponding pre-configured directory closID is present in mounted resctrl. If such pre-configured directory closID exists, runtime MUST assign container to this closID and generate an error if directory does not exist. Add a TODO note for verifying existing schemata against L3/MB parameters. Signed-off-by: Markus Lehtonen <markus.lehtonen@intel.com>
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
// +build linux
|
|
|
|
/*
|
|
* Utility for testing Intel RDT operations.
|
|
* Creates a mock of the Intel RDT "resource control" filesystem for the duration of the test.
|
|
*/
|
|
package intelrdt
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/opencontainers/runc/libcontainer/configs"
|
|
)
|
|
|
|
type intelRdtTestUtil struct {
|
|
// intelRdt data to use in tests
|
|
IntelRdtData *intelRdtData
|
|
|
|
// Path to the mock Intel RDT "resource control" filesystem directory
|
|
IntelRdtPath string
|
|
|
|
t *testing.T
|
|
}
|
|
|
|
// Creates a new test util
|
|
func NewIntelRdtTestUtil(t *testing.T) *intelRdtTestUtil {
|
|
d := &intelRdtData{
|
|
config: &configs.Config{
|
|
IntelRdt: &configs.IntelRdt{},
|
|
},
|
|
}
|
|
intelRdtRoot = t.TempDir()
|
|
testIntelRdtPath := filepath.Join(intelRdtRoot, "resctrl")
|
|
|
|
// Ensure the full mock Intel RDT "resource control" filesystem path exists
|
|
if err := os.MkdirAll(testIntelRdtPath, 0o755); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
return &intelRdtTestUtil{IntelRdtData: d, IntelRdtPath: testIntelRdtPath, t: t}
|
|
}
|
|
|
|
// Write the specified contents on the mock of the specified Intel RDT "resource control" files
|
|
func (c *intelRdtTestUtil) writeFileContents(fileContents map[string]string) {
|
|
for file, contents := range fileContents {
|
|
err := writeFile(c.IntelRdtPath, file, contents)
|
|
if err != nil {
|
|
c.t.Fatal(err)
|
|
}
|
|
}
|
|
}
|