github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/provider/gce/google/instance_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package google_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 "google.golang.org/api/compute/v1" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/provider/gce/google" 12 ) 13 14 type instanceSuite struct { 15 google.BaseSuite 16 } 17 18 var _ = gc.Suite(&instanceSuite{}) 19 20 func (s *instanceSuite) TestNewInstance(c *gc.C) { 21 inst := google.NewInstanceRaw(&s.RawInstanceFull, &s.InstanceSpec) 22 23 c.Check(inst.ID, gc.Equals, "spam") 24 c.Check(inst.ZoneName, gc.Equals, "a-zone") 25 c.Check(inst.Status(), gc.Equals, google.StatusRunning) 26 c.Check(inst.Metadata(), jc.DeepEquals, s.Metadata) 27 c.Check(inst.Addresses(), jc.DeepEquals, s.Addresses) 28 spec := google.GetInstanceSpec(inst) 29 c.Check(spec, jc.DeepEquals, &s.InstanceSpec) 30 } 31 32 func (s *instanceSuite) TestNewInstanceNoSpec(c *gc.C) { 33 inst := google.NewInstanceRaw(&s.RawInstanceFull, nil) 34 35 spec := google.GetInstanceSpec(inst) 36 c.Check(spec, gc.IsNil) 37 } 38 39 func (s *instanceSuite) TestInstanceRootDiskGB(c *gc.C) { 40 size := s.Instance.RootDiskGB() 41 42 c.Check(size, gc.Equals, uint64(15)) 43 } 44 45 func (s *instanceSuite) TestInstanceRootDiskGBNilSpec(c *gc.C) { 46 inst := google.Instance{} 47 size := inst.RootDiskGB() 48 49 c.Check(size, gc.Equals, uint64(0)) 50 } 51 52 func (s *instanceSuite) TestInstanceStatus(c *gc.C) { 53 status := s.Instance.Status() 54 55 c.Check(status, gc.Equals, google.StatusRunning) 56 } 57 58 func (s *instanceSuite) TestInstanceStatusDown(c *gc.C) { 59 s.Instance.InstanceSummary.Status = google.StatusDown 60 status := s.Instance.Status() 61 62 c.Check(status, gc.Equals, google.StatusDown) 63 } 64 65 func (s *instanceSuite) TestInstanceAddresses(c *gc.C) { 66 addresses := s.Instance.Addresses() 67 68 c.Check(addresses, jc.DeepEquals, s.Addresses) 69 } 70 71 func (s *instanceSuite) TestInstanceMetadata(c *gc.C) { 72 metadata := s.Instance.Metadata() 73 74 c.Check(metadata, jc.DeepEquals, map[string]string{"eggs": "steak"}) 75 } 76 77 func (s *instanceSuite) TestPackMetadata(c *gc.C) { 78 expected := compute.Metadata{Items: []*compute.MetadataItems{{ 79 Key: "spam", 80 Value: "eggs", 81 }}} 82 data := map[string]string{"spam": "eggs"} 83 packed := google.PackMetadata(data) 84 85 c.Check(packed, jc.DeepEquals, &expected) 86 } 87 88 func (s *instanceSuite) TestUnpackMetadata(c *gc.C) { 89 expected := map[string]string{"spam": "eggs"} 90 packed := compute.Metadata{Items: []*compute.MetadataItems{{ 91 Key: "spam", 92 Value: "eggs", 93 }}} 94 data := google.UnpackMetadata(&packed) 95 96 c.Check(data, jc.DeepEquals, expected) 97 } 98 99 func (s *instanceSuite) TestFormatMachineType(c *gc.C) { 100 resolved := google.FormatMachineType("a-zone", "spam") 101 102 c.Check(resolved, gc.Equals, "zones/a-zone/machineTypes/spam") 103 }