Megatest

Check-in [4d273a0078]
Login
Overview
Comment:Added graph of server for multi-db
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | v1.6569-multi-db
Files: files | file ages | folders
SHA1: 4d273a00780192dc886f9bfe5d1de34e6ea8ede6
User & Date: matt on 2021-01-30 22:37:44
Other Links: branch diff | manifest | tags
Context
2021-01-30
22:40
Rebuilt docs check-in: 69d12f4679 user: matt tags: v1.6569-multi-db
22:37
Added graph of server for multi-db check-in: 4d273a0078 user: matt tags: v1.6569-multi-db
2021-01-29
11:48
changed megatest version to v1.6582 check-in: d69b03fe95 user: mmgraham tags: v1.65-real
Changes

Modified docs/manual/Makefile from [ec9633c3d9] to [bfe85b7c9a].

35
36
37
38
39
40
41



42
43
44
45
46
47
48
megatest_manual.html : megatest_manual.txt  *.txt installation.txt *png
	asciidoc  -b html5 -a icons -a iconsdir=$(DISPATH)/images/icons -a toc2 megatest_manual.txt
#	dos2unix megatest_manual.html

megatest_manual.pdf : megatest_manual.txt *.txt *png
	a2x -a toc -f pdf megatest_manual.txt




server.ps : server.dot
	dot -Tps server.dot > server.ps

client.ps : client.dot
	dot -Tps client.dot > client.ps

complex-itemmap.png : complex-itemmap.dot







>
>
>







35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
megatest_manual.html : megatest_manual.txt  *.txt installation.txt *png
	asciidoc  -b html5 -a icons -a iconsdir=$(DISPATH)/images/icons -a toc2 megatest_manual.txt
#	dos2unix megatest_manual.html

megatest_manual.pdf : megatest_manual.txt *.txt *png
	a2x -a toc -f pdf megatest_manual.txt

server.pdf : server.dot
	dot -Tpdf server.dot > server.pdf

server.ps : server.dot
	dot -Tps server.dot > server.ps

client.ps : client.dot
	dot -Tps client.dot > client.ps

complex-itemmap.png : complex-itemmap.dot

Modified docs/manual/server.dot from [3e029f5fe5] to [a498892650].

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
70
71
72
73

74
75
76
77
78
//     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 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;
}







>
|
>
>
|
|
<
>
>
>
|
>
>
>
>
|
|
|
|
>

>
|
|
>
>
>
>
>
>

<
<
|
>
>
|
>
>
>
>
>
>
>
|
<
>
>
>
|
|
>
>
>
>
|
>
|
|
<
|
>
|
|
>
>
>
>
|
>
>
|
|
>
|
<
|
>
|
|
>
>
>
>
>
>
>
>
|
>
|
|
>
>
>
>
>
>
>
>
>
>
>
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<
>





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
70
71
72
73

74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131

132
133
134
135
136
137
//     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 G {

// connecting to server
subgraph cluster_1 {
  label="Connect";
  
  node [style=filled,shape=box];
  dotserver [label="Have .server file?"];

  connect [label="Connect to server"];
  // startserver [label="Start Server"];
  connected [label="Connection Successful"];
  anylive [label="Any live servers?"];
  askstart [label="Ask existing server to start a new server"];
  anydboard [label="Any live dashboards"];
  askdboard [label="Ask dashboard to start server"];
  serverlaunch [label="User server launch to start server process"];
  wait5sec [label="Wait 5 seconds"];
  
  dotserver -> connect [label="yes"];
  connect -> connected [label="yes"];
  connect -> anylive [label="no"];

  // startserver -> anylive;
  anylive -> askstart [label="yes"];
  anylive -> anydboard [label="no"];
  anydboard -> askdboard [label="yes"];
  anydboard -> serverlaunch [label="no"];
  serverlaunch -> wait5sec;
  askdboard -> wait5sec;
  askstart -> wait5sec;
  wait5sec -> dotserver;



}

// server bootstrap
subgraph cluster_2 {
  label="Startup";
  node [style=filled,shape=box];
  getlock [label="Get file lock"];
  starthttp [label="Start http server"];
  copydb [label="Copy db to /tmp"];
  createsrvfile [label="Create .nnn.server file containing host:port"];
  releaselock [label="Release file lock"];
  

  getlock -> starthttp -> createsrvfile;
  getlock -> copydb -> createsrvfile;
  createsrvfile -> releaselock;
}

// shutting down server
subgraph cluster_3 {
  label="Shutdown";
  node [style=filled,shape=box];
  shutdown [label="Start Shutdown"];
  rejectmode [label="Put http server into reject requests mode"];
  syncback [label="Sync db back"];
  exit [label="Exit process"];


  shutdown -> rejectmode -> syncback -> exit;
}

//     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;
}