class Object

Constants

MKROUTE_PATH
MULTICAST_ADDR
ROMAD_OPTIONS
ROMAD_PATH
ROMAD_WORK_DIR
ROMA_LOAD_PATH
RUBY_COMMAND_OPTIONS
UDP_PORT

Public Instance Methods

check_count(rc, range, c) click to toggle source
   # File lib/roma/tools/consistency_test.rb
33 def check_count(rc, range, c)
34   range.each do |i|
35     ts = DateTime.now
36     res = rc.get("key_#{i}")
37     if res != c.to_s
38       puts "error k=key_#{i} #{res}" 
39     end
40     t=(DateTime.now - ts).to_f * 86400.0
41     @tmax=t if t > @tmax
42     @tmin=t if t < @tmin
43     @cnt+=1
44   end
45 end
get_routing_data(nid) click to toggle source
   # File lib/roma/tools/chg_redundancy.rb
10 def get_routing_data(nid)
11   sender = Roma::Client::Sender.new
12   sender.send_routedump_command(nid)
13 end
get_sequence(ini_nodes, n) click to toggle source
   # File lib/roma/tools/simple_bench.rb
61 def get_sequence(ini_nodes, n)
62   puts __method__
63   rc=Roma::Client::RomaClient.new(ini_nodes)
64 
65   n.times do |i|
66     ts = DateTime.now
67     res=rc.get("key_#{i}")
68     puts "get #{i} #{res}" if res != "value_#{i}"
69     t=(DateTime.now - ts).to_f * 86400.0
70     @tmax=t if t > @tmax
71     @tmin=t if t < @tmin
72     @cnt+=1
73   end
74 end
random_request_sender(ini_nodes, n) click to toggle source
   # File lib/roma/tools/simple_bench.rb
21 def random_request_sender(ini_nodes, n)
22   puts __method__
23   rc=Roma::Client::RomaClient.new(ini_nodes)
24 
25   loop do
26     i=rand(n)
27     ts = DateTime.now
28     case rand(3)
29     when 0
30       res=rc.set(i.to_s,'hoge'+i.to_s)
31       puts "set k=#{i} #{res}" if res==nil || res.chomp != 'STORED'
32     when 1
33       res=rc.get(i.to_s)
34       puts "get k=#{i} #{res}" if res == :error
35     when 2
36       res=rc.delete(i.to_s)
37       puts "del k=#{i} #{res}" if res != 'DELETED' && res != 'NOT_FOUND'
38     end
39     t=(DateTime.now - ts).to_f * 86400.0
40     @tmax=t if t > @tmax
41     @tmin=t if t < @tmin
42     @cnt+=1
43   end
44 end
random_rquest_sender(ini_nodes, n) click to toggle source
   # File lib/roma/tools/safecopy_integration_test.rb
23 def random_rquest_sender(ini_nodes, n)
24   puts __method__
25   rc=Roma::Client::RomaClient.new(ini_nodes)
26 
27   loop do
28     i=rand(n)
29     ts = DateTime.now
30     case rand(3)
31     when 0
32       res=rc.set(i.to_s,'hoge'+i.to_s)
33       puts "set k=#{i} #{res}" if res==nil || res.chomp != 'STORED'
34     when 1
35       res=rc.get(i.to_s)
36       puts "get k=#{i} #{res}" if res == :error
37     when 2
38       res=rc.delete(i.to_s)
39       puts "del k=#{i} #{res}" if res != 'DELETED' && res != 'NOT_FOUND'
40     end
41     t=(DateTime.now - ts).to_f * 86400.0
42     @tmax=t if t > @tmax
43     @tmin=t if t < @tmin
44     @cnt+=1
45   end
46 end
randstr(n) click to toggle source
   # File lib/roma/tools/data_accumulation.rb
21 def randstr(n)
22   s = ("a".."z").to_a
23   n.times.map{ s.sample }.join
24 end
safecopy_stats(nid) click to toggle source
    # File lib/roma/tools/safecopy_integration_test.rb
127 def safecopy_stats(nid)
128   ret = stats(nid, 'storage.safecopy_stats')
129   return eval $1 if ret =~ /^.+\s(\[.+\])/
130   nil
131 end
send_cmd(nid, cmd) click to toggle source
    # File lib/roma/tools/safecopy_integration_test.rb
 98 def send_cmd(nid, cmd)
 99   conn = Roma::Client::ConPool.instance.get_connection(nid)
100   conn.write "#{cmd}\r\n"
101   ret = conn.gets
102   Roma::Client::ConPool.instance.return_connection(nid, conn)
103   ret
104 rescue =>e
105   STDERR.puts "#{nid} #{cmd} #{e.inspect}"
106   nil
107 end
set_counts(rc, range, c) click to toggle source
   # File lib/roma/tools/consistency_test.rb
21 def set_counts(rc, range, c)
22   range.each do |i|
23     ts = DateTime.now
24     res=rc.set("key_#{i}","#{c}")
25     puts "set k=#{i} #{res}" if res==nil || res.chomp != 'STORED'
26     t=(DateTime.now - ts).to_f * 86400.0
27     @tmax=t if t > @tmax
28     @tmin=t if t < @tmin
29     @cnt+=1
30   end
31 end
set_sequence(ini_nodes, n, v_size) click to toggle source
   # File lib/roma/tools/data_accumulation.rb
26 def set_sequence(ini_nodes, n, v_size)
27   puts __method__
28   rc=Roma::Client::RomaClient.new(ini_nodes)
29 
30   n.times do |i|
31     ts = DateTime.now
32     res=rc.set("key_#{i}", randstr(v_size))
33     puts "set k=#{i} #{res}" if res==nil || res.chomp != 'STORED'
34     t=(DateTime.now - ts).to_f * 86400.0
35     @tmax=t if t > @tmax
36     @tmin=t if t < @tmin
37     @cnt+=1
38 
39     puts"=====#{(i*100)/n}%(#{i}keys) has finished.=====" if i%100000 == 0
40   end
41 end
set_storage_status(nid, fno, stat) click to toggle source
    # File lib/roma/tools/safecopy_integration_test.rb
133 def set_storage_status(nid, fno, stat)
134   cnt = 0
135   begin
136     res = send_cmd(ARGV[0], "set_storage_status #{fno} #{stat}")
137     res.chomp! if res
138     puts res if cnt > 0
139     sleep 0.5
140     cnt += 1
141   end while res != 'PUSHED'
142   res
143 end
stats(nid, regexp=nil) click to toggle source
    # File lib/roma/tools/safecopy_integration_test.rb
109 def stats(nid, regexp=nil)
110   conn = Roma::Client::ConPool.instance.get_connection(nid)
111   if regexp
112     conn.write "stats #{regexp}\r\n"
113   else
114     conn.write "stats\r\n"
115   end
116   ret = ""
117   while(conn.gets != "END\r\n")
118     ret << $_
119   end
120   Roma::Client::ConPool.instance.return_connection(nid, conn)
121   ret
122 rescue =>e
123   STDERR.puts "#{nid} #{e.inspect}"
124   nil  
125 end
test_change_status() click to toggle source
    # File lib/roma/tools/safecopy_integration_test.rb
152 def test_change_status
153 
154   puts "write (0...10000) = 0"
155   set_counts(ARGV, 0...10000, "default_key",0)
156   Thread.new { random_rquest_sender(ARGV, 10000) }
157 
158   set_counts(ARGV, 0...1000, "flushing_key", 0)
159   set_counts(ARGV, 0...1000, "caching_key", 0)
160 
161   nid = ARGV[0]
162 
163   sleep(5)
164 
165   10.times do |n|
166     puts "\n#{n+1}th loop(#{n}.tc) " + "*" * 70 
167 
168     #========================================================================================
169     #flushing(normal => safecopy_flushed)
170     flush_loop_count = 0
171     @range_cnt = 0
172     @flag = false
173 
174     t = Thread.new {
175       loop{
176         flush_loop_count += 1
177         set_counts(ARGV, 0...1000, "flushing_key", flush_loop_count)
178         @flag = true
179       }
180     }
181     puts "\s\s[debug]sleep flushing start"
182     sleep(1) while !@flag
183     puts "\s\s[debug]sleep flushing end"
184     puts "\s\s#{set_storage_status(nid, n, 'safecopy')}"
185     puts "#{wait_status(nid, n, :safecopy_flushed)}"
186 
187     #sleep(5)
188     t.kill
189 
190     flushing_range_cnt = @range_cnt
191     puts "flushing_range_cnt = #{@range_cnt}"
192     puts "\s\s#{safecopy_stats(nid)}\n\n"
193 
194     #========================================================================================
195     #Caching(safecopy_flushed => normal)
196     #sleep(30)
197     cache_loop_count = 0
198     @range_cnt = 0
199     @flag = false
200     t = Thread.new {
201       loop{
202         cache_loop_count += 1
203         set_counts(ARGV, 0...1000, "caching_key", cache_loop_count)
204         @flag = true
205       }
206     }
207     puts "\s\s[debug]sleep caching start"
208     sleep(1) while !@flag
209     puts "\s\s[debug]sleep caching end"
210 
211     puts "\s\s#{set_storage_status(nid, n, 'normal')}"
212     puts "#{wait_status(nid, n, :normal)}"
213     
214     #sleep(5)
215     t.kill   
216 
217     caching_range_cnt = @range_cnt
218     puts "caching_range_cnt = #{@range_cnt}"
219     puts "\s\s#{safecopy_stats(nid)}"
220 
221     #========================================================================================
222     #check
223     puts "\n[Check]"
224     puts "\s\sflushing key"
225     check_count(ARGV, 0..flushing_range_cnt, "flushing_key", flush_loop_count)
226     check_count(ARGV, flushing_range_cnt+1...1000, "flushing_key", flush_loop_count-1)
227 
228     puts "\n\s\scaching key"
229     check_count(ARGV, 0..caching_range_cnt, "caching_key", cache_loop_count)
230     check_count(ARGV, caching_range_cnt+1...1000, "caching_key", cache_loop_count-1) if cache_loop_count != 1
231   end
232 end
test_round() click to toggle source
   # File lib/roma/tools/consistency_test.rb
47 def test_round
48   rc=Roma::Client::RomaClient.new(ARGV)
49   n = 0
50   loop{
51     n += 1
52     set_counts(rc, 0...10000, n)
53     check_count(rc, 0...10000, n)
54     if (n%100 == 0)
55       puts "#{n} loop has finished."
56     end
57   }
58 end
usage() click to toggle source
    # File lib/roma/tools/roma_watcher.rb
140 def usage
141   puts File.basename(__FILE__) + " config.yml"
142 end
wait_status(nid, fno, stat) click to toggle source
    # File lib/roma/tools/safecopy_integration_test.rb
145 def wait_status(nid, fno, stat)
146   while safecopy_stats(nid)[fno] != stat
147     sleep 5
148   end
149   stat
150 end