Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 25 additions & 3 deletions cmd/sippy/seed_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,12 +176,23 @@ var syntheticJobs = []syntheticJobDef{
"Suite": "unknown", "Upgrade": "micro", "LayeredProduct": "none",
},
},
// Azure job: Platform:azure is NOT in the default seed view, so results
// from this job should be filtered out when the default view is active.
{
nameTemplate: "periodic-ci-openshift-release-master-ci-%s-e2e-azure-ovn-amd64",
variants: map[string]string{
"Platform": "azure", "Architecture": "amd64", "Network": "ovn",
"Topology": "ha", "Installer": "ipi", "FeatureSet": "default",
"Suite": "parallel", "Upgrade": "none", "LayeredProduct": "none",
},
},
}

// Job template constants for referencing specific jobs in test specs.
const awsAmd64Parallel = "periodic-ci-openshift-release-master-ci-%s-e2e-aws-ovn-amd64"
const awsArm64Parallel = "periodic-ci-openshift-release-master-ci-%s-e2e-aws-ovn-arm64"
const gcpAmd64Parallel = "periodic-ci-openshift-release-master-ci-%s-e2e-gcp-ovn-amd64"
const azureAmd64Parallel = "periodic-ci-openshift-release-master-ci-%s-e2e-azure-ovn-amd64"

// allJobTemplates returns name templates from syntheticJobs for use in test specs
// that should run on every job (e.g. install tests).
Expand Down Expand Up @@ -227,13 +238,15 @@ var syntheticTests = []syntheticTestSpec{
},

// --- ExtremeRegression: extreme on aws/amd64, significant on others ---
// Also runs on azure (not in default view) to test variant filtering.
{
testID: "test-extreme-regression", testName: "[sig-etcd] etcd leader changes are not excessive",
component: "comp-ExtremeRegression", capabilities: []string{"cap1"},
jobCounts: map[string]map[string]testCount{
awsAmd64Parallel: {"4.21": {200, 190, 0}, "4.22": {200, 140, 0}},
awsArm64Parallel: {"4.21": {200, 190, 0}, "4.22": {200, 170, 0}},
gcpAmd64Parallel: {"4.21": {200, 190, 0}, "4.22": {200, 170, 0}},
awsAmd64Parallel: {"4.21": {200, 190, 0}, "4.22": {200, 140, 0}},
awsArm64Parallel: {"4.21": {200, 190, 0}, "4.22": {200, 170, 0}},
gcpAmd64Parallel: {"4.21": {200, 190, 0}, "4.22": {200, 170, 0}},
azureAmd64Parallel: {"4.21": {200, 190, 0}, "4.22": {200, 140, 0}},
},
},

Expand Down Expand Up @@ -331,6 +344,15 @@ var syntheticTests = []syntheticTestSpec{
},
},

// --- Tests on azure (Platform:azure not in the default view, used to test variant filtering) ---
{
testID: "test-azure-networking", testName: "[sig-network] Azure load balancer should distribute traffic",
component: "comp-AzureNetworking", capabilities: []string{"networking"},
jobCounts: map[string]map[string]testCount{
azureAmd64Parallel: {"4.21": {100, 95, 0}, "4.22": {100, 80, 0}},
},
},

// --- Install / health indicator tests: run on every job, every release ---
{
testID: "test-install-overall", testName: "install should succeed: overall",
Expand Down
22 changes: 21 additions & 1 deletion pkg/api/componentreadiness/dataprovider/postgres/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,15 @@ func matchesIncludeVariants(variants map[string]string, includeVariants map[stri
return true
}

func hasCapabilityIntersection(testCaps []string, requestedCaps map[string]bool) bool {
for _, c := range testCaps {
if requestedCaps[c] {
return true
}
}
return false
}

// --- MetadataQuerier ---

func (p *PostgresProvider) QueryJobVariants(ctx context.Context) (crtest.JobVariants, []error) {
Expand Down Expand Up @@ -340,7 +349,7 @@ GROUP BY tow.unique_id, t.name, s.name, tow.component, tow.capabilities, d.prow_

func (p *PostgresProvider) queryTestStatus(ctx context.Context, release string, start, end time.Time,
_ crtest.JobVariants, includeVariants map[string][]string,
dbGroupBy map[string]bool) (map[string]crstatus.TestStatus, []error) {
dbGroupBy map[string]bool, capabilities []string) (map[string]crstatus.TestStatus, []error) {

var rows []testStatusRow
if err := p.dbc.DB.WithContext(ctx).Raw(testStatusQuery, release, start, end, release, release, start, end).Scan(&rows).Error; err != nil {
Expand All @@ -361,6 +370,11 @@ func (p *PostgresProvider) queryTestStatus(ctx context.Context, release string,
return nil, []error{err}
}

capSet := make(map[string]bool, len(capabilities))
for _, c := range capabilities {
capSet[c] = true
}

result := map[string]crstatus.TestStatus{}
for _, row := range rows {
variants, ok := jobVariantMap[row.ProwJobID]
Expand All @@ -372,6 +386,10 @@ func (p *PostgresProvider) queryTestStatus(ctx context.Context, release string,
continue
}

if len(capSet) > 0 && !hasCapabilityIntersection(row.Capabilities, capSet) {
continue
}

filtered := filterByDBGroupBy(variants, dbGroupBy)
key := crtest.KeyWithVariants{
TestID: row.TestID,
Expand Down Expand Up @@ -456,6 +474,7 @@ func (p *PostgresProvider) QueryBaseTestStatus(ctx context.Context, reqOptions r
allJobVariants,
includeVariants,
dbGroupBy,
reqOptions.Capabilities,
)
}

Expand All @@ -480,6 +499,7 @@ func (p *PostgresProvider) QuerySampleTestStatus(ctx context.Context, reqOptions
allJobVariants,
includeVariants,
dbGroupBy,
reqOptions.Capabilities,
)
}

Expand Down
19 changes: 15 additions & 4 deletions sippy-ng/src/component_readiness/CompReadyVars.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,15 +189,19 @@ export const CompReadyVarsProvider = ({ children }) => {
const [includeVariantsCheckedItems, setIncludeVariantsCheckedItems] =
useState({})
const replaceIncludeVariantsCheckedItems = (variant, checkedItems) => {
includeVariantsCheckedItems[variant] = checkedItems
setIncludeVariantsCheckedItems(includeVariantsCheckedItems)
setIncludeVariantsCheckedItems({
...includeVariantsCheckedItems,
[variant]: checkedItems,
})
}
// The list of individual variants (e.g. "Architecture:arm64") that are checked for cross-variant comparison
const [compareVariantsCheckedItems, setCompareVariantsCheckedItems] =
useState([])
const replaceCompareVariantsCheckedItems = (variant, checkedItems) => {
compareVariantsCheckedItems[variant] = checkedItems
setCompareVariantsCheckedItems(compareVariantsCheckedItems)
setCompareVariantsCheckedItems({
...compareVariantsCheckedItems,
[variant]: checkedItems,
})
}
// The list of variant groups (e.g. "Architecture") that have been selected for cross-variant comparison
const [variantCrossCompare, setVariantCrossCompare] = useState([])
Expand Down Expand Up @@ -427,6 +431,13 @@ export const CompReadyVarsProvider = ({ children }) => {
setVariantCrossCompare(view.variant_options.variant_cross_compare)
if (view.variant_options.hasOwnProperty('compare_variants'))
setCompareVariantsCheckedItems(view.variant_options.compare_variants)
if (view.test_filters) {
if (view.test_filters.lifecycles)
setTestLifecycles(view.test_filters.lifecycles)
if (view.test_filters.capabilities)
setTestCapabilities(view.test_filters.capabilities)
}

if (view.advanced_options.hasOwnProperty('confidence'))
setConfidence(view.advanced_options.confidence)
if (view.advanced_options.hasOwnProperty('pity_factor'))
Expand Down