Search in sources :

Example 11 with StreamRuleMock

use of org.graylog2.streams.matchers.StreamRuleMock in project graylog2-server by Graylog2.

the class StreamRouterEngineTest method testInvertedRulesMatch.

@Test
public void testInvertedRulesMatch() throws Exception {
    final StreamMock stream = getStreamMock("test");
    final StreamRuleMock rule1 = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield1", "value", "1", "type", StreamRuleType.PRESENCE.toInteger(), "stream_id", stream.getId()));
    final StreamRuleMock rule2 = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield2", "inverted", true, "type", StreamRuleType.PRESENCE.toInteger(), "stream_id", stream.getId()));
    stream.setStreamRules(Lists.newArrayList(rule1, rule2));
    final StreamRouterEngine engine = newEngine(Lists.newArrayList(stream));
    // Without testfield1 and testfield2 in the message.
    final Message message1 = getMessage();
    assertTrue(engine.match(message1).isEmpty());
    // With testfield1 and testfield2 in the message.
    final Message message2 = getMessage();
    message2.addField("testfield1", "testvalue");
    message2.addField("testfield2", "testvalue");
    assertTrue(engine.match(message2).isEmpty());
    // With testfield1 and not testfield2 in the message.
    final Message message3 = getMessage();
    message3.addField("testfield1", "testvalue");
    assertEquals(engine.match(message3), Lists.newArrayList(stream));
    // With testfield2 in the message.
    final Message message4 = getMessage();
    message4.addField("testfield2", "testvalue");
    assertTrue(engine.match(message4).isEmpty());
}
Also used : Message(org.graylog2.plugin.Message) ObjectId(org.bson.types.ObjectId) StreamRuleMock(org.graylog2.streams.matchers.StreamRuleMock) Test(org.junit.Test)

Example 12 with StreamRuleMock

use of org.graylog2.streams.matchers.StreamRuleMock in project graylog2-server by Graylog2.

the class StreamRouterEngineTest method testMultipleRulesMatch.

@Test
public void testMultipleRulesMatch() throws Exception {
    final StreamMock stream = getStreamMock("test");
    final StreamRuleMock rule1 = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield1", "type", StreamRuleType.PRESENCE.toInteger(), "stream_id", stream.getId()));
    final StreamRuleMock rule2 = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield2", "value", "^test", "type", StreamRuleType.REGEX.toInteger(), "stream_id", stream.getId()));
    stream.setStreamRules(Lists.newArrayList(rule1, rule2));
    final StreamRouterEngine engine = newEngine(Lists.newArrayList(stream));
    // Without testfield1 and testfield2 in the message.
    final Message message1 = getMessage();
    assertTrue(engine.match(message1).isEmpty());
    // With testfield1 but no-matching testfield2 in the message.
    final Message message2 = getMessage();
    message2.addField("testfield1", "testvalue");
    message2.addField("testfield2", "no-testvalue");
    assertTrue(engine.match(message2).isEmpty());
    // With testfield1 and matching testfield2 in the message.
    final Message message3 = getMessage();
    message3.addField("testfield1", "testvalue");
    message3.addField("testfield2", "testvalue2");
    assertEquals(engine.match(message3), Lists.newArrayList(stream));
}
Also used : Message(org.graylog2.plugin.Message) ObjectId(org.bson.types.ObjectId) StreamRuleMock(org.graylog2.streams.matchers.StreamRuleMock) Test(org.junit.Test)

Example 13 with StreamRuleMock

use of org.graylog2.streams.matchers.StreamRuleMock in project graylog2-server by Graylog2.

the class StreamRouterEngineTest method testExactMatch.

@Test
public void testExactMatch() throws Exception {
    final StreamMock stream = getStreamMock("test");
    final StreamRuleMock rule = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield", "value", "testvalue", "type", StreamRuleType.EXACT.toInteger(), "stream_id", stream.getId()));
    stream.setStreamRules(Lists.newArrayList(rule));
    final StreamRouterEngine engine = newEngine(Lists.newArrayList(stream));
    final Message message = getMessage();
    // With wrong value for field.
    message.addField("testfield", "no-testvalue");
    assertTrue(engine.match(message).isEmpty());
    // With matching value for field.
    message.addField("testfield", "testvalue");
    assertEquals(engine.match(message), Lists.newArrayList(stream));
}
Also used : Message(org.graylog2.plugin.Message) ObjectId(org.bson.types.ObjectId) StreamRuleMock(org.graylog2.streams.matchers.StreamRuleMock) Test(org.junit.Test)

Example 14 with StreamRuleMock

use of org.graylog2.streams.matchers.StreamRuleMock in project graylog2-server by Graylog2.

the class StreamRouterEngineTest method testMultipleStreamsMatch.

@Test
public void testMultipleStreamsMatch() throws Exception {
    final StreamMock stream1 = getStreamMock("test1");
    final StreamMock stream2 = getStreamMock("test2");
    final StreamRuleMock rule1 = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield1", "type", StreamRuleType.PRESENCE.toInteger(), "stream_id", stream1.getId()));
    final StreamRuleMock rule2 = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield2", "value", "^test", "type", StreamRuleType.REGEX.toInteger(), "stream_id", stream1.getId()));
    final StreamRuleMock rule3 = new StreamRuleMock(ImmutableMap.of("_id", new ObjectId(), "field", "testfield3", "value", "testvalue3", "type", StreamRuleType.EXACT.toInteger(), "stream_id", stream2.getId()));
    stream1.setStreamRules(Lists.newArrayList(rule1, rule2));
    stream2.setStreamRules(Lists.newArrayList(rule3));
    final StreamRouterEngine engine = newEngine(Lists.newArrayList(stream1, stream2));
    // Without testfield1 and testfield2 in the message.
    final Message message1 = getMessage();
    assertTrue(engine.match(message1).isEmpty());
    // With testfield1 and matching testfield2 in the message.
    final Message message2 = getMessage();
    message2.addField("testfield1", "testvalue");
    message2.addField("testfield2", "testvalue2");
    assertEquals(engine.match(message2), Lists.newArrayList(stream1));
    // With testfield1, matching testfield2 and matching testfield3 in the message.
    final Message message3 = getMessage();
    message3.addField("testfield1", "testvalue");
    message3.addField("testfield2", "testvalue2");
    message3.addField("testfield3", "testvalue3");
    final List<Stream> match = engine.match(message3);
    assertTrue(match.contains(stream1));
    assertTrue(match.contains(stream2));
    assertEquals(match.size(), 2);
    // With matching testfield3 in the message.
    final Message message4 = getMessage();
    message4.addField("testfield3", "testvalue3");
    assertEquals(engine.match(message4), Lists.newArrayList(stream2));
}
Also used : Message(org.graylog2.plugin.Message) ObjectId(org.bson.types.ObjectId) Stream(org.graylog2.plugin.streams.Stream) StreamRuleMock(org.graylog2.streams.matchers.StreamRuleMock) Test(org.junit.Test)

Example 15 with StreamRuleMock

use of org.graylog2.streams.matchers.StreamRuleMock in project graylog2-server by Graylog2.

the class AlwaysMatcherTest method matchAlwaysReturnsTrue.

@Test
public void matchAlwaysReturnsTrue() throws Exception {
    final AlwaysMatcher matcher = new AlwaysMatcher();
    assertThat(matcher.match(null, null)).isTrue();
    assertThat(matcher.match(new Message("Test", "source", new DateTime(2016, 9, 7, 0, 0, DateTimeZone.UTC)), new StreamRuleMock(Collections.singletonMap("_id", "stream-rule-id")))).isTrue();
}
Also used : Message(org.graylog2.plugin.Message) DateTime(org.joda.time.DateTime) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)15 ObjectId (org.bson.types.ObjectId)14 Message (org.graylog2.plugin.Message)14 StreamRuleMock (org.graylog2.streams.matchers.StreamRuleMock)14 StreamRule (org.graylog2.plugin.streams.StreamRule)2 Stream (org.graylog2.plugin.streams.Stream)1 DateTime (org.joda.time.DateTime)1