package com.mongodb.hvdf.channel; import com.mongodb.BasicDBList; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.mongodb.hvdf.api.Sample; import com.mongodb.hvdf.api.ServiceException; import com.mongodb.hvdf.channels.Channel; import com.mongodb.hvdf.util.HVDFChannelTest; import com.mongodb.hvdf.util.JSONParam; import com.yammer.dropwizard.testing.JsonHelpers; import org.junit.Test; import static org.junit.Assert.*; import java.net.UnknownHostException; import java.util.List; public class ChannelConfigTest extends HVDFChannelTest{ public ChannelConfigTest() throws UnknownHostException { super(); } @Test public void shouldConfigureChannel() throws Exception { String feedName = "feed1"; String channelName = "channel1"; String configPath = "plugin_config/valid_config_1.json"; getConfiguredChannel(configPath, feedName, channelName); // get the configuration back BasicDBObject config = (BasicDBObject) channelSvc.getChannelConfiguration(feedName, channelName); config.removeField("_id"); JSONParam configReturn = new JSONParam(config); JSONParam originalParam = new JSONParam(JsonHelpers.jsonFixture(configPath)); assertEquals(originalParam, configReturn); } @Test(expected=ServiceException.class) public void shouldFailBadPluginClass() throws Exception { String feedName = "feed2"; String channelName = "channel1"; String configPath = "plugin_config/invalid_config_interceptors_bad_class.json"; // Try to configure getConfiguredChannel(configPath, feedName, channelName); } @Test(expected=ServiceException.class) public void shouldFailNoPluginClass() throws Exception { String feedName = "feed2"; String channelName = "channel1"; String configPath = "plugin_config/invalid_config_interceptors_no_class.json"; // Try to configure getConfiguredChannel(configPath, feedName, channelName); } @Test public void testInterceptorOrdering() throws Exception { String feedName = "feed3"; String channelName = "channel1"; String configPath = "plugin_config/interceptor_ordering.json"; // Try to configure Channel channel = getConfiguredChannel(configPath, feedName, channelName); BasicDBObject sample = new BasicDBObject(Sample.TS_KEY, 100L); sample.append(Sample.DATA_KEY, new BasicDBObject("v", 240)); channel.pushSample(sample, false, new BasicDBList()); List<Sample> recalled = channel.query(null, 1000, 1000, null, null, 1); // The interceptors should have added the field x and then posted the values [2,1] BasicDBList testList = (BasicDBList) recalled.get(0).getData().get("x"); assertEquals(testList.get(0), 2); assertEquals(testList.get(1), 1); } @Test public void testNonDefaultIdFactoryConfig() throws Exception { // Try to configure String configPath = "plugin_config/raw_channel_non_default_id_type.json"; Channel channel = getConfiguredChannel(configPath); BasicDBObject sample = new BasicDBObject(Sample.TS_KEY, 100L); sample.append(Sample.DATA_KEY, new BasicDBObject("v", 240)); channel.pushSample(sample, false, new BasicDBList()); List<Sample> recalled = channel.query(null, 1000, 1000, null, null, 1); // The interceptors should have added the field x and then posted the values [2,1] Object testId = recalled.get(0).getId(); assertTrue(testId instanceof DBObject); DBObject testIdDoc = (DBObject) testId; assertEquals(testIdDoc.get(Sample.TS_KEY), 100L); assertEquals(testIdDoc.get(Sample.SOURCE_KEY), null); } }