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  }