github.com/cloud-green/juju@v0.0.0-20151002100041-a00291338d3d/provider/gce/google/disk_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 diskSuite struct {
    15  	google.BaseSuite
    16  }
    17  
    18  var _ = gc.Suite(&diskSuite{})
    19  
    20  func (s *diskSuite) TestDiskSpecTooSmall(c *gc.C) {
    21  	tooSmall := s.DiskSpec.TooSmall()
    22  
    23  	c.Check(tooSmall, jc.IsFalse)
    24  }
    25  
    26  func (s *diskSuite) TestDiskSpecTooSmallTrue(c *gc.C) {
    27  	s.DiskSpec.SizeHintGB = 0
    28  	tooSmall := s.DiskSpec.TooSmall()
    29  
    30  	c.Check(tooSmall, jc.IsTrue)
    31  }
    32  
    33  func (s *diskSuite) TestDiskSpecSizeGB(c *gc.C) {
    34  	size := s.DiskSpec.SizeGB()
    35  
    36  	c.Check(size, gc.Equals, uint64(15))
    37  }
    38  
    39  func (s *diskSuite) TestDiskSpecSizeGBMin(c *gc.C) {
    40  	s.DiskSpec.SizeHintGB = 0
    41  	size := s.DiskSpec.SizeGB()
    42  
    43  	c.Check(size, gc.Equals, uint64(10))
    44  }
    45  
    46  type attachedInfo struct {
    47  	attached *compute.AttachedDisk
    48  	diskType string
    49  	diskMode string
    50  }
    51  
    52  func (s *diskSuite) checkAttached(c *gc.C, aInfo attachedInfo) {
    53  	c.Check(aInfo.attached.Type, gc.Equals, aInfo.diskType)
    54  	c.Check(aInfo.attached.Boot, gc.Equals, s.DiskSpec.Boot)
    55  	c.Check(aInfo.attached.Mode, gc.Equals, aInfo.diskMode)
    56  	c.Check(aInfo.attached.AutoDelete, gc.Equals, s.DiskSpec.AutoDelete)
    57  	c.Check(aInfo.attached.Interface, gc.Equals, "")
    58  	c.Check(aInfo.attached.DeviceName, gc.Equals, "")
    59  }
    60  
    61  func (s *diskSuite) TestDiskSpecNewAttached(c *gc.C) {
    62  	attached := google.NewAttached(s.DiskSpec)
    63  
    64  	s.checkAttached(c, attachedInfo{
    65  		attached: attached,
    66  		diskType: "PERSISTENT",
    67  		diskMode: "READ_WRITE",
    68  	})
    69  }
    70  
    71  func (s *diskSuite) TestDiskSpecNewAttachedBootFalse(c *gc.C) {
    72  	s.DiskSpec.Boot = false
    73  	attached := google.NewAttached(s.DiskSpec)
    74  
    75  	s.checkAttached(c, attachedInfo{
    76  		attached: attached,
    77  		diskType: "PERSISTENT",
    78  		diskMode: "READ_WRITE",
    79  	})
    80  }
    81  
    82  func (s *diskSuite) TestDiskSpecNewAttachedAutoDeleteFalse(c *gc.C) {
    83  	s.DiskSpec.AutoDelete = false
    84  	attached := google.NewAttached(s.DiskSpec)
    85  
    86  	s.checkAttached(c, attachedInfo{
    87  		attached: attached,
    88  		diskType: "PERSISTENT",
    89  		diskMode: "READ_WRITE",
    90  	})
    91  }
    92  
    93  func (s *diskSuite) TestDiskSpecNewAttachedScratch(c *gc.C) {
    94  	s.DiskSpec.Scratch = true
    95  	attached := google.NewAttached(s.DiskSpec)
    96  
    97  	s.checkAttached(c, attachedInfo{
    98  		attached: attached,
    99  		diskType: "SCRATCH",
   100  		diskMode: "READ_WRITE",
   101  	})
   102  }
   103  
   104  func (s *diskSuite) TestDiskSpecNewAttachedReadOnly(c *gc.C) {
   105  	s.DiskSpec.Readonly = true
   106  	attached := google.NewAttached(s.DiskSpec)
   107  
   108  	s.checkAttached(c, attachedInfo{
   109  		attached: attached,
   110  		diskType: "PERSISTENT",
   111  		diskMode: "READ_ONLY",
   112  	})
   113  }
   114  
   115  func (s *diskSuite) TestRootDiskInstance(c *gc.C) {
   116  	attached := s.Instance.RootDisk()
   117  
   118  	c.Assert(attached, gc.NotNil)
   119  	s.checkAttached(c, attachedInfo{
   120  		attached: attached,
   121  		diskType: "PERSISTENT",
   122  		diskMode: "READ_WRITE",
   123  	})
   124  }
   125  
   126  func (s *diskSuite) TestRootDiskInstanceNilSpec(c *gc.C) {
   127  	inst := google.Instance{}
   128  	attached := inst.RootDisk()
   129  
   130  	c.Assert(attached, gc.IsNil)
   131  }
   132  
   133  func (s *diskSuite) TestRootDiskSpec(c *gc.C) {
   134  	attached := s.InstanceSpec.RootDisk()
   135  
   136  	c.Assert(attached, gc.NotNil)
   137  	s.checkAttached(c, attachedInfo{
   138  		attached: attached,
   139  		diskType: "PERSISTENT",
   140  		diskMode: "READ_WRITE",
   141  	})
   142  }