1919import static org .mockito .Mockito .doReturn ;
2020import static org .mockito .Mockito .verify ;
2121import static org .mockito .Mockito .when ;
22- import static org .mockito .Mockito .mock ;
2322import static org .junit .Assert .assertEquals ;
2423import static org .junit .Assert .assertFalse ;
2524import static org .junit .Assert .assertTrue ;
2625import static org .mockito .Mockito .any ;
2726import static org .mockito .Mockito .never ;
27+ import static org .mockito .Matchers .eq ;
2828
29+ import java .util .ArrayList ;
2930import java .util .Arrays ;
3031import java .util .HashMap ;
3132import java .util .Map ;
3435import org .junit .Before ;
3536import org .junit .Test ;
3637import org .junit .runner .RunWith ;
38+ import org .mockito .InOrder ;
3739import org .mockito .InjectMocks ;
3840import org .mockito .Mock ;
41+ import org .mockito .Mockito ;
3942import org .mockito .MockitoAnnotations ;
4043import org .mockito .Spy ;
4144import org .powermock .api .mockito .PowerMockito ;
4245import org .powermock .core .classloader .annotations .PrepareForTest ;
4346import org .powermock .modules .junit4 .PowerMockRunner ;
4447
4548import com .vmware .vim25 .VirtualDevice ;
49+ import com .vmware .vim25 .VirtualDeviceConfigSpec ;
4650import com .vmware .vim25 .VirtualMachineConfigSpec ;
4751import com .vmware .vim25 .VirtualMachineVideoCard ;
4852import com .cloud .agent .api .Command ;
@@ -99,6 +103,10 @@ public VmwareHypervisorHost getHyperHost(VmwareContext context, Command cmd) {
99103 @ Mock
100104 VirtualMachineTO vmSpec3dgpu ;
101105 @ Mock
106+ VirtualMachineVideoCard videoCard ;
107+ @ Mock
108+ VirtualDevice virtualDevice ;
109+ @ Mock
102110 DataTO srcDataTO ;
103111 @ Mock
104112 NfsTO srcDataNfsTO ;
@@ -107,16 +115,19 @@ public VmwareHypervisorHost getHyperHost(VmwareContext context, Command cmd) {
107115
108116 private static final Integer NFS_VERSION = Integer .valueOf (3 );
109117 private static final Integer NFS_VERSION_NOT_PRESENT = null ;
118+ private static final long VRAM_MEMORY_SIZE = 131072l ;
119+ private static final long VIDEO_CARD_MEMORY_SIZE = 65536l ;
110120
111121 @ Before
112- public void setup () {
122+ public void setup () throws Exception {
113123 MockitoAnnotations .initMocks (this );
114124 storageCmd = PowerMockito .mock (CopyCommand .class );
115125 doReturn (context ).when (_resource ).getServiceContext (null );
116126 when (cmd .getVirtualMachine ()).thenReturn (vmSpec );
117127 when (storageCmd .getSrcTO ()).thenReturn (srcDataTO );
118128 when (srcDataTO .getDataStore ()).thenReturn (srcDataNfsTO );
119129 when (srcDataNfsTO .getNfsVersion ()).thenReturn (NFS_VERSION );
130+ when (videoCard .getVideoRamSizeInKB ()).thenReturn (VIDEO_CARD_MEMORY_SIZE );
120131 }
121132
122133 //Test successful scaling up the vm
@@ -138,19 +149,56 @@ public void testScaleVMF1() throws Exception {
138149 }
139150
140151 @ Test
141- public void testStartVm3dgpuEnabled () throws Exception {
152+ public void testConfigureVideoCardSvgaVramProvided () throws Exception {
142153 Map <String , String > specDetails = new HashMap <String , String >();
143- specDetails .put ("svga.vramSize" , "131072" );
154+ specDetails .put ("svga.vramSize" , String . valueOf ( VRAM_MEMORY_SIZE ) );
144155 when (vmSpec3dgpu .getDetails ()).thenReturn (specDetails );
145156
146- VirtualMachineVideoCard videoCard = mock (VirtualMachineVideoCard .class );
147- when (videoCard .getVideoRamSizeInKB ()).thenReturn (65536l );
148- when (vmMo3dgpu .getAllDeviceList ()).thenReturn (Arrays .asList ((VirtualDevice ) videoCard ));
157+ _resource .configureVideoCard (vmMo3dgpu , vmSpec3dgpu , vmConfigSpec );
158+ verify (_resource ).setNewVRamSizeVmVideoCard (vmMo3dgpu , VRAM_MEMORY_SIZE , vmConfigSpec );
159+ }
160+
161+ @ Test
162+ public void testConfigureVideoCardNotSvgaVramProvided () throws Exception {
163+ _resource .configureVideoCard (vmMo3dgpu , vmSpec3dgpu , vmConfigSpec );
164+ verify (_resource , never ()).setNewVRamSizeVmVideoCard (vmMo3dgpu , VRAM_MEMORY_SIZE , vmConfigSpec );
165+ }
166+
167+ @ Test
168+ public void testModifyVmVideoCardVRamSizeDifferentVramSizes () {
169+ _resource .modifyVmVideoCardVRamSize (videoCard , vmMo3dgpu , VRAM_MEMORY_SIZE , vmConfigSpec );
170+ verify (_resource ).configureSpecVideoCardNewVRamSize (videoCard , VRAM_MEMORY_SIZE , vmConfigSpec );
171+ }
172+
173+ @ Test
174+ public void testModifyVmVideoCardVRamSizeEqualSizes () {
175+ _resource .modifyVmVideoCardVRamSize (videoCard , vmMo3dgpu , VIDEO_CARD_MEMORY_SIZE , vmConfigSpec );
176+ verify (_resource , never ()).configureSpecVideoCardNewVRamSize (videoCard , VIDEO_CARD_MEMORY_SIZE , vmConfigSpec );
177+ }
149178
150- when (vmMo3dgpu .configureVm (any (VirtualMachineConfigSpec .class ))).thenReturn (true );
179+ @ Test
180+ public void testSetNewVRamSizeVmVideoCardPresent () throws Exception {
181+ when (vmMo3dgpu .getAllDeviceList ()).thenReturn (Arrays .asList (videoCard , virtualDevice ));
182+ _resource .setNewVRamSizeVmVideoCard (vmMo3dgpu , VRAM_MEMORY_SIZE , vmConfigSpec );
183+ verify (_resource ).modifyVmVideoCardVRamSize (videoCard , vmMo3dgpu , VRAM_MEMORY_SIZE , vmConfigSpec );
184+ }
151185
152- _resource .postVideoCardMemoryConfigBeforeStart (vmMo3dgpu , vmSpec3dgpu );
153- verify (vmMo3dgpu ).configureVm (any (VirtualMachineConfigSpec .class ));
186+ @ Test
187+ public void testSetNewVRamSizeVmVideoCardNotPresent () throws Exception {
188+ when (vmMo3dgpu .getAllDeviceList ()).thenReturn (Arrays .asList (virtualDevice ));
189+ _resource .setNewVRamSizeVmVideoCard (vmMo3dgpu , VRAM_MEMORY_SIZE , vmConfigSpec );
190+ verify (_resource , never ()).modifyVmVideoCardVRamSize (any (VirtualMachineVideoCard .class ), eq (vmMo3dgpu ), eq (VRAM_MEMORY_SIZE ), eq (vmConfigSpec ));
191+ }
192+
193+ @ Test
194+ public void testConfigureSpecVideoCardNewVRamSize () {
195+ when (vmConfigSpec .getDeviceChange ()).thenReturn (new ArrayList <VirtualDeviceConfigSpec >());
196+ _resource .configureSpecVideoCardNewVRamSize (videoCard , VRAM_MEMORY_SIZE , vmConfigSpec );
197+
198+ InOrder inOrder = Mockito .inOrder (videoCard , vmConfigSpec );
199+ inOrder .verify (videoCard ).setVideoRamSizeInKB (VRAM_MEMORY_SIZE );
200+ inOrder .verify (videoCard ).setUseAutoDetect (false );
201+ inOrder .verify (vmConfigSpec ).getDeviceChange ();
154202 }
155203
156204 // ---------------------------------------------------------------------------------------------------
0 commit comments