Sha256: ed1ac8a731479313d3e33ce9222dd253c9673d806d660d2c47e8381aa905133d

Contents?: true

Size: 1.16 KB

Versions: 2

Compression:

Stored size: 1.16 KB

Contents

require 'rubygems'
require 'bundler/setup'
require 'faye/websocket'
require 'cgi'
require 'progressbar'

EM.run {
  host  = 'ws://localhost:9001'
  ruby  = RUBY_PLATFORM =~ /java/ ? 'JRuby' : 'MRI'
  agent = "#{ruby} #{RUBY_VERSION}"
  cases = 0
  skip  = []

  socket   = Faye::WebSocket::Client.new("#{host}/getCaseCount")
  progress = nil

  socket.onmessage = lambda do |event|
    puts "Total cases to run: #{event.data}"
    cases = event.data.to_i
    progress = ProgressBar.new('Autobahn', cases)
  end

  socket.onclose = lambda do |event|
    run_case = lambda do |n|
      progress.inc

      if n > cases
        socket = Faye::WebSocket::Client.new("#{host}/updateReports?agent=#{CGI.escape agent}")
        progress.finish
        socket.onclose = lambda { |e| EM.stop }

      elsif skip.include?(n)
        EM.next_tick { run_case.call(n+1) }

      else
        socket = Faye::WebSocket::Client.new("#{host}/runCase?case=#{n}&agent=#{CGI.escape agent}")

        socket.onmessage = lambda do |event|
          socket.send(event.data)
        end

        socket.on :close do |event|
          run_case.call(n + 1)
        end
      end
    end

    run_case.call(1)
  end
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
faye-websocket-0.7.5 examples/autobahn_client.rb
faye-websocket-0.7.4 examples/autobahn_client.rb