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"
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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"
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)