148 Commits

Author SHA1 Message Date
zhucan
80ff4b90a5 e2e: test for node expand volume with secrets failed
Signed-off-by: zhucan <zhucan.k8s@gmail.com>
2023-03-14 21:12:31 +08:00
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
Kubernetes Prow Robot
499a03d88b Merge pull request #115451 from zhucan/nodeexpandvolume-secret-e2e
e2e: add e2e test to node expand volume with secret
2023-03-08 07:53:12 -08:00
zhucan
7a87b4363b e2e: add e2e test to node expand volume with secret
Signed-off-by: zhucan <zhucan.k8s@gmail.com>
2023-03-08 10:27:50 +08:00
Roman Bednar
7484c69a16 add e2e test for snapshot restore resizing 2023-02-27 10:47:02 +01:00
Patrick Ohly
136f89dfc5 e2e: use error wrapping with %w
The recently introduced failure handling in ExpectNoError depends on error
wrapping: if an error prefix gets added with `fmt.Errorf("foo: %v", err)`, then
ExpectNoError cannot detect that the root cause is an assertion failure and
then will add another useless "unexpected error" prefix and will not dump the
additional failure information (currently the backtrace inside the E2E
framework).

Instead of manually deciding on a case-by-case basis where %w is needed, all
error wrapping was updated automatically with

    sed -i "s/fmt.Errorf\(.*\): '*\(%s\|%v\)'*\",\(.* err)\)/fmt.Errorf\1: %w\",\3/" $(git grep -l 'fmt.Errorf' test/e2e*)

This may be unnecessary in some cases, but it's not wrong.
2023-02-06 15:39:13 +01:00
Antonio Ojea
7f5ae1c0c1 Revert "e2e: wait for pods with gomega" 2023-02-06 12:08:22 +01:00
Patrick Ohly
222f655062 e2e: use error wrapping with %w
The recently introduced failure handling in ExpectNoError depends on error
wrapping: if an error prefix gets added with `fmt.Errorf("foo: %v", err)`, then
ExpectNoError cannot detect that the root cause is an assertion failure and
then will add another useless "unexpected error" prefix and will not dump the
additional failure information (currently the backtrace inside the E2E
framework).

Instead of manually deciding on a case-by-case basis where %w is needed, all
error wrapping was updated automatically with

    sed -i "s/fmt.Errorf\(.*\): '*\(%s\|%v\)'*\",\(.* err)\)/fmt.Errorf\1: %w\",\3/" $(git grep -l 'fmt.Errorf' test/e2e*)

This may be unnecessary in some cases, but it's not wrong.
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
Hemant Kumar
3d33178dab Start adding e2e for recovery from expansion failure 2022-12-14 15:28:05 -05: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
Jan Safranek
5b284a50b7 Revert "Remove references to openstack and cinder"
This reverts commit 9bbf01bae9.
2022-11-10 18:25:30 +01: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
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
Kubernetes Prow Robot
216ba39632 Merge pull request #112987 from chrishenzie/e2e-test-rwop
e2e test for ReadWriteOncePod PV access mode
2022-10-17 10:01:08 -07:00
Chris Henzie
f6d9c27722 e2e test for ReadWriteOncePod PV access mode
Adds two tests for the enforcement of the ReadWriteOncePod
PersistentVolume access mode.

1. Tests that when two Pods are scheduled that reference the same
   ReadWriteOncePod PVC, the latter-scheduled Pod will be marked
   unschedulable because the PVC is in-use.
2. Tests that when two Pods are scheduled on the same node (setting
   Pod.Spec.NodeName to bypass scheduling for the second Pod), the
   latter Pod will fail to start because the PVC is already mounted on
   the Node.

Included are changes to update the hostpath CSI driver to accept new CSI
access modes. Its sidecar containers are already at supported versions
for ReadWriteOncePod and don't need updating. The GCP PD CSI driver does
not yet support the new CSI access modes, but its sidecar containers are
at supported versions and so the feature will work.

To support ReadWriteOncePod, the following CSI sidecars must be updated
to these versions or greater:
 - csi-provisioner:v3.0.0+
 - csi-attacher:v3.3.0+
 - csi-resizer:v1.3.0+

For more details, see:
https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/2485-read-write-once-pod-pv-access-mode/README.md
2022-10-14 09:15:36 -07: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
Patrick Ohly
fc092eb145 e2e: remove cleanup actions
The framework.AddCleanupAction API was a workaround for Ginkgo v1 not invoking
AfterEach callbacks after a test failure. Ginkgo v2 not only fixed that, but
also added a DeferCleanup API which can be used to run some code if (and only
if!) the corresponding setup code ran. In several cases that makes the test
cleanup simpler.
2022-09-09 13:51:07 +02:00
Davanum Srinivas
9bbf01bae9 Remove references to openstack and cinder
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2022-08-22 16:43:14 -04:00
Abirdcfly
00b9ead02c cleanup: remove duplicate import
Signed-off-by: Abirdcfly <fp544037857@gmail.com>
2022-07-14 11:25:19 +08: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
Jonathan Dobson
c8d3cc5c07 e2e: restore volume lifecycle checks for csi-hostpath driver
These tests were previously disabled to work around #79980
https://github.com/kubernetes/kubernetes/commit/f1e1f3a416b70bafadf961518c330ce3b1b5459
2022-06-01 14:23:10 -06:00
Jonathan Dobson
f369b1234a e2e: add storage capability for offline volume expansion 2022-04-21 14:49:18 -06:00
Amarnath Valluri
e68c9f3dec test/e2e/storage: replace mock driver with hostpath driver
This is a first step towards removing the mock CSI driver completely from
e2e testing in favor of hostpath plugin. With the recent hostpath plugin
changes(PR #260, #269), it supports all the features supported by the mock
csi driver.

Using hostpath-plugin for testing also covers CSI persistent feature
usecases.
2021-12-02 14:41:08 +01:00
Cheng Xing
bca1b79728 Delegate FSGroup CSI driver e2e: verify fsgroup is passed to CSI calls using mock driver tests 2021-11-22 17:00:39 -08:00
Patrick Ohly
5378b4d220 e2e: restore volume lifecycle check for most tests, II
Besides "subPath should unmount if pod is gracefully deleted while kubelet is
down" we also need a special case for "subPath should unmount if pod is force
deleted while kubelet is down".

This fixes a test failure in https://testgrid.k8s.io/sig-storage-kubernetes#gce-serial
2021-10-14 10:59:03 +02:00
Patrick Ohly
e99b945b17 e2e: restore volume lifecycle check for most tests
f1e1f3a416
disable the check to work around an issue in one test. It's better to keep the
check enabled by default and only disable it for that test.
2021-09-09 10:29:37 +02:00
Jing Xu
f1e1f3a416 Fix disruptive subPath test failures
This PR fixes two distruptive subpath test failures.

1. disable --check-volume-lifecycle check
2. skip hostpath driver tests on graceful pod deletion test too.

See details in
https://github.com/kubernetes/kubernetes/issues/103651#issuecomment-887227562

Change-Id: Ibecd051be865feea5f2a92d22ade848367400939
2021-07-27 02:17:31 -07:00
Kubernetes Prow Robot
756203fda0 Merge pull request #102576 from dobsonj/101911
kubelet: do not call RemoveAll on volumes directory for orphaned pods
2021-06-29 06:54:40 -07:00
Jordan Liggitt
1134456c89 Fix CSI mock driver to get marshaleable grpc error 2021-06-15 09:53:06 -04:00
Jonathan Dobson
484eb01822 kubelet: do not call RemoveAll on volumes directory for orphaned pods 2021-06-08 13:57:35 -06:00
Patrick Ohly
528baa09f6 e2e storage: disable health-monitor controller in hostpath deployment
This reverts commit
c15fd76ee9. Most (all?) of the hostpath
tests and several other tests started to fail again in
gce-scale-master-correctness after re-enabling the controller. This
shows that it was not just the obsolete agent which causes scalability
problems, but also the controller.

It has to be disabled until the scalability problems are addressed.
2021-06-08 20:27:05 +02:00
Kubernetes Prow Robot
cc7721362c Merge pull request #102665 from gnufied/add-online-expansion-cap
Add explicit capability for online volume expansion
2021-06-08 08:33:36 -07:00
Hemant Kumar
95c8b02096 Add explicit capability for online volume expansion 2021-06-07 13:43:18 -04:00
Patrick Ohly
c15fd76ee9 e2e storage: enable health-check controller in hostpath deployment
It was disabled together with the agent to avoid test failures in
gce-master-scale-correctness (https://github.com/kubernetes/kubernetes/issues/102452). That
solved the problem, but we still need to check whether the controller
alone works.
2021-06-05 18:16:19 +02:00
Patrick Ohly
c26c423b1c storage e2e: disable health check containers
They are not needed for any of the tests and may be causing too much
overhead (see
https://github.com/kubernetes/kubernetes/issues/102452#issuecomment-854452816).

We already disabled them earlier and then re-enabled them again
because it wasn't clear how much overhead they were causing. A recent
change in how the sidecars get
deployed (https://github.com/kubernetes/kubernetes/pull/102282) seems
to have made the situation worse again. There's no logical explanation
for that yet, though.

(cherry picked from commit 0c2cee5676e64976f9e767f40c4c4750a8eeb11f)
2021-06-04 09:57:02 +02:00
Patrick Ohly
4acb6a865c storage e2e: use csi-driver-host-path v1.7.2 in single pod
The new default deployment in that release puts sidecars into the same
pod as the driver. This is expected to reduce load during testing.
2021-05-26 09:07:46 +02:00
Kubernetes Prow Robot
17f3990ea1 Merge pull request #100484 from gavinfish/e2e-storage-suffix
Remove suffixes for VolumeSnapshotClasses in E2E tests
2021-04-26 17:37:03 -07:00
Patrick Ohly
3299469437 Revert "storage e2e: disable health check containers"
This reverts commit 0c2cee5676e64976f9e767f40c4c4750a8eeb11f.

The health check containers are not required for any test, but we want
to run them anyway to ensure that they cause no unexpected issues.
2021-04-22 08:20:39 +02:00
Patrick Ohly
c794b5c442 storage e2e: patch in RBAC rules for secrets
In one mock test, the snapshotter needs permission to read
secrets. That was disabled in the RBAC files of recent releases. We
need to patch it back in during deployment.
2021-04-21 09:57:54 +02:00
Patrick Ohly
7682e39a47 storage e2e: disable health check containers
They are not needed for any of the tests and in practice apparently
caused enough overhead that even unrelated tests timed out. For
example, in the pull-kubernetes-e2e-kind test, 43 out of 5771 tests
failed, including tests from sig-node, sig-cli, sig-api-machinery,
sig-network.
2021-04-20 08:07:15 +02:00
Patrick Ohly
446c1136dc storage e2e: automate hostpath YAML updates, hostpath v1.6.2
Mirroring the various YAML files by hand is tedious. The new
update-hostpath.sh does all the necessary steps automatically.

The result is now a bit more consistent with the upstream repos in the
sense that the original file names and paths for the RBAC YAML files
are used.

The csi-hostpath-testing.yaml is included for the sake of
completeness, but not used during E2E testing.

The new hostpath driver release is v1.6.2, which adds the
external-health-monitor for the first time.
2021-04-20 08:07:15 +02:00
shahra
34e4a5f22c Add e2e test to validate performance metrics of volume lifecycle operations.
This test currently validates latency and throughput of volume
provisioning against a high baseline.
2021-03-24 13:50:32 -07:00
drfish
244d7a5d67 Remove suffixes for VolumeSnapshotClasses in E2E tests 2021-03-23 21:24:28 +08:00
Kubernetes Prow Robot
42c1ccb38e Merge pull request #99701 from wojtek-t/cleanup_describe_13
Tag storage windows tests with [Feature:Windows] instead of [sig-windows]
2021-03-05 10:00:47 -08:00
wojtekt
ca333d7a7a Tag storage windows tests with [Feature:Windows] instead of [sig-windows] 2021-03-03 12:08:59 +01:00
Patrick Ohly
baecaa8209 e2e test: log gRPC calls in embedded CSI driver
It is useful to see all calls as they occur. The output format is
the more readable JSON representation.
2021-03-01 19:22:37 +01:00
Patrick Ohly
3adcf11b45 e2e storage: use embedded mock CSI driver
This replaces embedding of JavaScript code into the mock driver that
runs inside the cluster with Go callbacks which run inside the
e2e.test suite itself. In contrast to the JavaScript hooks, they have
direct access to all parameters and can fabricate arbitrary responses,
not just error codes.

Because the callbacks run in the same process as the test itself, it
is possible to set up two-way communication via shared variables or
channels. This opens the door for writing better tests. Some of the
existing tests that poll mock driver output could be simplified, but
that can be addressed later.

For now, only tests using hooks use embedding. How gRPC calls are
retrieved is abstracted behind the CSIMockTestDriver interface, so
tests don't need to be modified when switching between embedding
and remote mock driver.
2021-03-01 19:22:37 +01:00