~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/worker/instancepoller/worker_test.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
        "github.com/juju/juju/network"
22
22
        "github.com/juju/juju/provider/dummy"
23
23
        "github.com/juju/juju/state"
 
24
        "github.com/juju/juju/status"
24
25
        coretesting "github.com/juju/juju/testing"
25
26
        "github.com/juju/juju/worker"
26
27
)
63
64
                c.Assert(worker.Stop(w), gc.IsNil)
64
65
        }()
65
66
 
 
67
        // TODO(perrito666) make this dependent on a juju status
66
68
        checkInstanceInfo := func(index int, m machine, expectedStatus string) bool {
67
69
                isProvisioned := true
68
 
                status, err := m.InstanceStatus()
 
70
                instanceStatus, err := m.InstanceStatus()
69
71
                if params.IsCodeNotProvisioned(err) {
70
72
                        isProvisioned = false
71
73
                } else {
73
75
                }
74
76
                providerAddresses, err := m.ProviderAddresses()
75
77
                c.Assert(err, jc.ErrorIsNil)
76
 
                return reflect.DeepEqual(providerAddresses, s.addressesForIndex(index)) && (!isProvisioned || status == expectedStatus)
 
78
                // TODO(perrito666) all providers should use juju statuses instead of message.
 
79
                return reflect.DeepEqual(providerAddresses, s.addressesForIndex(index)) && (!isProvisioned || instanceStatus.Info == expectedStatus)
77
80
        }
78
81
 
79
82
        // Wait for the odd numbered machines in the
88
91
                        if i < len(machines)/2 && i%2 == 1 {
89
92
                                return checkInstanceInfo(i, m, "running")
90
93
                        }
91
 
                        status, err := m.InstanceStatus()
92
 
                        if i%2 == 0 {
93
 
                                // Even machines not provisioned yet.
94
 
                                c.Assert(err, jc.Satisfies, params.IsCodeNotProvisioned)
95
 
                        } else {
96
 
                                c.Assert(status, gc.Equals, "")
97
 
                        }
 
94
                        instanceStatus, err := m.InstanceStatus()
 
95
                        c.Logf("instance message is: %q", instanceStatus.Info)
 
96
                        c.Assert(instanceStatus.Status, gc.Equals, status.StatusPending)
98
97
                        stm, err := s.State.Machine(m.Id())
99
98
                        c.Assert(err, jc.ErrorIsNil)
100
99
                        return len(stm.Addresses()) == 0
120
119
                                return checkInstanceInfo(i, m, "running")
121
120
                        }
122
121
                        // Machines in second half still have no addresses, nor status.
123
 
                        status, err := m.InstanceStatus()
124
 
                        if i%2 == 0 {
125
 
                                // Even machines not provisioned yet.
126
 
                                c.Assert(err, jc.Satisfies, params.IsCodeNotProvisioned)
127
 
                        } else {
128
 
                                c.Assert(status, gc.Equals, "")
129
 
                        }
 
122
                        instanceStatus, err := m.InstanceStatus()
 
123
                        c.Assert(instanceStatus.Status, gc.Equals, status.StatusPending)
130
124
                        stm, err := s.State.Machine(m.Id())
131
125
                        c.Assert(err, jc.ErrorIsNil)
132
126
                        return len(stm.Addresses()) == 0