1
// Copyright 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
. "launchpad.net/gocheck"
8
"launchpad.net/juju-core/juju/testing"
9
coretesting "launchpad.net/juju-core/testing"
10
"launchpad.net/juju-core/worker"
11
"launchpad.net/juju-core/worker/cleaner"
16
func TestPackage(t *stdtesting.T) {
17
coretesting.MgoTestPackage(t)
20
type CleanerSuite struct {
24
var _ = Suite(&CleanerSuite{})
26
var _ worker.Worker = (*cleaner.Cleaner)(nil)
28
func (s *CleanerSuite) TestCleaner(c *C) {
29
cr := cleaner.NewCleaner(s.State)
30
defer func() { c.Assert(cr.Stop(), IsNil) }()
32
needed, err := s.State.NeedsCleanup()
34
c.Assert(needed, Equals, false)
36
_, err = s.State.AddService("wordpress", s.AddTestingCharm(c, "wordpress"))
38
_, err = s.State.AddService("mysql", s.AddTestingCharm(c, "mysql"))
40
eps, err := s.State.InferEndpoints([]string{"wordpress", "mysql"})
42
relM, err := s.State.AddRelation(eps...)
45
needed, err = s.State.NeedsCleanup()
47
c.Assert(needed, Equals, false)
49
// Observe destroying of the relation with a watcher.
50
cw := s.State.WatchCleanups()
51
defer func() { c.Assert(cw.Stop(), IsNil) }()
56
timeout := time.After(500 * time.Millisecond)
60
case <-time.After(50 * time.Millisecond):
63
c.Fatalf("timed out waiting for cleanup")
65
needed, err = s.State.NeedsCleanup()