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 }