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