/** * Event generation. * * @param uid * target unique identifier * @return unique event */ protected Event generateFeatureUsageEvent(String uid) { return new Event(SOURCE_JAVA, TARGET_FEATURE, uid, ACTION_CHECK_OK); }
/** * Default constructor. */ public EventBuilder() { this.event = new Event(); }
@Test public void testGetFeatureUsageHistory() throws InterruptedException { long start = System.currentTimeMillis(); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CREATE)); for (int i = 0; i < 8; i++) { Thread.sleep(100); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK)); repo.saveEvent(new Event(SOURCE_WEB, TARGET_FEATURE, "f2", ACTION_CHECK_OK)); } Thread.sleep(100); // Then EventQueryDefinition testQuery = new EventQueryDefinition(start - 20, System.currentTimeMillis()); TimeSeriesChart tsc = repo.getFeatureUsageHistory(testQuery, TimeUnit.HOURS); Assert.assertEquals(1, tsc.getTimeSlots().size()); }
/** TDD. */ @Test public void testHostHitCount() throws InterruptedException { long start = System.currentTimeMillis(); // When for (int i = 0; i < 8; i++) { Thread.sleep(100); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK)); } Thread.sleep(200); // Then EventQueryDefinition testQuery = new EventQueryDefinition(start, System.currentTimeMillis()); Map<String, MutableHitCount> mapOfHit = repo.getHostHitCount(testQuery); Assert.assertEquals(1, mapOfHit.size()); Assert.assertEquals(1, mapOfHit.values().size()); }
@Test public void testSearchFeatureUsageEvents() throws InterruptedException { long start = System.currentTimeMillis(); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CREATE)); for (int i = 0; i < 8; i++) { Thread.sleep(100); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK)); repo.saveEvent(new Event(SOURCE_WEB, TARGET_FEATURE, "f2", ACTION_CHECK_OK)); } Thread.sleep(100); // Then EventQueryDefinition testQuery = new EventQueryDefinition(start - 20, System.currentTimeMillis()); EventSeries es = repo.searchFeatureUsageEvents(testQuery); Assert.assertEquals(16, es.size()); // Then }
/** {@inheritDoc} */ public Event fromStore(Result result) { if (result == null) return null; Event evt = new Event(); evt.setUuid(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_UID))); evt.setSource(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_SOURCE))); evt.setType(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_TYPE))); evt.setName(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_NAME))); evt.setAction(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_ACTION))); evt.setDuration(Bytes.toLong(result.getValue(B_AUDIT_CF, B_EVENT_DURATION))); evt.setHostName(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_HOSTNAME))); evt.setUser(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_USER))); evt.setValue(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_VALUE))); evt.setTimestamp(Bytes.toLong(result.getValue(B_AUDIT_CF, B_EVENT_TIME))); evt.setCustomKeys(MappingUtil.toMap(Bytes.toString(result.getValue(B_AUDIT_CF, B_EVENT_KEYS)))); return evt; }
/** TDD. */ @Test public void testSourceHitCount() throws InterruptedException { long start = System.currentTimeMillis(); // When for (int i = 0; i < 8; i++) { Thread.sleep(100); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK)); repo.saveEvent(new Event(SOURCE_WEB, TARGET_FEATURE, "f2", ACTION_CHECK_OK)); } Thread.sleep(200); repo.saveEvent(new Event(SOURCE_WEBAPI, TARGET_FEATURE, "f1", ACTION_CHECK_OK)); Thread.sleep(200); // Then EventQueryDefinition testQuery = new EventQueryDefinition(start - 20, System.currentTimeMillis()); Map<String, MutableHitCount> mapOfHit = repo.getSourceHitCount(testQuery); Assert.assertEquals(3, mapOfHit.size()); Assert.assertTrue(mapOfHit.containsKey(SOURCE_JAVA)); Assert.assertTrue(mapOfHit.containsKey(SOURCE_WEB)); Assert.assertEquals(1, mapOfHit.get(SOURCE_WEBAPI).get()); }
/** TDD. */ @Test public void testSaveAuditTrail() throws InterruptedException { long start = System.currentTimeMillis(); // Given Event evt1 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", EventConstants.ACTION_CREATE); // When repo.saveEvent(evt1); // Wait for the event to be effectively store Thread.sleep(200); EventQueryDefinition eqd2 = new EventQueryDefinition(start - 200, System.currentTimeMillis()); Assert.assertEquals(1, repo.getAuditTrail(eqd2).size()); }
/** TDD. */ @Test public void testFeatureUsageHitCount() throws InterruptedException { long start = System.currentTimeMillis(); // Given empty event repository // When repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CREATE)); for (int i = 0; i < 8; i++) { Thread.sleep(100); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK)); repo.saveEvent(new Event(SOURCE_WEB, TARGET_FEATURE, "f2", ACTION_CHECK_OK)); } Thread.sleep(100); // Then EventQueryDefinition testQuery = new EventQueryDefinition(start, System.currentTimeMillis()); // Assert Pie Chart (2 sectors with 8 and 8) Map<String, MutableHitCount> mapOfHit = repo.getFeatureUsageHitCount(testQuery); Assert.assertEquals(2, mapOfHit.size()); Assert.assertTrue(mapOfHit.containsKey("f1")); Assert.assertTrue(mapOfHit.containsKey("f2")); Assert.assertEquals(8, mapOfHit.get("f1").get()); }
/** TDD. */ @Test public void testGetEventByUID() throws InterruptedException { // Given String dummyId = "1234-5678-9012-3456"; Event evt1 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OFF); evt1.setUuid(dummyId); // When repo.saveEvent(evt1); // Let the store to be updated Thread.sleep(100); // Then Event evt = repo.getEventByUUID(dummyId, System.currentTimeMillis()); Assert.assertNotNull(evt); }
/** TDD. */ @Test public void testLimitEventSeries() throws InterruptedException { EventSeries es = new EventSeries(5); for (int i = 0; i < 10; i++) { Thread.sleep(10); es.add(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CREATE)); } Assert.assertEquals(5, es.size()); }
/** TDD. */ @Test public void testUserHitCount() throws InterruptedException { long start = System.currentTimeMillis(); // When for (int i = 0; i < 8; i++) { Event e1 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK); e1.setUser("JOHN"); repo.saveEvent(e1); Thread.sleep(100); Event e2 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK); e2.setUser("BOB"); repo.saveEvent(e2); Thread.sleep(100); } Thread.sleep(200); // Then EventQueryDefinition testQuery = new EventQueryDefinition(start - 20, System.currentTimeMillis()); Map<String, MutableHitCount> mapOfHit = repo.getUserHitCount(testQuery); Assert.assertEquals(2, mapOfHit.size()); Assert.assertTrue(mapOfHit.containsKey("JOHN")); Assert.assertTrue(mapOfHit.containsKey("BOB")); Assert.assertEquals(8, mapOfHit.get("BOB").get()); }
/** * Unmarshall a resultset to Event. * * @param rs * current line * @return * bean populated * @throws SQLException * cannot read SQL result */ public Event mapEvent(ResultSet rs) throws SQLException { // Feature Event evt = new Event(); evt.setUuid(rs.getString(COL_EVENT_UUID)); evt.setTimestamp(rs.getTimestamp(COL_EVENT_TIME).getTime()); evt.setType(rs.getString(COL_EVENT_TYPE)); evt.setName(rs.getString(COL_EVENT_NAME)); evt.setAction(rs.getString(COL_EVENT_ACTION)); evt.setHostName(rs.getString(COL_EVENT_HOSTNAME)); evt.setSource(rs.getString(COL_EVENT_SOURCE)); evt.setDuration(rs.getLong(COL_EVENT_DURATION)); evt.setUser(rs.getString(COL_EVENT_USER)); evt.setValue(rs.getString(COL_EVENT_VALUE)); evt.setCustomKeys(MappingUtil.toMap(rs.getString(COL_EVENT_KEYS))); return evt; }
/** TDD. */ @Test public void testFeatureUsageBarCharts() throws InterruptedException { long start = System.currentTimeMillis(); // Given empty event repository // When repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", EventConstants.ACTION_CREATE)); for (int i = 0; i < 8; i++) { Thread.sleep(100); repo.saveEvent(new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OK)); repo.saveEvent(new Event(SOURCE_WEB, TARGET_FEATURE, "f2", ACTION_CHECK_OK)); } // Then : Assert bar chart (2 bars with 8 and 8) EventQueryDefinition testQuery = new EventQueryDefinition(start - 10, System.currentTimeMillis() + 10); BarChart bChart = repo.getFeatureUsageBarChart(testQuery); Assert.assertEquals(2, bChart.getChartBars().size()); Assert.assertEquals(new Integer(8), bChart.getChartBars().get(0).getValue()); Assert.assertEquals(new Integer(8), bChart.getChartBars().get(1).getValue()); Assert.assertNotNull(bChart.getChartBars().get(0).getColor()); Assert.assertNotNull(bChart.getChartBars().get(1).getColor()); }
/** TDD. */ @Test public void testSaveCheckOff() throws InterruptedException { long start = System.currentTimeMillis(); // Given Event evt1 = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CHECK_OFF); // When Assert.assertTrue(repo.saveEvent(evt1)); Thread.sleep(100); // Then Assert.assertEquals(0, repo.getFeatureUsageTotalHitCount(new EventQueryDefinition(start, System.currentTimeMillis()))); Assert.assertEquals(0, repo.getAuditTrail(new EventQueryDefinition(start, System.currentTimeMillis())).size()); }
/** TDD. */ @Test public void testPurgeEvents() throws InterruptedException { // Given, 2 events in the repo long topStart = System.currentTimeMillis(); Event evtAudit = new Event(SOURCE_JAVA, TARGET_FEATURE, "f1", ACTION_CREATE); evtAudit.setUuid("1234-5678-9012-3456"); Event evtFeatureUsage = new Event(SOURCE_JAVA, TARGET_FEATURE, "f2", ACTION_CHECK_OK); evtFeatureUsage.setUuid("1234-5678-9012-3457"); repo.saveEvent(evtAudit); repo.saveEvent(evtFeatureUsage); Thread.sleep(100); Assert.assertNotNull(repo.getEventByUUID(evtAudit.getUuid(), System.currentTimeMillis())); Assert.assertNotNull(repo.getEventByUUID(evtFeatureUsage.getUuid(), System.currentTimeMillis())); // When EventQueryDefinition testQuery = new EventQueryDefinition(topStart - 100, System.currentTimeMillis()); repo.purgeAuditTrail(testQuery); // Then Assert.assertNull(repo.getEventByUUID(evtAudit.getUuid(), System.currentTimeMillis())); repo.purgeFeatureUsage(testQuery); Thread.sleep(100); Assert.assertNull(repo.getEventByUUID(evtFeatureUsage.getUuid(), System.currentTimeMillis())); }
/** * Marshall from cassandra row to bean {@link Event}. * * @param row * current cassandra row * @return * target property bean */ public static Event mapEvent(Row row) { if (row == null) return null; Event evt = new Event(row.getString(COL_EVENT_SOURCE), row.getString(COL_EVENT_TYPE), row.getString(COL_EVENT_NAME), row.getString(COL_EVENT_ACTION)); evt.setUuid(row.getString(COL_EVENT_UID)); evt.setCustomKeys(row.getMap(COL_EVENT_KEYS, String.class, String.class)); evt.setDuration(row.getLong(COL_EVENT_DURATION)); evt.setHostName(row.getString(COL_EVENT_HOSTNAME)); evt.setTimestamp(row.getTimestamp(COL_EVENT_TIME).getTime()); evt.setUser(row.getString(COL_EVENT_USER)); evt.setValue(row.getString(COL_EVENT_VALUE)); return evt; }
/** {@inheritDoc} */ @SuppressWarnings({"unchecked"}) @Override public Event fromStore(Document bean) { Event evt = new Event(); evt.setAction(bean.getString(ATTRIBUTE_ACTION)); evt.setDuration(bean.getInteger(ATTRIBUTE_DURATION)); evt.setHostName(bean.getString(ATTRIBUTE_HOST)); evt.setName(bean.getString(ATTRIBUTE_NAME)); evt.setSource(bean.getString(ATTRIBUTE_SOURCE)); evt.setTimestamp(bean.getLong(ATTRIBUTE_TIME)); evt.setType(bean.getString(ATTRIBUTE_TYPE)); evt.setUuid(bean.getString(ATTRIBUTE_ID)); evt.setUser(bean.getString(ATTRIBUTE_USER)); if (bean.containsKey(ATTRIBUTE_KEYS)) { evt.setCustomKeys((Map<String, String>) JSON.parse(bean.getString(ATTRIBUTE_KEYS))); } return evt; }