You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
consul/test-integ/peering_commontopo/sharedtopology_test.go

86 lines
2.4 KiB

[COMPLIANCE] License changes (#18443) * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Adding explicit MPL license for sub-package This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository. * Updating the license from MPL to Business Source License Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at <Blog URL>, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl. * add missing license headers * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 * Update copyright file headers to BUSL-1.1 --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
1 year ago
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package peering
import (
"flag"
"testing"
)
// Tests that use commonTopo should implement sharedTopoSuite.
//
// Tests that use commonTopo are either cooperative or non-cooperative. Non-cooperative
// uses of commonTopo include is anything that may interfere with other tests, namely
// mutations, such as:
// - any calls to commonTopo.Relaunch; this is generally disruptive to other tests
// - stopping or disabling nodes
// - ...
//
// Cooperative tests should just call testFuncMayReuseCommonTopo() to ensure they
// are run in the correct `sharetopo` mode. They should also ensure they are included
// in the commonTopoSuites slice in TestSuitesOnSharedTopo.
type sharedTopoSuite interface {
testName() string
setup(*testing.T, *commonTopo)
test(*testing.T, *commonTopo)
}
var flagNoShareTopo = flag.Bool("no-share-topo", false, "do not share topology; run each test in its own isolated topology")
func runShareableSuites(t *testing.T, suites []sharedTopoSuite) {
t.Helper()
if !*flagNoShareTopo {
names := []string{}
for _, s := range suites {
names = append(names, s.testName())
}
t.Skipf(`Will run as part of "TestSuitesOnSharedTopo": %v`, names)
}
ct := NewCommonTopo(t)
for _, s := range suites {
s.setup(t, ct)
}
ct.Launch(t)
for _, s := range suites {
s := s
t.Run(s.testName(), func(t *testing.T) {
t.Parallel()
s.test(t, ct)
})
}
}
// Tests that can share topo must implement sharedTopoSuite and be appended to the sharedTopoSuites
// slice inside
func TestSuitesOnSharedTopo(t *testing.T) {
if *flagNoShareTopo {
t.Skip(`shared topo suites disabled by -no-share-topo`)
}
ct := NewCommonTopo(t)
sharedTopoSuites := []sharedTopoSuite{}
sharedTopoSuites = append(sharedTopoSuites, ac1BasicSuites...)
sharedTopoSuites = append(sharedTopoSuites, ac2DiscoChainSuites...)
sharedTopoSuites = append(sharedTopoSuites, ac3SvcDefaultsSuites...)
sharedTopoSuites = append(sharedTopoSuites, ac4ProxyDefaultsSuites...)
sharedTopoSuites = append(sharedTopoSuites, ac5_1NoSvcMeshSuites...)
for _, s := range sharedTopoSuites {
s.setup(t, ct)
}
ct.Launch(t)
for _, s := range sharedTopoSuites {
s := s
t.Run(s.testName(), func(t *testing.T) {
t.Parallel()
s.test(t, ct)
})
}
}
func TestCommonTopologySetup(t *testing.T) {
ct := NewCommonTopo(t)
ct.Launch(t)
}