From cf474e87d1e36121f7b61c6db71b82fc23063a5a Mon Sep 17 00:00:00 2001 From: Mitch <25337396+MitchDrage@users.noreply.github.com> Date: Thu, 1 Oct 2026 05:46:49 +0000 Subject: [PATCH] Restore newest-first ordering in listEvents --- .../com/cloud/event/dao/EventJoinDaoImpl.java | 4 +++- .../cloud/event/dao/EventJoinDaoImplTest.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/server/src/main/java/com/cloud/event/dao/EventJoinDaoImpl.java b/server/src/main/java/com/cloud/event/dao/EventJoinDaoImpl.java index b4316051e439..fb0f6a43d6dc 100644 --- a/server/src/main/java/com/cloud/event/dao/EventJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/event/dao/EventJoinDaoImpl.java @@ -137,7 +137,9 @@ public List searchByIds(Long... ids) { } SearchCriteria sc = vrSearch.create(); sc.setParameters("idIN", ids); - return searchIncludingRemoved(sc, null, null, false); + Filter filter = new Filter(EventJoinVO.class, "createDate", false); + filter.addOrderBy(EventJoinVO.class, "id", false); + return searchIncludingRemoved(sc, filter, null, false); } @Override diff --git a/server/src/test/java/com/cloud/event/dao/EventJoinDaoImplTest.java b/server/src/test/java/com/cloud/event/dao/EventJoinDaoImplTest.java index 8909e40c23d7..f09b230364f7 100644 --- a/server/src/test/java/com/cloud/event/dao/EventJoinDaoImplTest.java +++ b/server/src/test/java/com/cloud/event/dao/EventJoinDaoImplTest.java @@ -19,17 +19,20 @@ import com.cloud.api.query.vo.EventJoinVO; import com.cloud.utils.db.EntityManager; +import com.cloud.utils.db.Filter; import com.cloud.vm.VirtualMachine; import org.apache.cloudstack.api.ApiCommandResourceType; import org.apache.cloudstack.api.response.EventResponse; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; +import java.util.ArrayList; import java.util.UUID; @RunWith(MockitoJUnitRunner.class) @@ -62,4 +65,17 @@ public void testNewEventViewResource() { Assert.assertEquals(response.getResourceType(), resourceType); Assert.assertEquals(response.getResourceName(), resourceName); } + + @Test + public void testSearchByIdsOrdersNewestFirst() { + EventJoinDaoImpl spyDao = Mockito.spy(dao); + ArgumentCaptor filterCaptor = ArgumentCaptor.forClass(Filter.class); + Mockito.doReturn(new ArrayList()).when(spyDao) + .searchIncludingRemoved(Mockito.any(), filterCaptor.capture(), Mockito.any(), Mockito.anyBoolean()); + + spyDao.searchByIds(1L, 2L, 3L); + + Assert.assertNotNull("searchByIds must pass an ordering filter", filterCaptor.getValue()); + Assert.assertEquals(" ORDER BY event_view.created DESC , event_view.id DESC ", filterCaptor.getValue().getOrderBy()); + } }