public FeedbackChannelImpl(AgentContext agentContext, String name) throws IOException { m_agentContext = agentContext; m_name = name; m_storeManager = new FeedbackStoreManager(agentContext, name); }
@Test public void testEmptyRepository() throws Exception { FeedbackStoreManager feedbackStoreManager = new FeedbackStoreManager(m_agentContext, "test"); assertNotNull(getStoreID(feedbackStoreManager)); }
@Test public void testExceptionHandling() throws Exception { FeedbackStoreManager feedbackStoreManager = new FeedbackStoreManager(m_agentContext, "test"); feedbackStoreManager.forceCreateNewStore(); SortedSet<Long> allFeedbackStoreIDs = feedbackStoreManager.getAllFeedbackStoreIDs(); assertEquals(allFeedbackStoreIDs.size(), 2); }
@Test public void testReadWriteLogEvents() throws Exception { FeedbackStoreManager feedbackStoreManager = new FeedbackStoreManager(m_agentContext, "test"); long storeID = getStoreID(feedbackStoreManager); assertEquals(feedbackStoreManager.getHighestEventID(storeID), 0); feedbackStoreManager.write(1, new HashMap<String, String>()); assertEquals(feedbackStoreManager.getHighestEventID(storeID), 1); assertEquals(feedbackStoreManager.getEvents(storeID, 1, 1).size(), 1); }
@Test public void testReadFromOldStore() throws Exception { FeedbackStoreManager feedbackStoreManager = new FeedbackStoreManager(m_agentContext, "test"); long storeID = getStoreID(feedbackStoreManager); assertEquals(feedbackStoreManager.getHighestEventID(storeID), 0); feedbackStoreManager.write(1, new HashMap<String, String>()); assertEquals(feedbackStoreManager.getHighestEventID(storeID), 1); assertEquals(feedbackStoreManager.getEvents(storeID, 0, 1).size(), 1); feedbackStoreManager.forceCreateNewStore(); assertEquals(feedbackStoreManager.getEvents(storeID, 0, 1).size(), 1); }
@Test public void testLogfileRotation() throws Exception { int maxSize = 100 * 1024; FeedbackStoreManager feedbackStoreManager = new FeedbackStoreManager(m_agentContext, "test", maxSize, maxSize / 5); long storeID = getStoreID(feedbackStoreManager); int recordCount = 1000; assertEquals(feedbackStoreManager.getHighestEventID(storeID), 0); // absolutely exceed the set filesize for this store for (int i = 0; i < recordCount; i++) { HashMap<String, String> eventProps = new HashMap<>(); eventProps.put("key", "value" + i); feedbackStoreManager.write(i, eventProps); } File[] logFiles = getLogFiles(); assertTrue(logFiles.length > 1); // take the last 1000 events... List<Event> events = feedbackStoreManager.getEvents(storeID, 1, 1000); assertEquals(events.size(), 1000); long logFileSize = 0; for (File file : logFiles) { logFileSize += file.length(); } assertTrue(logFileSize < maxSize); }