github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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) TestDiskSpecSizeGBMinUbuntu(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  func (s *diskSuite) TestDiskSpecSizeGBMinWindows(c *gc.C) {
    47  	s.DiskSpec.SizeHintGB = 0
    48  	s.DiskSpec.Series = "win2012r2"
    49  	size := s.DiskSpec.SizeGB()
    50  
    51  	c.Check(size, gc.Equals, uint64(50))
    52  }
    53  
    54  func (s *diskSuite) TestDiskSpecSizeGBMinUnknown(c *gc.C) {
    55  	s.DiskSpec.SizeHintGB = 0
    56  	s.DiskSpec.Series = "arch"
    57  	size := s.DiskSpec.SizeGB()
    58  
    59  	c.Check(size, gc.Equals, uint64(10))
    60  }
    61  
    62  type attachedInfo struct {
    63  	attached *compute.AttachedDisk
    64  	diskType string
    65  	diskMode string
    66  }
    67  
    68  func (s *diskSuite) checkAttached(c *gc.C, aInfo attachedInfo) {
    69  	c.Check(aInfo.attached.Type, gc.Equals, aInfo.diskType)
    70  	c.Check(aInfo.attached.Boot, gc.Equals, s.DiskSpec.Boot)
    71  	c.Check(aInfo.attached.Mode, gc.Equals, aInfo.diskMode)
    72  	c.Check(aInfo.attached.AutoDelete, gc.Equals, s.DiskSpec.AutoDelete)
    73  	c.Check(aInfo.attached.Interface, gc.Equals, "")
    74  	c.Check(aInfo.attached.DeviceName, gc.Equals, "")
    75  }
    76  
    77  func (s *diskSuite) TestDiskSpecNewAttached(c *gc.C) {
    78  	attached := google.NewAttached(s.DiskSpec)
    79  
    80  	s.checkAttached(c, attachedInfo{
    81  		attached: attached,
    82  		diskType: "PERSISTENT",
    83  		diskMode: "READ_WRITE",
    84  	})
    85  }
    86  
    87  func (s *diskSuite) TestDiskSpecNewAttachedBootFalse(c *gc.C) {
    88  	s.DiskSpec.Boot = false
    89  	attached := google.NewAttached(s.DiskSpec)
    90  
    91  	s.checkAttached(c, attachedInfo{
    92  		attached: attached,
    93  		diskType: "PERSISTENT",
    94  		diskMode: "READ_WRITE",
    95  	})
    96  }
    97  
    98  func (s *diskSuite) TestDiskSpecNewAttachedAutoDeleteFalse(c *gc.C) {
    99  	s.DiskSpec.AutoDelete = false
   100  	attached := google.NewAttached(s.DiskSpec)
   101  
   102  	s.checkAttached(c, attachedInfo{
   103  		attached: attached,
   104  		diskType: "PERSISTENT",
   105  		diskMode: "READ_WRITE",
   106  	})
   107  }
   108  
   109  func (s *diskSuite) TestDiskSpecNewAttachedScratch(c *gc.C) {
   110  	s.DiskSpec.Scratch = true
   111  	attached := google.NewAttached(s.DiskSpec)
   112  
   113  	s.checkAttached(c, attachedInfo{
   114  		attached: attached,
   115  		diskType: "SCRATCH",
   116  		diskMode: "READ_WRITE",
   117  	})
   118  }
   119  
   120  func (s *diskSuite) TestDiskSpecNewAttachedReadOnly(c *gc.C) {
   121  	s.DiskSpec.Readonly = true
   122  	attached := google.NewAttached(s.DiskSpec)
   123  
   124  	s.checkAttached(c, attachedInfo{
   125  		attached: attached,
   126  		diskType: "PERSISTENT",
   127  		diskMode: "READ_ONLY",
   128  	})
   129  }
   130  
   131  func (s *diskSuite) TestRootDiskInstance(c *gc.C) {
   132  	attached := s.Instance.RootDisk()
   133  
   134  	c.Assert(attached, gc.NotNil)
   135  	s.checkAttached(c, attachedInfo{
   136  		attached: attached,
   137  		diskType: "PERSISTENT",
   138  		diskMode: "READ_WRITE",
   139  	})
   140  }
   141  
   142  func (s *diskSuite) TestRootDiskInstanceNilSpec(c *gc.C) {
   143  	inst := google.Instance{}
   144  	attached := inst.RootDisk()
   145  
   146  	c.Assert(attached, gc.IsNil)
   147  }
   148  
   149  func (s *diskSuite) TestRootDiskSpec(c *gc.C) {
   150  	attached := s.InstanceSpec.RootDisk()
   151  
   152  	c.Assert(attached, gc.NotNil)
   153  	s.checkAttached(c, attachedInfo{
   154  		attached: attached,
   155  		diskType: "PERSISTENT",
   156  		diskMode: "READ_WRITE",
   157  	})
   158  }