1
// Copyright 2014 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
12
jc "github.com/juju/testing/checkers"
13
"github.com/juju/version"
14
gc "gopkg.in/check.v1"
16
"github.com/juju/juju/state/backups"
17
"github.com/juju/juju/testing"
20
type metadataSuite struct {
24
var _ = gc.Suite(&metadataSuite{}) // Register the suite.
26
func (s *metadataSuite) TestAsJSONBuffer(c *gc.C) {
27
meta := backups.NewMetadata()
28
meta.Origin = backups.Origin{
29
Model: "asdf-zxcv-qwe",
32
Version: version.MustParse("1.21-alpha3"),
35
meta.Started = time.Date(2014, time.Month(9), 9, 11, 59, 34, 0, time.UTC)
37
meta.SetID("20140909-115934.asdf-zxcv-qwe")
38
err := meta.MarkComplete(10, "123af2cef")
39
c.Assert(err, jc.ErrorIsNil)
41
finished := meta.Started.Add(time.Minute)
42
meta.Finished = &finished
44
meta.CACert = "ca-cert"
45
meta.CAPrivateKey = "ca-private-key"
47
buf, err := meta.AsJSONBuffer()
48
c.Assert(err, jc.ErrorIsNil)
50
c.Check(buf.(*bytes.Buffer).String(), gc.Equals, `{`+
51
`"ID":"20140909-115934.asdf-zxcv-qwe",`+
52
`"Checksum":"123af2cef",`+
53
`"ChecksumFormat":"SHA-1, base64 encoded",`+
55
`"Stored":"0001-01-01T00:00:00Z",`+
56
`"Started":"2014-09-09T11:59:34Z",`+
57
`"Finished":"2014-09-09T12:00:34Z",`+
59
`"Environment":"asdf-zxcv-qwe",`+
61
`"Hostname":"myhost",`+
62
`"Version":"1.21-alpha3",`+
64
`"CACert":"ca-cert",`+
65
`"CAPrivateKey":"ca-private-key"`+
69
func (s *metadataSuite) TestNewMetadataJSONReader(c *gc.C) {
70
file := bytes.NewBufferString(`{` +
71
`"ID":"20140909-115934.asdf-zxcv-qwe",` +
72
`"Checksum":"123af2cef",` +
73
`"ChecksumFormat":"SHA-1, base64 encoded",` +
75
`"Stored":"0001-01-01T00:00:00Z",` +
76
`"Started":"2014-09-09T11:59:34Z",` +
77
`"Finished":"2014-09-09T12:00:34Z",` +
79
`"Environment":"asdf-zxcv-qwe",` +
81
`"Hostname":"myhost",` +
82
`"Version":"1.21-alpha3"` +
84
meta, err := backups.NewMetadataJSONReader(file)
85
c.Assert(err, jc.ErrorIsNil)
87
c.Check(meta.ID(), gc.Equals, "20140909-115934.asdf-zxcv-qwe")
88
c.Check(meta.Checksum(), gc.Equals, "123af2cef")
89
c.Check(meta.ChecksumFormat(), gc.Equals, "SHA-1, base64 encoded")
90
c.Check(meta.Size(), gc.Equals, int64(10))
91
c.Check(meta.Stored(), gc.IsNil)
92
c.Check(meta.Started.Unix(), gc.Equals, int64(1410263974))
93
c.Check(meta.Finished.Unix(), gc.Equals, int64(1410264034))
94
c.Check(meta.Notes, gc.Equals, "")
95
c.Check(meta.Origin.Model, gc.Equals, "asdf-zxcv-qwe")
96
c.Check(meta.Origin.Machine, gc.Equals, "0")
97
c.Check(meta.Origin.Hostname, gc.Equals, "myhost")
98
c.Check(meta.Origin.Version.String(), gc.Equals, "1.21-alpha3")
101
func (s *metadataSuite) TestBuildMetadata(c *gc.C) {
102
archive, err := os.Create(filepath.Join(c.MkDir(), "juju-backup.tgz"))
103
c.Assert(err, jc.ErrorIsNil)
104
_, err = archive.Write([]byte("<compressed data>"))
105
c.Assert(err, jc.ErrorIsNil)
107
fi, err := archive.Stat()
108
c.Assert(err, jc.ErrorIsNil)
109
finished := backups.FileTimestamp(fi).Unix()
111
meta, err := backups.BuildMetadata(archive)
112
c.Assert(err, jc.ErrorIsNil)
114
c.Check(meta.ID(), gc.Equals, "")
115
c.Check(meta.Checksum(), gc.Equals, "2jmj7l5rSw0yVb/vlWAYkK/YBwk=")
116
c.Check(meta.ChecksumFormat(), gc.Equals, "SHA-1, base64 encoded")
117
c.Check(meta.Size(), gc.Equals, int64(17))
118
c.Check(meta.Stored(), gc.IsNil)
119
c.Check(meta.Started.Unix(), gc.Equals, int64(time.Time{}.Unix()))
120
c.Check(meta.Finished.Unix(), gc.Equals, finished)
121
c.Check(meta.Notes, gc.Equals, "")
122
c.Check(meta.Origin.Model, gc.Equals, backups.UnknownString)
123
c.Check(meta.Origin.Machine, gc.Equals, backups.UnknownString)
124
c.Check(meta.Origin.Hostname, gc.Equals, backups.UnknownString)
125
c.Check(meta.Origin.Version.String(), gc.Equals, backups.UnknownVersion.String())