github.com/ThomasObenaus/nomad@v0.11.1/nomad/structs/csi_test.go (about) 1 package structs 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestCSIVolumeClaim(t *testing.T) { 10 vol := NewCSIVolume("", 0) 11 vol.AccessMode = CSIVolumeAccessModeMultiNodeSingleWriter 12 vol.Schedulable = true 13 14 alloc := &Allocation{ID: "a1", Namespace: "n", JobID: "j"} 15 16 require.NoError(t, vol.ClaimRead(alloc)) 17 require.True(t, vol.ReadSchedulable()) 18 require.True(t, vol.WriteSchedulable()) 19 require.NoError(t, vol.ClaimRead(alloc)) 20 21 require.NoError(t, vol.ClaimWrite(alloc)) 22 require.True(t, vol.ReadSchedulable()) 23 require.False(t, vol.WriteFreeClaims()) 24 25 vol.ClaimRelease(alloc) 26 require.True(t, vol.ReadSchedulable()) 27 require.True(t, vol.WriteFreeClaims()) 28 } 29 30 func TestCSIPluginCleanup(t *testing.T) { 31 plug := NewCSIPlugin("foo", 1000) 32 plug.AddPlugin("n0", &CSIInfo{ 33 PluginID: "foo", 34 AllocID: "a0", 35 Healthy: true, 36 Provider: "foo-provider", 37 RequiresControllerPlugin: true, 38 RequiresTopologies: false, 39 ControllerInfo: &CSIControllerInfo{}, 40 }) 41 42 plug.AddPlugin("n0", &CSIInfo{ 43 PluginID: "foo", 44 AllocID: "a0", 45 Healthy: true, 46 Provider: "foo-provider", 47 RequiresControllerPlugin: true, 48 RequiresTopologies: false, 49 NodeInfo: &CSINodeInfo{}, 50 }) 51 52 require.Equal(t, 1, plug.ControllersHealthy) 53 require.Equal(t, 1, plug.NodesHealthy) 54 55 plug.DeleteNode("n0") 56 require.Equal(t, 0, plug.ControllersHealthy) 57 require.Equal(t, 0, plug.NodesHealthy) 58 59 require.Equal(t, 0, len(plug.Controllers)) 60 require.Equal(t, 0, len(plug.Nodes)) 61 }