diff --git a/wsmaster/che-core-api-workspace-activity/src/main/java/org/eclipse/che/api/workspace/activity/JpaWorkspaceActivityDao.java b/wsmaster/che-core-api-workspace-activity/src/main/java/org/eclipse/che/api/workspace/activity/JpaWorkspaceActivityDao.java index ae98ea7dfa..8eead7389a 100644 --- a/wsmaster/che-core-api-workspace-activity/src/main/java/org/eclipse/che/api/workspace/activity/JpaWorkspaceActivityDao.java +++ b/wsmaster/che-core-api-workspace-activity/src/main/java/org/eclipse/che/api/workspace/activity/JpaWorkspaceActivityDao.java @@ -176,6 +176,7 @@ public class JpaWorkspaceActivityDao implements WorkspaceActivityDao { } @Override + @Transactional(rollbackOn = ServerException.class) public long countWorkspacesInStatus(WorkspaceStatus status, long timestamp) throws ServerException { try { diff --git a/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/WorkspaceActivityManagerTest.java b/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/WorkspaceActivityManagerTest.java index 2ecfbfd3ef..5d3443c151 100644 --- a/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/WorkspaceActivityManagerTest.java +++ b/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/WorkspaceActivityManagerTest.java @@ -156,6 +156,12 @@ public class WorkspaceActivityManagerTest { verify(workspaceActivityDao, times(1)).removeActivity(eq(wsId)); } + @Test + public void shouldCountWorkspacesInStatus() throws Exception { + activityManager.countWorkspacesInStatus(WorkspaceStatus.STARTING, 0L); + verify(workspaceActivityDao).countWorkspacesInStatus(eq(WorkspaceStatus.STARTING), eq(0L)); + } + @DataProvider(name = "wsStatus") public Object[][] getWorkspaceStatus() { return Stream.of(WorkspaceStatus.values()) diff --git a/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/spi/tck/WorkspaceActivityDaoTest.java b/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/spi/tck/WorkspaceActivityDaoTest.java index c4cedc93a6..b372cf6489 100644 --- a/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/spi/tck/WorkspaceActivityDaoTest.java +++ b/wsmaster/che-core-api-workspace-activity/src/test/java/org/eclipse/che/api/workspace/activity/spi/tck/WorkspaceActivityDaoTest.java @@ -186,6 +186,25 @@ public class WorkspaceActivityDaoTest { assertEquals(found.getItems(), singletonList(activities[0].getWorkspaceId())); } + @Test(dataProvider = "allWorkspaceStatuses") + public void shouldCountWorkspacesInStatus(WorkspaceStatus status) throws Exception { + long count = workspaceActivityDao.countWorkspacesInStatus(status, System.currentTimeMillis()); + + assertEquals(count, 0); + + workspaceActivityDao.setCreatedTime(activities[0].getWorkspaceId(), 1L); + workspaceActivityDao.setStatusChangeTime(activities[0].getWorkspaceId(), status, 2L); + + workspaceActivityDao.setStatusChangeTime(activities[1].getWorkspaceId(), status, 5L); + workspaceActivityDao.setCreatedTime(activities[1].getWorkspaceId(), 1L); + + count = workspaceActivityDao.countWorkspacesInStatus(status, 3L); + assertEquals(count, 1); + + count = workspaceActivityDao.countWorkspacesInStatus(status, 6L); + assertEquals(count, 2); + } + @DataProvider(name = "allWorkspaceStatuses") public Object[][] getWorkspaceStatus() { return Stream.of(WorkspaceStatus.values())