test/integration: mark certain tests as disruptive
This prevents them from running with any other test, including other parallel tests. Signed-off-by: Monis Khan <mok@vmware.com>
This commit is contained in:
parent
d22099ac33
commit
d4a7f0b3e1
@ -17,7 +17,8 @@ import (
|
|||||||
"go.pinniped.dev/test/testlib"
|
"go.pinniped.dev/test/testlib"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestAPIServingCertificateAutoCreationAndRotation(t *testing.T) {
|
// Never run this test in parallel since breaking discovery is disruptive, see main_test.go.
|
||||||
|
func TestAPIServingCertificateAutoCreationAndRotation_Disruptive(t *testing.T) {
|
||||||
env := testlib.IntegrationEnv(t)
|
env := testlib.IntegrationEnv(t)
|
||||||
defaultServingCertResourceName := env.ConciergeAppName + "-api-tls-serving-certificate"
|
defaultServingCertResourceName := env.ConciergeAppName + "-api-tls-serving-certificate"
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ func splitIntegrationTestsIntoBuckets(m *testing.M) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var serialTests, parallelTests, finalTests []testing.InternalTest
|
var serialTests, parallelTests, disruptiveTests, finalTests []testing.InternalTest
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
test := test
|
test := test
|
||||||
@ -40,9 +40,17 @@ func splitIntegrationTestsIntoBuckets(m *testing.M) {
|
|||||||
// top level tests that want the standard Go behavior of only running
|
// top level tests that want the standard Go behavior of only running
|
||||||
// parallel tests with other parallel tests should use the regular
|
// parallel tests with other parallel tests should use the regular
|
||||||
// t.Parallel() approach. this has no effect on any subtest.
|
// t.Parallel() approach. this has no effect on any subtest.
|
||||||
if strings.HasSuffix(test.Name, "_Parallel") {
|
switch {
|
||||||
|
case strings.HasSuffix(test.Name, "_Parallel"):
|
||||||
parallelTests = append(parallelTests, test)
|
parallelTests = append(parallelTests, test)
|
||||||
} else {
|
|
||||||
|
// top level integration tests the end with the string _Disruptive
|
||||||
|
// are indicating that they are never safe to run with any other
|
||||||
|
// test because they break the underlying cluster in some way.
|
||||||
|
case strings.HasSuffix(test.Name, "_Disruptive"):
|
||||||
|
disruptiveTests = append(disruptiveTests, test)
|
||||||
|
|
||||||
|
default:
|
||||||
serialTests = append(serialTests, test)
|
serialTests = append(serialTests, test)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -51,7 +59,7 @@ func splitIntegrationTestsIntoBuckets(m *testing.M) {
|
|||||||
Name: "TestIntegrationSerial",
|
Name: "TestIntegrationSerial",
|
||||||
F: func(t *testing.T) {
|
F: func(t *testing.T) {
|
||||||
_ = testlib.IntegrationEnv(t) // make sure these tests do not run during unit tests
|
_ = testlib.IntegrationEnv(t) // make sure these tests do not run during unit tests
|
||||||
t.Parallel() // outer test runs in parallel always
|
t.Parallel() // outer test always runs in parallel for this bucket
|
||||||
|
|
||||||
for _, test := range serialTests {
|
for _, test := range serialTests {
|
||||||
test := test
|
test := test
|
||||||
@ -66,7 +74,7 @@ func splitIntegrationTestsIntoBuckets(m *testing.M) {
|
|||||||
Name: "TestIntegrationParallel",
|
Name: "TestIntegrationParallel",
|
||||||
F: func(t *testing.T) {
|
F: func(t *testing.T) {
|
||||||
_ = testlib.IntegrationEnv(t) // make sure these tests do not run during unit tests
|
_ = testlib.IntegrationEnv(t) // make sure these tests do not run during unit tests
|
||||||
t.Parallel() // outer test runs in parallel always
|
t.Parallel() // outer test always runs in parallel for this bucket
|
||||||
|
|
||||||
for _, test := range parallelTests {
|
for _, test := range parallelTests {
|
||||||
test := test
|
test := test
|
||||||
@ -79,13 +87,32 @@ func splitIntegrationTestsIntoBuckets(m *testing.M) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(serialTests) > 0 {
|
disruptiveTest := testing.InternalTest{
|
||||||
finalTests = append(finalTests, serialTest)
|
Name: "TestIntegrationDisruptive",
|
||||||
|
F: func(t *testing.T) {
|
||||||
|
_ = testlib.IntegrationEnv(t) // make sure these tests do not run during unit tests
|
||||||
|
// outer test never runs in parallel for this bucket
|
||||||
|
|
||||||
|
for _, test := range disruptiveTests {
|
||||||
|
test := test
|
||||||
|
t.Run(test.Name, func(t *testing.T) {
|
||||||
|
test.F(t) // inner disruptive tests do not run in parallel
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(parallelTests) > 0 {
|
if len(parallelTests) > 0 {
|
||||||
finalTests = append(finalTests, parallelTest)
|
finalTests = append(finalTests, parallelTest)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(serialTests) > 0 {
|
||||||
|
finalTests = append(finalTests, serialTest)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(disruptiveTests) > 0 {
|
||||||
|
finalTests = append(finalTests, disruptiveTest)
|
||||||
|
}
|
||||||
|
|
||||||
*testsPointer = finalTests
|
*testsPointer = finalTests
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,8 @@ import (
|
|||||||
//
|
//
|
||||||
// Testing talking to the supervisor's port 8443 where the supervisor is terminating TLS itself is
|
// Testing talking to the supervisor's port 8443 where the supervisor is terminating TLS itself is
|
||||||
// handled by the others tests in this file.
|
// handled by the others tests in this file.
|
||||||
func TestSupervisorOIDCDiscovery(t *testing.T) {
|
// Never run this test in parallel since deleting all federation domains is disruptive, see main_test.go.
|
||||||
|
func TestSupervisorOIDCDiscovery_Disruptive(t *testing.T) {
|
||||||
env := testlib.IntegrationEnv(t)
|
env := testlib.IntegrationEnv(t)
|
||||||
client := testlib.NewSupervisorClientset(t)
|
client := testlib.NewSupervisorClientset(t)
|
||||||
|
|
||||||
@ -143,7 +144,8 @@ func TestSupervisorOIDCDiscovery(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSupervisorTLSTerminationWithSNI(t *testing.T) {
|
// Never run this test in parallel since deleting all federation domains is disruptive, see main_test.go.
|
||||||
|
func TestSupervisorTLSTerminationWithSNI_Disruptive(t *testing.T) {
|
||||||
env := testlib.IntegrationEnv(t)
|
env := testlib.IntegrationEnv(t)
|
||||||
pinnipedClient := testlib.NewSupervisorClientset(t)
|
pinnipedClient := testlib.NewSupervisorClientset(t)
|
||||||
kubeClient := testlib.NewKubernetesClientset(t)
|
kubeClient := testlib.NewKubernetesClientset(t)
|
||||||
@ -214,7 +216,8 @@ func TestSupervisorTLSTerminationWithSNI(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSupervisorTLSTerminationWithDefaultCerts(t *testing.T) {
|
// Never run this test in parallel since deleting all federation domains is disruptive, see main_test.go.
|
||||||
|
func TestSupervisorTLSTerminationWithDefaultCerts_Disruptive(t *testing.T) {
|
||||||
env := testlib.IntegrationEnv(t)
|
env := testlib.IntegrationEnv(t)
|
||||||
pinnipedClient := testlib.NewSupervisorClientset(t)
|
pinnipedClient := testlib.NewSupervisorClientset(t)
|
||||||
kubeClient := testlib.NewKubernetesClientset(t)
|
kubeClient := testlib.NewKubernetesClientset(t)
|
||||||
|
Loading…
Reference in New Issue
Block a user