cleanup unused variable warnings
[ruby-mogilefs-client.git] / test / exec.rb
blob3c98369a62b056a567554ed6ce9417372b5bb19f
1 # -*- encoding: binary -*-
2 $stdout.sync = $stderr.sync = true
3 require 'test/unit'
4 require 'securerandom'
5 require 'tempfile'
6 require 'digest'
7 require 'stringio'
8 require 'pp'
9 require 'mogilefs'
11 module TestExec
12   def uuid
13     SecureRandom.uuid
14   rescue NoMethodError
15     require "uuid"
16     UUID.generate
17   end
19   def yield_for_monitor_update # mogilefsd should update every 4 seconds
20     50.times do
21       yield
22       sleep 0.1
23     end
24   end
26   def mogadm(*args)
27     x("mogadm", "--trackers=#{@trackers.join(',')}", *args)
28   end
30   def x(*cmd)
31     out, err = tmpfile("out"), tmpfile("err")
32     puts cmd.join(' ') if $VERBOSE
33     pid = fork do
34       $stderr.reopen(err.path, "a")
35       $stdout.reopen(out.path, "a")
36       out.close
37       err.close
38       exec(*cmd)
39     end
40     _, status = Process.waitpid2(pid)
41     out.rewind
42     err.rewind
43     [ status, out, err ]
44   end
46   def mogadm!(*args)
47     status, out, err = mogadm(*args)
48     assert status.success?, "#{status.inspect} / #{out.read} / #{err.read}"
49     [ status, out, err ]
50   end
52   def x!(*cmd)
53     status, out, err = x(*cmd)
54     assert status.success?, "#{status.inspect} / #{out.read} / #{err.read}"
55     [ status, out, err ]
56   end
58   def tmpfile(name)
59     tmp = Tempfile.new(name)
60     defined?(@to_close) or @to_close = []
61     @to_close << tmp
62     tmp
63   end
64 end