1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
///////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2000-2021 Ericsson Telecom AB
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
/* state machine of the MC */
digraph state_mach_mc {
// states
node [fontsize=20];
// start state (invisible)
START [style=invis]
// durable states
node [shape=box,style="filled,rounded",fillcolor=lightgray];
INACTIVE;
LISTENING;
LISTENING_CONFIGURED;
HC_CONNECTED;
ACTIVE;
READY;
EXECUTING_CONTROL;
EXECUTING_TESTCASE;
PAUSED;
// transient states
node[shape=box,style=rounded];
SHUTDOWN;
CONFIGURING;
CREATING_MTC;
TERMINATING_MTC;
TERMINATING_TESTCASE;
// edges
edge [fontsize=14];
START -> INACTIVE [arrowtail=odot];
INACTIVE -> LISTENING [label="start_session()/\nlisten()"];
{LISTENING; LISTENING_CONFIGURED} -> INACTIVE [label="shutdown_session()/\nclose()"];
{HC_CONNECTED; ACTIVE} -> SHUTDOWN [label="shutdown_session()/\nEXIT_HC"];
LISTENING -> HC_CONNECTED [label="VERSION/\n-"];
HC_CONNECTED -> HC_CONNECTED [label="VERSION/\n-"];
SHUTDOWN -> INACTIVE [label="all_hc_down()/\n-"];
{HC_CONNECTED; ACTIVE} -> CONFIGURING [label="configure()/\nCONFIGURE"];
{LISTENING; LISTENING_CONFIGURED} -> LISTENING_CONFIGURED [label="configure()/\n-"];
LISTENING_CONFIGURED -> CONFIGURING [label="VERSION/\nCONFIGURE"];
CONFIGURING -> CONFIGURING [label="VERSION/\n-"];
CONFIGURING -> ACTIVE [label="all_hc_configured()/\n-"];
ACTIVE -> CONFIGURING [label="VERSION/\nCONFIGURE"];
CONFIGURING -> HC_CONNECTED [label="CONFIGURE_NAK/\nerror"];
ACTIVE -> CREATING_MTC [label="create_mtc()/\nCREATE_MTC"];
CREATING_MTC -> ACTIVE [label="CREATE_NAK/\nerror"];
CREATING_MTC -> READY [label="MTC_CREATED/\n-"];
READY -> TERMINATING_MTC [label="exit_mtc()/\nEXIT_MTC"];
TERMINATING_MTC -> ACTIVE [label="MTC_connection_terminates/\n-"];
READY -> EXECUTING_CONTROL [label="execute_control()/\nEXECUTE_CONTROL"];
READY -> EXECUTING_CONTROL [label="execute_testcase()/\nEXECUTE_TESTCASE"];
EXECUTING_CONTROL -> READY [label="MTC_READY/\n-"];
EXECUTING_CONTROL -> EXECUTING_TESTCASE [label="TESTCASE_STARTED/\n-"];
EXECUTING_TESTCASE -> TERMINATING_TESTCASE [label="TESTCASE_FINISHED/\nSTOP"];
TERMINATING_TESTCASE -> EXECUTING_CONTROL [label="all_PTCs_terminated/\nPTC_VERDICT"];
TERMINATING_TESTCASE -> PAUSED [label="all_PTCs_terminated/\nPTC_VERDICT"];
PAUSED -> EXECUTING_CONTROL [label="continue_testcase()/\nCONTINUE"];
// error handling edges
// commented out, to get a clearer picture :)
/*
{HC_CONNECTED; CONFIGURING; ACTIVE} -> LISTENING_CONFIGURED [label="all_hc_down()/\nerror"];
*/
}
|