github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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 makeMetadataItems("spam", "eggs"), 80 }} 81 data := map[string]string{"spam": "eggs"} 82 packed := google.PackMetadata(data) 83 84 c.Check(packed, jc.DeepEquals, &expected) 85 } 86 87 func (s *instanceSuite) TestUnpackMetadata(c *gc.C) { 88 expected := map[string]string{"spam": "eggs"} 89 packed := compute.Metadata{Items: []*compute.MetadataItems{ 90 makeMetadataItems("spam", "eggs"), 91 }} 92 data := google.UnpackMetadata(&packed) 93 94 c.Check(data, jc.DeepEquals, expected) 95 } 96 97 func (s *instanceSuite) TestFormatMachineType(c *gc.C) { 98 resolved := google.FormatMachineType("a-zone", "spam") 99 100 c.Check(resolved, gc.Equals, "zones/a-zone/machineTypes/spam") 101 }