Skip to content

csi-sanity: some controller and node tests cases try to create a volume, even if plugin has no create volume capability #214

Open
@Levp-zadara

Description

@Levp-zadara

Brief:

I am developing a CSI plugin, and at first stages I do not provide dynamic volume provisioning API support (which is a valid plugin according to CSI spec). That is, my plugin does not advertise CREATE_DELETE_VOLUME Controller Service capability.
But, there are 3 test cases where csi-sanity still sends CreateVolumeRequest to Controller Server.


Tests output:

Summarizing 3 Failures:

[Fail] Node Service [It] should work 
/mnt/homes/levp/go/src/github.com/kubernetes-csi/csi-test/pkg/sanity/node.go:648

[Fail] Controller Service ValidateVolumeCapabilities [It] should fail when no volume capabilities are provided 
/mnt/homes/levp/go/src/github.com/kubernetes-csi/csi-test/pkg/sanity/controller.go:936

[Fail] Controller Service ValidateVolumeCapabilities [It] should return appropriate values (no optional values added) 
/mnt/homes/levp/go/src/github.com/kubernetes-csi/csi-test/pkg/sanity/controller.go:991

Test cases:

From node.go:648:

	It("should work", func() {
		name := UniqueString("sanity-node-full")

		// Create Volume First
		By("creating a single node writer volume")
		vol, err := s.CreateVolume(
			context.Background(),
			&csi.CreateVolumeRequest{
				Name: name,
				VolumeCapabilities: []*csi.VolumeCapability{
					{
						AccessType: &csi.VolumeCapability_Mount{
							Mount: &csi.VolumeCapability_MountVolume{},
						},
						AccessMode: &csi.VolumeCapability_AccessMode{
							Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
						},
					},
				},
				Secrets:    sc.Secrets.CreateVolumeSecret,
				Parameters: sc.Config.TestVolumeParameters,
			},
		)
		Expect(err).NotTo(HaveOccurred())

From controller.go:936:

		It("should fail when no volume capabilities are provided", func() {

			// Create Volume First
			By("creating a single node writer volume")
			name := UniqueString("sanity-controller-validate-nocaps")

			vol, err := c.CreateVolume(
				context.Background(),
				&csi.CreateVolumeRequest{
					Name: name,
					VolumeCapabilities: []*csi.VolumeCapability{
						{
							AccessType: &csi.VolumeCapability_Mount{
								Mount: &csi.VolumeCapability_MountVolume{},
							},
							AccessMode: &csi.VolumeCapability_AccessMode{
								Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
							},
						},
					},
					Secrets:    sc.Secrets.CreateVolumeSecret,
					Parameters: sc.Config.TestVolumeParameters,
				},
			)
			Expect(err).NotTo(HaveOccurred())

From controller.go:991:

		It("should return appropriate values (no optional values added)", func() {

			// Create Volume First
			By("creating a single node writer volume")
			name := UniqueString("sanity-controller-validate")

			vol, err := c.CreateVolume(
				context.Background(),
				&csi.CreateVolumeRequest{
					Name: name,
					VolumeCapabilities: []*csi.VolumeCapability{
						{
							AccessType: &csi.VolumeCapability_Mount{
								Mount: &csi.VolumeCapability_MountVolume{},
							},
							AccessMode: &csi.VolumeCapability_AccessMode{
								Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
							},
						},
					},
					Secrets:    sc.Secrets.CreateVolumeSecret,
					Parameters: sc.Config.TestVolumeParameters,
				},
			)
			Expect(err).NotTo(HaveOccurred())

IMO, these test cases should be skipped, when Controller service does not have CREATE_DELETE_VOLUME capability.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedDenotes an issue that needs help from a contributor. Must meet "help wanted" guidelines.kind/bugCategorizes issue or PR as related to a bug.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions