public void TestBuiltin() { var configuration = SupportConfigFactory.GetConfiguration(); configuration.AddEventType("Bean", typeof(SupportBean).FullName); configuration.AddImport(typeof(MyAnnotationNestableValuesAttribute).Namespace); _epService = EPServiceProviderManager.GetDefaultProvider(configuration); _epService.Initialize(); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.StartTest(_epService, GetType(), GetType().FullName); } var stmtText = "@Name('MyTestStmt') @Description('MyTestStmt description') @Tag(Name=\"UserId\", Value=\"Value\") select * from Bean"; var stmt = _epService.EPAdministrator.CreateEPL(stmtText); Assert.IsTrue((((EPStatementSPI)stmt).IsNameProvided)); RunAssertion(stmt); stmt.Dispose(); var name = (NameAttribute)AnnotationUtil.FindAnnotation(stmt.Annotations, typeof(NameAttribute)); Assert.AreEqual("MyTestStmt", name.Value); // try lowercase var stmtTextLower = "@Name('MyTestStmt') @Description('MyTestStmt description') @Tag(Name=\"UserId\", Value=\"Value\") select * from Bean"; stmt = _epService.EPAdministrator.CreateEPL(stmtTextLower); RunAssertion(stmt); stmt.Dispose(); // try pattern stmtText = "@Name('MyTestStmt') @Description('MyTestStmt description') @Tag(Name='UserId', Value='Value') every Bean"; stmt = _epService.EPAdministrator.CreatePattern(stmtText); RunAssertion(stmt); stmt.Dispose(); stmtText = "@Name('MyTestStmt') @Description('MyTestStmt description') @Tag(Name=\"UserId\", Value=\"Value\") every Bean"; stmt = _epService.EPAdministrator.CreatePattern(stmtText); RunAssertion(stmt); _epService.EPAdministrator.CreateEPL("@Hint('ITERATE_ONLY') select * from Bean"); _epService.EPAdministrator.CreateEPL("@Hint('ITERATE_ONLY,DISABLE_RECLAIM_GROUP') select * from Bean"); _epService.EPAdministrator.CreateEPL("@Hint('ITERATE_ONLY,DISABLE_RECLAIM_GROUP,ITERATE_ONLY') select * from Bean"); _epService.EPAdministrator.CreateEPL("@Hint(' iterate_only ') select * from Bean"); // test statement name override stmtText = "@Name('MyAnnotatedName') select * from Bean"; stmt = _epService.EPAdministrator.CreateEPL(stmtText, "MyABCStmt"); Assert.AreEqual("MyABCStmt", stmt.Name); // hint tests Assert.IsNull(HintEnum.DISABLE_RECLAIM_GROUP.GetHint(null)); Assert.IsNull(HintEnum.DISABLE_RECLAIM_GROUP.GetHint(new Attribute[0])); var annos = _epService.EPAdministrator.CreateEPL("@Hint('DISABLE_RECLAIM_GROUP') select * from Bean").Annotations.ToArray(); Assert.AreEqual("DISABLE_RECLAIM_GROUP", HintEnum.DISABLE_RECLAIM_GROUP.GetHint(annos).Value); annos = _epService.EPAdministrator.CreateEPL("@Hint('ITERATE_ONLY,ITERATE_ONLY,DISABLE_RECLAIM_GROUP,ITERATE_ONLY') select * from Bean").Annotations.ToArray(); Assert.AreEqual("ITERATE_ONLY,ITERATE_ONLY,DISABLE_RECLAIM_GROUP,ITERATE_ONLY", HintEnum.DISABLE_RECLAIM_GROUP.GetHint(annos).Value); annos = _epService.EPAdministrator.CreateEPL("@Hint('ITERATE_ONLY,reclaim_group_aged=10') select * from Bean").Annotations.ToArray(); var hint = HintEnum.RECLAIM_GROUP_AGED.GetHint(annos); Assert.AreEqual("10", HintEnum.RECLAIM_GROUP_AGED.GetHintAssignedValue(hint)); annos = _epService.EPAdministrator.CreateEPL("@Hint('reclaim_group_aged=11') select * from Bean").Annotations.ToArray(); hint = HintEnum.RECLAIM_GROUP_AGED.GetHint(annos); Assert.AreEqual("11", HintEnum.RECLAIM_GROUP_AGED.GetHintAssignedValue(hint)); annos = _epService.EPAdministrator.CreateEPL("@Hint('index(one, two)') select * from Bean").Annotations.ToArray(); Assert.AreEqual("one, two", HintEnum.INDEX.GetHintAssignedValues(annos)[0]); // NoLock stmt = _epService.EPAdministrator.CreateEPL("@NoLock select * from Bean"); Assert.NotNull(AnnotationUtil.FindAnnotation(stmt.Annotations.ToArray(), typeof(NoLockAttribute))); Assert.AreEqual(1, AnnotationUtil.FindAttributes(stmt.Annotations.ToArray(), typeof(NoLockAttribute)).Count); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.EndTest(); } }