package com.netflix.suro.routing; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.netflix.suro.SuroPlugin; import com.netflix.suro.jackson.DefaultObjectMapper; import com.netflix.suro.message.Message; import com.netflix.suro.message.StringMessage; import com.netflix.suro.sink.TestSinkManager.TestSink; import org.junit.Test; import java.io.IOException; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class TestFilter { private static Injector injector = Guice.createInjector( new SuroPlugin() { @Override protected void configure() { this.addSinkType("TestSink", TestSink.class); this.addFilterType("regex", RegexFilter.class); } }, new AbstractModule() { @Override protected void configure() { bind(ObjectMapper.class).to(DefaultObjectMapper.class); } } ); @Test public void testRegexFilter() throws Exception { String desc = "{\n" + " \"type\":\"regex\",\n" + " \"regex\":\"abcd\"\n" + "}"; ObjectMapper jsonMapper = injector.getInstance(ObjectMapper.class); Filter filter = jsonMapper.readValue(desc, new TypeReference<Filter>(){}); assertTrue(filter.doFilter(StringMessage.from(null, "abcdefg"))); assertFalse(filter.doFilter(StringMessage.from(null, "zcb"))); assertTrue(filter.doFilter(StringMessage.from("routingKey", "abcdefg"))); assertFalse(filter.doFilter(StringMessage.from("routingKey", "zcb"))); } }