- [X] APISnoop org-flow : CoreV1PV-PVC-StatusTest.org
- [X] test approval issue : Write e2e test for PersistentVolumeStatus & PersistentVolumeClaimStatus Endpoints +6 Endpoints #120891
- [X] test pr : Write e2e test for PersistentVolumeStatus & PersistentVolumeClaimStatus Endpoints +6 Endpoints #120892
- [X] two weeks soak start date : 17 Oct 2023 testgrid-link
- [X] two weeks soak end date : 31 Oct 2023
- [X] test promotion pr : Promote e2e test for PersistentVolumeStatus & PersistentVolumeClaimStatus Endpoints +6 Endpoints #121331
- [X] remove endpoints from pending_eligible_endpoints.yaml : Remove PersistentVolumeStatus & PersistentVolumeClaimStatus Endpoints from pending_eligible_endpoints.yaml #121332
According to following APIsnoop query, there are three 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%'
order by kind, endpoint
limit 10;
endpoint | path | kind
----------------------------------------------------+---------------------------------------------------------------------+-----------------------
patchCoreV1PersistentVolumeStatus | /api/v1/persistentvolumes/{name}/status | PersistentVolume
readCoreV1PersistentVolumeStatus | /api/v1/persistentvolumes/{name}/status | PersistentVolume
replaceCoreV1PersistentVolumeStatus | /api/v1/persistentvolumes/{name}/status | PersistentVolume
patchCoreV1NamespacedPersistentVolumeClaimStatus | /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status | PersistentVolumeClaim
readCoreV1NamespacedPersistentVolumeClaimStatus | /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status | PersistentVolumeClaim
replaceCoreV1NamespacedPersistentVolumeClaimStatus | /api/v1/namespaces/{namespace}/persistentvolumeclaims/{name}/status | PersistentVolumeClaim
(6 rows)
- https://apisnoop.cncf.io/1.28.0/stable/core/patchCoreV1NamespacedPersistentVolumeClaimStatus
- https://apisnoop.cncf.io/1.28.0/stable/core/readCoreV1NamespacedPersistentVolumeClaimStatus
- https://apisnoop.cncf.io/1.28.0/stable/core/replaceCoreV1NamespacedPersistentVolumeClaimStatus
- https://apisnoop.cncf.io/1.28.0/stable/core/patchCoreV1PersistentVolumeStatus
- https://apisnoop.cncf.io/1.28.0/stable/core/readCoreV1PersistentVolumeStatus
- https://apisnoop.cncf.io/1.28.0/stable/core/replaceCoreV1PersistentVolumeStatus
- 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 status endpoints for a pv and a pvc Given the e2e test has created a PVC When the test reads the PVC status Then the requested action is accepted without any error And the phase of the retrieved PVC status equals "Pending" Given the e2e test has created a PV When the test reads the PV status Then the requested action is accepted without any error And the phase of the retrieved PVC status equals "Available" Given the e2e test has created a PVC When the test patches the PVC status with a new condition Then the requested action is accepted without any error And the test finds the new PVC status condition with the required "patched" values Given the e2e test has created a PV When the test patches the PV status with a new "message" and "reason" Then the requested action is accepted without any error And the test finds the new "patched" values for the PV status "message" and "reason" Given the e2e test has patched a PVC status When the test updates the PVC status with a new condition Then the requested action is accepted without any error And the test finds the new PVC status condition with the required "updated" values Given the e2e test has patched a PV status When the test updates the PV status with a new "message" and "reason" Then the requested action is accepted without any error And the test finds the new "updated" values for the PV status "message" and "reason"
Using a number of existing e2e test practices a new ginkgo test has been created to provide future Conformance coverage for the 6 endpoints. The e2e logs for this test are listed below.
[sig-storage] PersistentVolumes CSI Conformance should apply changes to a pv/pvc status /home/ii/go/src/k8s.io/kubernetes/test/e2e/storage/persistent_volumes.go:655 STEP: Creating a kubernetes client @ 09/26/23 11:47:17.336 Sep 26 11:47:17.336: INFO: >>> kubeConfig: /home/ii/.kube/config STEP: Building a namespace api object, basename pv @ 09/26/23 11:47:17.336 STEP: Waiting for a default service account to be provisioned in namespace @ 09/26/23 11:47:17.378 STEP: Waiting for kube-root-ca.crt to be provisioned in namespace @ 09/26/23 11:47:17.383 STEP: Creating initial PV and PVC @ 09/26/23 11:47:17.388 Sep 26 11:47:17.388: INFO: Creating a PV followed by a PVC STEP: Listing all PVs with the labelSelector: "e2e-pv-pool=pv-6988" @ 09/26/23 11:47:17.419 STEP: Listing PVCs in namespace "pv-6988" @ 09/26/23 11:47:17.428 STEP: Reading "pvc-4rl4x" Status @ 09/26/23 11:47:17.435 STEP: Reading "pv-6988-2nthc" Status @ 09/26/23 11:47:17.439 STEP: Patching "pvc-4rl4x" Status @ 09/26/23 11:47:17.454 STEP: Patching "pv-6988-2nthc" Status @ 09/26/23 11:47:17.465 STEP: Updating "pvc-4rl4x" Status @ 09/26/23 11:47:17.487 STEP: Updating "pv-6988-2nthc" Status @ 09/26/23 11:47:17.501 Sep 26 11:47:17.523: INFO: AfterEach: deleting 1 PVCs and 1 PVs... Sep 26 11:47:17.524: INFO: Deleting PersistentVolumeClaim "pvc-4rl4x" Sep 26 11:47:17.534: INFO: Deleting PersistentVolume "pv-6988-2nthc" Sep 26 11:47:17.544: INFO: Waiting up to 7m0s for all (but 0) nodes to be ready STEP: Destroying namespace "pv-6988" for this suite. @ 09/26/23 11:47:17.55
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,39) 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 '%Status%'
order by endpoint
limit 10;
endpoint | useragent
----------------------------------------------------+-----------------------------------------
patchCoreV1NamespacedPersistentVolumeClaimStatus | should apply changes to a pv/pvc status
patchCoreV1PersistentVolumeStatus | should apply changes to a pv/pvc status
readCoreV1NamespacedPersistentVolumeClaimStatus | should apply changes to a pv/pvc status
readCoreV1PersistentVolumeStatus | should apply changes to a pv/pvc status
replaceCoreV1NamespacedPersistentVolumeClaimStatus | should apply changes to a pv/pvc status
replaceCoreV1PersistentVolumeStatus | should apply changes to a pv/pvc status
(6 rows)
If a test with these calls gets merged, test coverage will go up by 6 points
This test is also created with the goal of conformance promotion.
/sig testing
/sig architecture
/area conformance