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  }