github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/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 gc "gopkg.in/check.v1" 14 15 "github.com/juju/juju/state/backups" 16 "github.com/juju/juju/testing" 17 "github.com/juju/juju/version" 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 Environment: "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 buf, err := meta.AsJSONBuffer() 44 c.Assert(err, jc.ErrorIsNil) 45 46 c.Check(buf.(*bytes.Buffer).String(), gc.Equals, `{`+ 47 `"ID":"20140909-115934.asdf-zxcv-qwe",`+ 48 `"Checksum":"123af2cef",`+ 49 `"ChecksumFormat":"SHA-1, base64 encoded",`+ 50 `"Size":10,`+ 51 `"Stored":"0001-01-01T00:00:00Z",`+ 52 `"Started":"2014-09-09T11:59:34Z",`+ 53 `"Finished":"2014-09-09T12:00:34Z",`+ 54 `"Notes":"",`+ 55 `"Environment":"asdf-zxcv-qwe",`+ 56 `"Machine":"0",`+ 57 `"Hostname":"myhost",`+ 58 `"Version":"1.21-alpha3"`+ 59 `}`+"\n") 60 } 61 62 func (s *metadataSuite) TestNewMetadataJSONReader(c *gc.C) { 63 file := bytes.NewBufferString(`{` + 64 `"ID":"20140909-115934.asdf-zxcv-qwe",` + 65 `"Checksum":"123af2cef",` + 66 `"ChecksumFormat":"SHA-1, base64 encoded",` + 67 `"Size":10,` + 68 `"Stored":"0001-01-01T00:00:00Z",` + 69 `"Started":"2014-09-09T11:59:34Z",` + 70 `"Finished":"2014-09-09T12:00:34Z",` + 71 `"Notes":"",` + 72 `"Environment":"asdf-zxcv-qwe",` + 73 `"Machine":"0",` + 74 `"Hostname":"myhost",` + 75 `"Version":"1.21-alpha3"` + 76 `}` + "\n") 77 meta, err := backups.NewMetadataJSONReader(file) 78 c.Assert(err, jc.ErrorIsNil) 79 80 c.Check(meta.ID(), gc.Equals, "20140909-115934.asdf-zxcv-qwe") 81 c.Check(meta.Checksum(), gc.Equals, "123af2cef") 82 c.Check(meta.ChecksumFormat(), gc.Equals, "SHA-1, base64 encoded") 83 c.Check(meta.Size(), gc.Equals, int64(10)) 84 c.Check(meta.Stored(), gc.IsNil) 85 c.Check(meta.Started.Unix(), gc.Equals, int64(1410263974)) 86 c.Check(meta.Finished.Unix(), gc.Equals, int64(1410264034)) 87 c.Check(meta.Notes, gc.Equals, "") 88 c.Check(meta.Origin.Environment, gc.Equals, "asdf-zxcv-qwe") 89 c.Check(meta.Origin.Machine, gc.Equals, "0") 90 c.Check(meta.Origin.Hostname, gc.Equals, "myhost") 91 c.Check(meta.Origin.Version.String(), gc.Equals, "1.21-alpha3") 92 } 93 94 func (s *metadataSuite) TestBuildMetadata(c *gc.C) { 95 archive, err := os.Create(filepath.Join(c.MkDir(), "juju-backup.tgz")) 96 c.Assert(err, jc.ErrorIsNil) 97 _, err = archive.Write([]byte("<compressed data>")) 98 c.Assert(err, jc.ErrorIsNil) 99 100 fi, err := archive.Stat() 101 c.Assert(err, jc.ErrorIsNil) 102 finished := backups.FileTimestamp(fi).Unix() 103 104 meta, err := backups.BuildMetadata(archive) 105 c.Assert(err, jc.ErrorIsNil) 106 107 c.Check(meta.ID(), gc.Equals, "") 108 c.Check(meta.Checksum(), gc.Equals, "2jmj7l5rSw0yVb/vlWAYkK/YBwk=") 109 c.Check(meta.ChecksumFormat(), gc.Equals, "SHA-1, base64 encoded") 110 c.Check(meta.Size(), gc.Equals, int64(17)) 111 c.Check(meta.Stored(), gc.IsNil) 112 c.Check(meta.Started.Unix(), gc.Equals, int64(time.Time{}.Unix())) 113 c.Check(meta.Finished.Unix(), gc.Equals, finished) 114 c.Check(meta.Notes, gc.Equals, "") 115 c.Check(meta.Origin.Environment, gc.Equals, backups.UnknownString) 116 c.Check(meta.Origin.Machine, gc.Equals, backups.UnknownString) 117 c.Check(meta.Origin.Hostname, gc.Equals, backups.UnknownString) 118 c.Check(meta.Origin.Version.String(), gc.Equals, backups.UnknownVersion.String()) 119 }