150 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
6612af0af0 Merge pull request #110304 from RomanBednar/resize-e2e
add e2e test for correct resizing of a snaphot restore
2023-03-13 22:27:08 -07:00
torredil
42909af615 Add windows nodeSelector to provisioning functions
Signed-off-by: torredil <torredil@amazon.com>
2023-02-28 21:21:29 +00:00
Roman Bednar
fbe39a8e96 skip e2e test for checking filesystem resizing on Windows
Test is currently using `stat` Linux command which won't work on Windows.
2023-02-27 10:47:02 +01:00
Roman Bednar
7484c69a16 add e2e test for snapshot restore resizing 2023-02-27 10:47:02 +01:00
Roman Bednar
b62794c52e fix a typo 2023-02-27 10:47:02 +01:00
Kubernetes Prow Robot
090025f5e6 Merge pull request #115548 from pohly/e2e-wait-for-pods-with-gomega
e2e: wait for pods with gomega, II
2023-02-07 07:01:21 -08:00
torredil
25389ee0ee Add nodeSelector to e2e storage testing pods
Signed-off-by: torredil <torredil@amazon.com>
2023-02-06 16:00:51 +00:00
Patrick Ohly
9df3e2a47a e2e: replace WaitForPodToDisappear with WaitForPodNotFoundInNamespace
WaitForPodToDisappear was always called such that it listed all pods, which
made it less efficient than trying to get just the one pod it was checking for.

Being able to customize the poll interval in practice wasn't useful, therefore
it can be replaced with WaitForPodNotFoundInNamespace.
2023-02-06 15:39:12 +01:00
Antonio Ojea
7f5ae1c0c1 Revert "e2e: wait for pods with gomega" 2023-02-06 12:08:22 +01:00
Patrick Ohly
6eea1b2efa e2e: replace WaitForPodToDisappear with WaitForPodNotFoundInNamespace
WaitForPodToDisappear was always called such that it listed all pods, which
made it less efficient than trying to get just the one pod it was checking for.

Being able to customize the poll interval in practice wasn't useful, therefore
it can be replaced with WaitForPodNotFoundInNamespace.
2023-01-31 13:01:39 +01:00
Patrick Ohly
2f6c4f5eab e2e: use Ginkgo context
All code must use the context from Ginkgo when doing API calls or polling for a
change, otherwise the code would not return immediately when the test gets
aborted.
2022-12-16 20:14:04 +01:00
Patrick Ohly
d4729008ef e2e: simplify test cleanup
ginkgo.DeferCleanup has multiple advantages:
- The cleanup operation can get registered if and only if needed.
- No need to return a cleanup function that the caller must invoke.
- Automatically determines whether a context is needed, which will
  simplify the introduction of context parameters.
- Ginkgo's timeline shows when it executes the cleanup operation.
2022-12-13 08:09:01 +01:00
Takafumi Takahashi
87c1ca88d4 Add API and validation for CrossNamespaceVolumeDataSource 2022-11-09 20:58:25 +00:00
Jan Safranek
d6c36736d5 Add mock CSI driver test for SELinux mount 2022-11-08 13:37:09 +01:00
Kubernetes Prow Robot
0a08757181 Merge pull request #113128 from pohly/e2e-storage-cleanup
e2e storage: cleanup with context
2022-10-20 10:29:00 -07:00
Patrick Ohly
f15d7f6cca e2e storage: eliminate context.TODO and cleanup callbacks
Tests should accept a context from Ginkgo and pass it through to all functions
which may block for a longer period of time. In particular all Kubernetes API
calls through client-go should use that context. Then if a timeout occurs,
the test returns immediately because everything that it could block on will
return.

Cleanup code then needs to run in a separate Ginkgo node, typically
DeferCleanup, which ensures that it gets a separate context which has not timed
out yet.
2022-10-20 13:56:59 +02:00
Patrick Ohly
d8d3dc9476 e2e storage: eliminate explicit test driver cleanup
Cleanup can be handled inside the setup code with ginkgo.DeferCleanup. This
simplifies the code.
2022-10-20 13:56:59 +02:00
Jan Safranek
bda42b6b53 Add capability for tests with multiple PVs with the same VolumeHandle
Some CSI drivers do not like multiple PVs with the same VolumeHandle,
therefore make that tests optional.
2022-10-18 13:44:54 +02:00
Humble Chirammal
9e9fc2be88 various corrections in test/e2e package
Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
2022-09-16 18:59:30 +05:30
Joe Betz
7be77f9ecc changes code to improve output for files under test/e2e/storage 2022-09-02 17:43:41 +05:30
Matthew Wong
195797c36c Fix missing format string PVC namespace 2022-07-28 17:57:10 -07:00
Dave Chen
857458cfa5 update ginkgo from v1 to v2 and gomega to 1.19.0
- update all the import statements
- run hack/pin-dependency.sh to change pinned dependency versions
- run hack/update-vendor.sh to update go.mod files and the vendor directory
- update the method signatures for custom reporters

Signed-off-by: Dave Chen <dave.chen@arm.com>
2022-07-08 10:44:46 +08:00
Fabio Bertinatto
9ef5c4e03a e2e: ensure single image for populator containers
This is useful in environments where the Deployment image is replaced
by another image from an internal registry (via fixture). In that case,
the populator running in populate mode should use the same image as the
populator running in controller mode.
2022-06-08 15:08:42 -03:00
Masaki Kimura
cd634b59ac Implement initial E2E test for AnyVolumeDataSource 2022-04-04 16:10:39 +00:00
Sergiusz Urbaniak
373c08e0c7 test/e2e/framework: configure pod security admission level for e2e tests 2022-03-28 15:42:10 +02:00
Kubernetes Prow Robot
c175418281 Merge pull request #107065 from saikat-royc/fix-node-stage-path
change node staging path for csi driver to PV agnostic
2022-01-21 01:31:58 -08:00
Saikat Roychowdhury
4a07657845 e2e test 2022-01-20 22:59:29 +00:00
Alexander Wels
8e29bb0454 Update test/e2e/storage/testsuites/provisioning.go
Add missing brackets

Co-authored-by: Patrick Ohly <patrick.ohly@intel.com>
2022-01-10 07:00:21 -06:00
Alexander Wels
59dcddae47 Update test/e2e/storage/testsuites/provisioning.go
Add missing brackets.

Co-authored-by: Patrick Ohly <patrick.ohly@intel.com>
2022-01-10 07:00:03 -06:00
Alexander Wels
2102769c14 Allow greater or equal in storage provisioning check
The current check enforces that a dynamic provisioner creates
persistent volumes of capacity equals to the persistent volume
claim request size. However there are provisioners that will
create persistent volumes with a capacity greater than the
request size (cinder comes to mind which increments in 1Gi
increments, so if you request 0.5Gi, you get 1Gi). Also
provisioners that have shared storage should be reporting the
total space not the request size (nfs/hostpath for instance).

All these will fail the provisioning check currently because
the capacity is > than the request size. This modifies the check
to be capacity >= request size.

Signed-off-by: Alexander Wels <awels@redhat.com>
2022-01-07 08:29:13 -06:00
Alexis MacAskill
8102bbe05a skip parallel volume cloning test for gce pd and fix disk not ready error for gce pd 2021-12-01 17:49:48 +00:00
Patrick Ohly
5462d97e62 storage e2e: test snapshotting of generic ephemeral volumes
Conceptually, snapshots have to be taken while the pod and thus the volume
exist. Snapshotting has an issue where flushing of data is not guaranteed while
the volume is still staged on the node, so the test relied on deleting the pod
and checking for the volume to be unused. That part of the test cannot be done
for ephmeral volumes.
2021-10-19 14:01:21 +02:00
Mauricio Poppe
144e6432cf Remove a duplicate StorageClass creation call
The issue on both tests is that before the refactor we had a method that
was creating the `StorageClass` manifest only, this manifest was used
later to be created by `TestBindingWaitForFirstConsumerMultiPVC`, after
the refactor we're ensuring that the `StorageClass` exists as a resource
before calling `TestBindingWaitForFirstConsumerMultiPVC` however this
method is still attempting to create it, that's the reason behind the
error: `resourceVersion should not be set on objects to be created

This issue wasn't caught before because
`TestBindingWaitForFirstConsumerMultiPVC` is creating the StorageClass
without the common utility function, the solution is to remove the
snippet that attempts to create the StorageClass againo
2021-09-15 19:09:35 +00:00
Kubernetes Prow Robot
a331cf74b7 Merge pull request #102050 from pohly/fix/deflake-metrics-proxy
remove metrics proxy
2021-07-02 12:30:10 -07:00
Mauricio Poppe
7aa8a497df replaced usage of powershell commands with linux commands 2021-06-22 18:27:55 +00:00
Jan Safranek
057422504a Run volume cloning tests in the same topology segment
Some CSI drivers can't clone a volume into other topology segment (e.g. a
cloud availability zone). The scheduler does not know about these
restrictions and schedules pods with PVCs that clone a volume mostly
randomly.

Run all volume cloning tests in the same topology segment, if such segment
is available and has at least one schedulable node.
2021-06-16 15:41:33 +02:00
Patrick Ohly
5e9076da93 e2e: grab controller and scheduler metrics via port forwarding
The previous approach with grabbing via a nginx proxy had some
drawbacks:
- it did not work when the pods only listened on localhost (as
  configured by kubeadm) and the proxy got deployed on a different
  node
- starting the proxy raced with starting the pods, causing
  sporadic test failures because the proxy was not set up
  properly unless it saw all pods when starting the e2e.test
- the proxy was always started, whether it is needed or not
- the proxy was left running after a test and then the next
  test run triggered potentially confusing messages when
  it failed to create objects for the proxy

The new approach is similar to "kubectl port-forward" + "kubectl get
--raw". It uses the port forwarding feature to establish a TCP
connection via a custom dialer, then lets client-go handle TLS and
credentials.

Somehow verifying the server certificate did not work. As this
shouldn't be a big concern for E2E testing, certificate checking gets
disabled on the client side instead of investigating this further.
2021-06-16 12:02:40 +02:00
Jan Safranek
28511e82ad Add e2e test for a volume + its clone used on the same node
CSI driver need to pass special mount opts to XFS filesystem to be able to
mount a volume + its clone or its restored snapshot on the same node. Add a
test to exhibit this behavior.

The test is optional for now, giving CSI drivers time to fix it.
2021-06-07 18:29:47 +02:00
Patrick Ohly
b9b5d13b6d storage e2e: verify CSIStorageCapacity publishing
Drivers need to opt into the new test. Depending on how the driver
describes its behavior, the check can be more specific. Currently it
distinguishes between getting any kind of information about the
storage class (i.e. assuming that capacity is not exhausted) and
getting one object per node (for local storage). Discovering nodes
only works for CSI drivers.

The immediate usage of this new test is for csi-driver-host-path with
the deployment for distributed provisioning and storage capacity
tracking. Periodic kubernetes-csi Prow and pre-merge jobs can run this
test.

The alternative would have been to write a test that manages the
deployment of the csi-driver-host-path driver itself, i.e. use the E2E
manifests. But that would have implied duplicating the
deployments (in-tree and in csi-driver-host-path) and then changing
kubernetes-csi Prow jobs to somehow run for in-tree driver definition
with newer components, something that currently isn't done. The test
then also wouldn't be applicable to out-of-tree driver deployments.

Yet another alternative would be to create a separate E2E test suite
either in csi-driver-host-path or external-provisioner. The advantage
of such an approach is that the test can be written exactly for the
expected behavior of a deployment and thus be more precise than the
generic version of the test in k/k. But this again wouldn't be
reusable for other drivers and also a lot of work to set up as no such
E2E test suite currently exists.
2021-03-24 18:18:27 +01:00
Mauricio Poppe
c95975d3f3 wait until the node is not using the volume before taking a snapshot 2021-03-16 16:09:38 +00:00
Mauricio Poppe
5d9053014e Update tests to use common pod functions from framework/pod/utils.go 2021-03-11 07:25:56 +00:00
Mauricio Poppe
432928b673 Skip creation of the same storageclass in e2e tests 2021-03-01 20:15:54 +00:00
Manohar Reddy
a6ec62f76d add e2e tests for DeleteSnapshotsecrets 2021-02-04 10:46:00 +05:30
Jiawei Wang
356bea6c9f Add storage framework and address comments 2020-12-10 22:48:06 -08:00
Jiawei Wang
988563f8f5 Extract testsuite api to a separate package
Extract TestSuite, TestDriver, TestPattern, TestConfig
and VolumeResource, SnapshotVolumeResource from testsuite
package and put them into a new package called api.

The ultimate goal here is to make the testsuites as clean
as possible. And only testsuites in the package.
2020-12-10 11:12:51 -08:00
Jiawei Wang
5dc491758c Storage testsuite refactor & cleanup
Cleanup all the f.BeforeEach() before new framework to move all the
testskips in the new SkipUnsupportedTests() to make the structure easier.
And provide the standard way of RegisterTests()

Add a InitCustomXXXTestSuite(patterns []patterns) function for each
TestSuite to enable custom test suite definition.
2020-12-10 11:12:51 -08:00
Fabio Bertinatto
ee082985c2 e2e: promote use of functions that support custom timeouts in storage tests.
WaitForPodSuccessInNamespace[Slow] are replaced by WaitForPodSuccessInNamespaceTimeout(),
so that custom timeouts are used instead of the hardcoded ones.
2020-12-02 16:14:13 -03:00
Fabio Bertinatto
c28dba5494 e2e: add new custom timeout value for slow PV deletion 2020-12-02 15:57:58 -03:00
Fabio Bertinatto
c82626f96f e2e: use custom timeouts in all storage E2E tests 2020-12-02 15:57:58 -03:00
Jing Xu
56373aa10d Update storage test suits for Windows
Update storage test suits to enable some tests on Windows

Change-Id: I1f596bb9f7a0f41ae398aec43406ee5c753cdce3
2020-11-11 15:22:47 -08:00