Simple Module ScenarioManager

Package: inet.common.scenario
File: src/inet/common/scenario/ScenarioManager.ned

C++ definition

ScenarioManager is for setting up and controlling simulation experiments. You can schedule certain events to take place at specified times, like changing a parameter value, changing the bit error rate of a connection, removing or adding connections, removing or adding routes in a routing table, etc, so that you can observe the transient behaviour.

ScenarioManager executes a script specified in XML. It has a few built-in commands, while other commands are dispatched to be carried out by given simple modules. (The C++ class of these simple modules' needs to implement the IScriptable interface, and the processCommand() method must be redefined accordingly).

An example script:

<scenario>
    <set-param t="10" module="host[1].mobility" par="speed" value="5"/>
    <set-param t="20" module="host[1].mobility" par="speed" value="30"/>
    <at t="50">
        <set-param module="host[2].mobility" par="speed" value="10"/>
        <set-param module="host[3].mobility" par="speed" value="10"/>
        <connect src-module="host[2]" src-gate="ppp[0]"
                 dest-module="host[1]" dest-gate="ppp[0]"
                 channel-type="ned.DatarateChannel">
            <param name="datarate" value="10Mbps" />
            <param name="delay" value="0.1us" />
        </connect>
    </at>
    <at t="60">
        <disconnect src-module="host[2]" src-gate="ppp[0]" />
        <disconnect src-module="host[1]" src-gate="ppp[0]" />
    </at>
</scenario>

Built-in commands: <set-param>, <set-channel-attr>, <at>.

All commands have a t attribute which carries the simulation time at which the command has to be carried out. You can group several commands to be carried out at the same simulation time using <at>, and then only the <at> command is needed to have a t attribute.

connect/disconnect working between nodes, with have same parent

Supported attributes:

ScenarioManager

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Networks:

Name Type Description
AODVNetwork network (no description)
ClientServerWithSM network (no description)
ClientServerWithSM network (no description)
DHCPShutdownReboot network (no description)
DYMONetwork network

TODO

DynamicRadioNetwork network (no description)
DynamicTest network (no description)
DynamicTest network (no description)
GPSRNetworkRandom network

TODO

LDPTEST network (no description)
LinkBreakA network (no description)
MixedNetwork network

TODO Auto-generated network

MobileNetworkWithScenario network (no description)
NClients network (no description)
NeighborCacheTest network (no description)
NetworkPathRIPShowcase network

TODO documentation

OSPF_BackboneAndOneStubTest network (no description)
OSPF_BackboneAndTwoStubsTest network (no description)
OSPF_BackboneTest network (no description)
OSPF_mininet network (no description)
RIPInfinityCountTest network (no description)
RSVPTE4 network

Example network to demonstrate RSVP-TE.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

RSVPTE4 network

Example network to demonstrate RSVP-TE.

ShortestPath network (no description)
SimpleRREQ network (no description)
SimpleRREQ2 network (no description)
SimpleTest network (no description)
SwitchNetwork network (no description)

Parameters:

Name Type Default value Description
script xml xml("")

Properties:

Name Value Description
display i=block/control_s
labels node

Source code:

//
// ~ScenarioManager is for setting up and controlling simulation experiments.
// You can schedule certain events to take place at specified times,
// like changing a parameter value, changing the bit error rate of
// a connection, removing or adding connections, removing or
// adding routes in a routing table, etc, so that you can observe the
// transient behaviour.
//
// ~ScenarioManager executes a script specified in XML. It has a few
// built-in commands, while other commands are dispatched to be carried out
// by given simple modules. (The C++ class of these simple modules' needs
// to implement the IScriptable interface, and the processCommand() method
// must be redefined accordingly).
//
// An example script:
//
// <pre>
// <scenario>
//     <set-param t="10" module="host[1].mobility" par="speed" value="5"/>
//     <set-param t="20" module="host[1].mobility" par="speed" value="30"/>
//     <at t="50">
//         <set-param module="host[2].mobility" par="speed" value="10"/>
//         <set-param module="host[3].mobility" par="speed" value="10"/>
//         <connect src-module="host[2]" src-gate="ppp[0]"
//                  dest-module="host[1]" dest-gate="ppp[0]"
//                  channel-type="ned.DatarateChannel">
//             <param name="datarate" value="10Mbps" />
//             <param name="delay" value="0.1us" />
//         </connect>
//     </at>
//     <at t="60">
//         <disconnect src-module="host[2]" src-gate="ppp[0]" />
//         <disconnect src-module="host[1]" src-gate="ppp[0]" />
//     </at>
// </scenario>
// </pre>
//
// Built-in commands: <set-param>, <set-channel-attr>, <at>.
//
// All commands have a t attribute which carries the simulation time
// at which the command has to be carried out. You can group several commands
// to be carried out at the same simulation time using <at>, and
// then only the <at> command is needed to have a t attribute.
//
// connect/disconnect working between nodes, with have same parent
//
// Supported attributes:
//    - <set-param>: module, par, value.
//    - <set-channel-attr>: src-module, src-gate, attr, value.
//    - <connect>: src-module, src-gate, dest-module, dest-gate, channel-type
//        - <param>: name, value
//    - <disconnect>: src-module, src-gate
//          FIXME - TRANSLATE: a src-gate lehet inout gate is, akkor mindket iranyra disconnect
//
simple ScenarioManager
{
    parameters:
        xml script = default(xml("<script></script>"));
        @display("i=block/control_s");
        @labels(node,mpls-node);
}