Source code for tlsfuzzer.tree

# Author: Hubert Kario, (c) 2015
# Released under Gnu GPL v2.0, see LICENSE file for details
"""Handling of event tree nodes"""


[docs] class TreeNode(object): """Base class for decision tree objects.""" def __init__(self): """Prepare internode dependencies""" self.child = None self.next_sibling = None
[docs] def add_child(self, child): """ Sets the parameter as the child of the node :return: the child node """ self.child = child return self.child
[docs] def get_all_siblings(self): """ Return iterator with all siblings of node :rtype: iterator """ yield self node = self while node.next_sibling is not None: yield node.next_sibling node = node.next_sibling
[docs] def is_command(self): """ Checks if the object is a standalone state modifier :rtype: bool """ raise NotImplementedError("Subclasses need to implement this!")
[docs] def is_expect(self): """ Checks if the object is a node which processes messages :rtype: bool """ raise NotImplementedError("Subclasses need to implement this!")
[docs] def is_generator(self): """ Checks if the object is a generator for messages to send :rtype: bool """ raise NotImplementedError("Subclasses need to implement this!")
[docs] def _repr(self, attributes): """ Return a text representation of the object. :param list(str) attributes: names of attributes of the object that will be included in the text representation """ return "{0}({1})".format( self.__class__.__name__, ", ".join("{0}={1!r}".format(name, getattr(self, name)) for name in attributes if getattr(self, name) is not None))