~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/state/status_util_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 2015 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package state_test
 
5
 
 
6
import (
 
7
        "runtime"
 
8
        "time"
 
9
 
 
10
        jc "github.com/juju/testing/checkers"
 
11
        gc "gopkg.in/check.v1"
 
12
 
 
13
        "github.com/juju/juju/state"
 
14
        "github.com/juju/juju/status"
 
15
)
 
16
 
 
17
type statusHistoryFunc func(int) ([]status.StatusInfo, error)
 
18
 
 
19
type statusSetter interface {
 
20
        SetStatus(status.StatusInfo) error
 
21
}
 
22
 
 
23
func primeStatusHistory(c *gc.C, entity statusSetter, statusVal status.Status, count int, nextData func(int) map[string]interface{}, delta time.Duration) {
 
24
        info := ""
 
25
        now := time.Now().Add(-delta)
 
26
        for i := 0; i < count; i++ {
 
27
                c.Logf("setting status for %v", entity)
 
28
                data := nextData(i)
 
29
                t := now.Add(time.Duration(i) * time.Second)
 
30
                s := status.StatusInfo{
 
31
                        Status:  statusVal,
 
32
                        Message: info,
 
33
                        Data:    data,
 
34
                        Since:   &t,
 
35
                }
 
36
                err := entity.SetStatus(s)
 
37
                c.Assert(err, jc.ErrorIsNil)
 
38
                if runtime.GOOS == "windows" {
 
39
                        // The default clock tick on Windows is 15.6 ms.
 
40
                        time.Sleep(20 * time.Millisecond)
 
41
                }
 
42
        }
 
43
}
 
44
 
 
45
func checkInitialWorkloadStatus(c *gc.C, statusInfo status.StatusInfo) {
 
46
        c.Check(statusInfo.Status, gc.Equals, status.StatusUnknown)
 
47
        c.Check(statusInfo.Message, gc.Equals, "Waiting for agent initialization to finish")
 
48
        c.Check(statusInfo.Data, gc.HasLen, 0)
 
49
        c.Check(statusInfo.Since, gc.NotNil)
 
50
}
 
51
 
 
52
func primeUnitStatusHistory(c *gc.C, unit *state.Unit, count int, delta time.Duration) {
 
53
        primeStatusHistory(c, unit, status.StatusActive, count, func(i int) map[string]interface{} {
 
54
                return map[string]interface{}{"$foo": i, "$delta": delta}
 
55
        }, delta)
 
56
}
 
57
 
 
58
func checkPrimedUnitStatus(c *gc.C, statusInfo status.StatusInfo, expect int, expectDelta time.Duration) {
 
59
        c.Check(statusInfo.Status, gc.Equals, status.StatusActive)
 
60
        c.Check(statusInfo.Message, gc.Equals, "")
 
61
        c.Check(statusInfo.Data, jc.DeepEquals, map[string]interface{}{"$foo": expect, "$delta": int64(expectDelta)})
 
62
        c.Check(statusInfo.Since, gc.NotNil)
 
63
}
 
64
 
 
65
func checkInitialUnitAgentStatus(c *gc.C, statusInfo status.StatusInfo) {
 
66
        c.Check(statusInfo.Status, gc.Equals, status.StatusAllocating)
 
67
        c.Check(statusInfo.Message, gc.Equals, "")
 
68
        c.Check(statusInfo.Data, gc.HasLen, 0)
 
69
        c.Assert(statusInfo.Since, gc.NotNil)
 
70
}
 
71
 
 
72
func primeUnitAgentStatusHistory(c *gc.C, agent *state.UnitAgent, count int, delta time.Duration) {
 
73
        primeStatusHistory(c, agent, status.StatusExecuting, count, func(i int) map[string]interface{} {
 
74
                return map[string]interface{}{"$bar": i, "$delta": delta}
 
75
        }, delta)
 
76
}
 
77
 
 
78
func checkPrimedUnitAgentStatus(c *gc.C, statusInfo status.StatusInfo, expect int, expectDelta time.Duration) {
 
79
        c.Check(statusInfo.Status, gc.Equals, status.StatusExecuting)
 
80
        c.Check(statusInfo.Message, gc.Equals, "")
 
81
        c.Check(statusInfo.Data, jc.DeepEquals, map[string]interface{}{"$bar": expect, "$delta": int64(expectDelta)})
 
82
        c.Check(statusInfo.Since, gc.NotNil)
 
83
}