/* Copyright 2016 The Kubernetes Authors All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package cache import "testing" func Test_AddVolume_Positive_NewVolume(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" // Act vc.AddVolume(volumeName) // Assert volumeExists := vc.VolumeExists(volumeName) if !volumeExists { t.Fatalf("Added volume %q does not exist, it should.", volumeName) } } func Test_AddVolume_Positive_ExistingVolume(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" vc.AddVolume(volumeName) // Act vc.AddVolume(volumeName) // Assert volumeExists := vc.VolumeExists(volumeName) if !volumeExists { t.Fatalf("Added volume %q does not exist, it should.", volumeName) } } func Test_AddNode_Positive_NewNodeVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" vc.AddVolume(volumeName) // Act nodeErr := vc.AddNode(nodeName, volumeName) // Assert if nodeErr != nil { t.Fatalf("AddNode failed. Expected: Actual: <%v>", nodeErr) } nodeExists, nodeExistsErr := vc.NodeExists(nodeName, volumeName) if nodeExistsErr != nil { t.Fatalf("NodeExists failed. Expected: Actual: <%v>", nodeExistsErr) } if !nodeExists { t.Fatalf("Added node %q does not exist, it should.", nodeName) } } func Test_AddNode_Positive_NodeExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" vc.AddVolume(volumeName) nodeErr1 := vc.AddNode(nodeName, volumeName) if nodeErr1 != nil { t.Fatalf("First call to AddNode failed. Expected: Actual: <%v>", nodeErr1) } // Act nodeErr2 := vc.AddNode(nodeName, volumeName) // Assert if nodeErr2 != nil { t.Fatalf("Second call to AddNode failed. Expected: Actual: <%v>", nodeErr2) } nodeExists, nodeExistsErr := vc.NodeExists(nodeName, volumeName) if nodeExistsErr != nil { t.Fatalf("NodeExists failed. Expected: Actual: <%v>", nodeExistsErr) } if !nodeExists { t.Fatalf("Added node %q does not exist, it should.", nodeName) } } func Test_AddNode_Negative_NewNodeVolumeDoesntExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" // Act nodeErr := vc.AddNode(nodeName, volumeName) // Assert if nodeErr == nil { t.Fatalf("AddNode did not fail. Expected: <\"failed to add node...no volume with that name exists in the list of managed volumes\"> Actual: ") } nodeExists, nodeExistsErr := vc.NodeExists(nodeName, volumeName) if nodeExistsErr == nil { t.Fatalf("NodeExists did not fail. Expected: Actual: ") } if nodeExists { t.Fatalf("Added node %q exists, it should not.", nodeName) } } func Test_AddPod_Positive_NewPodNodeExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" vc.AddVolume(volumeName) nodeErr := vc.AddNode(nodeName, volumeName) if nodeErr != nil { t.Fatalf("AddNode failed. Expected: Actual: <%v>", nodeErr) } // Act podErr := vc.AddPod(podName, nodeName, volumeName) // Assert if podErr != nil { t.Fatalf("AddPod failed. Expected: Actual: <%v>", podErr) } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr != nil { t.Fatalf("PodExists failed. Expected: Actual: <%v>", podExistsErr) } if !podExists { t.Fatalf("Added pod %q does not exist, it should.", podName) } } func Test_AddPod_Positive_PodExistsNodeExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" vc.AddVolume(volumeName) nodeErr := vc.AddNode(nodeName, volumeName) if nodeErr != nil { t.Fatalf("AddNode failed. Expected: Actual: <%v>", nodeErr) } podErr1 := vc.AddPod(podName, nodeName, volumeName) if podErr1 != nil { t.Fatalf("AddPod failed. Expected: Actual: <%v>", podErr1) } // Act podErr2 := vc.AddPod(podName, nodeName, volumeName) // Assert if podErr2 != nil { t.Fatalf("AddPod failed. Expected: Actual: <%v>", podErr2) } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr != nil { t.Fatalf("PodExists failed. Expected: Actual: <%v>", podExistsErr) } if !podExists { t.Fatalf("Added pod %q does not exist, it should.", podName) } } func Test_AddPod_Negative_NewPodNodeDoesntExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" vc.AddVolume(volumeName) // Act podErr := vc.AddPod(podName, nodeName, volumeName) // Assert if podErr == nil { t.Fatalf("AddPod did not fail. Expected: <\"failed to add pod...no node with that name exists in the list of attached nodes for that volume\"> Actual: ") } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr == nil { t.Fatalf("PodExists did not fail. Expected: <\"failed to check if pod exists...no node with that name exists in the list of attached nodes for that volume\"> Actual: ") } if podExists { t.Fatalf("Added pod %q exists, it should not.", podName) } } func Test_AddPod_Negative_NewPodNodeDoesntExistsVolumeDoesntExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" // Act podErr := vc.AddPod(podName, nodeName, volumeName) // Assert if podErr == nil { t.Fatalf("AddPod did not fail. Expected: <\"failed to add pod...no volume with that name exists in the list of managed volumes\"> Actual: ") } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr == nil { t.Fatalf("PodExists did not fail. Expected: <\"failed to check if node...no volume with that name exists in the list of managed volumes\"> Actual: ") } if podExists { t.Fatalf("Added pod %q exists, it should not.", podName) } } func Test_VolumeExists_Positive_NonExistantVolume(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() notAddedVolumeName := "volume-not-added-name" // Act notAddedVolumeExists := vc.VolumeExists(notAddedVolumeName) // Assert if notAddedVolumeExists { t.Fatalf("Not added volume %q exists, it should not.", notAddedVolumeName) } } func Test_NodeExists_Positive_NonExistantNodeVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" notAddedNodeName := "node-not-added-name" vc.AddVolume(volumeName) // Act notAddedNodeExists, notAddedNodeExistsErr := vc.NodeExists(notAddedNodeName, volumeName) // Assert if notAddedNodeExistsErr != nil { t.Fatalf("NodeExists failed. Expected: Actual: <%v>", notAddedNodeExistsErr) } if notAddedNodeExists { t.Fatalf("Not added node %q exists, it should not.", notAddedNodeName) } } func Test_NodeExists_Negative_NonExistantNodeVolumeDoesntExist(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" notAddedNodeName := "node-not-added-name" // Act notAddedNodeExists, notAddedNodeExistsErr := vc.NodeExists(notAddedNodeName, volumeName) // Assert if notAddedNodeExistsErr == nil { t.Fatalf("NodeExists did not fail. Expected: Actual: ") } if notAddedNodeExists { t.Fatalf("Added node %q exists, it should not.", notAddedNodeName) } } func Test_PodExists_Positive_NonExistantPodNodeExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" notAddedPodName := "pod-not-added-name" vc.AddVolume(volumeName) addNodeErr := vc.AddNode(nodeName, volumeName) if addNodeErr != nil { t.Fatalf("AddNode for node %q failed. Expected: Actual: <%v>", nodeName, addNodeErr) } // Act notAddedPodExists, notAddedPodExistsErr := vc.PodExists(notAddedPodName, nodeName, volumeName) // Assert if notAddedPodExistsErr != nil { t.Fatalf("PodExists failed. Expected: Actual: <%v>", notAddedPodExistsErr) } if notAddedPodExists { t.Fatalf("Not added pod %q exists, it should not.", notAddedPodName) } } func Test_PodExists_Negative_NonExistantPodNodeDoesntExistVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" notAddedPodName := "pod-not-added-name" vc.AddVolume(volumeName) // Act notAddedPodExists, notAddedPodExistsErr := vc.PodExists(notAddedPodName, nodeName, volumeName) // Assert if notAddedPodExistsErr == nil { t.Fatalf("PodExists did not fail. Expected: <\"failed to check if pod exists...no node with that name exists in the list of attached nodes for that volume\"> Actual: ") } if notAddedPodExists { t.Fatalf("Added pod %q exists, it should not.", notAddedPodName) } } func Test_PodExists_Negative_NonExistantPodNodeDoesntExistVolumeDoesntExist(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" notAddedPodName := "pod-not-added-name" // Act notAddedPodExists, notAddedPodExistsErr := vc.PodExists(notAddedPodName, nodeName, volumeName) // Assert if notAddedPodExistsErr == nil { t.Fatalf("PodExists did not fail. Expected: <\"failed to check if node...no volume with that name exists in the list of managed volumes\"> Actual: ") } if notAddedPodExists { t.Fatalf("Added pod %q exists, it should not.", notAddedPodName) } } func Test_DeleteVolume_Positive_VolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" vc.AddVolume(volumeName) // Act deleteVolumeErr := vc.DeleteVolume(volumeName) // Assert if deleteVolumeErr != nil { t.Fatalf("DeleteVolume failed. Expected: Actual: <%v>", deleteVolumeErr) } volumeExists := vc.VolumeExists(volumeName) if volumeExists { t.Fatalf("Deleted volume %q still exists, it should not.", volumeName) } } func Test_DeleteVolume_Negative_VolumeDoesntExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() notAddedVolumeName := "volume-not-added-name" // Act deleteVolumeErr := vc.DeleteVolume(notAddedVolumeName) // Assert if deleteVolumeErr == nil { t.Fatalf("DeleteVolume did not fail. Expected: <\"failed to delete volume...no volume with that name exists in the list of managed volumes\"> Actual: ") } notAddedVolumeExists := vc.VolumeExists(notAddedVolumeName) if notAddedVolumeExists { t.Fatalf("Not added volume %q exists, it should not.", notAddedVolumeName) } } func Test_DeleteNode_Positive_NodeExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" vc.AddVolume(volumeName) nodeErr := vc.AddNode(nodeName, volumeName) if nodeErr != nil { t.Fatalf("AddNode failed. Expected: Actual: <%v>", nodeErr) } // Act deleteNodeErr := vc.DeleteNode(nodeName, volumeName) // Assert if deleteNodeErr != nil { t.Fatalf("DeleteNode failed. Expected: Actual: <%v>", deleteNodeErr) } nodeExists, nodeExistsErr := vc.NodeExists(nodeName, volumeName) if nodeExistsErr != nil { t.Fatalf("NodeExists failed. Expected: Actual: <%v>", nodeExistsErr) } if nodeExists { t.Fatalf("Deleted node %q still exists, it should not.", nodeName) } } func Test_DeleteNode_Negative_NodeDoesntExistVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" notAddedNodeName := "node-not-added-name" vc.AddVolume(volumeName) // Act deleteNodeErr := vc.DeleteNode(notAddedNodeName, volumeName) // Assert if deleteNodeErr == nil { t.Fatalf("DeleteNode did not fail. Expected: <\"failed to delete node...no node with the that name exists in the list of attached nodes for that volume\"> Actual: ") } notAddedNodeExists, notAddedNodeExistsErr := vc.NodeExists(notAddedNodeName, volumeName) if notAddedNodeExistsErr != nil { t.Fatalf("NodeExists failed. Expected: Actual: <%v>", notAddedNodeExistsErr) } if notAddedNodeExists { t.Fatalf("Not added node %q exists, it should not.", notAddedNodeName) } } func Test_DeleteNode_Negative_NodeDoesntExistVolumeDoesntExist(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" notAddedNodeName := "node-not-added-name" // Act deleteNodeErr := vc.DeleteNode(notAddedNodeName, volumeName) // Assert if deleteNodeErr == nil { t.Fatalf("DeleteNode did not fail. Expected: <\"failed to delete node...no volume with that name exists in the list of managed volumes\"> Actual: ") } notAddedNodeExists, notAddedNodeExistsErr := vc.NodeExists(notAddedNodeName, volumeName) if notAddedNodeExistsErr == nil { t.Fatalf("NodeExists did not fail. Expected: <\failed to check if node...no volume with that name exists in the list of managed volumes\"> Actual: ") } if notAddedNodeExists { t.Fatalf("Not added node %q exists, it should not.", notAddedNodeName) } } func Test_DeletePod_Positive_PodExistsNodeExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" vc.AddVolume(volumeName) nodeErr := vc.AddNode(nodeName, volumeName) if nodeErr != nil { t.Fatalf("AddNode failed. Expected: Actual: <%v>", nodeErr) } podErr := vc.AddPod(podName, nodeName, volumeName) if podErr != nil { t.Fatalf("AddPod failed. Expected: Actual: <%v>", podErr) } // Act deletePodErr := vc.DeletePod(podName, nodeName, volumeName) // Assert if deletePodErr != nil { t.Fatalf("DeletePod failed. Expected: Actual: <%v>", podName) } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr != nil { t.Fatalf("PodExists failed. Expected: Actual: <%v>", podExistsErr) } if podExists { t.Fatalf("Deleted pod %q still exists, it should not.", podName) } } func Test_DeletePod_Positive_PodDoesntExistNodeExistsVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" vc.AddVolume(volumeName) nodeErr := vc.AddNode(nodeName, volumeName) if nodeErr != nil { t.Fatalf("AddNode failed. Expected: Actual: <%v>", nodeErr) } // Act deletePodErr := vc.DeletePod(podName, nodeName, volumeName) // Assert if deletePodErr == nil { t.Fatalf("DeletePod did not fail. Expected: <\"failed to delete pod...no pod with that name exists in the list of scheduled pods under that node/volume\"> Actual: ") } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr != nil { t.Fatalf("PodExists failed. Expected: Actual: <%v>", podExistsErr) } if podExists { t.Fatalf("Deleted pod %q still exists, it should not.", podName) } } func Test_DeletePod_Positive_PodDoesntExistNodeDoesntExistVolumeExists(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" vc.AddVolume(volumeName) // Act deletePodErr := vc.DeletePod(podName, nodeName, volumeName) // Assert if deletePodErr == nil { t.Fatalf("DeletePod did not fail. Expected: <\"failed to delete pod...no node with that name exists in the list of attached nodes for that volume\"> Actual: ") } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr == nil { t.Fatalf("PodExists did not fail. Expected: <\failed to check if pod...no node with that name exists in the list of attached nodes for that volume\"> Actual: ") } if podExists { t.Fatalf("Deleted pod %q still exists, it should not.", podName) } } func Test_DeletePod_Positive_PodDoesntExistNodeDoesntExistVolumeDoesntExist(t *testing.T) { // Arrange vc := NewAttachDetachVolumeCache() volumeName := "volume-name" nodeName := "node-name" podName := "pod-name" // Act deletePodErr := vc.DeletePod(podName, nodeName, volumeName) // Assert if deletePodErr == nil { t.Fatalf("DeletePod did not fail. Expected: <\"failed to delete pod...no volume with that name exists in the list of managed volumes\"> Actual: ") } podExists, podExistsErr := vc.PodExists(podName, nodeName, volumeName) if podExistsErr == nil { t.Fatalf("PodExists did not fail. Expected: <\failed to check if pod...no volume with that name exists in the list of managed volumes\"> Actual: ") } if podExists { t.Fatalf("Deleted pod %q still exists, it should not.", podName) } } /* t.Fatalf("%q", notAddedNodeExistsErr) */