digraph G {
subgraph cluster_1 {
node [style=filled,shape=box];
check_available_queue -> remove_entries_over_10s_old;
remove_entries_over_10s_old -> set_available [label="num_avail < 3"];
remove_entries_over_10s_old -> exit [label="num_avail > 2"];
set_available -> delay_2s;
delay_2s -> check_place_in_queue;
check_place_in_queue -> "http:transport-launch" [label="at head"];
check_place_in_queue -> exit [label="not at head"];
"client:login" -> "server:shutdown" [label="login failed"];
"server:shutdown" -> exit;
subgraph cluster_2 {
"http:transport-launch" -> "http:transport-run";
"http:transport-launch" -> "http:transport-keep-running";
"http:transport-keep-running" -> "tests running?";
"tests running?" -> "client:login" [label=yes];
"tests running?" -> "server:shutdown" [label=no];
"client:login" -> delay_5s [label="login ok"];
delay_5s -> "http:transport-keep-running";
}
// start_server -> "server_running?";
// "server_running?" -> set_available [label="no"];
// "server_running?" -> delay_2s [label="yes"];
// delay_2s -> "still_running?";
// "still_running?" -> ping_server [label=yes];
// "still_running?" -> set_available [label=no];
// ping_server -> exit [label=alive];
// ping_server -> remove_server_record [label=dead];
// remove_server_record -> set_available;
// set_available -> avail_delay [label="delay 3s"];
// avail_delay -> "first_in_queue?";
//
// "first_in_queue?" -> set_running [label=yes];
// set_running -> get_next_port -> handle_requests;
// "first_in_queue?" -> "dead_entry_in_queue?" [label=no];
// "dead_entry_in_queue?" -> "server_running?" [label=no];
// "dead_entry_in_queue?" -> "remove_dead_entries" [label=yes];
// remove_dead_entries -> "server_running?";
//
// handle_requests -> start_shutdown [label="no traffic\nno running tests"];
// handle_requests -> shutdown_request;
// start_shutdown -> shutdown_delay;
// shutdown_request -> shutdown_delay;
// shutdown_delay -> exit;
label = "server:launch";
color=brown;
}
// client_start_server -> start_server;
// handle_requests -> read_write;
// read_write -> handle_requests;
}