def andAndPatternTransformationTest(): pattern = Pattern( AndOperator( PrimitiveEventStructure("AAPL", "a"), NegationOperator(PrimitiveEventStructure("AMZN", "z")), PrimitiveEventStructure("GOOG", "g"), AndOperator( PrimitiveEventStructure("AMZN", "zz"), NegationOperator(PrimitiveEventStructure("GOOG", "gg")), AndOperator( PrimitiveEventStructure("AMZN", "zzz"), NegationOperator(PrimitiveEventStructure("GOOG", "ggg"))))), TrueCondition(), timedelta(minutes=5)) expected_pattern = Pattern( AndOperator(PrimitiveEventStructure("AAPL", "a"), NegationOperator(PrimitiveEventStructure("AMZN", "z")), PrimitiveEventStructure("GOOG", "g"), PrimitiveEventStructure("AMZN", "zz"), NegationOperator(PrimitiveEventStructure("GOOG", "gg")), PrimitiveEventStructure("AMZN", "zzz"), NegationOperator(PrimitiveEventStructure("GOOG", "ggg"))), TrueCondition(), timedelta(minutes=5)) pattern_transformation = PatternPreprocessor( PatternPreprocessingParameters(TESTING_PREPROCESSING_RULES_ORDER)) transformed_patterns = pattern_transformation.transform_patterns([pattern]) assert len( transformed_patterns) == 1, "Test andAndPatternTransformation Failed" assert expected_pattern.full_structure == transformed_patterns[0].full_structure, \ "Test andAndPatternTransformation Failed"
def topmostOrPatternTransformationTest(): pattern = Pattern( SeqOperator( PrimitiveEventStructure("AAPL", "a"), OrOperator(PrimitiveEventStructure("AMZN", "z"), PrimitiveEventStructure("GOOG", "g")), PrimitiveEventStructure("MSFT", "m")), TrueCondition(), timedelta(minutes=5)) expected_pattern = Pattern( OrOperator( SeqOperator(PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("AMZN", "z"), PrimitiveEventStructure("MSFT", "m")), SeqOperator(PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("GOOG", "g"), PrimitiveEventStructure("MSFT", "m"))), TrueCondition(), timedelta(minutes=5)) rules_directive = [PatternTransformationRules.TOPMOST_OR_PATTERN] params = PatternPreprocessingParameters() params.transformation_rules = rules_directive pattern_transformation = PatternPreprocessor(params) transformed_patterns = pattern_transformation.transform_patterns([pattern]) assert len(transformed_patterns ) == 1, "Test topmostOrPatternTransformation Failed" assert transformed_patterns[0].full_structure == expected_pattern.full_structure, \ "Test topmostOrPatternTransformation Failed"
def frequencyPatternSearch6Test(createTestFile=False): pattern = Pattern( SeqOperator(PrimitiveEventStructure("AAPL", "a1"), PrimitiveEventStructure("LOCM", "b1"), PrimitiveEventStructure("AAPL", "a2"), PrimitiveEventStructure("LOCM", "b2"), PrimitiveEventStructure("AAPL", "a3"), PrimitiveEventStructure("LOCM", "b3")), TrueCondition(), timedelta(minutes=7)) pattern.set_statistics({ StatisticsTypes.ARRIVAL_RATES: [0.0159, 0.0076, 0.0159, 0.0076, 0.0159, 0.0076] }) # {"AAPL": 460, "LOCM": 219} eval_params = TreeBasedEvaluationMechanismParameters( optimizer_params=StatisticsDeviationAwareOptimizerParameters( tree_plan_params=TreePlanBuilderParameters( TreePlanBuilderTypes.SORT_BY_FREQUENCY_LEFT_DEEP_TREE), statistics_collector_params=StatisticsCollectorParameters( statistics_types=[StatisticsTypes.ARRIVAL_RATES])), storage_params=DEFAULT_TESTING_EVALUATION_MECHANISM_SETTINGS. storage_params) runTest("frequency6", [pattern], createTestFile, eval_mechanism_params=eval_params)
def nestedAscendingStructuralTest(): pattern = Pattern( AndOperator( SeqOperator(PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("AMZN", "b")), SeqOperator(PrimitiveEventStructure("AVID", "c"), PrimitiveEventStructure("BIDU", "d")), AndOperator(PrimitiveEventStructure("GOOG", "e"), PrimitiveEventStructure("AAPL", "f")), PrimitiveEventStructure("GOOG", "g"), SeqOperator(PrimitiveEventStructure("AMZN", "h"), PrimitiveEventStructure("BIDU", "i"))), TrueCondition(), timedelta(minutes=1)) pattern.set_statistics({ StatisticsTypes.ARRIVAL_RATES: [0.11, 0.2, 0.3, 0.4, 0.5, 0.11, 0.5, 0.2, 0.4] }) eval_params = TreeBasedEvaluationMechanismParameters( optimizer_params=OptimizerParameters( opt_type=OptimizerTypes.TRIVIAL_OPTIMIZER, tree_plan_params=TreePlanBuilderParameters( TreePlanBuilderTypes.SORT_BY_FREQUENCY_LEFT_DEEP_TREE)), storage_params=DEFAULT_TESTING_EVALUATION_MECHANISM_SETTINGS. storage_params) expected_result = ('And', ('And', ('And', ('And', 'g', ('Seq', 'a', 'b')), ('Seq', 'c', 'd')), ('And', 'e', 'f')), ('Seq', 'h', 'i')) runStructuralTest('nestedAscendingStructuralTest', [pattern], expected_result, eval_mechanism_params=eval_params)
def nestedAscendingTest(createTestFile=False): pattern = Pattern( AndOperator( SeqOperator(PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("AMZN", "b")), SeqOperator(PrimitiveEventStructure("AVID", "c"), PrimitiveEventStructure("BIDU", "d")), AndOperator(PrimitiveEventStructure("GOOG", "e"), PrimitiveEventStructure("AAPL", "f")), PrimitiveEventStructure("GOOG", "g"), SeqOperator(PrimitiveEventStructure("AMZN", "h"), PrimitiveEventStructure("BIDU", "i"))), TrueCondition(), timedelta(minutes=1)) pattern.set_statistics({ StatisticsTypes.ARRIVAL_RATES: [0.11, 0.2, 0.3, 0.4, 0.5, 0.11, 0.5, 0.2, 0.4] }) eval_params = TreeBasedEvaluationMechanismParameters( optimizer_params=OptimizerParameters( opt_type=OptimizerTypes.TRIVIAL_OPTIMIZER, tree_plan_params=TreePlanBuilderParameters( TreePlanBuilderTypes.SORT_BY_FREQUENCY_LEFT_DEEP_TREE)), storage_params=DEFAULT_TESTING_EVALUATION_MECHANISM_SETTINGS. storage_params) runTest("nestedAscending", [pattern], createTestFile, eval_params)
def nonFrequencyPatternSearch4Test(createTestFile=False): pattern = Pattern( SeqOperator(PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("AMZN", "b"), PrimitiveEventStructure("AVID", "c"), PrimitiveEventStructure("LOCM", "d")), TrueCondition(), timedelta(minutes=7)) runTest("nonFrequency4", [pattern], createTestFile)
def nonFrequencyPatternSearch5Test(createTestFile=False): pattern = Pattern( SeqOperator(PrimitiveEventStructure("AAPL", "a1"), PrimitiveEventStructure("LOCM", "b1"), PrimitiveEventStructure("AAPL", "a2"), PrimitiveEventStructure("LOCM", "b2"), PrimitiveEventStructure("AAPL", "a3"), PrimitiveEventStructure("LOCM", "b3")), TrueCondition(), timedelta(minutes=7)) runTest("nonFrequency5", [pattern], createTestFile)
def innerOrPatternTransformationTest(): pattern = Pattern( SeqOperator( NegationOperator(PrimitiveEventStructure("AMZN", "z")), OrOperator(PrimitiveEventStructure("GOOG", "g"), PrimitiveEventStructure("AAPL", "a")), OrOperator(PrimitiveEventStructure("GOOG", "gg"), PrimitiveEventStructure("AAPL", "aa"))), TrueCondition(), timedelta(minutes=5)) pattern_list = [ Pattern( SeqOperator(NegationOperator(PrimitiveEventStructure("AMZN", "z")), PrimitiveEventStructure("GOOG", "g"), PrimitiveEventStructure("GOOG", "gg")), TrueCondition(), timedelta(minutes=5)), Pattern( SeqOperator(NegationOperator(PrimitiveEventStructure("AMZN", "z")), PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("AAPL", "gg")), TrueCondition(), timedelta(minutes=5)), Pattern( SeqOperator(NegationOperator(PrimitiveEventStructure("AMZN", "z")), PrimitiveEventStructure("GOOG", "g"), PrimitiveEventStructure("AAPL", "aa")), TrueCondition(), timedelta(minutes=5)), Pattern( SeqOperator(NegationOperator(PrimitiveEventStructure("AMZN", "z")), PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("AAPL", "aa")), TrueCondition(), timedelta(minutes=5)) ] pattern_transformation = PatternPreprocessor( PatternPreprocessingParameters(TESTING_PREPROCESSING_RULES_ORDER)) transformed_patterns = pattern_transformation.transform_patterns([pattern]) expected_patterns_structures = [] for tmp_pattern in pattern_list: expected_patterns_structures.append(tmp_pattern.full_structure) assert len(transformed_patterns) == len( pattern_list), "Test innerOrPatternTransformation Failed" for tmp_pattern in transformed_patterns: assert tmp_pattern.full_structure in expected_patterns_structures, "Test innerOrPatternTransformation Failed"
def duplicateEventTypeTest(createTestFile=False): """ PATTERN SEQ(AmazonStockPriceUpdate a, AmazonStockPriceUpdate b, AmazonStockPriceUpdate c) WHERE TRUE WITHIN 10 minutes """ pattern = Pattern( SeqOperator(PrimitiveEventStructure("AMZN", "a"), PrimitiveEventStructure("AMZN", "b"), PrimitiveEventStructure("AMZN", "c")), TrueCondition(), timedelta(minutes=10) ) runTest("duplicateEventType", [pattern], createTestFile, eventStream=nasdaqEventStreamTiny)
def KCNestedStructuralTest(): pattern = Pattern( KleeneClosureOperator(AndOperator( PrimitiveEventStructure("GOOG", "a"), SeqOperator( PrimitiveEventStructure("GOOG", "b"), KleeneClosureOperator(PrimitiveEventStructure("GOOG", "c"), min_size=1, max_size=5))), min_size=1, max_size=3), TrueCondition(), timedelta(minutes=3)) expected_result = ('KC', ('And', 'a', ('Seq', 'b', ('KC', 'c')))) runStructuralTest('KCNestedStructuralTest', [pattern], expected_result)
def duplicateEventTypeTest(createTestFile=False, eval_mechanism_params=DEFAULT_TESTING_EVALUATION_MECHANISM_SETTINGS, test_name = "duplicateEventType"): """ PATTERN SEQ(AmazonStockPriceUpdate a, AmazonStockPriceUpdate b, AmazonStockPriceUpdate c) WHERE TRUE WITHIN 10 minutes """ pattern = Pattern( SeqOperator(PrimitiveEventStructure("AMZN", "a"), PrimitiveEventStructure("AMZN", "b"), PrimitiveEventStructure("AMZN", "c")), TrueCondition(), timedelta(minutes=10) ) runTest(test_name, [pattern], createTestFile, eventStream=nasdaqEventStreamTiny, eval_mechanism_params=eval_mechanism_params)
def frequencyPatternSearch3Test(createTestFile=False): pattern = Pattern( SeqOperator(PrimitiveEventStructure("AAPL", "a"), PrimitiveEventStructure("AAPL", "b"), PrimitiveEventStructure("AAPL", "c"), PrimitiveEventStructure("LOCM", "d")), TrueCondition(), timedelta(minutes=5)) pattern.set_statistics(StatisticsTypes.FREQUENCY_DICT, { "AAPL": 460, "LOCM": 219 }) eval_params = TreeBasedEvaluationMechanismParameters( TreePlanBuilderParameters( TreePlanBuilderTypes.SORT_BY_FREQUENCY_LEFT_DEEP_TREE), DEFAULT_TESTING_EVALUATION_MECHANISM_SETTINGS.storage_params) runTest("frequency3", [pattern], createTestFile, eval_mechanism_params=eval_params)