AnnotationUtils { public static boolean isIoOpHasTimestamp(String name, IOType type) { Wrapper<AlgoOperator> op = IO_OP_CLASSES.get(name, type); Preconditions.checkArgument(op != null, "No OP named %s has IOType: %s", name, type); return op.hasTimestamp; }  static String annotatedName(Class<?> clazz); static String annotatedAlias(Class<? extends BaseDB> cls); static String annotatedAlias(String name); static IOType annotatedIoType(Class<? extends AlgoOperator> cls); static ParamInfo<String> tableAliasParamKey(String name); static ParamInfo<String> tableAliasParamKey(Class<? extends BaseDB> dbClazz); static ParamInfo<String> dynamicParamKey(String key); static List<String> allDBAndOpNames(); static List<String> allFileSystemNames(); static BaseDB createDB(String name, Params parameter); static BaseFileSystem<?> createFileSystem(String name, Params parameter); static boolean isDB(String name); static boolean isDBHasTimestamp(String name); static boolean isIoOpHasTimestamp(String name, IOType type); static boolean isFileSystem(String name); static AlgoOperator createOp(String name, IOType type, Params parameter);  }
@Test public void testIOpHasTimestamp() { Assert.assertFalse(AnnotationUtils.isIoOpHasTimestamp("test_fake_op_1", IOType.SourceBatch)); Assert.assertTrue(AnnotationUtils.isIoOpHasTimestamp("test_fake_op_2", IOType.SourceBatch)); }
@Test(expected = IllegalArgumentException.class) public void testIsOpHasTimestampError() { Assert.assertFalse(AnnotationUtils.isIoOpHasTimestamp("test_fake_op_1", IOType.SinkStream)); }
@Test(expected = IllegalArgumentException.class) public void testIsOpHasTimestampError2() { Assert.assertFalse(AnnotationUtils.isIoOpHasTimestamp("A_DB_HAS_NO_NAME", IOType.SourceBatch)); }