# HG changeset patch # User Severin Gehwolf # Date 1375458541 -7200 # Node ID b43db0f054d21f22276112b5e6e01738ca6eadb5 # Parent 91e56d2ba874d7269f15369f8e9a013d0fe54b69 Remove Storage.getCount() and replace with prepared query. Reviewed-by: omajid Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-August/007762.html PR1509 diff -r 91e56d2ba874 -r b43db0f054d2 distribution/config/thermostat-roles.properties --- a/distribution/config/thermostat-roles.properties Wed Aug 14 17:48:13 2013 +0200 +++ b/distribution/config/thermostat-roles.properties Fri Aug 02 17:49:01 2013 +0200 @@ -39,8 +39,7 @@ # "thermostat-client" role. #thermostat-client = thermostat-realm, thermostat-login, thermostat-query, \ # thermostat-cmdc-generate, thermostat-load-file, \ -# thermostat-get-count, thermostat-register-category, \ -# thermostat-prepare-statement +# thermostat-register-category, thermostat-prepare-statement # # Example recursive role definition that grants all command channel privileges. # You may uncomment the following lines and assign your client users this diff -r 91e56d2ba874 -r b43db0f054d2 host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/CpuStatDAO.java --- a/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/CpuStatDAO.java Wed Aug 14 17:48:13 2013 +0200 +++ b/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/CpuStatDAO.java Fri Aug 02 17:49:01 2013 +0200 @@ -40,13 +40,12 @@ import com.redhat.thermostat.annotations.Service; import com.redhat.thermostat.host.cpu.common.model.CpuStat; -import com.redhat.thermostat.storage.core.Countable; import com.redhat.thermostat.storage.core.HostRef; import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Key; @Service -public interface CpuStatDAO extends Countable { +public interface CpuStatDAO { static Key> cpuLoadKey = new Key<>("perProcessorUsage", false); diff -r 91e56d2ba874 -r b43db0f054d2 host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java --- a/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java Wed Aug 14 17:48:13 2013 +0200 +++ b/host-cpu/common/src/main/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOImpl.java Fri Aug 02 17:49:01 2013 +0200 @@ -68,10 +68,5 @@ add.setPojo(stat); add.apply(); } - - @Override - public long getCount() { - return storage.getCount(cpuStatCategory); - } } diff -r 91e56d2ba874 -r b43db0f054d2 host-cpu/common/src/test/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOTest.java --- a/host-cpu/common/src/test/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/host-cpu/common/src/test/java/com/redhat/thermostat/host/cpu/common/internal/CpuStatDAOTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -163,14 +163,5 @@ verify(add).setPojo(stat); verify(add).apply(); } - - @Test - public void testGetCount() { - Storage storage = mock(Storage.class); - when(storage.getCount(any(Category.class))).thenReturn(5L); - CpuStatDAO dao = new CpuStatDAOImpl(storage); - Long count = dao.getCount(); - assertEquals((Long) 5L, count); - } } diff -r 91e56d2ba874 -r b43db0f054d2 host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/MemoryStatDAO.java --- a/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/MemoryStatDAO.java Wed Aug 14 17:48:13 2013 +0200 +++ b/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/MemoryStatDAO.java Fri Aug 02 17:49:01 2013 +0200 @@ -40,13 +40,12 @@ import com.redhat.thermostat.annotations.Service; import com.redhat.thermostat.host.memory.common.model.MemoryStat; -import com.redhat.thermostat.storage.core.Countable; +import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.HostRef; -import com.redhat.thermostat.storage.core.Category; import com.redhat.thermostat.storage.core.Key; @Service -public interface MemoryStatDAO extends Countable { +public interface MemoryStatDAO { static Key memoryTotalKey = new Key<>("total", false); static Key memoryFreeKey = new Key<>("free", false); diff -r 91e56d2ba874 -r b43db0f054d2 host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java --- a/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java Wed Aug 14 17:48:13 2013 +0200 +++ b/host-memory/common/src/main/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOImpl.java Fri Aug 02 17:49:01 2013 +0200 @@ -69,9 +69,5 @@ add.apply(); } - @Override - public long getCount() { - return storage.getCount(memoryStatCategory); - } } diff -r 91e56d2ba874 -r b43db0f054d2 host-memory/common/src/test/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOTest.java --- a/host-memory/common/src/test/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/host-memory/common/src/test/java/com/redhat/thermostat/host/memory/common/internal/MemoryStatDAOTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -149,15 +149,6 @@ verify(add).setPojo(stat); verify(add).apply(); } - - @Test - public void testGetCount() { - Storage storage = mock(Storage.class); - when(storage.getCount(any(Category.class))).thenReturn(5L); - MemoryStatDAO dao = new MemoryStatDAOImpl(storage); - Long count = dao.getCount(); - assertEquals((Long) 5L, count); - } } diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/QueuedStorage.java Fri Aug 02 17:49:01 2013 +0200 @@ -189,12 +189,6 @@ } - @SuppressWarnings("rawtypes") - @Override - public long getCount(Category category) { - return delegate.getCount(category); - } - @Override public void saveFile(final String filename, final InputStream data) { diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/core/Storage.java Fri Aug 02 17:49:01 2013 +0200 @@ -88,8 +88,6 @@ */ void purge(String agentId); - long getCount(Category category); - void saveFile(String filename, InputStream data); InputStream loadFile(String filename); diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOImpl.java Fri Aug 02 17:49:01 2013 +0200 @@ -82,24 +82,22 @@ @Override public long getCount() { - return storage.getCount(CATEGORY); + long count = 0L; + Cursor agentCursor = getCursorForAllAgentInformation(); + if (agentCursor == null) { + return count; + } + while (agentCursor.hasNext()) { + count++; + agentCursor.next(); + } + return count; } @Override public List getAllAgentInformation() { - StatementDescriptor desc = new StatementDescriptor<>(CATEGORY, QUERY_ALL_AGENTS); - PreparedStatement prepared = null; - Cursor agentCursor = null; - try { - prepared = storage.prepareStatement(desc); - agentCursor = prepared.executeQuery(); - } catch (DescriptorParsingException e) { - // should not happen, but if it *does* happen, at least log it - logger.log(Level.SEVERE, "Preparing query '" + desc + "' failed!", e); - return Collections.emptyList(); - } catch (StatementExecutionException e) { - // should not happen, but if it *does* happen, at least log it - logger.log(Level.SEVERE, "Executing query '" + desc + "' failed!", e); + Cursor agentCursor = getCursorForAllAgentInformation(); + if (agentCursor == null) { return Collections.emptyList(); } List results = new ArrayList<>(); @@ -110,6 +108,24 @@ } return results; } + + private Cursor getCursorForAllAgentInformation() { + StatementDescriptor desc = new StatementDescriptor<>(CATEGORY, QUERY_ALL_AGENTS); + PreparedStatement prepared = null; + try { + prepared = storage.prepareStatement(desc); + return prepared.executeQuery(); + } catch (DescriptorParsingException e) { + // should not happen, but if it *does* happen, at least log it + logger.log(Level.SEVERE, "Preparing query '" + desc + "' failed!", e); + return null; + } catch (StatementExecutionException e) { + // should not happen, but if it *does* happen, at least log it + logger.log(Level.SEVERE, "Executing query '" + desc + "' failed!", e); + return null; + } + + } @Override public List getAliveAgents() { diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/DAOImplStatementDescriptorRegistration.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/DAOImplStatementDescriptorRegistration.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/DAOImplStatementDescriptorRegistration.java Fri Aug 02 17:49:01 2013 +0200 @@ -62,6 +62,7 @@ daoDescs.add(HostInfoDAOImpl.QUERY_HOST_INFO); daoDescs.add(HostInfoDAOImpl.QUERY_ALL_HOSTS); daoDescs.add(NetworkInterfaceInfoDAOImpl.QUERY_NETWORK_INFO); + daoDescs.add(VmInfoDAOImpl.QUERY_ALL_VMS_FOR_HOST); daoDescs.add(VmInfoDAOImpl.QUERY_ALL_VMS); daoDescs.add(VmInfoDAOImpl.QUERY_VM_INFO); return daoDescs; diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOImpl.java Fri Aug 02 17:49:01 2013 +0200 @@ -115,22 +115,10 @@ @Override public Collection getHosts() { - StatementDescriptor desc = new StatementDescriptor<>(hostInfoCategory, QUERY_ALL_HOSTS); - PreparedStatement prepared; - Cursor cursor; - try { - prepared = storage.prepareStatement(desc); - cursor = prepared.executeQuery(); - } catch (DescriptorParsingException e) { - // should not happen, but if it *does* happen, at least log it - logger.log(Level.SEVERE, "Preparing query '" + desc + "' failed!", e); - return Collections.emptyList(); - } catch (StatementExecutionException e) { - // should not happen, but if it *does* happen, at least log it - logger.log(Level.SEVERE, "Executing query '" + desc + "' failed!", e); + Cursor cursor = getAllHostInfoCursor(); + if (cursor == null) { return Collections.emptyList(); } - List result = new ArrayList<>(); while (cursor.hasNext()) { HostInfo hostInfo = cursor.next(); @@ -155,16 +143,41 @@ return hosts; } - private HostRef toHostRef(HostInfo hostInfo) { String agentId = hostInfo.getAgentId(); String hostName = hostInfo.getHostname(); return new HostRef(agentId, hostName); } + + private Cursor getAllHostInfoCursor() { + StatementDescriptor desc = new StatementDescriptor<>(hostInfoCategory, QUERY_ALL_HOSTS); + PreparedStatement prepared; + try { + prepared = storage.prepareStatement(desc); + return prepared.executeQuery(); + } catch (DescriptorParsingException e) { + // should not happen, but if it *does* happen, at least log it + logger.log(Level.SEVERE, "Preparing query '" + desc + "' failed!", e); + return null; + } catch (StatementExecutionException e) { + // should not happen, but if it *does* happen, at least log it + logger.log(Level.SEVERE, "Executing query '" + desc + "' failed!", e); + return null; + } + } @Override public long getCount() { - return storage.getCount(hostInfoCategory); + long count = 0; + Cursor hostInfoCursor = getAllHostInfoCursor(); + if (hostInfoCursor == null) { + return count; + } + while (hostInfoCursor.hasNext()) { + count++; + hostInfoCursor.next(); + } + return count; } } diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java --- a/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/main/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOImpl.java Fri Aug 02 17:49:01 2013 +0200 @@ -68,9 +68,10 @@ + vmInfoCategory.getName() + " WHERE '" + Key.AGENT_ID.getName() + "' = ?s AND '" + Key.VM_ID.getName() + "' = ?s LIMIT 1"; - static final String QUERY_ALL_VMS = "QUERY " + static final String QUERY_ALL_VMS_FOR_HOST = "QUERY " + vmInfoCategory.getName() + " WHERE '" + Key.AGENT_ID.getName() + "' = ?s"; + static final String QUERY_ALL_VMS = "QUERY " + vmInfoCategory.getName(); private final Storage storage; private final ExpressionFactory factory; @@ -114,7 +115,7 @@ @Override public Collection getVMs(HostRef host) { - StatementDescriptor desc = new StatementDescriptor<>(vmInfoCategory, QUERY_ALL_VMS); + StatementDescriptor desc = new StatementDescriptor<>(vmInfoCategory, QUERY_ALL_VMS_FOR_HOST); PreparedStatement stmt; Cursor cursor; try { @@ -155,7 +156,27 @@ @Override public long getCount() { - return storage.getCount(vmInfoCategory); + long count = 0; + StatementDescriptor desc = new StatementDescriptor<>(vmInfoCategory, QUERY_ALL_VMS); + PreparedStatement stmt; + Cursor cursor; + try { + stmt = storage.prepareStatement(desc); + cursor = stmt.executeQuery(); + } catch (DescriptorParsingException e) { + // should not happen, but if it *does* happen, at least log it + logger.log(Level.SEVERE, "Preparing query '" + desc + "' failed!", e); + return count; + } catch (StatementExecutionException e) { + // should not happen, but if it *does* happen, at least log it + logger.log(Level.SEVERE, "Executing query '" + desc + "' failed!", e); + return count; + } + while (cursor.hasNext()) { + count++; + cursor.next(); + } + return count; } @Override diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/core/QueuedStorageTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -217,7 +217,6 @@ when(delegateStorage.createAdd(any(Category.class))).thenReturn(delegateAdd); when(delegateStorage.createReplace(any(Category.class))).thenReturn(delegateReplace); when(delegateStorage.createRemove()).thenReturn(remove); - when(delegateStorage.getCount(any(Category.class))).thenReturn(42l); expectedFile = mock(InputStream.class); when(delegateStorage.loadFile(anyString())).thenReturn(expectedFile); when(delegateStorage.getAgentId()).thenReturn("huzzah"); @@ -295,17 +294,6 @@ } @Test - public void testGetCount() { - Category category = mock(Category.class); - - long result = queuedStorage.getCount(category); - assertEquals(42, result); - - assertNull(executor.getTask()); - assertNull(fileExecutor.getTask()); - } - - @Test public void testSaveFile() { InputStream stream = mock(InputStream.class); @@ -460,12 +448,6 @@ } @Override - public long getCount(Category category) { - // not implemented - throw new AssertionError(); - } - - @Override public void saveFile(String filename, InputStream data) { // not implemented throw new AssertionError(); diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/AgentInfoDAOTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -153,6 +153,31 @@ assertEquals(expected, result); } + /* + * getCount() with two AgentInformation records. + */ + @Test + public void testGetCount() + throws DescriptorParsingException, StatementExecutionException { + AgentInformation agent2 = new AgentInformation(); + + @SuppressWarnings("unchecked") + Cursor agentCursor = (Cursor) mock(Cursor.class); + when(agentCursor.hasNext()).thenReturn(true).thenReturn(true).thenReturn(false); + when(agentCursor.next()).thenReturn(agent1).thenReturn(agent2).thenReturn(null); + + Storage storage = mock(Storage.class); + @SuppressWarnings("unchecked") + PreparedStatement stmt = (PreparedStatement) mock(PreparedStatement.class); + when(storage.prepareStatement(anyDescriptor())).thenReturn(stmt); + when(stmt.executeQuery()).thenReturn(agentCursor); + AgentInfoDAOImpl dao = new AgentInfoDAOImpl(storage); + + long count = dao.getCount(); + + assertEquals(2, count); + } + @SuppressWarnings("unchecked") private StatementDescriptor anyDescriptor() { return (StatementDescriptor) any(StatementDescriptor.class); diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/DAOImplStatementDescriptorRegistrationTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/DAOImplStatementDescriptorRegistrationTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/DAOImplStatementDescriptorRegistrationTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -62,7 +62,7 @@ public void registersAllQueries() { DAOImplStatementDescriptorRegistration reg = new DAOImplStatementDescriptorRegistration(); Set descriptors = reg.getStatementDescriptors(); - assertEquals(9, descriptors.size()); + assertEquals(10, descriptors.size()); assertFalse(descriptors.contains(null)); } @@ -80,7 +80,7 @@ registrations.add(r); } assertEquals(1, registrations.size()); - assertEquals(9, registrations.get(0).getStatementDescriptors().size()); + assertEquals(10, registrations.get(0).getStatementDescriptors().size()); } @Test diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/HostInfoDAOTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -224,14 +224,13 @@ } @Test - public void testGetCount() { - Storage storage = mock(Storage.class); - when(storage.getCount(any(Category.class))).thenReturn(5L); - AgentInfoDAO agentInfoDao = mock(AgentInfoDAO.class); + public void testGetCount() throws Exception { + Storage storage = setupStorageForSingleHost(); + AgentInfoDAO agentInfo = mock(AgentInfoDAO.class); - HostInfoDAO dao = new HostInfoDAOImpl(storage, agentInfoDao); - Long count = dao.getCount(); - assertEquals((Long) 5L, count); + HostInfoDAO hostsDAO = new HostInfoDAOImpl(storage, agentInfo); + + assertEquals(1, hostsDAO.getCount()); } @Test diff -r 91e56d2ba874 -r b43db0f054d2 storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOTest.java --- a/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/core/src/test/java/com/redhat/thermostat/storage/internal/dao/VmInfoDAOTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -116,7 +116,9 @@ String expectedVmInfo = "QUERY vm-info WHERE 'agentId' = ?s AND 'vmId' = ?s LIMIT 1"; assertEquals(expectedVmInfo, VmInfoDAOImpl.QUERY_VM_INFO); String expectedVmInfoAll = "QUERY vm-info WHERE 'agentId' = ?s"; - assertEquals(expectedVmInfoAll, VmInfoDAOImpl.QUERY_ALL_VMS); + assertEquals(expectedVmInfoAll, VmInfoDAOImpl.QUERY_ALL_VMS_FOR_HOST); + String expectedAllVms = "QUERY vm-info"; + assertEquals(expectedAllVms, VmInfoDAOImpl.QUERY_ALL_VMS); } @Test @@ -285,12 +287,10 @@ } @Test - public void testGetCount() { - Storage storage = mock(Storage.class); - when(storage.getCount(any(Category.class))).thenReturn(5L); + public void testGetCount() throws Exception { + Storage storage = setupStorageForMultiVM(); VmInfoDAO dao = new VmInfoDAOImpl(storage); - Long count = dao.getCount(); - assertEquals((Long) 5L, count); + assertEquals(2, dao.getCount()); } @Test diff -r 91e56d2ba874 -r b43db0f054d2 storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java --- a/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/mongo/src/main/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorage.java Fri Aug 02 17:49:01 2013 +0200 @@ -326,16 +326,6 @@ return dbCursor; } - - @Override - public long getCount(Category category) { - DBCollection coll = getCachedCollection(category); - if (coll != null) { - return coll.getCount(); - } - return 0L; - } - @Override public void saveFile(String filename, InputStream data) { GridFS gridFS = new GridFS(db); diff -r 91e56d2ba874 -r b43db0f054d2 storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java --- a/storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/storage/mongo/src/test/java/com/redhat/thermostat/storage/mongodb/internal/MongoStorageTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -306,28 +306,6 @@ verifyDefaultCursor(cursor); } - @Test - public void verifyGetCount() throws Exception { - MongoStorage storage = makeStorage(); - long count = storage.getCount(testCategory); - assertEquals(2, count); - } - - @Test - public void verifyGetCountForEmptyCategory() throws Exception { - MongoStorage storage = makeStorage(); - long count = storage.getCount(emptyTestCategory); - assertEquals(0, count); - } - - @Test - public void verifyGetCountForNonexistentCategory() throws Exception { - MongoStorage storage = makeStorage(); - setDbFieldInStorage(storage); - long count = storage.getCount(new Category("NonExistent", TestClass.class)); - assertEquals(0, count); - } - private void verifyDefaultCursor(Cursor cursor) { assertTrue(cursor.hasNext()); TestClass obj1 = cursor.next(); diff -r 91e56d2ba874 -r b43db0f054d2 web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java --- a/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java Wed Aug 14 17:48:13 2013 +0200 +++ b/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java Fri Aug 02 17:49:01 2013 +0200 @@ -596,17 +596,6 @@ } @Override - public long getCount(Category category) throws StorageException { - NameValuePair categoryParam = new BasicNameValuePair("category", gson.toJson(categoryIds.get(category))); - List formparams = Arrays.asList(categoryParam); - try (CloseableHttpEntity entity = post(endpoint + "/get-count", formparams)) { - Reader reader = getContentAsReader(entity); - long result = gson.fromJson(reader, Long.class); - return result; - } - } - - @Override public InputStream loadFile(String name) throws StorageException { NameValuePair fileParam = new BasicNameValuePair("file", name); List formparams = Arrays.asList(fileParam); diff -r 91e56d2ba874 -r b43db0f054d2 web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java --- a/web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/web/client/src/test/java/com/redhat/thermostat/web/client/internal/WebStorageTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -537,21 +537,6 @@ } @Test - public void testGetCount() throws UnsupportedEncodingException, IOException { - - prepareServer(new Gson().toJson(12345)); - long result = storage.getCount(category); - - StringReader reader = new StringReader(requestBody); - BufferedReader bufRead = new BufferedReader(reader); - String line = URLDecoder.decode(bufRead.readLine(), "UTF-8"); - String[] parts = line.split("="); - assertEquals("category", parts[0]); - assertEquals("42", parts[1]); - assertEquals(12345, result); - } - - @Test public void testSaveFile() { String data = "Hello World"; ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes()); diff -r 91e56d2ba874 -r b43db0f054d2 web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java --- a/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Wed Aug 14 17:48:13 2013 +0200 +++ b/web/server/src/main/java/com/redhat/thermostat/web/server/WebStorageEndPoint.java Fri Aug 02 17:49:01 2013 +0200 @@ -233,8 +233,6 @@ removePojo(req, resp); } else if (cmd.equals("update-pojo")) { updatePojo(req, resp); - } else if (cmd.equals("get-count")) { - getCount(req, resp); } else if (cmd.equals("save-file")) { saveFile(req, resp); } else if (cmd.equals("load-file")) { @@ -438,26 +436,6 @@ } - @WebStoragePathHandler( path = "get-count" ) - private void getCount(HttpServletRequest req, HttpServletResponse resp) { - if (! isAuthorized(req, resp, Roles.GET_COUNT)) { - return; - } - try { - String categoryParam = req.getParameter("category"); - int categoryId = gson.fromJson(categoryParam, Integer.class); - Category category = getCategoryFromId(categoryId); - long result = storage.getCount(category); - resp.setStatus(HttpServletResponse.SC_OK); - resp.setContentType(RESPONSE_JSON_CONTENT_TYPE); - gson.toJson(result, resp.getWriter()); - resp.flushBuffer(); - } catch (IOException ex) { - ex.printStackTrace(); - resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - } - } - @WebStoragePathHandler( path = "register-category" ) private synchronized void registerCategory(HttpServletRequest req, HttpServletResponse resp) throws IOException { if (! isAuthorized(req, resp, Roles.REGISTER_CATEGORY)) { diff -r 91e56d2ba874 -r b43db0f054d2 web/server/src/main/java/com/redhat/thermostat/web/server/auth/Roles.java --- a/web/server/src/main/java/com/redhat/thermostat/web/server/auth/Roles.java Wed Aug 14 17:48:13 2013 +0200 +++ b/web/server/src/main/java/com/redhat/thermostat/web/server/auth/Roles.java Fri Aug 02 17:49:01 2013 +0200 @@ -70,7 +70,6 @@ final String DELETE = "thermostat-remove"; final String PREPARE_STATEMENT = "thermostat-prepare-statement"; final String READ = "thermostat-query"; - final String GET_COUNT = "thermostat-get-count"; final String LOAD_FILE = "thermostat-load-file"; final String SAVE_FILE = "thermostat-save-file"; final String PURGE = "thermostat-purge"; @@ -81,7 +80,7 @@ final String ACCESS_REALM = "thermostat-realm"; final String[] ALL_ROLES = { APPEND, REPLACE, UPDATE, DELETE, READ, - GET_COUNT, LOAD_FILE, SAVE_FILE, PURGE, REGISTER_CATEGORY, + LOAD_FILE, SAVE_FILE, PURGE, REGISTER_CATEGORY, CMD_CHANNEL_GENERATE, CMD_CHANNEL_VERIFY, LOGIN, ACCESS_REALM, PREPARE_STATEMENT, GRANT_AGENTS_READ_ALL, GRANT_HOSTS_READ_ALL, GRANT_VMS_READ_BY_USERNAME_ALL, GRANT_VMS_READ_BY_VM_ID_ALL, @@ -95,7 +94,7 @@ final String[] CLIENT_ROLES = { ACCESS_REALM, LOGIN, CMD_CHANNEL_GENERATE, LOAD_FILE, - GET_COUNT, READ, REGISTER_CATEGORY, PREPARE_STATEMENT + READ, REGISTER_CATEGORY, PREPARE_STATEMENT }; } diff -r 91e56d2ba874 -r b43db0f054d2 web/server/src/test/java/com/redhat/thermostat/web/server/KnownDescriptorRegistryTest.java --- a/web/server/src/test/java/com/redhat/thermostat/web/server/KnownDescriptorRegistryTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/web/server/src/test/java/com/redhat/thermostat/web/server/KnownDescriptorRegistryTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -81,7 +81,7 @@ // storage-core registers 9 queries; this module has // only storage-core as maven dep which registers queries. // see DAOImplStatementDescriptorRegistration - assertEquals(9, trustedDescs.size()); + assertEquals(10, trustedDescs.size()); } @Test diff -r 91e56d2ba874 -r b43db0f054d2 web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java --- a/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java Wed Aug 14 17:48:13 2013 +0200 +++ b/web/server/src/test/java/com/redhat/thermostat/web/server/WebStorageEndpointTest.java Fri Aug 02 17:49:01 2013 +0200 @@ -242,7 +242,7 @@ // authorization checks final String[] authPaths = new String[] { "prepare-statement", "query-execute", "put-pojo", "register-category", "remove-pojo", - "update-pojo", "get-count", "save-file", "load-file", + "update-pojo", "save-file", "load-file", "purge", "ping", "generate-token", "verify-token" }; Map checkedAutPaths = new HashMap<>(); @@ -962,56 +962,6 @@ doUnauthorizedTest("update-pojo", failMsg); } - - @Test - public void authorizedGetCount() throws Exception { - String[] roleNames = new String[] { - Roles.GET_COUNT, - Roles.REGISTER_CATEGORY, - Roles.ACCESS_REALM - }; - String testuser = "testuser"; - String password = "testpassword"; - final LoginService loginService = new TestLoginService(testuser, password, roleNames); - port = FreePortFinder.findFreePort(new TryPort() { - - @Override - public void tryPort(int port) throws Exception { - startServer(port, loginService); - } - }); - registerCategory(testuser, password); - - when(mockStorage.getCount(category)).thenReturn(12345L); - String endpoint = getEndpoint(); - - URL url = new URL(endpoint + "/get-count"); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); - sendAuthentication(conn, testuser, password); - conn.setDoOutput(true); - conn.setDoInput(true); - conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); - Gson gson = new Gson(); - OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream()); - out.write("category=" + categoryId); - out.flush(); - - InputStream in = conn.getInputStream(); - Reader reader = new InputStreamReader(in); - long result = gson.fromJson(reader, Long.class); - assertEquals(200, conn.getResponseCode()); - assertEquals(12345, result); - verify(mockStorage).getCount(category); - - } - - @Test - public void unauthorizedGetCount() throws Exception { - String failMsg = "thermostat-get-count role missing, expected Forbidden!"; - doUnauthorizedTest("get-count", failMsg); - } - @Test public void authorizedSaveFile() throws Exception { String[] roleNames = new String[] {