From 57b380179316b9fa00a5a3a97833ebdf5755372b Mon Sep 17 00:00:00 2001 From: Jeff Mitchell Date: Tue, 15 Aug 2017 17:06:38 -0400 Subject: [PATCH] Add core sealing to test cluster shutdown --- vault/testing.go | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/vault/testing.go b/vault/testing.go index 87eb40bc08..4dfa1cf816 100644 --- a/vault/testing.go +++ b/vault/testing.go @@ -617,8 +617,8 @@ type TestCluster struct { TempDir string } -func (t *TestCluster) Start() { - for _, core := range t.Cores { +func (c *TestCluster) Start() { + for _, core := range c.Cores { if core.Server != nil { for _, ln := range core.Listeners { go core.Server.Serve(ln) @@ -627,8 +627,9 @@ func (t *TestCluster) Start() { } } -func (t *TestCluster) Cleanup() { - for _, core := range t.Cores { +func (c *TestCluster) Cleanup() { + // Close listeners + for _, core := range c.Cores { if core.Listeners != nil { for _, ln := range core.Listeners { ln.Close() @@ -636,8 +637,30 @@ func (t *TestCluster) Cleanup() { } } - if t.TempDir != "" { - os.RemoveAll(t.TempDir) + // Seal the cores + for _, core := range c.Cores { + if err := core.Shutdown(); err != nil { + continue + } + timeout := time.Now().Add(60 * time.Second) + for { + if time.Now().After(timeout) { + continue + } + sealed, err := core.Sealed() + if err != nil { + continue + } + if sealed { + break + } + time.Sleep(250 * time.Millisecond) + } + } + + // Remove any temp dir that exists + if c.TempDir != "" { + os.RemoveAll(c.TempDir) } // Give time to actually shut down/clean up before the next test