1616// under the License.
1717package com .cloud .host .dao ;
1818
19+ import static org .junit .Assert .assertEquals ;
20+ import static org .junit .Assert .assertNotNull ;
21+ import static org .mockito .ArgumentMatchers .any ;
22+ import static org .mockito .ArgumentMatchers .isNull ;
23+ import static org .mockito .Mockito .doReturn ;
24+ import static org .mockito .Mockito .mock ;
25+ import static org .mockito .Mockito .when ;
26+
27+ import java .util .Arrays ;
28+ import java .util .Collections ;
1929import java .util .List ;
2030
2131import org .junit .Assert ;
2636import org .mockito .Spy ;
2737import org .mockito .junit .MockitoJUnitRunner ;
2838
39+ import com .cloud .cpu .CPU ;
2940import com .cloud .host .Host ;
3041import com .cloud .host .HostVO ;
3142import com .cloud .host .Status ;
@@ -52,10 +63,10 @@ public class HostDaoImplTest {
5263 public void testCountUpAndEnabledHostsInZone () {
5364 long testZoneId = 100L ;
5465 hostDao .HostTypeCountSearch = mockSearchBuilder ;
55- Mockito . when (mockSearchBuilder .create ()).thenReturn (mockSearchCriteria );
56- Mockito .doNothing ().when (mockSearchCriteria ).setParameters (Mockito .anyString (), Mockito . any ());
66+ when (mockSearchBuilder .create ()).thenReturn (mockSearchCriteria );
67+ Mockito .doNothing ().when (mockSearchCriteria ).setParameters (Mockito .anyString (), any ());
5768 int expected = 5 ;
58- Mockito . doReturn (expected ).when (hostDao ).getCount (mockSearchCriteria );
69+ doReturn (expected ).when (hostDao ).getCount (mockSearchCriteria );
5970 Integer count = hostDao .countUpAndEnabledHostsInZone (testZoneId );
6071 Assert .assertSame (expected , count );
6172 Mockito .verify (mockSearchCriteria ).setParameters ("type" , Host .Type .Routing );
@@ -70,30 +81,30 @@ public void testCountAllHostsAndCPUSocketsByType() {
7081 GenericDaoBase .SumCount mockSumCount = new GenericDaoBase .SumCount ();
7182 mockSumCount .count = 10 ;
7283 mockSumCount .sum = 20 ;
73- HostVO host = Mockito . mock (HostVO .class );
74- GenericSearchBuilder <HostVO , GenericDaoBase .SumCount > sb = Mockito . mock (GenericSearchBuilder .class );
75- Mockito . when (sb .entity ()).thenReturn (host );
76- Mockito . doReturn (sb ).when (hostDao ).createSearchBuilder (GenericDaoBase .SumCount .class );
77- SearchCriteria <GenericDaoBase .SumCount > sc = Mockito . mock (SearchCriteria .class );
78- Mockito . when (sb .create ()).thenReturn (sc );
79- Mockito . doReturn (List .of (mockSumCount )).when (hostDao ).customSearch (Mockito . any (SearchCriteria .class ), Mockito . any ());
84+ HostVO host = mock (HostVO .class );
85+ GenericSearchBuilder <HostVO , GenericDaoBase .SumCount > sb = mock (GenericSearchBuilder .class );
86+ when (sb .entity ()).thenReturn (host );
87+ doReturn (sb ).when (hostDao ).createSearchBuilder (GenericDaoBase .SumCount .class );
88+ SearchCriteria <GenericDaoBase .SumCount > sc = mock (SearchCriteria .class );
89+ when (sb .create ()).thenReturn (sc );
90+ doReturn (List .of (mockSumCount )).when (hostDao ).customSearch (any (SearchCriteria .class ), any ());
8091 Pair <Integer , Integer > result = hostDao .countAllHostsAndCPUSocketsByType (type );
81- Assert . assertEquals (10 , result .first ().intValue ());
82- Assert . assertEquals (20 , result .second ().intValue ());
92+ assertEquals (10 , result .first ().intValue ());
93+ assertEquals (20 , result .second ().intValue ());
8394 Mockito .verify (sc ).setParameters ("type" , type );
8495 }
8596
8697 @ Test
8798 public void testIsHostUp () {
8899 long testHostId = 101L ;
89100 List <Status > statuses = List .of (Status .Up );
90- HostVO host = Mockito . mock (HostVO .class );
91- GenericSearchBuilder <HostVO , Status > sb = Mockito . mock (GenericSearchBuilder .class );
92- Mockito . when (sb .entity ()).thenReturn (host );
93- SearchCriteria <Status > sc = Mockito . mock (SearchCriteria .class );
94- Mockito . when (sb .create ()).thenReturn (sc );
95- Mockito . doReturn (sb ).when (hostDao ).createSearchBuilder (Status .class );
96- Mockito . doReturn (statuses ).when (hostDao ).customSearch (Mockito . any (SearchCriteria .class ), Mockito . any ());
101+ HostVO host = mock (HostVO .class );
102+ GenericSearchBuilder <HostVO , Status > sb = mock (GenericSearchBuilder .class );
103+ when (sb .entity ()).thenReturn (host );
104+ SearchCriteria <Status > sc = mock (SearchCriteria .class );
105+ when (sb .create ()).thenReturn (sc );
106+ doReturn (sb ).when (hostDao ).createSearchBuilder (Status .class );
107+ doReturn (statuses ).when (hostDao ).customSearch (any (SearchCriteria .class ), any ());
97108 boolean result = hostDao .isHostUp (testHostId );
98109 Assert .assertTrue ("Host should be up" , result );
99110 Mockito .verify (sc ).setParameters ("id" , testHostId );
@@ -108,17 +119,17 @@ public void testFindHostIdsByZoneClusterResourceStateTypeAndHypervisorType() {
108119 List <Host .Type > types = List .of (Host .Type .Routing );
109120 List <Hypervisor .HypervisorType > hypervisorTypes = List .of (Hypervisor .HypervisorType .KVM );
110121 List <Long > mockResults = List .of (1001L , 1002L ); // Mocked result
111- HostVO host = Mockito . mock (HostVO .class );
112- GenericSearchBuilder <HostVO , Long > sb = Mockito . mock (GenericSearchBuilder .class );
113- Mockito . when (sb .entity ()).thenReturn (host );
114- SearchCriteria <Long > sc = Mockito . mock (SearchCriteria .class );
115- Mockito . when (sb .create ()).thenReturn (sc );
116- Mockito . when (sb .and ()).thenReturn (sb );
117- Mockito . doReturn (sb ).when (hostDao ).createSearchBuilder (Long .class );
118- Mockito . doReturn (mockResults ).when (hostDao ).customSearch (Mockito . any (SearchCriteria .class ), Mockito . any ());
122+ HostVO host = mock (HostVO .class );
123+ GenericSearchBuilder <HostVO , Long > sb = mock (GenericSearchBuilder .class );
124+ when (sb .entity ()).thenReturn (host );
125+ SearchCriteria <Long > sc = mock (SearchCriteria .class );
126+ when (sb .create ()).thenReturn (sc );
127+ when (sb .and ()).thenReturn (sb );
128+ doReturn (sb ).when (hostDao ).createSearchBuilder (Long .class );
129+ doReturn (mockResults ).when (hostDao ).customSearch (any (SearchCriteria .class ), any ());
119130 List <Long > hostIds = hostDao .findHostIdsByZoneClusterResourceStateTypeAndHypervisorType (
120131 zoneId , clusterId , resourceStates , types , hypervisorTypes );
121- Assert . assertEquals (mockResults , hostIds );
132+ assertEquals (mockResults , hostIds );
122133 Mockito .verify (sc ).setParameters ("zoneId" , zoneId );
123134 Mockito .verify (sc ).setParameters ("clusterId" , clusterId );
124135 Mockito .verify (sc ).setParameters ("resourceState" , resourceStates .toArray ());
@@ -130,28 +141,28 @@ public void testFindHostIdsByZoneClusterResourceStateTypeAndHypervisorType() {
130141 public void testListDistinctHypervisorTypes () {
131142 Long zoneId = 1L ;
132143 List <Hypervisor .HypervisorType > mockResults = List .of (Hypervisor .HypervisorType .KVM , Hypervisor .HypervisorType .XenServer );
133- HostVO host = Mockito . mock (HostVO .class );
134- GenericSearchBuilder <HostVO , Hypervisor .HypervisorType > sb = Mockito . mock (GenericSearchBuilder .class );
135- Mockito . when (sb .entity ()).thenReturn (host );
136- SearchCriteria <Hypervisor .HypervisorType > sc = Mockito . mock (SearchCriteria .class );
137- Mockito . when (sb .create ()).thenReturn (sc );
138- Mockito . doReturn (sb ).when (hostDao ).createSearchBuilder (Hypervisor .HypervisorType .class );
139- Mockito . doReturn (mockResults ).when (hostDao ).customSearch (Mockito . any (SearchCriteria .class ), Mockito . any ());
144+ HostVO host = mock (HostVO .class );
145+ GenericSearchBuilder <HostVO , Hypervisor .HypervisorType > sb = mock (GenericSearchBuilder .class );
146+ when (sb .entity ()).thenReturn (host );
147+ SearchCriteria <Hypervisor .HypervisorType > sc = mock (SearchCriteria .class );
148+ when (sb .create ()).thenReturn (sc );
149+ doReturn (sb ).when (hostDao ).createSearchBuilder (Hypervisor .HypervisorType .class );
150+ doReturn (mockResults ).when (hostDao ).customSearch (any (SearchCriteria .class ), any ());
140151 List <Hypervisor .HypervisorType > hypervisorTypes = hostDao .listDistinctHypervisorTypes (zoneId );
141- Assert . assertEquals (mockResults , hypervisorTypes );
152+ assertEquals (mockResults , hypervisorTypes );
142153 Mockito .verify (sc ).setParameters ("zoneId" , zoneId );
143154 Mockito .verify (sc ).setParameters ("type" , Host .Type .Routing );
144155 }
145156
146157 @ Test
147158 public void testListByIds () {
148159 List <Long > ids = List .of (101L , 102L );
149- List <HostVO > mockResults = List .of (Mockito . mock (HostVO .class ), Mockito . mock (HostVO .class ));
160+ List <HostVO > mockResults = List .of (mock (HostVO .class ), mock (HostVO .class ));
150161 hostDao .IdsSearch = mockSearchBuilder ;
151- Mockito . when (mockSearchBuilder .create ()).thenReturn (mockSearchCriteria );
152- Mockito . doReturn (mockResults ).when (hostDao ).search (Mockito . any (SearchCriteria .class ), Mockito . any ());
162+ when (mockSearchBuilder .create ()).thenReturn (mockSearchCriteria );
163+ doReturn (mockResults ).when (hostDao ).search (any (SearchCriteria .class ), any ());
153164 List <HostVO > hosts = hostDao .listByIds (ids );
154- Assert . assertEquals (mockResults , hosts );
165+ assertEquals (mockResults , hosts );
155166 Mockito .verify (mockSearchCriteria ).setParameters ("id" , ids .toArray ());
156167 Mockito .verify (hostDao ).search (mockSearchCriteria , null );
157168 }
@@ -164,15 +175,15 @@ public void testListIdsBy() {
164175 Hypervisor .HypervisorType hypervisorType = Hypervisor .HypervisorType .KVM ;
165176 Long zoneId = 1L , podId = 2L , clusterId = 3L ;
166177 List <Long > mockResults = List .of (1001L , 1002L );
167- HostVO host = Mockito . mock (HostVO .class );
168- GenericSearchBuilder <HostVO , Long > sb = Mockito . mock (GenericSearchBuilder .class );
169- Mockito . when (sb .entity ()).thenReturn (host );
170- SearchCriteria <Long > sc = Mockito . mock (SearchCriteria .class );
171- Mockito . when (sb .create ()).thenReturn (sc );
172- Mockito . doReturn (sb ).when (hostDao ).createSearchBuilder (Long .class );
173- Mockito . doReturn (mockResults ).when (hostDao ).customSearch (Mockito . any (SearchCriteria .class ), Mockito . any ());
178+ HostVO host = mock (HostVO .class );
179+ GenericSearchBuilder <HostVO , Long > sb = mock (GenericSearchBuilder .class );
180+ when (sb .entity ()).thenReturn (host );
181+ SearchCriteria <Long > sc = mock (SearchCriteria .class );
182+ when (sb .create ()).thenReturn (sc );
183+ doReturn (sb ).when (hostDao ).createSearchBuilder (Long .class );
184+ doReturn (mockResults ).when (hostDao ).customSearch (any (SearchCriteria .class ), any ());
174185 List <Long > hostIds = hostDao .listIdsBy (type , status , resourceState , hypervisorType , zoneId , podId , clusterId );
175- Assert . assertEquals (mockResults , hostIds );
186+ assertEquals (mockResults , hostIds );
176187 Mockito .verify (sc ).setParameters ("type" , type );
177188 Mockito .verify (sc ).setParameters ("status" , status );
178189 Mockito .verify (sc ).setParameters ("resourceState" , resourceState );
@@ -181,4 +192,39 @@ public void testListIdsBy() {
181192 Mockito .verify (sc ).setParameters ("podId" , podId );
182193 Mockito .verify (sc ).setParameters ("clusterId" , clusterId );
183194 }
195+
196+ @ Test
197+ public void testListDistinctHypervisorArchTypes_WithZone () {
198+ Long zoneId = 123L ;
199+ HostVO host1 = mock (HostVO .class );
200+ when (host1 .getHypervisorType ()).thenReturn (Hypervisor .HypervisorType .XenServer );
201+ when (host1 .getArch ()).thenReturn (CPU .CPUArch .amd64 );
202+ HostVO host2 = mock (HostVO .class );
203+ when (host2 .getHypervisorType ()).thenReturn (Hypervisor .HypervisorType .KVM );
204+ when (host2 .getArch ()).thenReturn (CPU .CPUArch .arm64 );
205+ List <HostVO > dummyHosts = Arrays .asList (host1 , host2 );
206+ doReturn (dummyHosts ).when (hostDao ).search (any (SearchCriteria .class ), isNull ());
207+ List <Pair <Hypervisor .HypervisorType , CPU .CPUArch >> result = hostDao .listDistinctHypervisorArchTypes (zoneId );
208+ assertNotNull (result );
209+ assertEquals (2 , result .size ());
210+ assertEquals (Hypervisor .HypervisorType .XenServer , result .get (0 ).first ());
211+ assertEquals (CPU .CPUArch .amd64 , result .get (0 ).second ());
212+ assertEquals (Hypervisor .HypervisorType .KVM , result .get (1 ).first ());
213+ assertEquals (CPU .CPUArch .arm64 , result .get (1 ).second ());
214+ }
215+
216+ @ Test
217+ public void testListDistinctHypervisorArchTypes_WithoutZone () {
218+ Long zoneId = null ;
219+ HostVO host1 = mock (HostVO .class );
220+ when (host1 .getHypervisorType ()).thenReturn (Hypervisor .HypervisorType .VMware );
221+ when (host1 .getArch ()).thenReturn (CPU .CPUArch .amd64 );
222+ List <HostVO > dummyHosts = Collections .singletonList (host1 );
223+ doReturn (dummyHosts ).when (hostDao ).search (any (SearchCriteria .class ), isNull ());
224+ List <Pair <Hypervisor .HypervisorType , CPU .CPUArch >> result = hostDao .listDistinctHypervisorArchTypes (zoneId );
225+ assertNotNull (result );
226+ assertEquals (1 , result .size ());
227+ assertEquals (Hypervisor .HypervisorType .VMware , result .get (0 ).first ());
228+ assertEquals (CPU .CPUArch .amd64 , result .get (0 ).second ());
229+ }
184230}
0 commit comments