@Test(expected = RuntimeException.class) public void testInvalidInterpreter() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList(), Interpreter.STATIC, "static", 0); spec.getFormattedTime("will fail"); }
@Test public void testDateFormatterSeconds() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList(), Interpreter.SECONDS, "YYYY-MM-dd HH:mm:ss", 0); assertEquals("2017-01-19 05:05:59", spec.interpret("1484802359")); }
@Test public void testString() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList(), Interpreter.STRING, "string", 0); assertEquals("a_string", spec.interpret("a_string")); }
@Test public void testRoundToSeconds() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList(), Interpreter.MILLISECONDS, "YYYY-MM-dd HH:mm:ss", 300); assertEquals("2017-01-19 05:05:00", spec.interpret("1484802359000")); }
@Test public void testDateFormatterMilliseconds() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList(), Interpreter.MILLISECONDS, "YYYY-MM-dd HH:mm:ss", 0); assertEquals("2017-01-19 05:05:59", spec.interpret("1484802359000")); }
@Test public void testStatic() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList(), Interpreter.STATIC, "static", 0); assertEquals("static", spec.interpret("")); }
@Test public void testStringConstructor() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList()); assertEquals("a_string", spec.interpret("a_string")); }
@Test public void testGetEvaluatedPartitionsString() throws FieldNotFoundException { List<PartitionSpec> partitionSpecs = new ArrayList<PartitionSpec>(1); List<String> sources = Arrays.asList("foo"); PartitionSpec spec = new PartitionSpec("foo", sources, PartitionSpec.Interpreter.STRING); partitionSpecs.add(spec); PartitionOperation op = new PartitionOperation(partitionSpecs); InternalEvent ievent = new InternalEvent("foo", null, 1); DummyStringEvent devent = spy(new DummyStringEvent("")); ievent.setEventObj(devent); doReturn("baz").when(devent).getFieldAsString("foo"); op.perform(ievent); LinkedHashMap<String, String> actual = ievent.getPartitions(); LinkedHashMap<String, String> expected = new LinkedHashMap<String, String>(1); expected.put("foo", "baz"); assertEquals(expected, actual); }
@Test public void testGetEvaluatedPartitionsStatic() { List<PartitionSpec> partitionSpecs = new ArrayList<PartitionSpec>(1); PartitionSpec spec = new PartitionSpec("foo", Collections.emptyList(), PartitionSpec.Interpreter.STATIC, "123", 0); partitionSpecs.add(spec); PartitionOperation op = new PartitionOperation(partitionSpecs); InternalEvent ievent = new InternalEvent("foo", null, 1); DummyStringEvent devent = new DummyStringEvent(""); ievent.setEventObj(devent); op.perform(ievent); LinkedHashMap<String, String> actual = ievent.getPartitions(); LinkedHashMap<String, String> expected = new LinkedHashMap<String, String>(1); expected.put("foo", "123"); assertEquals(expected, actual); }
@Test public void testGetEvaluatedPartitionsStringMultipleFields() throws FieldNotFoundException { List<PartitionSpec> partitionSpecs = new ArrayList<PartitionSpec>(1); List<String> sources = Arrays.asList("one", "two"); PartitionSpec spec = new PartitionSpec("foo", sources, PartitionSpec.Interpreter.STRING); partitionSpecs.add(spec); PartitionOperation op = new PartitionOperation(partitionSpecs); InternalEvent ievent = new InternalEvent("foo", null, 1); DummyStringEvent devent = spy(new DummyStringEvent("")); ievent.setEventObj(devent); doThrow(FieldNotFoundException.class).doReturn("5").when(devent).getFieldAsString(any()); op.perform(ievent); LinkedHashMap<String, String> actual = ievent.getPartitions(); LinkedHashMap<String, String> expected = new LinkedHashMap<String, String>(1); expected.put("foo", "5"); assertEquals(expected, actual); }
@Test public void testOperationThroughProcessor() throws FieldNotFoundException { List<PartitionSpec> partitionSpecs = new ArrayList<PartitionSpec>(1); List<String> sources = Arrays.asList("foo"); PartitionSpec spec = new PartitionSpec("foo", sources, PartitionSpec.Interpreter.STRING); partitionSpecs.add(spec); PartitionOperation op = new PartitionOperation(partitionSpecs); InternalEvent ievent = new InternalEvent("foo", null, 1); DummyStringEvent devent = spy(new DummyStringEvent("")); ievent.setEventObj(devent); doReturn("baz").when(devent).getFieldAsString("foo"); DummyOperationFactory opFact = new DummyOperationFactory(op); OperationProcessor opProc = new OperationProcessor(opFact); opProc.perform(Stream.of(ievent)).count(); LinkedHashMap<String, String> actual = ievent.getPartitions(); LinkedHashMap<String, String> expected = new LinkedHashMap<String, String>(1); expected.put("foo", "baz"); assertEquals(expected, actual); } }
@Test(expected = OperationException.class) public void testGetEvaluatedPartitionsFieldNotFoundException() throws FieldNotFoundException { List<PartitionSpec> partitionSpecs = new ArrayList<PartitionSpec>(1); List<String> sources = Arrays.asList("one"); PartitionSpec spec = new PartitionSpec("foo", sources, PartitionSpec.Interpreter.STRING); partitionSpecs.add(spec); PartitionOperation op = new PartitionOperation(partitionSpecs); InternalEvent ievent = new InternalEvent("foo", null, 1); DummyStringEvent devent = spy(new DummyStringEvent("baz")); ievent.setEventObj(devent); doThrow(FieldNotFoundException.class).when(devent).getFieldAsString(any()); try { op.perform(ievent); } catch (OperationException e) { assertEquals("unable to find value for partition 'foo'", e.getMessage()); throw e; } }
@Test public void testEmptyDate() { PartitionSpec spec = new PartitionSpec("test", Collections.emptyList(), Interpreter.SECONDS, "YYYY-MM-dd HH:mm:ss", 0); assertEquals(null, spec.interpret("")); assertEquals(null, spec.interpret(null)); }
@Test(expected = OperationException.class) public void testGetEvaluatedPartitionsStringMultipleFieldsNull() throws FieldNotFoundException { List<PartitionSpec> partitionSpecs = new ArrayList<PartitionSpec>(1); List<String> sources = Arrays.asList("one", "two"); PartitionSpec spec = new PartitionSpec("foo", sources, PartitionSpec.Interpreter.STRING); partitionSpecs.add(spec); PartitionOperation op = new PartitionOperation(partitionSpecs); InternalEvent ievent = new InternalEvent("foo", null, 1); DummyStringEvent devent = spy(new DummyStringEvent("baz")); ievent.setEventObj(devent); doThrow(FieldNotFoundException.class).doThrow(FieldNotFoundException.class).when(devent).getFieldAsString(any()); try { op.perform(ievent); } catch (OperationException e) { assertEquals("unable to find value for partition 'foo'", e.getMessage()); throw e; } }