7
7
. "launchpad.net/gocheck"
8
8
"launchpad.net/juju-core/charm"
9
"launchpad.net/juju-core/constraints"
9
10
"launchpad.net/juju-core/state/api/params"
10
11
"launchpad.net/juju-core/state/multiwatcher"
11
12
"launchpad.net/juju-core/state/watcher"
65
66
add(¶ms.MachineInfo{
67
68
InstanceId: "i-machine-0",
68
Status: params.MachinePending,
69
Status: params.StatusPending,
71
72
wordpress, err := s.State.AddService("wordpress", AddTestingCharm(c, s.State, "wordpress"))
72
73
c.Assert(err, IsNil)
73
74
err = wordpress.SetExposed()
74
75
c.Assert(err, IsNil)
76
err = wordpress.SetConstraints(constraints.MustParse("mem=100M"))
75
78
add(¶ms.ServiceInfo{
78
CharmURL: serviceCharmURL(wordpress).String(),
81
CharmURL: serviceCharmURL(wordpress).String(),
82
Constraints: constraints.MustParse("mem=100M"),
80
84
pairs := map[string]string{"x": "12", "y": "99"}
81
85
err = wordpress.SetAnnotations(pairs)
118
122
Series: m.Series(),
119
123
MachineId: m.Id(),
120
124
Ports: []params.Port{},
121
Status: params.UnitPending,
125
Status: params.StatusPending,
123
127
pairs := map[string]string{"name": fmt.Sprintf("bar %d", i)}
124
128
err = wu.SetAnnotations(pairs)
131
135
err = m.SetProvisioned(InstanceId("i-"+m.Tag()), "fake_nonce")
132
136
c.Assert(err, IsNil)
133
err = m.SetStatus(params.MachineError, m.Tag())
137
err = m.SetStatus(params.StatusError, m.Tag())
134
138
c.Assert(err, IsNil)
135
139
add(¶ms.MachineInfo{
136
140
Id: fmt.Sprint(i + 1),
137
141
InstanceId: "i-" + m.Tag(),
138
Status: params.MachineError,
142
Status: params.StatusError,
139
143
StatusInfo: m.Tag(),
141
145
err = wu.AssignToMachine(m)
237
241
setUp: func(c *C, st *State) {
238
242
m, err := st.AddMachine("series", JobHostUnits)
239
243
c.Assert(err, IsNil)
240
err = m.SetStatus(params.MachineError, "failure")
244
err = m.SetStatus(params.StatusError, "failure")
241
245
c.Assert(err, IsNil)
243
247
change: watcher.Change{
256
260
add: []params.EntityInfo{
257
261
¶ms.MachineInfo{
259
Status: params.MachineError,
263
Status: params.StatusError,
260
264
StatusInfo: "another failure",
328
332
PrivateAddress: "private",
330
334
Ports: []params.Port{{"tcp", 12345}},
331
Status: params.UnitError,
335
Status: params.StatusError,
332
336
StatusInfo: "failure",
336
340
about: "unit is updated if it's in backing and in multiwatcher.Store",
337
341
add: []params.EntityInfo{¶ms.UnitInfo{
338
342
Name: "wordpress/0",
339
Status: params.UnitError,
343
Status: params.StatusError,
340
344
StatusInfo: "another failure",
342
346
setUp: func(c *C, st *State) {
360
364
Series: "series",
361
365
PublicAddress: "public",
362
366
Ports: []params.Port{{"udp", 17070}},
363
Status: params.UnitError,
367
Status: params.StatusError,
364
368
StatusInfo: "another failure",
543
547
about: "no change if status is not in backing",
544
548
add: []params.EntityInfo{¶ms.UnitInfo{
545
549
Name: "wordpress/0",
546
Status: params.UnitError,
550
Status: params.StatusError,
547
551
StatusInfo: "failure",
549
553
setUp: func(*C, *State) {},
562
566
about: "status is changed if the unit exists in the store",
563
567
add: []params.EntityInfo{¶ms.UnitInfo{
564
568
Name: "wordpress/0",
565
Status: params.UnitError,
569
Status: params.StatusError,
566
570
StatusInfo: "failure",
568
572
setUp: func(c *C, st *State) {
570
574
c.Assert(err, IsNil)
571
575
u, err := wordpress.AddUnit()
572
576
c.Assert(err, IsNil)
573
err = u.SetStatus(params.UnitStarted, "")
577
err = u.SetStatus(params.StatusStarted, "")
574
578
c.Assert(err, IsNil)
576
580
change: watcher.Change{
596
600
about: "no change if status is not in backing",
597
601
add: []params.EntityInfo{¶ms.MachineInfo{
599
Status: params.MachineError,
603
Status: params.StatusError,
600
604
StatusInfo: "failure",
602
606
setUp: func(*C, *State) {},
607
611
expectContents: []params.EntityInfo{¶ms.MachineInfo{
609
Status: params.MachineError,
613
Status: params.StatusError,
610
614
StatusInfo: "failure",
613
617
about: "status is changed if the machine exists in the store",
614
618
add: []params.EntityInfo{¶ms.MachineInfo{
616
Status: params.MachineError,
620
Status: params.StatusError,
617
621
StatusInfo: "failure",
619
623
setUp: func(c *C, st *State) {
620
624
m, err := st.AddMachine("series", JobHostUnits)
621
625
c.Assert(err, IsNil)
622
err = m.SetStatus(params.MachineStarted, "")
626
err = m.SetStatus(params.StatusStarted, "")
623
627
c.Assert(err, IsNil)
625
629
change: watcher.Change{
629
633
expectContents: []params.EntityInfo{
630
634
¶ms.MachineInfo{
632
Status: params.MachineStarted,
636
Status: params.StatusStarted,
640
// Service constraints changes
642
about: "no service in state -> do nothing",
643
setUp: func(c *C, st *State) {},
644
change: watcher.Change{
649
about: "no change if service is not in backing",
650
add: []params.EntityInfo{¶ms.ServiceInfo{
652
Constraints: constraints.MustParse("mem=99M"),
654
setUp: func(*C, *State) {},
655
change: watcher.Change{
659
expectContents: []params.EntityInfo{¶ms.ServiceInfo{
661
Constraints: constraints.MustParse("mem=99M"),
664
about: "status is changed if the service exists in the store",
665
add: []params.EntityInfo{¶ms.ServiceInfo{
667
Constraints: constraints.MustParse("mem=99M cpu-cores=2 cpu-power=4"),
669
setUp: func(c *C, st *State) {
670
svc, err := st.AddService("wordpress", AddTestingCharm(c, st, "wordpress"))
672
err = svc.SetConstraints(constraints.MustParse("mem=4G cpu-cores= arch=amd64"))
675
change: watcher.Change{
679
expectContents: []params.EntityInfo{
682
Constraints: constraints.MustParse("mem=4G cpu-cores= arch=amd64"),
643
693
"relations": s.State.relations,
644
694
"annotations": s.State.annotations,
645
695
"statuses": s.State.statuses,
696
"constraints": s.State.constraints,
647
698
for i, test := range allWatcherChangedTests {
648
699
c.Logf("test %d. %s", i, test.about)
682
733
checkNext(c, w, b, []params.Delta{{
683
734
Entity: ¶ms.MachineInfo{
685
Status: params.MachinePending,
736
Status: params.StatusPending,
688
739
Entity: ¶ms.MachineInfo{
690
Status: params.MachinePending,
741
Status: params.StatusPending,
721
772
Entity: ¶ms.MachineInfo{
723
Status: params.MachinePending,
774
Status: params.StatusPending,
726
777
Entity: ¶ms.MachineInfo{
728
Status: params.MachinePending,
779
Status: params.StatusPending,
731
782
Entity: ¶ms.MachineInfo{
733
784
InstanceId: "i-0",
734
Status: params.MachinePending,
785
Status: params.StatusPending,