|
36 | 36 | import java.util.List; |
37 | 37 | import java.util.Map; |
38 | 38 |
|
| 39 | +import org.junit.Assert; |
39 | 40 | import org.junit.Test; |
40 | 41 | import org.junit.runner.RunWith; |
41 | 42 | import org.mockito.InjectMocks; |
@@ -198,122 +199,23 @@ public void testFindLatestTemplateByTypeAndHypervisorAndArch_NotFound() { |
198 | 199 | assertNull(result); |
199 | 200 | } |
200 | 201 |
|
201 | | - private void mockTemplateZoneJoin() { |
202 | | - VMTemplateZoneVO templateZoneVO = mock(VMTemplateZoneVO.class); |
203 | | - SearchBuilder<VMTemplateZoneVO> templateZoneVOSearchBuilder = mock(SearchBuilder.class); |
204 | | - when(templateZoneVOSearchBuilder.entity()).thenReturn(templateZoneVO); |
205 | | - when(templateZoneDao.createSearchBuilder()).thenReturn(templateZoneVOSearchBuilder); |
206 | | - } |
207 | | - |
208 | | - @Test |
209 | | - public void testListTemplateIsoByArchAndZone_WithDataCenterId() { |
210 | | - Long dataCenterId = 1L; |
211 | | - CPU.CPUArch arch = CPU.CPUArch.getDefault(); |
212 | | - Boolean isIso = true; |
213 | | - VMTemplateVO templateVO = mock(VMTemplateVO.class); |
214 | | - GenericSearchBuilder<VMTemplateVO, Long> searchBuilder = mock(GenericSearchBuilder.class); |
215 | | - when(searchBuilder.entity()).thenReturn(templateVO); |
216 | | - SearchCriteria<Long>searchCriteria = mock(SearchCriteria.class); |
217 | | - when(templateDao.createSearchBuilder(Long.class)).thenReturn(searchBuilder); |
218 | | - when(searchBuilder.create()).thenReturn(searchCriteria); |
219 | | - mockTemplateZoneJoin(); |
220 | | - doReturn(new ArrayList<>()).when(templateDao).customSearch(searchCriteria, null); |
221 | | - List<Long> result = templateDao.listTemplateIsoByArchVnfAndZone(dataCenterId, arch, isIso, false); |
222 | | - assertNotNull(result); |
223 | | - verify(searchBuilder, times(1)).select(null, SearchCriteria.Func.DISTINCT, templateVO.getGuestOSId()); |
224 | | - verify(searchBuilder, times(1)).and(eq("state"), any(), eq(SearchCriteria.Op.IN)); |
225 | | - verify(searchBuilder, times(1)).and(eq("type"), any(), eq(SearchCriteria.Op.IN)); |
226 | | - verify(searchBuilder, times(1)).and(eq("arch"), any(), eq(SearchCriteria.Op.EQ)); |
227 | | - verify(searchBuilder, times(1)).and(eq("isIso"), any(), eq(SearchCriteria.Op.EQ)); |
228 | | - verify(searchBuilder, times(1)).join(eq("templateZoneSearch"), any(), any(), any(), eq(JoinBuilder.JoinType.INNER)); |
229 | | - verify(templateDao, times(1)).customSearch(searchCriteria, null); |
230 | | - } |
231 | | - |
232 | 202 | @Test |
233 | | - public void testListTemplateIsoByArchAndZone_WithoutDataCenterId() { |
234 | | - Long dataCenterId = null; |
235 | | - CPU.CPUArch arch = CPU.CPUArch.getDefault(); |
236 | | - Boolean isIso = false; |
237 | | - VMTemplateVO templateVO = mock(VMTemplateVO.class); |
238 | | - GenericSearchBuilder<VMTemplateVO, Long> searchBuilder = mock(GenericSearchBuilder.class); |
239 | | - when(searchBuilder.entity()).thenReturn(templateVO); |
240 | | - SearchCriteria<Long>searchCriteria = mock(SearchCriteria.class); |
241 | | - when(templateDao.createSearchBuilder(Long.class)).thenReturn(searchBuilder); |
242 | | - when(searchBuilder.create()).thenReturn(searchCriteria); |
243 | | - doReturn(new ArrayList<>()).when(templateDao).customSearch(searchCriteria, null); |
244 | | - List<Long> result = templateDao.listTemplateIsoByArchVnfAndZone(dataCenterId, arch, isIso, false); |
245 | | - assertNotNull(result); |
246 | | - verify(searchBuilder, times(1)).select(null, SearchCriteria.Func.DISTINCT, templateVO.getGuestOSId()); |
247 | | - verify(searchBuilder, times(1)).and(eq("state"), any(), eq(SearchCriteria.Op.IN)); |
248 | | - verify(searchBuilder, times(1)).and(eq("type"), any(), eq(SearchCriteria.Op.IN)); |
249 | | - verify(searchBuilder, times(1)).and(eq("arch"), any(), eq(SearchCriteria.Op.EQ)); |
250 | | - verify(searchBuilder, times(1)).and(eq("isIso"), any(), eq(SearchCriteria.Op.NEQ)); |
251 | | - verify(searchBuilder, never()).join(eq("templateZoneSearch"), any(), any(), any(), eq(JoinBuilder.JoinType.INNER)); |
252 | | - verify(templateDao, times(1)).customSearch(searchCriteria, null); |
253 | | - } |
254 | | - |
255 | | - @Test |
256 | | - public void testListTemplateIsoByArchAndZone_WithoutArch() { |
257 | | - Long dataCenterId = 1L; |
258 | | - CPU.CPUArch arch = null; |
259 | | - Boolean isIso = true; |
260 | | - VMTemplateVO templateVO = mock(VMTemplateVO.class); |
261 | | - GenericSearchBuilder<VMTemplateVO, Long> searchBuilder = mock(GenericSearchBuilder.class); |
262 | | - when(searchBuilder.entity()).thenReturn(templateVO); |
263 | | - SearchCriteria<Long>searchCriteria = mock(SearchCriteria.class); |
264 | | - when(templateDao.createSearchBuilder(Long.class)).thenReturn(searchBuilder); |
265 | | - when(searchBuilder.create()).thenReturn(searchCriteria); |
266 | | - mockTemplateZoneJoin(); |
267 | | - doReturn(new ArrayList<>()).when(templateDao).customSearch(searchCriteria, null); |
268 | | - List<Long> result = templateDao.listTemplateIsoByArchVnfAndZone(dataCenterId, arch, isIso, false); |
269 | | - assertNotNull(result); |
270 | | - verify(searchBuilder, times(1)).select(null, SearchCriteria.Func.DISTINCT, templateVO.getGuestOSId()); |
271 | | - verify(searchBuilder, times(1)).and(eq("state"), any(), eq(SearchCriteria.Op.IN)); |
272 | | - verify(searchBuilder, times(1)).and(eq("type"), any(), eq(SearchCriteria.Op.IN)); |
273 | | - verify(searchBuilder, times(1)).and(eq("arch"), any(), eq(SearchCriteria.Op.EQ)); |
274 | | - verify(searchBuilder, times(1)).and(eq("isIso"), any(), eq(SearchCriteria.Op.EQ)); |
275 | | - verify(searchBuilder, times(1)).join(eq("templateZoneSearch"), any(), any(), any(), eq(JoinBuilder.JoinType.INNER)); |
276 | | - verify(templateDao, times(1)).customSearch(searchCriteria, null); |
277 | | - } |
278 | | - |
279 | | - @Test |
280 | | - public void testListTemplateIsoByArchAndZone_WithoutIsIso() { |
281 | | - Long dataCenterId = 1L; |
282 | | - CPU.CPUArch arch = CPU.CPUArch.getDefault(); |
283 | | - Boolean isIso = null; |
284 | | - VMTemplateVO templateVO = mock(VMTemplateVO.class); |
285 | | - GenericSearchBuilder<VMTemplateVO, Long> searchBuilder = mock(GenericSearchBuilder.class); |
286 | | - when(searchBuilder.entity()).thenReturn(templateVO); |
287 | | - SearchCriteria<Long>searchCriteria = mock(SearchCriteria.class); |
288 | | - when(templateDao.createSearchBuilder(Long.class)).thenReturn(searchBuilder); |
289 | | - when(searchBuilder.create()).thenReturn(searchCriteria); |
290 | | - mockTemplateZoneJoin(); |
291 | | - doReturn(new ArrayList<>()).when(templateDao).customSearch(searchCriteria, null); |
292 | | - List<Long> result = templateDao.listTemplateIsoByArchVnfAndZone(dataCenterId, arch, isIso, false); |
293 | | - assertNotNull(result); |
294 | | - verify(searchBuilder, times(1)).select(null, SearchCriteria.Func.DISTINCT, templateVO.getGuestOSId()); |
295 | | - verify(searchBuilder, times(1)).and(eq("state"), any(), eq(SearchCriteria.Op.IN)); |
296 | | - verify(searchBuilder, times(1)).and(eq("type"), any(), eq(SearchCriteria.Op.IN)); |
297 | | - verify(searchBuilder, times(1)).and(eq("arch"), any(), eq(SearchCriteria.Op.EQ)); |
298 | | - verify(searchBuilder, never()).and(eq("isIso"), any(), eq(SearchCriteria.Op.NEQ)); |
299 | | - verify(searchBuilder, never()).and(eq("isIso"), any(), eq(SearchCriteria.Op.EQ)); |
300 | | - verify(searchBuilder, times(1)).join(eq("templateZoneSearch"), any(), any(), any(), eq(JoinBuilder.JoinType.INNER)); |
301 | | - verify(templateDao, times(1)).customSearch(searchCriteria, null); |
302 | | - } |
303 | | - |
304 | | - @Test |
305 | | - public void testListIdsByExtensionId_ReturnsIds() { |
306 | | - long extensionId = 42L; |
307 | | - List<Long> expectedIds = Arrays.asList(1L, 2L, 3L); |
308 | | - GenericSearchBuilder<VMTemplateVO, Long> searchBuilder = mock(GenericSearchBuilder.class); |
309 | | - SearchCriteria<Long> searchCriteria = mock(SearchCriteria.class); |
310 | | - when(templateDao.createSearchBuilder(Long.class)).thenReturn(searchBuilder); |
311 | | - when(searchBuilder.entity()).thenReturn(mock(VMTemplateVO.class)); |
312 | | - when(searchBuilder.create()).thenReturn(searchCriteria); |
313 | | - doReturn(expectedIds).when(templateDao).customSearchIncludingRemoved(eq(searchCriteria), isNull()); |
314 | | - List<Long> result = templateDao.listIdsByExtensionId(extensionId); |
315 | | - assertEquals(expectedIds, result); |
316 | | - verify(searchCriteria).setParameters("extensionId", extensionId); |
317 | | - verify(templateDao).customSearchIncludingRemoved(eq(searchCriteria), isNull()); |
| 203 | + public void testFindSystemVMReadyTemplate() { |
| 204 | + Long zoneId = 1L; |
| 205 | + VMTemplateVO systemVmTemplate1 = mock(VMTemplateVO.class); |
| 206 | + Mockito.when(systemVmTemplate1.getArch()).thenReturn(CPU.CPUArch.x86); |
| 207 | + VMTemplateVO systemVmTemplate2 = mock(VMTemplateVO.class); |
| 208 | + Mockito.when(systemVmTemplate2.getArch()).thenReturn(CPU.CPUArch.x86); |
| 209 | + VMTemplateVO systemVmTemplate3 = mock(VMTemplateVO.class); |
| 210 | + Mockito.when(systemVmTemplate3.getArch()).thenReturn(CPU.CPUArch.arm64); |
| 211 | + Mockito.when(systemVmTemplate3.getHypervisorType()).thenReturn(Hypervisor.HypervisorType.KVM); |
| 212 | + List<VMTemplateVO> templates = Arrays.asList(systemVmTemplate1, systemVmTemplate2, systemVmTemplate3); |
| 213 | + Mockito.when(hostDao.listDistinctHypervisorTypes(zoneId)).thenReturn(Arrays.asList(Hypervisor.HypervisorType.KVM)); |
| 214 | + SearchBuilder<VMTemplateVO> sb = mock(SearchBuilder.class); |
| 215 | + templateDao.readySystemTemplateSearch = sb; |
| 216 | + when(sb.create()).thenReturn(mock(SearchCriteria.class)); |
| 217 | + doReturn(templates).when(templateDao).listBy(any(SearchCriteria.class), any(Filter.class)); |
| 218 | + VMTemplateVO readyTemplate = templateDao.findSystemVMReadyTemplate(zoneId, Hypervisor.HypervisorType.KVM, CPU.CPUArch.arm64.getType()); |
| 219 | + Assert.assertEquals(CPU.CPUArch.arm64, readyTemplate.getArch()); |
318 | 220 | } |
319 | 221 | } |
0 commit comments