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