~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/cmd/juju/application/removeunit_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2012, 2013 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package application
 
5
 
 
6
import (
 
7
        "fmt"
 
8
 
 
9
        jc "github.com/juju/testing/checkers"
 
10
        "github.com/juju/utils/series"
 
11
        gc "gopkg.in/check.v1"
 
12
        "gopkg.in/juju/charm.v6-unstable"
 
13
 
 
14
        "github.com/juju/juju/cmd/juju/common"
 
15
        jujutesting "github.com/juju/juju/juju/testing"
 
16
        "github.com/juju/juju/state"
 
17
        "github.com/juju/juju/testcharms"
 
18
        "github.com/juju/juju/testing"
 
19
)
 
20
 
 
21
type RemoveUnitSuite struct {
 
22
        jujutesting.RepoSuite
 
23
        common.CmdBlockHelper
 
24
}
 
25
 
 
26
func (s *RemoveUnitSuite) SetUpTest(c *gc.C) {
 
27
        s.RepoSuite.SetUpTest(c)
 
28
        s.CmdBlockHelper = common.NewCmdBlockHelper(s.APIState)
 
29
        c.Assert(s.CmdBlockHelper, gc.NotNil)
 
30
        s.AddCleanup(func(*gc.C) { s.CmdBlockHelper.Close() })
 
31
}
 
32
 
 
33
var _ = gc.Suite(&RemoveUnitSuite{})
 
34
 
 
35
func runRemoveUnit(c *gc.C, args ...string) error {
 
36
        _, err := testing.RunCommand(c, NewRemoveUnitCommand(), args...)
 
37
        return err
 
38
}
 
39
 
 
40
func (s *RemoveUnitSuite) setupUnitForRemove(c *gc.C) *state.Application {
 
41
        ch := testcharms.Repo.CharmArchivePath(s.CharmsPath, "dummy")
 
42
        err := runDeploy(c, "-n", "2", ch, "dummy", "--series", series.LatestLts())
 
43
        c.Assert(err, jc.ErrorIsNil)
 
44
        curl := charm.MustParseURL(fmt.Sprintf("local:%s/dummy-1", series.LatestLts()))
 
45
        svc, _ := s.AssertService(c, "dummy", curl, 2, 0)
 
46
        return svc
 
47
}
 
48
 
 
49
func (s *RemoveUnitSuite) TestRemoveUnit(c *gc.C) {
 
50
        svc := s.setupUnitForRemove(c)
 
51
 
 
52
        err := runRemoveUnit(c, "dummy/0", "dummy/1", "dummy/2", "sillybilly/17")
 
53
        c.Assert(err, gc.ErrorMatches, `some units were not destroyed: unit "dummy/2" does not exist; unit "sillybilly/17" does not exist`)
 
54
        units, err := svc.AllUnits()
 
55
        c.Assert(err, jc.ErrorIsNil)
 
56
        for _, u := range units {
 
57
                c.Assert(u.Life(), gc.Equals, state.Dying)
 
58
        }
 
59
}
 
60
func (s *RemoveUnitSuite) TestBlockRemoveUnit(c *gc.C) {
 
61
        svc := s.setupUnitForRemove(c)
 
62
 
 
63
        // block operation
 
64
        s.BlockRemoveObject(c, "TestBlockRemoveUnit")
 
65
        err := runRemoveUnit(c, "dummy/0", "dummy/1")
 
66
        s.AssertBlocked(c, err, ".*TestBlockRemoveUnit.*")
 
67
        c.Assert(svc.Life(), gc.Equals, state.Alive)
 
68
}