//  Copyright 2006-2017, Matthew Welland.
// 
// This file is part of Megatest.
// 
//     Megatest is free software: you can redistribute it and/or modify
//     it under the terms of the GNU General Public License as published by
//     the Free Software Foundation, either version 3 of the License, or
//     (at your option) any later version.
// 
//     Megatest is distributed in the hope that it will be useful,
//     but WITHOUT ANY WARRANTY; without even the implied warranty of
//     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 <http://www.gnu.org/licenses/>.
//

digraph megatest_state_status {
  ranksep=0.05;
  // rankdir=LR
    
  node [shape=box,style=filled];
  
  "START" -> "have_server";
  "DONE" [label="ALL DONE"];
  "send_request" -> "receive_response";
  "receive_response" -> "DONE";
    
  subgraph cluster_direct_access {
    label="Direct Access";
   
    "direct_access" -> "start_server";
    "direct_access" -> "touch_access_file";
    "touch_access_file" -> "touch_host_pid_file";
    "touch_host_pid_file" -> "count_host_pid_files";
    "count_host_pid_files" -> "call_query_proc" [label="count < 5"];
    "wait_for_low_count_host_pid_files" [label="sleep 1"];
    "count_host_pid_files" -> "wait_for_low_count_host_pid_files"[label="count >= 5"];
    "wait_for_low_count_host_pid_files" -> "count_host_pid_files";
    "call_query_proc" -> "DONE";
  }

  "have_server" -> "ping_server" [label="yes"];
  "have_server" -> "direct_access" [label="no" ];
  "ping_server" -> "send_request" [label="server alive"];
  "ping_server" -> "remove_server_file" [label="server not alive"];
  "remove_server_file" -> "START";


}
// subgraph cluster_notstarted {
//   label="Not started";

//   "NOT_STARTED FAILS" [
//   label = "{ NOT_STARTED/FAILS |{ NO_ITEMS |<here> FAIL_PREREQ |<here> FAIL_TIMEOUT }}";
//   shape= "record";
//   ]
// 
// "NOT_STARTED n/a" -> "LAUNCHED n/a" [label=" launch"];
// "NOT_STARTED WAIT" -> "LAUNCHED n/a"
// 
//   "NOT_STARTED n/a";
//   "NOT_STARTED WAIT" [
//   label = "{NOT_STARTED WAIT|{ NO_SLOTS | <here> WAIT_PREREQ}}";
//   shape = "record";
// ]
// 
// // struct3 [shape=record,label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"];
// 
//   "NOT_STARTED n/a" -> "NOT_STARTED FAILS";
//   "NOT_STARTED n/a" -> "NOT_STARTED WAIT";
// 
//   "RUNNING" [
//      shape="record";
//      label="{RUNNING|{n/a|<here> PASS |<here> FAIL}}";
//   ]
// 
//   "COMPLETED" [
//       shape="record";
//       label = "{COMPLETED|{PASS | SKIP | WAIVED | FAIL | CHECK| ABORT}}";
//   ]
// 
// 
// "RUNNING" -> "COMPLETED";
// "RUNNING" -> "INCOMPLETE" [label="test dead for > 24hrs"];
// 
// 
// "LAUNCHED n/a" -> "REMOTEHOSTSTART n/a" -> "RUNNING";
