Skip to content

Commit

Permalink
Fix issues with alert queries.
Browse files Browse the repository at this point in the history
(cherry picked from commit 33719ca)
Signed-off-by: Jay Shaughnessy <jshaughn@redhat.com>
  • Loading branch information
jshaughn committed Mar 24, 2015
1 parent 28dd0d3 commit 9093331
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,6 @@
import javax.naming.NamingException;
import javax.sql.DataSource;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import org.hawkular.alerts.api.model.condition.Alert;
import org.hawkular.alerts.api.model.condition.Condition;
import org.hawkular.alerts.api.model.condition.ConditionEval;
Expand All @@ -55,9 +52,11 @@
import org.hawkular.alerts.api.services.DefinitionsService;
import org.hawkular.alerts.engine.log.MsgLogger;
import org.hawkular.alerts.engine.rules.RulesEngine;

import org.jboss.logging.Logger;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

/**
* Basic implementation for {@link org.hawkular.alerts.api.services.AlertsService}.
* This implementation processes data asynchronously using a buffer queue.
Expand Down Expand Up @@ -195,20 +194,20 @@ public List<Alert> getAlerts(AlertsCriteria criteria) throws Exception {
c = ds.getConnection();
s = c.createStatement();

StringBuilder sql = new StringBuilder("SELECT triggerId, ctime, payload FROM HWK_ALERTS_ALERTS a");
StringBuilder sql = new StringBuilder("SELECT a.triggerId, a.ctime, a.payload FROM HWK_ALERTS_ALERTS a");
if (filter) {
int filters = 0;
sql.append(" WHERE ");
if (isEmpty(criteria.getTriggerIds())) {
if (!isEmpty(criteria.getTriggerId())) {
sql.append(filters++ > 0 ? " AND " : " ");
sql.append("( triggerId = '");
sql.append("( a.triggerId = '");
sql.append(criteria.getTriggerId());
sql.append("' )");
}
} else {
sql.append(filters++ > 0 ? " AND " : " ");
sql.append("( triggerId IN (");
sql.append("( a.triggerId IN (");
int entries = 0;
for (String triggerId : criteria.getTriggerIds()) {
if (isEmpty(triggerId)) {
Expand All @@ -223,43 +222,43 @@ public List<Alert> getAlerts(AlertsCriteria criteria) throws Exception {
}
if (filter && null != criteria.getStartTime()) {
sql.append(filters++ > 0 ? " AND " : " ");
sql.append("( ctime >= ");
sql.append("( a.ctime >= ");
sql.append(criteria.getStartTime());
sql.append(" )");
}
if (filter && null != criteria.getEndTime()) {
sql.append(filters++ > 0 ? " AND " : " ");
sql.append("( ctime <= ");
sql.append("( a.ctime <= ");
sql.append(criteria.getEndTime());
sql.append(" )");
}
if (isEmpty(criteria.getTags())) {
Tag tag = criteria.getTag();
if (null != tag) {
sql.append(filters++ > 0 ? " AND " : " ");
sql.append("( EXIST ( SELECT * FROM HWL_ALERTS_TAGS WHERE");
sql.append("( EXISTS ( SELECT * FROM HWK_ALERTS_TAGS t WHERE");
if (!isEmpty(tag.getCategory())) {
sql.append(" category = '");
sql.append(" t.triggerId = a.triggerId AND t.category = '");
sql.append(tag.getCategory());
sql.append("' AND");
}
sql.append(" name = '");
sql.append(" t.name = '");
sql.append(tag.getName());
sql.append("' ) )");
sql.append("' )");
}
} else {
sql.append(filters++ > 0 ? " AND " : " ");
sql.append("(");
int entries = 0;
for (Tag tag : criteria.getTags()) {
sql.append(entries++ > 0 ? " OR " : "");
sql.append("( EXIST ( SELECT * FROM HWL_ALERTS_TAGS WHERE");
sql.append("( EXISTS ( SELECT * FROM HWK_ALERTS_TAGS t WHERE");
if (!isEmpty(tag.getCategory())) {
sql.append(" category = '");
sql.append(" t.triggerId = a.triggerId AND t.category = '");
sql.append(tag.getCategory());
sql.append("' AND");
}
sql.append(" name = '");
sql.append(" t.name = '");
sql.append(tag.getName());
sql.append("' ) )");
}
Expand Down Expand Up @@ -287,7 +286,7 @@ public List<Alert> getAlerts(AlertsCriteria criteria) throws Exception {
}
}

log.debugf("Alerts Found! " + alerts);
log.debugf(alerts.isEmpty() ? "No Alerts Found" : "Alerts Found! " + alerts);
return alerts;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,13 @@ class AlertsTest extends AbstractTestBase {
@Test
void getAlertsByCriteriaTest() {
String now = String.valueOf(System.currentTimeMillis());
def resp = client.get(path: "", query: [endTime:now, startTime:"0"] )
def resp = client.get(path: "", query: [endTime:now, startTime:"0",triggerIds:"Trigger-01,Trigger-02"] )
assert resp.status == 200 || resp.status == 204 : resp.status

resp = client.get(path: "", query: [tags:"data-01,data-02"] )
assert resp.status == 200 || resp.status == 204 : resp.status

resp = client.get(path: "", query: [tags:"dataId|data-01,dataId|data-02"] )
assert resp.status == 200 || resp.status == 204 : resp.status
}

Expand Down

0 comments on commit 9093331

Please sign in to comment.