integration:svm: refactor utils

- remove unused receiver from getETCDPathForResource()
- flatten API discovery loop
This commit is contained in:
Stanislav Láznička 2025-02-17 16:01:34 +01:00
parent 728dc0d8c7
commit faf5b3ec76
No known key found for this signature in database
GPG Key ID: F8D8054395A1D157

View File

@ -389,7 +389,7 @@ func (svm *svmTest) createSecret(ctx context.Context, t *testing.T, name, namesp
func (svm *svmTest) getRawSecretFromETCD(t *testing.T, name, namespace string) ([]byte, error) {
t.Helper()
secretETCDPath := svm.getETCDPathForResource(t, svm.storageConfig.Prefix, "", "secrets", name, namespace)
secretETCDPath := getETCDPathForResource(t, svm.storageConfig.Prefix, "", "secrets", name, namespace)
etcdResponse, err := svm.readRawRecordFromETCD(t, secretETCDPath)
if err != nil {
return nil, fmt.Errorf("failed to read %s from etcd: %w", secretETCDPath, err)
@ -397,7 +397,7 @@ func (svm *svmTest) getRawSecretFromETCD(t *testing.T, name, namespace string) (
return etcdResponse.Kvs[0].Value, nil
}
func (svm *svmTest) getETCDPathForResource(t *testing.T, storagePrefix, group, resource, name, namespaceName string) string {
func getETCDPathForResource(t *testing.T, storagePrefix, group, resource, name, namespaceName string) string {
t.Helper()
groupResource := resource
if group != "" {
@ -433,7 +433,7 @@ func (svm *svmTest) readRawRecordFromETCD(t *testing.T, path string) (*clientv3.
func (svm *svmTest) getRawCRFromETCD(t *testing.T, name, namespace, crdGroup, crdName string) ([]byte, error) {
t.Helper()
crdETCDPath := svm.getETCDPathForResource(t, svm.storageConfig.Prefix, crdGroup, crdName, name, namespace)
crdETCDPath := getETCDPathForResource(t, svm.storageConfig.Prefix, crdGroup, crdName, name, namespace)
etcdResponse, err := svm.readRawRecordFromETCD(t, crdETCDPath)
if err != nil {
t.Fatalf("failed to read %s from etcd: %v", crdETCDPath, err)
@ -807,29 +807,30 @@ func (svm *svmTest) waitForCRDUpdate(
return false, fmt.Errorf("failed to get server groups and resources: %w", err)
}
for _, api := range apiGroups {
if api.Name == crdGroup {
var servingVersions []string
for _, apiVersion := range api.Versions {
servingVersions = append(servingVersions, apiVersion.Version)
}
sort.Strings(servingVersions)
if api.Name != crdGroup {
continue
}
var servingVersions []string
for _, apiVersion := range api.Versions {
servingVersions = append(servingVersions, apiVersion.Version)
}
sort.Strings(servingVersions)
// Check if the serving versions are as expected
if reflect.DeepEqual(expectedServingVersions, servingVersions) {
expectedHash := endpointsdiscovery.StorageVersionHash(crdGroup, expectedStorageVersion, crdKind)
resourceList, err := svm.discoveryClient.ServerResourcesForGroupVersion(crdGroup + "/" + api.PreferredVersion.Version)
if err != nil {
return false, fmt.Errorf("failed to get server resources for group version: %w", err)
}
// Check if the serving versions are as expected
if !reflect.DeepEqual(expectedServingVersions, servingVersions) {
continue
}
// Check if the storage version is as expected
for _, resource := range resourceList.APIResources {
if resource.Kind == crdKind {
if resource.StorageVersionHash == expectedHash {
return true, nil
}
}
}
expectedHash := endpointsdiscovery.StorageVersionHash(crdGroup, expectedStorageVersion, crdKind)
resourceList, err := svm.discoveryClient.ServerResourcesForGroupVersion(crdGroup + "/" + api.PreferredVersion.Version)
if err != nil {
return false, fmt.Errorf("failed to get server resources for group version: %w", err)
}
// Check if the storage version is as expected
for _, resource := range resourceList.APIResources {
if resource.Kind == crdKind && resource.StorageVersionHash == expectedHash {
return true, nil
}
}
}