~rogpeppe/juju-core/438-local-instance-Addresses

« back to all changes in this revision

Viewing changes to state/tools_test.go

[r=fwereade],[bug=1234035] Fix upgrade 1.14 -> 1.15

This adds a Tools() API call to provisioner API,
similarly to the upgrader API. Common code factored
out into apiserver/common/tools.go.

SetAgentTools() renamed to SetAgentVersion() in
machine and unit state types. Also renamed a few
types in params to be shorter or better reflect
what are they about. Added DEPRECATE(v1.18) tags
to bits of the API that need cleanup.

Live tested on EC2 - after copying the tools from
/tools/releases/ to /tools/ the upgrade proceeds
and finishes successfully.

https://codereview.appspot.com/14231044/

R=fwereade, jameinel

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
type tooler interface {
19
19
        AgentTools() (*tools.Tools, error)
20
 
        SetAgentTools(t *tools.Tools) error
 
20
        SetAgentVersion(v version.Binary) error
21
21
        Life() state.Life
22
22
        Refresh() error
23
23
        Destroy() error
45
45
        c.Assert(t, gc.IsNil)
46
46
        c.Assert(err, jc.Satisfies, errors.IsNotFoundError)
47
47
 
48
 
        err = obj.SetAgentTools(&tools.Tools{})
49
 
        c.Assert(err, gc.ErrorMatches, fmt.Sprintf("cannot set agent tools for %s: empty series or arch", agent))
50
 
        err = obj.SetAgentTools(&tools.Tools{URL: "foo", Version: version.Current})
51
 
        c.Assert(err, gc.ErrorMatches, fmt.Sprintf("cannot set agent tools for %s: empty size or checksum", agent))
52
 
        t2 := newTools("7.8.9-foo-bar", "http://arble.tgz")
53
 
        err = obj.SetAgentTools(t2)
 
48
        err = obj.SetAgentVersion(version.Binary{})
 
49
        c.Assert(err, gc.ErrorMatches, fmt.Sprintf("cannot set agent version for %s: empty series or arch", agent))
 
50
 
 
51
        v2 := version.MustParseBinary("7.8.9-foo-bar")
 
52
        err = obj.SetAgentVersion(v2)
54
53
        c.Assert(err, gc.IsNil)
55
54
        t3, err := obj.AgentTools()
56
55
        c.Assert(err, gc.IsNil)
57
 
        c.Assert(t3, gc.DeepEquals, t2)
 
56
        c.Assert(t3.Version, gc.DeepEquals, v2)
58
57
        err = obj.Refresh()
59
58
        c.Assert(err, gc.IsNil)
60
59
        t3, err = obj.AgentTools()
61
60
        c.Assert(err, gc.IsNil)
62
 
        c.Assert(t3, gc.DeepEquals, t2)
 
61
        c.Assert(t3.Version, gc.DeepEquals, v2)
63
62
 
64
63
        testWhenDying(c, obj, noErr, deadErr, func() error {
65
 
                return obj.SetAgentTools(t2)
 
64
                return obj.SetAgentVersion(v2)
66
65
        })
67
66
}
68
67