annotate scripts/paxos.rb @ 223:1c37472fc00d

add catch command from editors
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Thu, 28 Nov 2019 15:12:37 +0900
parents 1e696b2d3c6d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
169
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
1 node_name_list = ["proposer", "acceptor", "learner"]
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
2
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
3 def create_nodes(name, node_num)
140
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
4 (0..node_num - 1).map { |i|
169
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
5 i = name + i.to_s
140
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
6 }
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
7 end
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
8
169
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
9
140
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
10 def print_dot(connections)
169
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
11 puts "digraph paxos {"
140
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
12 connections.each { |connection|
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
13 print "\t"
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
14 print connection[0]
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
15 print " -> "
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
16 print connection[1]
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
17 print ' [label="' + connection[2] + '"]'
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
18 puts
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
19 }
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
20 puts "}"
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
21 end
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
22
169
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
23 node_list = Array.new
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
24 node_name_list.each_with_index { |node_name, i|
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
25 node_num = ARGV.shift
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
26 while !node_num
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
27 printf("input %s num : ", node_name)
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
28 node_num = STDIN.gets.chomp
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
29 end
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
30 node_list << create_nodes(node_name, node_num.to_i)
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
31 }
140
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
32 connections = Array.new
169
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
33
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
34 node_list.each_with_index { |nodes1, i|
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
35 if i == node_name_list.size - 1
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
36 break
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
37 end
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
38 nodes2 = node_list[i+1]
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
39 nodes1.each_with_index{ |node1, j|
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
40
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
41 nodes2.each_with_index{ |node2, k|
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
42 connections << [node1, node2, node2]
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
43 if i == 0
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
44 connections << [node2,node1, node1]
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
45 end
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
46 }
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
47 }
140
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
48 }
77169cd8a5e8 マージ blockchain
musou_aka
parents:
diff changeset
49
169
1e696b2d3c6d add paxos.rb paxos.dot
akahori
parents: 140
diff changeset
50 print_dot(connections.sort!)