fed: Improve e2e framework setup/teardown

- reuse default framework setup rather than duplicating
 - skip namespace creation for each test in hosting cluster
 - ensure FederationAfterEach is called if BeforeEach fails
This commit is contained in:
Maru Newby 2017-04-04 17:25:21 -07:00
parent 6170378764
commit e769c33de4

View File

@ -40,33 +40,40 @@ import (
type Framework struct {
*framework.Framework
// To make sure that this framework cleans up after itself, no matter what,
// we install a Cleanup action before each test and clear it after. If we
// should abort, the AfterSuite hook should run all Cleanup actions.
cleanupHandle framework.CleanupActionHandle
FederationClientset *federation_clientset.Clientset
FederationNamespace *v1.Namespace
}
func NewDefaultFederatedFramework(baseName string) *Framework {
options := framework.FrameworkOptions{
ClientQPS: 20,
ClientBurst: 50,
}
f := &Framework{}
f := &Framework{&framework.Framework{
BaseName: baseName,
AddonResourceConstraints: make(map[string]framework.ResourceConstraint),
Options: options,
ClientSet: nil,
}, nil, &v1.Namespace{}}
BeforeEach(f.BeforeEach)
BeforeEach(f.FederationBeforeEach)
// Register the federation cleanup before initializing the default
// e2e framework to ensure it gets called before the default
// framework's cleanup.
AfterEach(f.FederationAfterEach)
AfterEach(f.AfterEach)
f.Framework = framework.NewDefaultFramework(baseName)
f.Framework.SkipNamespaceCreation = true
// Register the federation setup after initializing the default
// e2e framework to ensure it gets called after the default
// framework's setup.
BeforeEach(f.FederationBeforeEach)
return f
}
// FederationBeforeEach checks for federation apiserver is ready and makes a namespace.
func (f *Framework) FederationBeforeEach() {
// The fact that we need this feels like a bug in ginkgo.
// https://github.com/onsi/ginkgo/issues/222
f.cleanupHandle = framework.AddCleanupAction(f.FederationAfterEach)
if f.FederationClientset == nil {
By("Creating a release 1.5 federation Clientset")
var err error
@ -122,6 +129,8 @@ func (f *Framework) deleteFederationNs() {
// FederationAfterEach deletes the namespace, after reading its events.
func (f *Framework) FederationAfterEach() {
framework.RemoveCleanupAction(f.cleanupHandle)
// DeleteNamespace at the very end in defer, to avoid any
// expectation failures preventing deleting the namespace.
defer func() {