AlertPublishEvent event = new AlertPublishEvent(); event.setAlertId(rs.getString(1)); event.setSiteId(rs.getString(2)); event.setAppIds(mapper.readValue(rs.getString(3), List.class)); event.setPolicyId(rs.getString(4)); event.setAlertTimestamp(rs.getLong(5)); event.setPolicyValue(rs.getString(6)); event.setAlertData(mapper.readValue(rs.getString(7), Map.class)); return event; } catch (Exception e) {
@Override public void onAlert(AlertStreamEvent event) throws Exception { List<AlertStreamEvent> eventList = this.dedup(event); if (eventList == null || eventList.isEmpty()) { return; } for (AlertStreamEvent e : eventList) { //filelogger.info(e.toString()); AlertPublishEvent alert = AlertPublishEvent.createAlertPublishEvent(e); filelogger.info(objectMapper.writeValueAsString(alert)); } }
public OpResult addAlertEvent(AlertPublishEvent event) { Connection connection = null; PreparedStatement statement = null; OpResult result = new OpResult(); try { connection = dataSource.getConnection(); statement = connection.prepareStatement(INSERT_ALERT_STATEMENT); statement.setString(1, event.getAlertId()); statement.setString(2, event.getSiteId()); statement.setString(3, mapper.writeValueAsString(event.getAppIds())); statement.setString(4, event.getPolicyId()); statement.setLong(5, event.getAlertTimestamp()); statement.setString(6, event.getPolicyValue()); statement.setString(7, mapper.writeValueAsString(event.getAlertData())); LOG.info("start to add alert event"); int status = statement.executeUpdate(); result.code = OpResult.SUCCESS; result.message = String.format("add %d records into alert_event successfully", status); } catch (Exception ex) { result.code = OpResult.FAILURE; result.message = ex.getMessage(); } finally { closeResource(null, statement, connection); } LOG.info(result.message); return result; }
public static AlertPublishEvent createAlertPublishEvent(AlertStreamEvent event) { Preconditions.checkNotNull(event.getAlertId(), "alertId is not initialized before being published: " + event.toString()); AlertPublishEvent alertEvent = new AlertPublishEvent(); alertEvent.setAlertId(event.getAlertId()); alertEvent.setPolicyId(event.getPolicyId()); alertEvent.setAlertTimestamp(event.getCreatedTime()); alertEvent.setStreamId(event.getStreamId()); alertEvent.setCreatedBy(event.getCreatedBy()); alertEvent.setCreatedTime(event.getCreatedTime()); alertEvent.setAlertSubject(event.getSubject()); alertEvent.setAlertBody(event.getBody()); if (event.getContext() != null && !event.getContext().isEmpty()) { if (event.getContext().containsKey(SITE_ID_KEY)) { alertEvent.setSiteId(event.getContext().get(SITE_ID_KEY).toString()); } if (event.getContext().containsKey(POLICY_VALUE_KEY)) { alertEvent.setPolicyValue(event.getContext().get(POLICY_VALUE_KEY).toString()); } if (event.getContext().containsKey(APP_IDS_KEY)) { alertEvent.setAppIds((List<String>) event.getContext().get(APP_IDS_KEY)); } } alertEvent.setAlertData(event.getDataMap()); return alertEvent; }
@Override public AlertPublishEvent getAlertPublishEvent(String alertId) { Optional<AlertPublishEvent> op = alerts.stream().filter(alert -> alert.getAlertId().equals(alertId)).findAny(); if (op.isPresent()) { return op.get(); } else { return null; } }
@Override public List<AlertPublishEvent> getAlertPublishEventsByPolicyId(String policyId, int size) { List<AlertPublishEvent> result = alerts.stream().filter(alert -> alert.getPolicyId().equals(policyId)).collect(Collectors.toList()); if (size < 0 || size > result.size()) { size = result.size(); } return result.subList(result.size() - size, result.size()); }
@Override public AlertPublishEvent getAlertPublishEvent(String alertId) { List<AlertPublishEvent> results = list(alerts, AlertPublishEvent.class); Optional<AlertPublishEvent> op = results.stream().filter(alert -> alert.getAlertId().equals(alertId)).findAny(); if (op.isPresent()) { return op.get(); } return null; }
@Override public List<AlertPublishEvent> getAlertPublishEventsByPolicyId(String policyId, int size) { List<AlertPublishEvent> events = list(alerts, AlertPublishEvent.class); List<AlertPublishEvent> result = events.stream().filter(alert -> alert.getPolicyId().equals(policyId)).collect(Collectors.toList()); if (size < 0 || size > result.size()) { size = result.size(); } return events.subList(result.size() - size, result.size()); }
alertStreamEvent.setCreatedTime(1234); alertStreamEvent.ensureAlertId(); AlertPublishEvent alertPublishEvent = AlertPublishEvent.createAlertPublishEvent(alertStreamEvent); Assert.assertEquals(null, alertPublishEvent.getSiteId()); Assert.assertTrue(alertPublishEvent.getAlertId() != null); Assert.assertEquals("setPolicyId", alertPublishEvent.getPolicyId()); Assert.assertEquals(null, alertPublishEvent.getPolicyValue()); Assert.assertEquals("{flag=1, data=0.1, name=namevalue, host=hostvalue, salary=-0.2, value=10, int=1, object={\"name\":\"heap.COMMITTED\", \"Value\":\"175636480\"}}", alertPublishEvent.getAlertData().toString()); Assert.assertEquals(1234, alertPublishEvent.getAlertTimestamp()); Assert.assertEquals(null, alertPublishEvent.getAppIds()); AlertPublishEvent alertPublishEvent1 = AlertPublishEvent.createAlertPublishEvent(alertStreamEvent); Assert.assertFalse(alertPublishEvent1 == alertPublishEvent); Assert.assertFalse(alertPublishEvent1.equals(alertPublishEvent)); alertStreamEvent.setContext(extraData); alertPublishEvent = AlertPublishEvent.createAlertPublishEvent(alertStreamEvent); Assert.assertEquals("SITE_ID_KEY", alertPublishEvent.getSiteId()); Assert.assertTrue(alertPublishEvent.getAlertId() != null); Assert.assertEquals("setPolicyId", alertPublishEvent.getPolicyId()); Assert.assertEquals("POLICY_VALUE_KEY", alertPublishEvent.getPolicyValue()); Assert.assertEquals("{flag=1, data=0.1, name=namevalue, host=hostvalue, salary=-0.2, value=10, int=1, object={\"name\":\"heap.COMMITTED\", \"Value\":\"175636480\"}}", alertPublishEvent.getAlertData().toString()); Assert.assertEquals(1234, alertPublishEvent.getAlertTimestamp()); Assert.assertEquals("appId1", alertPublishEvent.getAppIds().get(0)); Assert.assertEquals("appId2", alertPublishEvent.getAppIds().get(1));
@Override public void onAlert(AlertStreamEvent event) throws Exception { List<AlertStreamEvent> eventList = this.dedup(event); if (eventList == null || eventList.isEmpty()) { return; } List<AlertPublishEvent> alertEvents = new ArrayList<>(); for (AlertStreamEvent e : eventList) { alertEvents.add(AlertPublishEvent.createAlertPublishEvent(e)); } client.addAlertPublishEvents(alertEvents); }
public static <T> String getKey(T t) { if (t instanceof StreamDefinition) { return ((StreamDefinition) t).getStreamId(); } if (t instanceof PolicyAssignment) { return ((PolicyAssignment) t).getPolicyName(); } if (t instanceof ScheduleState) { return ((ScheduleState) t).getVersion(); } if (t instanceof AlertPublishEvent) { return ((AlertPublishEvent) t).getAlertId(); } try { Method m = t.getClass().getMethod("getName"); return (String) m.invoke(t); } catch (NoSuchMethodException | SecurityException | InvocationTargetException | IllegalAccessException | IllegalArgumentException e) { LOG.error(" getName not found on given class :" + t.getClass().getName()); } throw new RuntimeException(String.format("no getName() found on target class %s for matching", t.getClass() .getName())); }
@Test public void testAlertPublishEvent() { thrown.expect(NullPointerException.class); AlertStreamEvent alertStreamEvent = new AlertStreamEvent(); AlertPublishEvent.createAlertPublishEvent(alertStreamEvent); }
@Test public void testAlertPublishEvent1() { thrown.expect(NullPointerException.class); List<StreamColumn> streamColumns = new ArrayList<>(); streamColumns.add(new StreamColumn.Builder().name("name").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("host").type(StreamColumn.Type.STRING).build()); streamColumns.add(new StreamColumn.Builder().name("flag").type(StreamColumn.Type.BOOL).build()); streamColumns.add(new StreamColumn.Builder().name("value").type(StreamColumn.Type.DOUBLE).build()); streamColumns.add(new StreamColumn.Builder().name("data").type(StreamColumn.Type.LONG).build()); streamColumns.add(new StreamColumn.Builder().name("salary").type(StreamColumn.Type.FLOAT).build()); streamColumns.add(new StreamColumn.Builder().name("object").type(StreamColumn.Type.OBJECT).build()); streamColumns.add(new StreamColumn.Builder().name("int").type(StreamColumn.Type.INT).build()); StreamDefinition streamDefinition = new StreamDefinition(); streamDefinition.setColumns(streamColumns); AlertStreamEvent alertStreamEvent = new AlertStreamEvent(); alertStreamEvent.setSchema(streamDefinition); AlertPublishEvent.createAlertPublishEvent(alertStreamEvent); }