@@ -12,81 +12,68 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Megatest. If not, see . + digraph G { - label = "Server Start Sequences"; - color=brown; - -subgraph cluster_1 { - node [style=filled,shape=box]; - - label="Finding Server"; - + label = "Server Start Sequences"; + color=brown; + rankdir="TB"; + + subgraph cluster_1 { + label="Find Prime Main Server"; + + node [style=filled,shape=box]; + START; HaveServ [label="Look at .servinfo\nfiles for prime main"]; AskPrime [label="Ask Prime for main"]; PingPrime [label="Ping Prime"]; AskPrime [label="Ask .servinfo prime for server"]; StartServ [label="Launch Server Process for main.db"]; - + START -> HaveServ; HaveServ -> PingPrime; PingPrime -> AskPrime [label="Got response"]; PingPrime -> StartServ [label="No reponse"]; HaveServ -> StartServ [label="No files"]; StartServ -> "Delay 2s" -> START; AskPrime -> DONE; - -// 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; - - } + } + + subgraph cluster_2 { + label="Starting non-prime server" + node [style=filled,shape=box]; + StartTCPServer [label="Start tcp server"]; + FindPrimeMain [label="Find Prime Main Server"]; + RegisterProcessViaPrime [label="Register process via prime server"]; + + StartTCPServer -> FindPrimeMain -> START; + DONE -> RegisterProcessViaPrime -> READY; + } + + subgraph cluster_3 { + label="Start Prime Main" + node [style=filled,shape=box]; + StartTCPServer_prime [label="Start tcp server"]; + GetServInfoFiles [label="Get servinfo files"]; + CreateServInfoFile [label="Create servinfo file"]; + RegisterProcess [label="Register process in no-sync (direct access)"]; + ValidateServInfoFiles [label="Validate servinfo files with ping\nremove any files which do not respond to ping"]; + + CheckHost [label="Verify that current host matches\nexisting servinfo files host"] + StartTCPServer_prime -> GetServInfoFiles; + GetServInfoFiles -> CreateServInfoFile [label="No servinfo\nfiles"]; + GetServInfoFiles -> ValidateServInfoFiles; + ValidateServInfoFiles -> CreateServInfoFile [label="No valid files"]; + CreateServInfoFile -> GetServInfoFiles [label="servinfo file created"]; + KeepRunning [label="READY"]; + + ValidateServInfoFiles -> CheckHost; + CheckHost -> RegisterProcess [label="Have valid\nservinfo files and same host"]; + RegisterProcess -> KeepRunning; + CheckHost -> EXIT [label="Not same host"]; + } +} +