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 }