On Thu, Nov 05, 2020 at 07:21:57PM +0800, Xiao Shenwei wrote:
Usage: multi-qemu -n -c -q -n, --name HOSTNAME_PREFIX format: $tbox_group.$HOSTNAME -c, --count count how many VM do you need -q, --queues queues separated by "," -h, --help show this message example: ./multi-qemu -n vm-2p8g.taishan200-2280-2s48p-256g--a1 \ -c 20 \ -q vm-2p8g.taishan200-2280-2s48p-256g--a1,vm-2p8g.aarch64
Signed-off-by: Xiao Shenwei xiaoshenwei96@163.com
providers/multi-qemu | 95 +++++++++++++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 24 deletions(-)
diff --git a/providers/multi-qemu b/providers/multi-qemu index 23e0451..045160f 100755 --- a/providers/multi-qemu +++ b/providers/multi-qemu @@ -4,46 +4,93 @@ # frozen_string_literal: true
require 'fileutils' +require 'optparse'
-PWD = Dir.pwd +opt = {} +options = OptionParser.new do |opts|
- opts.banner = 'Usage: multi-qemu -n -c -q'
- opts.separator ''
- opts.on('-n HOSTNAME_PREFIX', '--name HOSTNAME_PREFIX', 'format: $tbox_group.$HOSTNAME') do |name|
- opt['hostname_prefix'] = name
- end
- opts.on('-c count', '--count count', 'how many VM do you need') do |num|
- opt['nr_vm'] = num
- end
- opts.on('-q queues', '--queues queues', 'separated by ","') do |queues|
- opt['queues'] = queues
- end
- opts.on_tail('-h', '--help', 'show this message') do
- puts opts
- exit
- end
+end
+if ARGV.size.zero?
- puts options
- exit 1
+end
How about use raise: raise options if ARGV.size.zero?
+options.parse!(ARGV)
# Run multiple QEMU in parallel -HOSTNAME = ARGV[0] || "vm-2p8g--#{ENV['USER']}" -NR_VM = ARGV[1] || 1 +PWD = Dir.pwd +HOSTNAME = opt['hostname_prefix'] || "vm-2p8g.#{ENV['HOSTNAME']}" +NR_VM = opt['nr_vm'] || 1 +QUEUES = opt['queues'] || "#{ENV['HOSTNAME']}.#{RUBY_PLATFORM.split('-')[0]}" +LOG_DIR = '/srv/cci/serial/logs'
-def run(seqno)
- loop do
- start_time = Time.new
- hostname = "#{HOSTNAME}-#{seqno}"
- log_file = "/srv/cci/serial/logs/#{hostname}"
+def main(hostname)
- start_time = record_runtime_log(hostname)
- start_qemu(hostname)
- record_runtime_log(hostname, start_time: start_time, is_start: false)
+end
+def record_runtime_log(hostname, start_time: Time.new, is_start: true)
- log_file = "#{LOG_DIR}/#{hostname}"
- if is_start File.open(log_file, 'w') do |f| # fluentd refresh time is 1s # let fluentd to monitor this file first sleep(2) f.puts "\n#{start_time.strftime('%Y-%m-%d %H:%M:%S')} starting QEMU" end
- return start_time
- end
Pls add one blank line after "return"
Thanks, Xijian