Skip to content

Commit d19c202

Browse files
authored
fix: flaky nstemplateset spacerole check (#1128)
* fix spacerole check
1 parent 9bc394e commit d19c202

2 files changed

Lines changed: 20 additions & 12 deletions

File tree

testsupport/tiers/checks.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,15 @@ func (c *customTierChecks) GetExpectedTemplateRefs(_ *testing.T, _ *wait.HostAwa
134134
for i, ns := range c.tier.NSTemplateTier.Spec.Namespaces {
135135
namespaceTmplRefs[i] = ns.TemplateRef
136136
}
137+
spaceRolesTmplRefs := make(map[string]string)
138+
for i, ns := range c.tier.NSTemplateTier.Spec.SpaceRoles {
139+
spaceRolesTmplRefs[i] = ns.TemplateRef
140+
}
137141

138142
return TemplateRefs{
139143
ClusterResources: clusterResourcesTmplRef,
140144
Namespaces: namespaceTmplRefs,
145+
SpaceRoles: spaceRolesTmplRefs,
141146
}
142147
}
143148

testsupport/tiers/nstemplateset.go

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,21 +133,24 @@ func UntilNSTemplateSetHasTemplateRefs(expectedRevisions TemplateRefs) wait.NSTe
133133
if !reflect.DeepEqual(actualNamespaceTmplRefs, expectedRevisions.Namespaces) {
134134
return false
135135
}
136-
// checks that the actual SpaceRole templates match (ie, they are present in `expectedRevisions.SpaceRoles`)
137-
spaceroles:
138-
for _, r := range actual.Spec.SpaceRoles {
139-
// look-up the templateRef
140-
for _, ref := range expectedRevisions.SpaceRoles {
141-
if r.TemplateRef == ref {
142-
continue spaceroles
143-
}
144-
return false
145-
}
146-
}
147-
return true
136+
// checks that the actual spaceroles are at least subSet of the expected spaceroles ones
137+
return IsSpaceRoleSubset(expectedRevisions.SpaceRoles, actual.Spec.SpaceRoles)
148138
},
149139
Diff: func(actual *toolchainv1alpha1.NSTemplateSet) string {
150140
return fmt.Sprintf("expected NSTemplateSet '%s' to match the following cluster/namespace/spacerole revisions: %s\nbut it contained: %s", actual.Name, spew.Sdump(expectedRevisions), spew.Sdump(actual.Spec))
151141
},
152142
}
153143
}
144+
145+
func IsSpaceRoleSubset(superset map[string]string, subset []toolchainv1alpha1.NSTemplateSetSpaceRole) bool {
146+
checkset := make(map[string]bool)
147+
for _, element := range subset {
148+
checkset[element.TemplateRef] = true
149+
}
150+
for _, value := range superset {
151+
if checkset[value] {
152+
delete(checkset, value)
153+
}
154+
}
155+
return len(checkset) == 0 //this implies that checkset is subset of superset
156+
}

0 commit comments

Comments
 (0)