- [X] APISnoop org-flow : StorageV1PV-PVC-LifecycleTest.org
- [X] test approval issue : Write e2e test for PersistentVolume & PersistentVolumeClaim Endpoints + 13 Endpoints #119694
- [X] test pr : Write e2e test for PersistentVolume & PersistentVolumeClaim Endpoints + 13 Endpoints #119695
- [X] two weeks soak start date : 29 Aug 2023 testgrid-link
- [X] two weeks soak end date : 11 Sep 2023
- [X] test promotion pr : Promote e2e test for PersistentVolume & PersistentVolumeClaim Endpoints + 13 Endpoints #120552
- [X] remove endpoints from pending_eligible_endpoints.yaml : Remove persistentvolume endpoints from pending_eligible_endpoints.yaml #120553
According to following APIsnoop query, there are two PersistentVolume and three PersistentVolumeClaim endpoints that are untested.
SELECT
endpoint,
path,
kind
FROM testing.untested_stable_endpoint
where eligible is true
and endpoint ilike '%PersistentVolume%'
and endpoint not ilike '%Status'
order by kind, endpoint
limit 10;
endpoint | path | kind
-------------------------------------------------------+--------------------------------------------------------------+-----------------------
deleteCoreV1CollectionPersistentVolume | /api/v1/persistentvolumes | PersistentVolume
patchCoreV1PersistentVolume | /api/v1/persistentvolumes/{name} | PersistentVolume
deleteCoreV1CollectionNamespacedPersistentVolumeClaim | /api/v1/namespaces/{namespace}/persistentvolumeclaims | PersistentVolumeClaim
listCoreV1PersistentVolumeClaimForAllNamespaces | /api/v1/persistentvolumeclaims | PersistentVolumeClaim
patchCoreV1NamespacedPersistentVolumeClaim | /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name} | PersistentVolumeClaim
(5 rows)
- https://apisnoop.cncf.io/1.27.0/stable/core/deleteCoreV1CollectionNamespacedPersistentVolumeClaim
- https://apisnoop.cncf.io/1.27.0/stable/core/deleteCoreV1CollectionPersistentVolume
- https://apisnoop.cncf.io/1.27.0/stable/core/listCoreV1PersistentVolumeClaimForAllNamespaces
- https://apisnoop.cncf.io/1.27.0/stable/core/patchCoreV1NamespacedPersistentVolumeClaim
- https://apisnoop.cncf.io/1.27.0/stable/core/patchCoreV1PersistentVolume
- https://apisnoop.cncf.io/1.27.0/stable/core/createCoreV1NamespacedPersistentVolumeClaim
- https://apisnoop.cncf.io/1.27.0/stable/core/createCoreV1PersistentVolume
- https://apisnoop.cncf.io/1.27.0/stable/core/deleteCoreV1NamespacedPersistentVolumeClaim
- https://apisnoop.cncf.io/1.27.0/stable/core/deleteCoreV1PersistentVolume
- https://apisnoop.cncf.io/1.27.0/stable/core/readCoreV1NamespacedPersistentVolumeClaim
- https://apisnoop.cncf.io/1.27.0/stable/core/readCoreV1PersistentVolume
- https://apisnoop.cncf.io/1.27.0/stable/core/replaceCoreV1NamespacedPersistentVolumeClaim
- https://apisnoop.cncf.io/1.27.0/stable/core/replaceCoreV1PersistentVolume
- https://apisnoop.cncf.io/1.27.0/stable/core/listCoreV1NamespacedPersistentVolumeClaim
- https://apisnoop.cncf.io/1.27.0/stable/core/listCoreV1PersistentVolume
- Kubernetes API Reference Docs
- Kubernetes API / Config and Storage Resources / PersistentVolume
- Kubernetes API / Config and Storage Resources / PersistentVolumeClaim
- client-go - PersistentVolume
- client-go - PersistentVolumeClaim
Scenario: Test the lifecycle of a PV and a PVC Given the e2e test has created the settings for a PV and a PVC When the test creates the PV and the PVC Then the requested action is accepted without any error Given the e2e test has created a PV When the test lists the PVs with a labelSelector Then the requested action is accepted without any error And the retrieved list has a single item Given the e2e test has created a PVC When the test lists the PVC for the namespace Then the requested action is accepted without any error And the retrieved list has a single item Given the e2e test has created a PV When the test patches the PV with a new label Then the requested action is accepted without any error And the test finds the new PV label with the required "patched" value Given the e2e test has created a PVC When the test patches the PVC with a new label Then the requested action is accepted without any error And the test finds the new PVC label with the required "patched" value Given the e2e test has patched the PV When the test reads the PV Then the requested action is accepted without any error And the UID of the retrieved PV equals the UID of the patched PV Given the e2e test has patched the PVC When the test reads the PVC Then the requested action is accepted without any error And the UID of the retrieved PVC equals the UID of the patched PVC Given the e2e test has retrieved the PVC When the test deletes the PVC Then the requested action is accepted without any error Given the e2e test has deleted the PVC When the test lists for the PVC Then the requested action is accepted without any error And the deletion of the PVC is confirmed Given the e2e test has retrieved the PV When the test deletes the PV Then the requested action is accepted without any error Given the e2e test has deleted the PV When the test lists for the PV with a labelSelector set Then the requested action is accepted without any error And the deletion of the PV is confirmed Given the e2e test has no PV or PVC When the test recreates a new PV and PVC Then the requested action is accepted without any error Given the e2e test has created a PV When the test updates the PV label Then the requested action is accepted without any error And the test finds the PV label with the required "updated" value Given the e2e test has created a PVC When the test updates the PVC label Then the requested action is accepted without any error And the test finds the PVC label with the required "updated" value Given the e2e test has updated a PVC When the test lists PVCs in all namespaces with a label selector Then the requested action is accepted without any error And only one PVC is found Given the e2e test has created a LabelSelector for the PVC When the test applies the deleteCollection action with a labelSelector Then the requested action is accepted without any error And the PVC with the label is not found Given the e2e test has created a LabelSelector for the PV When the test applies the deleteCollection action with a labelSelector Then the requested action is accepted without any error And the PV with the label is not found
Using a number of existing e2e test practices a new ginkgo test has been created to provide future Conformance coverage for the 13 endpoints. The e2e logs for this test are listed below.
[sig-storage] PersistentVolumes CSI Conformance should run through the lifecycle of a PV and a PVC /home/ii/go/src/k8s.io/kubernetes/test/e2e/storage/persistent_volumes.go:346 STEP: Creating a kubernetes client @ 07/31/23 13:58:14.575 Jul 31 13:58:14.575: INFO: >>> kubeConfig: /home/ii/.kube/config STEP: Building a namespace api object, basename pv @ 07/31/23 13:58:14.576 STEP: Waiting for a default service account to be provisioned in namespace @ 07/31/23 13:58:14.665 STEP: Waiting for kube-root-ca.crt to be provisioned in namespace @ 07/31/23 13:58:14.669 STEP: Creating initial PV and PVC @ 07/31/23 13:58:14.674 Jul 31 13:58:14.674: INFO: Creating a PV followed by a PVC STEP: Listing all PVs with the labelSelector: "e2e-pv-pool=pv-4499" @ 07/31/23 13:58:14.721 STEP: Listing PVCs in namespace "pv-4499" @ 07/31/23 13:58:14.725 STEP: Patching the PV "pv-4499-cpvlq" @ 07/31/23 13:58:14.73 STEP: Patching the PVC "pvc-r7lsv" @ 07/31/23 13:58:14.776 STEP: Getting PV "pv-4499-cpvlq" @ 07/31/23 13:58:14.797 STEP: Getting PVC "pvc-r7lsv" @ 07/31/23 13:58:14.801 STEP: Deleting PVC "pvc-r7lsv" @ 07/31/23 13:58:14.809 STEP: Confirm deletion of PVC "pvc-r7lsv" @ 07/31/23 13:58:14.819 STEP: Deleting PV "pv-4499-cpvlq" @ 07/31/23 13:58:15.825 STEP: Confirm deletion of PV "pv-4499-cpvlq" @ 07/31/23 13:58:15.85 STEP: Recreating another PV & PVC @ 07/31/23 13:58:16.855 Jul 31 13:58:16.855: INFO: Creating a PV followed by a PVC STEP: Updating the PV "pv-4499-hrfvs" @ 07/31/23 13:58:16.894 STEP: Updating the PVC "pvc-kplcf" @ 07/31/23 13:58:16.916 STEP: Listing PVCs in all namespaces with the labelSelector: "pvc-kplcf=updated" @ 07/31/23 13:58:16.938 STEP: Deleting PVC "pvc-kplcf" via DeleteCollection @ 07/31/23 13:58:16.943 STEP: Confirm deletion of PVC "pvc-kplcf" @ 07/31/23 13:58:16.959 STEP: Deleting PV "pv-4499-hrfvs" via DeleteCollection @ 07/31/23 13:58:17.964 STEP: Confirm deletion of PV "pv-4499-hrfvs" @ 07/31/23 13:58:17.982
This query shows the following PV and PVC endpoints are hit within a short period of running this e2e test.
select distinct substring(endpoint from '\w+') AS endpoint,
right(useragent,50) AS useragent
from testing.audit_event
where useragent like 'e2e%should%'
and release_date::BIGINT > round(((EXTRACT(EPOCH FROM NOW()))::numeric)*1000,0) - 20000
and endpoint ilike '%Volume%'
order by endpoint
limit 20;
endpoint | useragent
-------------------------------------------------------+----------------------------------------------------
createCoreV1NamespacedPersistentVolumeClaim | should run through the lifecycle of a PV and a PVC
createCoreV1PersistentVolume | should run through the lifecycle of a PV and a PVC
deleteCoreV1CollectionNamespacedPersistentVolumeClaim | should run through the lifecycle of a PV and a PVC
deleteCoreV1CollectionPersistentVolume | should run through the lifecycle of a PV and a PVC
deleteCoreV1NamespacedPersistentVolumeClaim | should run through the lifecycle of a PV and a PVC
deleteCoreV1PersistentVolume | should run through the lifecycle of a PV and a PVC
listCoreV1NamespacedPersistentVolumeClaim | should run through the lifecycle of a PV and a PVC
listCoreV1PersistentVolume | should run through the lifecycle of a PV and a PVC
listCoreV1PersistentVolumeClaimForAllNamespaces | should run through the lifecycle of a PV and a PVC
patchCoreV1NamespacedPersistentVolumeClaim | should run through the lifecycle of a PV and a PVC
patchCoreV1PersistentVolume | should run through the lifecycle of a PV and a PVC
readCoreV1NamespacedPersistentVolumeClaim | should run through the lifecycle of a PV and a PVC
readCoreV1PersistentVolume | should run through the lifecycle of a PV and a PVC
replaceCoreV1NamespacedPersistentVolumeClaim | should run through the lifecycle of a PV and a PVC
replaceCoreV1PersistentVolume | should run through the lifecycle of a PV and a PVC
(15 rows)
If a test with these calls gets merged, test coverage will go up by 13 points
This test is also created with the goal of conformance promotion.
/sig testing
/sig architecture
/area conformance