Example #1
0
 def __init__(self, time, packet_loss, node_id, maximum_transmission_time):
     """
     *Parameters*:
         - **time**: a simulation time object of the
           :class:`sim2net._time.Time` class;
         - **packet_loss**: an object representing a packet loss model to
           use (see :mod:`sim2net.packet_loss`);
         - **node_id** (`int`): an identifier of the node for which the
           output channel is created;
         - **maximum_transmission_time** (`float`): maximum message
           transmission time between neighboring nodes in the *simulation
           time* units (see: :mod:`sim2net._time`).
     """
     self.__logger = logger.get_logger('channel.output')
     assert self.__logger is not None, \
         'A logger object expected but "None" value got!'
     self.__random_generator = get_random_generator()
     assert self.__random_generator is not None, \
         'A random generator object expected but "None" value got!'
     super(_Output, self).__init__(node_id)
     self.__time = time
     self.__packet_loss = packet_loss
     self.__node_id = node_id
     self.__packet_counter = int(-1)
     self.__maximum_transmission_time = maximum_transmission_time
     self.__next_transmission_time = float(-1.0)
     # [ transmission start time,  transmission end time,
     #   message identifier,  (sending node identifier, message),
     #   [ list of neighboring nodes ] ]
     self.__transmitted_packets = list()
Example #2
0
 def __init__(self, time, packet_loss, node_id, maximum_transmission_time):
     """
     *Parameters*:
         - **time**: a simulation time object of the
           :class:`sim2net._time.Time` class;
         - **packet_loss**: an object representing a packet loss model to
           use (see :mod:`sim2net.packet_loss`);
         - **node_id** (`int`): an identifier of the node for which the
           output channel is created;
         - **maximum_transmission_time** (`float`): maximum message
           transmission time between neighboring nodes in the *simulation
           time* units (see: :mod:`sim2net._time`).
     """
     self.__logger = logger.get_logger('channel.output')
     assert self.__logger is not None, \
         'A logger object expected but "None" value got!'
     self.__random_generator = get_random_generator()
     assert self.__random_generator is not None, \
         'A random generator object expected but "None" value got!'
     super(_Output, self).__init__(node_id)
     self.__time = time
     self.__packet_loss = packet_loss
     self.__node_id = node_id
     self.__packet_counter = int(-1)
     self.__maximum_transmission_time = maximum_transmission_time
     self.__next_transmission_time = float(-1.0)
     # [ transmission start time,  transmission end time,
     #   message identifier,  (sending node identifier, message),
     #   [ list of neighboring nodes ] ]
     self.__transmitted_packets = list()
Example #3
0
 def __init__(self, name):
     """
     *Parameters*:
         - **name** (`str`): a name of the implemented simulation area.
     """
     self.__logger = logger.get_logger('area.' + str(name))
     assert self.__logger is not None, \
         'A logger object expected but "None" value got!'
Example #4
0
 def __init__(self, name):
     """
     *Parameters*:
         - **name** (`str`): a name of the implemented simulation area.
     """
     self.__logger = logger.get_logger('area.' + str(name))
     assert self.__logger is not None, \
         'A logger object expected but "None" value got!'
Example #5
0
 def __init__(self, name):
     """
     *Parameters*:
         - **name** (`str`): a name of the implemented speed distribution.
     """
     self.__random_generator = get_random_generator()
     assert self.__random_generator is not None, \
            'A random generator object expected but "None" value got!'
     self.__logger = logger.get_logger('speed.' + str(name))
     assert self.__logger is not None, \
            'A logger object expected but "None" value got!'
Example #6
0
 def __init__(self, name):
     """
     *Parameters*:
         - **name** (`str`): a name of the implemented mobility model.
     """
     self.__random_generator = get_random_generator()
     assert self.__random_generator is not None, \
            'A random generator object expected but "None" value got!'
     self.__logger = logger.get_logger('mobility.' + str(name))
     assert self.__logger is not None, \
            'A logger object expected but "None" value got!'
Example #7
0
 def __init__(self, name):
     """
     *Parameters*:
         - **name** (`str`): a name of the implemented process failure
           model.
     """
     self.__random_generator = get_random_generator()
     assert self.__random_generator is not None, \
         'A random generator object expected but "None" value got!'
     self.__logger = logger.get_logger('failure.' + str(name))
     assert self.__logger is not None, \
         'A logger object expected but "None" value got!'
Example #8
0
 def __init__(self, node_id):
     """
     *Parameters*:
         - **node_id** (`int`): an identifier of the node for which the
           input channel is created.
     """
     self.__logger = logger.get_logger('channel.input')
     assert self.__logger is not None, \
         'A logger object expected but "None" value got!'
     self.__random_generator = get_random_generator()
     assert self.__random_generator is not None, \
         'A random generator object expected but "None" value got!'
     self.__node_id = node_id
     self.__captured_packets = list()
Example #9
0
 def __init__(self, node_id):
     """
     *Parameters*:
         - **node_id** (`int`): an identifier of the node for which the
           input channel is created.
     """
     self.__logger = logger.get_logger('channel.input')
     assert self.__logger is not None, \
         'A logger object expected but "None" value got!'
     self.__random_generator = get_random_generator()
     assert self.__random_generator is not None, \
         'A random generator object expected but "None" value got!'
     self.__node_id = node_id
     self.__captured_packets = list()
Example #10
0
 def __init__(self, environment):
     """
     *Parameters*:
         - **environment**: a dictionary that contains objects, which form
           the network environment for simulations (see
           :attr:`sim2net._network.Network.__ENVIRONMENT` for the objects
           list).
     """
     self.__logger = logger.get_logger(Network.__name__)
     self.__logger.debug('Initializing the simulated network')
     try:
         for key in Network.__ENVIRONMENT:
             if environment[key] is None:
                 raise KeyError(key)
     except KeyError, err:
         self.__logger.critical('No settings given for "%s" parameter!' %
                                err)
         raise
Example #11
0
 def __init__(self, environment):
     """
     *Parameters*:
         - **environment**: a dictionary that contains objects, which form
           the network environment for simulations (see
           :attr:`sim2net._network.Network.__ENVIRONMENT` for the objects
           list).
     """
     self.__logger = logger.get_logger(Network.__name__)
     self.__logger.debug('Initializing the simulated network')
     try:
         for key in Network.__ENVIRONMENT:
             if environment[key] is None:
                 raise KeyError(key)
     except KeyError, err:
         self.__logger.critical('No settings given for "%s" parameter!'
                                % err)
         raise
Example #12
0
    def __init__(self, time, packet_loss, node_id, maximum_transmission_time):
        """
        *Parameters*:
            - **time**: a simulation time object of the
              :class:`sim2net._time.Time` class;
            - **packet_loss**: an object representing the packet loss model
              (see :mod:`sim2net.packet_loss`);
            - **node_id** (`int`): an identifier of the node;
            - **maximum_transmission_time** (`float`): maximum message
              transmission time between neighboring nodes in the *simulation
              time* units (see: :mod:`sim2net._time`).

        *Raises*:
            - **ValueError**: raised when the given value of the *time* or
              *packet_loss* parameter is `None`; or when the given value of the
              *node_id* or *maximum_transmission_time* parameter is less than
              zero.
        """
        if time is None:
            raise ValueError('Parameter "time": a time abstraction object'
                             ' expected but "None" value given!')
        if packet_loss is None:
            raise ValueError('Parameter "packet_loss": an object'
                             ' representing a packet loss model expected'
                             ' but "None" value given!')
        self.__logger = logger.get_logger(Channel.__name__)
        assert self.__logger is not None, \
            'A logger object expected but "None" value got!'
        check_argument_type(Channel.__name__, 'node_id', int, node_id,
                            self.__logger)
        if node_id < 0:
            raise ValueError('Parameter "node_id": a value of the identifier'
                             ' cannot be less that zero but %d given!' %
                             int(node_id))
        check_argument_type(Channel.__name__, 'maximum_transmission_time',
                            float, maximum_transmission_time, self.__logger)
        if maximum_transmission_time < 0.0:
            raise ValueError('Parameter "maximum_transmission_time": a value'
                             ' of the maximum message transmission time'
                             ' cannot be less that zero but %f given!' %
                             float(maximum_transmission_time))
        super(Channel, self).__init__(time, packet_loss, node_id,
                                      maximum_transmission_time)
Example #13
0
    def __init__(self, time, packet_loss, node_id, maximum_transmission_time):
        """
        *Parameters*:
            - **time**: a simulation time object of the
              :class:`sim2net._time.Time` class;
            - **packet_loss**: an object representing the packet loss model
              (see :mod:`sim2net.packet_loss`);
            - **node_id** (`int`): an identifier of the node;
            - **maximum_transmission_time** (`float`): maximum message
              transmission time between neighboring nodes in the *simulation
              time* units (see: :mod:`sim2net._time`).

        *Raises*:
            - **ValueError**: raised when the given value of the *time* or
              *packet_loss* parameter is `None`; or when the given value of the
              *node_id* or *maximum_transmission_time* parameter is less than
              zero.
        """
        if time is None:
            raise ValueError('Parameter "time": a time abstraction object'
                             ' expected but "None" value given!')
        if packet_loss is None:
            raise ValueError('Parameter "packet_loss": an object'
                             ' representing a packet loss model expected'
                             ' but "None" value given!')
        self.__logger = logger.get_logger(Channel.__name__)
        assert self.__logger is not None, \
            'A logger object expected but "None" value got!'
        check_argument_type(Channel.__name__, 'node_id', int, node_id,
                            self.__logger)
        if node_id < 0:
            raise ValueError('Parameter "node_id": a value of the identifier'
                             ' cannot be less that zero but %d given!'
                             % int(node_id))
        check_argument_type(Channel.__name__, 'maximum_transmission_time',
                            float, maximum_transmission_time, self.__logger)
        if maximum_transmission_time < 0.0:
            raise ValueError('Parameter "maximum_transmission_time": a value'
                             ' of the maximum message transmission time'
                             ' cannot be less that zero but %f given!'
                             % float(maximum_transmission_time))
        super(Channel, self).__init__(time, packet_loss, node_id,
                                      maximum_transmission_time)
Example #14
0
    def setup(self, simulation_frequency=1):
        """
        Initializes time abstractions for simulations.

        *Parameters*:
            - **simulation_frequency** (`int`): a value of the
              simulation frequency (greater than 0).

        *Raises*:
            - **ValueError**: raised when a given value of the simulation
              frequency is less or equal to 0.

        *Examples*:

        .. testsetup::

            from sim2net._time import Time

        .. doctest::

            >>> clock = Time()
            >>> clock.setup()
            >>> clock.tick()
            (0, 0.0)
            >>> clock.tick()
            (1, 1.0)
            >>> clock.tick()
            (2, 2.0)
            >>> clock.simulation_period
            1.0

            >>> clock = Time()
            >>> clock.setup(4)
            >>> clock.tick()
            (0, 0.0)
            >>> clock.tick()
            (1, 0.25)
            >>> clock.tick()
            (2, 0.5)
            >>> clock.tick()
            (3, 0.75)
            >>> clock.tick()
            (4, 1.0)
            >>> clock.simulation_period
            0.25
        """
        self.__logger = logger.get_logger(Time.__name__)
        assert self.__logger is not None, \
               'A logger object expected but "None" value got!'
        self.__simulation_step = int(-1)
        self.__simulation_time = float(-1.0)
        check_argument_type(Time.__name__, 'simulation_frequency', int,
                            simulation_frequency, self.__logger)
        if simulation_frequency <= 0:
            raise ValueError('Parameter "simulation_frequency": a value of' \
                             ' the simulation frequency parameter cannot be' \
                             ' less or equal to zero, but %d given!' %
                             int(simulation_frequency))
        self.__simulation_frequency = float(simulation_frequency)
        self.__simulation_period = 1.0 / self.__simulation_frequency
        self.__logger.debug('The simulation time has been initialized with' \
                            ' the simulation frequency set to %d and the' \
                            ' simulation period equal to %f' %
                            (self.__simulation_frequency,
                             self.__simulation_period))
Example #15
0
    def setup(self, simulation_frequency=1):
        """
        Initializes time abstractions for simulations.

        *Parameters*:
            - **simulation_frequency** (`int`): a value of the
              simulation frequency (greater than 0).

        *Raises*:
            - **ValueError**: raised when a given value of the simulation
              frequency is less or equal to 0.

        *Examples*:

        .. testsetup::

            from sim2net._time import Time

        .. doctest::

            >>> clock = Time()
            >>> clock.setup()
            >>> clock.tick()
            (0, 0.0)
            >>> clock.tick()
            (1, 1.0)
            >>> clock.tick()
            (2, 2.0)
            >>> clock.simulation_period
            1.0

            >>> clock = Time()
            >>> clock.setup(4)
            >>> clock.tick()
            (0, 0.0)
            >>> clock.tick()
            (1, 0.25)
            >>> clock.tick()
            (2, 0.5)
            >>> clock.tick()
            (3, 0.75)
            >>> clock.tick()
            (4, 1.0)
            >>> clock.simulation_period
            0.25
        """
        self.__logger = logger.get_logger(Time.__name__)
        assert self.__logger is not None, \
               'A logger object expected but "None" value got!'
        self.__simulation_step = int(-1)
        self.__simulation_time = float(-1.0)
        check_argument_type(Time.__name__, 'simulation_frequency', int,
                            simulation_frequency, self.__logger)
        if simulation_frequency <= 0:
            raise ValueError('Parameter "simulation_frequency": a value of' \
                             ' the simulation frequency parameter cannot be' \
                             ' less or equal to zero, but %d given!' %
                             int(simulation_frequency))
        self.__simulation_frequency = float(simulation_frequency)
        self.__simulation_period = 1.0 / self.__simulation_frequency
        self.__logger.debug('The simulation time has been initialized with' \
                            ' the simulation frequency set to %d and the' \
                            ' simulation period equal to %f' %
                            (self.__simulation_frequency,
                             self.__simulation_period))