/** {@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 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); }
/** * 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; }
/** {@inheritDoc} */ public boolean saveEvent(Event evt) { if (evt == null) { throw new IllegalArgumentException("Event cannot be null nor empty"); } Jedis jedis = null; try { jedis = getJedis(); long timeStamp = evt.getTimestamp(); String hashId = this.getHashKey(evt.getTimestamp(), evt.getAction()); evt.setUuid(String.valueOf(timeStamp)); jedis.zadd(hashId, timeStamp, objectMapper.writeValueAsString(evt)); return true; } catch (JsonProcessingException e) { // We do not returned false, it will be retried 3 times for nothing, faile immediately throw new IllegalArgumentException("Cannot save event : invalid object", e); } finally { if (jedis != null) { jedis.close(); } } }
/** 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; }