Skip to content

Commit

Permalink
HWKALERTS-99 Add Events unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasponce committed Nov 2, 2015
1 parent 5de8cf2 commit 4f7c338
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -102,24 +102,33 @@ public Event() {
}

public Event(String tenantId, String id, String dataId, String category, String text) {
this(tenantId, id, dataId, category, text, null, null);
this(tenantId, id, System.currentTimeMillis(), dataId, category, text, null, null);
}

public Event(String tenantId, String id, String dataId, String category, String text, Map<String, String> context) {
this(tenantId, id, dataId, category, text, context, null);
this(tenantId, id, System.currentTimeMillis(), dataId, category, text, context, null);
}

public Event(String tenantId, String id, String dataId, String category, String text, Map<String, String> context,
Map<String, String> tags) {
public Event(String tenantId, String id, long ctime, String dataId, String category, String text) {
this(tenantId, id, ctime, dataId, category, text, null, null);
}

public Event(String tenantId, String id, long ctime, String dataId, String category, String text,
Map<String, String> context) {
this(tenantId, id, ctime, dataId, category, text, context, null);
}

public Event(String tenantId, String id, long ctime, String dataId, String category, String text,
Map<String, String> context, Map<String, String> tags) {
this.tenantId = tenantId;
this.id = id;
this.ctime = ctime;
this.dataId = dataId;
this.category = category;
this.text = text;
this.context = context;
this.tags = tags;

this.ctime = System.currentTimeMillis();
}

/**
Expand Down Expand Up @@ -308,17 +317,20 @@ public String toString() {
}

/* (non-Javadoc)
* Natural Ordering provided: Id asc, Timestamp asc. This is important to ensure that the engine
* Natural Ordering provided: dataId asc, Timestamp asc, id asc. This is important to ensure that the engine
* naturally processes events for the same dataId is ascending time order.
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Event o) {
int c = this.id.compareTo(o.id);
int c = this.dataId.compareTo(o.dataId);
if (0 != c)
return c;

return Long.compare(this.ctime, o.ctime);
c = Long.compare(this.ctime, o.ctime);
if (0 != c) {
return c;
}
return this.id.compareTo(o.id);
}

private static boolean isEmpty(String s) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ public void fire() {
// execution of the rules. So, if we find multiple Data instances for the same Id, defer all but
// the oldest to a subsequent run. Note that pendingData is already sorted by (id ASC, timestamp ASC) so
// the iterator will present Data with the same id together, and time-ordered.
int fireCycle = 0;
while (!pendingData.isEmpty() || !pendingEvent.isEmpty()) {

log.debugf("Data found. Firing rules on [%1$d] datums and [%1$d] events.", pendingData.size(),
Expand Down Expand Up @@ -166,7 +167,8 @@ public void fire() {
pendingEvent.clear();

for (Event event : batchEvent) {
if (null == previousEvent || !event.getId().equals(previousEvent.getId())) {
if (null == previousEvent
|| (null != event.getDataId() && !event.getDataId().equals(previousEvent.getDataId()))) {
kSession.insert(event);
previousEvent = event;
} else {
Expand All @@ -175,15 +177,16 @@ public void fire() {
}
}

if (log.isTraceEnabled()) {
log.trace("Drools session dumping before firing: ");
if (log.isDebugEnabled()) {
log.debugf("Firing cycle [%s] - with these facts: ", fireCycle);
for (FactHandle fact : kSession.getFactHandles()) {
Object o = kSession.getObject(fact);
log.trace("Fact: " + o.toString());
log.debugf("Fact: %s", o.toString());
}
}

kSession.fireAllRules();
fireCycle++;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -971,25 +971,25 @@ public void MultipleEventConditions() {
EventCondition t1c3 = new EventCondition("trigger-1", Mode.FIRING, 3, 3, "datacenter2",
"text starts 'WARN'");

Event appDownEvent1 = new Event("tenant", UUID.randomUUID().toString(), "myapp.war",
Event appDownEvent1 = new Event("tenant", UUID.randomUUID().toString(), 1, "myapp.war",
EventCategory.DEPLOYMENT.name(), "DOWN");
Event logErrorEvent1 = new Event("tenant", UUID.randomUUID().toString(), "datacenter1",
Event logErrorEvent1 = new Event("tenant", UUID.randomUUID().toString(), 2, "datacenter1",
EventCategory.LOG.name(), "ERROR [Time] This is a sample as app logging");
Event logWarnEvent1 = new Event("tenant", UUID.randomUUID().toString(), "datacenter2",
Event logWarnEvent1 = new Event("tenant", UUID.randomUUID().toString(), 3, "datacenter2",
EventCategory.LOG.name(), "WARN [Time] This is a sample as app logging");

Event appDownEvent2 = new Event("tenant", UUID.randomUUID().toString(), "myapp.war",
Event appDownEvent2 = new Event("tenant", UUID.randomUUID().toString(), 4, "myapp.war",
EventCategory.DEPLOYMENT.name(), "UP");
Event logErrorEvent2 = new Event("tenant", UUID.randomUUID().toString(), "datacenter1",
Event logErrorEvent2 = new Event("tenant", UUID.randomUUID().toString(), 5, "datacenter1",
EventCategory.LOG.name(), "ERROR [Time] This is a sample as app logging 2");
Event logWarnEvent2 = new Event("tenant", UUID.randomUUID().toString(), "datacenter2",
Event logWarnEvent2 = new Event("tenant", UUID.randomUUID().toString(), 6, "datacenter2",
EventCategory.LOG.name(), "WARN [Time] This is a sample as app logging 2");

Event appDownEvent3 = new Event("tenant", UUID.randomUUID().toString(), "myapp.war",
Event appDownEvent3 = new Event("tenant", UUID.randomUUID().toString(), 7, "myapp.war",
EventCategory.DEPLOYMENT.name(), "UP");
Event logErrorEvent3 = new Event("tenant", UUID.randomUUID().toString(), "datacenter1",
Event logErrorEvent3 = new Event("tenant", UUID.randomUUID().toString(), 8, "datacenter1",
EventCategory.LOG.name(), "ERROR [Time] This is a sample as app logging 3");
Event logWarnEvent3 = new Event("tenant", UUID.randomUUID().toString(), "datacenter2",
Event logWarnEvent3 = new Event("tenant", UUID.randomUUID().toString(), 9, "datacenter2",
EventCategory.LOG.name(), "WARN [Time] This is a sample as app logging 3");

inputEvents.add(appDownEvent1);
Expand All @@ -1015,7 +1015,7 @@ public void MultipleEventConditions() {

rulesEngine.fire();

assertEquals(outputEvents.toString(), 1, outputEvents.size());
assertEquals(outputEvents.toString(), 3, outputEvents.size());
}

@Test
Expand Down

0 comments on commit 4f7c338

Please sign in to comment.