package fscommon import ( "os" "path/filepath" "testing" "github.com/opencontainers/runc/libcontainer/configs" ) /* Roadmap for future */ // (Low-priority) TODO: Check if it is possible to virtually mimic an actual RDMA device. // TODO: Think of more edge-cases to add. // TestRdmaSet performs an E2E test of RdmaSet(), parseRdmaKV() using dummy device and a dummy cgroup file-system. // Note: Following test does not guarantees that your host supports RDMA since this mocks underlying infrastructure. func TestRdmaSet(t *testing.T) { testCgroupPath := filepath.Join(t.TempDir(), "rdma") // Ensure the full mock cgroup path exists. err := os.Mkdir(testCgroupPath, 0o755) if err != nil { t.Fatal(err) } rdmaDevice := "mlx5_1" maxHandles := uint32(100) maxObjects := uint32(300) rdmaStubResource := &configs.Resources{ Rdma: map[string]configs.LinuxRdma{ rdmaDevice: { HcaHandles: &maxHandles, HcaObjects: &maxObjects, }, }, } if err := RdmaSet(testCgroupPath, rdmaStubResource); err != nil { t.Fatal(err) } // The default rdma.max must be written. rdmaEntries, err := readRdmaEntries(testCgroupPath, "rdma.max") if err != nil { t.Fatal(err) } if len(rdmaEntries) != 1 { t.Fatal("rdma_test: Got the wrong values while parsing entries from rdma.max") } if rdmaEntries[0].HcaHandles != maxHandles { t.Fatalf("rdma_test: Got the wrong value for hca_handles") } if rdmaEntries[0].HcaObjects != maxObjects { t.Fatalf("rdma_test: Got the wrong value for hca_Objects") } }