def test_parent_child_order_by_name_topology_signature(self): signature = ParentChildOrderByNameTopologySignature() self._initialize_signature(signature) signatures = set() for node in self.prototype.nodes(): signatures.add(signature.get_signature(node, node.parent())) self.assertEqual(len(signatures), 16)
def test_ensemble_with_prototypes(self): decorator = AnomalyDecorator() algorithm = IncrementalDistanceAlgorithm( signature=EnsembleSignature( signatures=[ParentChildByNameTopologySignature(), ParentChildOrderByNameTopologySignature()])) algorithm.prototypes = [simple_prototype(), simple_monitoring_tree()] decorator.wrap_algorithm(algorithm) algorithm.start_tree() for event in Event.from_tree(simple_monitoring_tree(), supported={ProcessStartEvent: True}): algorithm.add_event(event) algorithm.finish_tree() self.assertEqual(decorator.data(), [ [ [ [False, False, False, False, False], [False, False, False, False, False] ], [ [False, False, False, False, True], [False, False, False, False, False] ] ] ])
def test_normalized_results(self): decorator = DistanceDecorator(normalized=True) algorithm = IncrementalDistanceAlgorithm( signature=EnsembleSignature( signatures=[ParentChildByNameTopologySignature(), ParentChildOrderByNameTopologySignature()]) ) algorithm.prototypes = [simple_prototype(), simple_monitoring_tree()] decorator.wrap_algorithm(algorithm) algorithm.start_tree() self.assertEqual([[[[], []], [[], []]]], decorator.data()) for event in Event.from_tree(simple_monitoring_tree(), supported={ProcessStartEvent: True}): algorithm.add_event(event) algorithm.finish_tree() self.assertEqual([[ [ # ParentChildByNameTopologySignature [2 / 3, 1 / 3, 1 / 3, 0.0], # simple_prototype [2 / 3, 1 / 3, 1 / 3, 0.0] # simple_monitoring_tree ], [ # ParentChildOrderByNameTopologySignature [4 / 5, 3 / 5, 3 / 5, 2 / 5], [2 / 3, 1 / 3, 1 / 3, 0.0] ]]], decorator.data())
def test_ensemble_signature(self): decorator = SignatureDecorator() algorithm = IncrementalDistanceAlgorithm(signature=EnsembleSignature( signatures=[ ParentChildByNameTopologySignature(), ParentChildOrderByNameTopologySignature() ])) algorithm.prototypes = [simple_prototype(), simple_monitoring_tree()] decorator.wrap_algorithm(algorithm) algorithm.start_tree() for event in Event.from_tree(simple_monitoring_tree(), supported={ProcessStartEvent: True}): algorithm.add_event(event) algorithm.finish_tree() self.assertEqual( decorator.descriptive_data(), { 'signature': [[[ 'root_1', 'test_149160533', 'test_149160533', 'muh_149160533' ], [ '.0_root_1', '.0.0_test_245236498', '.0.0_test_245236498', '.0.1_muh_245236498' ]]] }) algorithm.start_tree() for event in Event.from_tree(simple_prototype(), supported={ProcessStartEvent: True}): algorithm.add_event(event) algorithm.finish_tree() self.assertEqual( decorator.descriptive_data(), { 'signature': [[[ 'root_1', 'test_149160533', 'test_149160533', 'muh_149160533' ], [ '.0_root_1', '.0.0_test_245236498', '.0.0_test_245236498', '.0.1_muh_245236498' ]], [[ 'root_1', 'test_149160533', 'muh_149160533', 'test_149160533', 'muh_149160533' ], [ '.0_root_1', '.0.0_test_245236498', '.0.1_muh_245236498', '.0.2_test_245236498', '.0.3_muh_245236498' ]]] })
def test_two_signatures(self): signature = EnsembleSignature( signatures=[ParentChildByNameTopologySignature(), ParentChildOrderByNameTopologySignature()]) self.assertEqual(2, signature.count) for node in simple_monitoring_tree().nodes(): signature.prepare_signature(node, parent=node.parent()) for node in simple_monitoring_tree().nodes(): token = signature.get_signature(node, parent=node.parent()) self.assertIsNotNone(token) self.assertEqual(2, len(token)) self.assertIsNot(token[0], token[1])
def test_ensemble(self): decorator = DistanceDecorator(normalized=False) algorithm = IncrementalDistanceAlgorithm( signature=EnsembleSignature( signatures=[ParentChildByNameTopologySignature(), ParentChildOrderByNameTopologySignature()])) algorithm.prototypes = [simple_prototype()] decorator.wrap_algorithm(algorithm) algorithm.start_tree() self.assertEqual([[[[]], [[]]]], decorator.data()) for event in Event.from_tree(simple_monitoring_tree(), supported={ProcessStartEvent: True}): algorithm.add_event(event) algorithm.finish_tree() self.assertEqual([[[[2, 1, 1, 0]], [[4, 3, 3, 2]]]], decorator.data())
ParentChildOrderTopologySignature, ParentChildOrderByNameTopologySignature, \ ParentCountedChildrenByNameTopologySignature from assess.decorators.compressionfactordecorator import CompressionFactorDecorator from assess.decorators.datadecorator import DataDecorator from assess.decorators.distancematrixdecorator import DistanceMatrixDecorator from assess.decorators.performancedecorator import PerformanceDecorator # Most critical, so take as leading decorator performance = PerformanceDecorator() compression = CompressionFactorDecorator() data = DataDecorator() distance = DistanceMatrixDecorator(normalized=False) distance2 = DistanceMatrixDecorator(normalized=True) # Build decorator chain with performance as last compression.decorator = performance data.decorator = compression distance2.decorator = data distance.decorator = distance2 configurations = [{ "algorithms": [ IncrementalDistanceAlgorithm ], "signatures": [ lambda: ParentChildByNameTopologySignature(), lambda: ParentChildOrderTopologySignature(), lambda: ParentChildOrderByNameTopologySignature(), lambda: ParentCountedChildrenByNameTopologySignature(count=3), lambda: ParentCountedChildrenByNameTopologySignature(count=4) ], "decorator": distance }]