class QwikBench

Constants

DefaultConfig

Public Class Methods

main(argv) click to toggle source
# File vendor/qwik/lib/qwik/dev-bench.rb, line 120
def self.main(argv)
  config = {}
  config.update(DefaultConfig)
  config.update(parse_args(argv))
  qb = QwikBench.new
  qb.run(config)
end
parse_args(argv) click to toggle source
# File vendor/qwik/lib/qwik/dev-bench.rb, line 128
def self.parse_args(argv)
  config = {}
  optionparser = OptionParser.new {|opts|
    opts.banner = "Usage: qwik-bench [options]"
    opts.separator ''
    opts.separator 'Specific options:'
    opts.on('-c', '--copy',
            'Copy directory first.') {|a|
      config[:copy] = a
    }
    opts.on('-s', '--sitename sitename', 'Specify your sitename.') {|a|
      config[:sitename] = a
    }
    opts.on('-p', '--path path', 'Specify path.') {|a|
      config[:path] = a
    }
    opts.on('-r', '--repeat 100', OptionParser::DecimalInteger,
            'Repeat times.') {|a|
      config[:repeat] = a
    }
    opts.separator ''
    opts.separator 'Common options:'
    opts.on_tail('-h', '--help', 'Show this message') {
      puts opts
      exit
    }
  }
  optionparser.parse!(argv)
  return config
end

Public Instance Methods

bench(config) click to toggle source
# File vendor/qwik/lib/qwik/dev-bench.rb, line 76
def bench(config)
  sitename = config[:sitename]
  path = config[:path]
  repeat = config[:repeat]
  pages = copy_all(sitename)

  if pages.nil?
    puts 'Error: No such site.'
    return 
  end

  puts "=" * 70
  puts "sitename: #{sitename}"
  puts "pagenum: #{pages.length}"
  puts "path: #{path}" if path
  puts "repeat: #{repeat}"
  puts

  bench_result = Benchmark.measure {
    t_add_user
    repeat.times {
      if path
        res = session(path)
        dummy = res.body.format_xml
      else
        pages.each {|base|
          res = session("/test/#{base}.html")
          dummy = res.body.format_xml
        }
      end
    }
  }

  puts Benchmark::CAPTION
  puts bench_result
  puts "=" * 70
end
copy_all(sitename) click to toggle source
# File vendor/qwik/lib/qwik/dev-bench.rb, line 57
def copy_all(sitename)
  src  = @org_sites_dir.path + sitename
  return nil unless src.exist?

  dest = @dir
  dest.rmtree if dest.exist?
  dest.rmdir if dest.exist?

  puts 'start copy.'
  if File.exist?('/bin/cp')
    system "/bin/cp -a #{src} #{dest}"
  else
    FileUtils.cp_r(src.to_s, dest.to_s)
  end
  puts 'copy done.'

  return get_pages(src)
end
get_pages(src) click to toggle source
# File vendor/qwik/lib/qwik/dev-bench.rb, line 46
def get_pages(src)
  pages = []
  src.each_entry {|file|
    if /\A(.+)\.txt\z/ =~ file.to_s
      #pages << file.to_s.sub(/\.txt\z/, "")
      pages << $1
    end
  }
  return pages
end
nu_copy_all(sitename) click to toggle source
# File vendor/qwik/lib/qwik/dev-bench.rb, line 24
def nu_copy_all(sitename)
  src  = @org_sites_dir.path + sitename
  return nil unless src.exist?
  dest = @dir

  pages = []
  src.each_entry {|file|
    if /\A.+\.txt\z/ =~ file.to_s
      srcfile = src+file
      str = srcfile.read
      mtime = srcfile.mtime

      destfile = dest+file
      destfile.put(str)
      destfile.utime(mtime, mtime)

      pages << file.to_s.sub(/\.txt\z/, "")
    end
  }
  return pages
end
run(config) click to toggle source
# File vendor/qwik/lib/qwik/dev-bench.rb, line 114
def run(config)
  setup
  bench(config)
  #teardown
end