File: autobahn_client.rb

package info (click to toggle)
ruby-faye-websocket 0.11.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 236 kB
  • sloc: ruby: 1,209; makefile: 3
file content (49 lines) | stat: -rw-r--r-- 1,291 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require 'bundler/setup'
require 'cgi'
require 'faye/websocket'
require 'permessage_deflate'
require 'progressbar'

EM.run {
  ruby    = RUBY_PLATFORM =~ /java/ ? 'jruby' : 'ruby'
  version = defined?(RUBY_ENGINE_VERSION) ? RUBY_ENGINE_VERSION : RUBY_VERSION
  version += " (#{ RUBY_VERSION })" if ruby == 'jruby'

  host    = 'ws://0.0.0.0:9001'
  agent   = CGI.escape("#{ ruby }-#{ version }")
  cases   = 0
  options = { :extensions => [PermessageDeflate] }

  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.create(:title => 'Autobahn', :total => cases)
  end

  run_case = lambda do |n|
    if n > cases
      socket = Faye::WebSocket::Client.new("#{ host }/updateReports?agent=#{ agent }")
      socket.onclose = lambda { |e| EM.stop }
      next
    end

    url = "#{ host }/runCase?case=#{ n }&agent=#{ agent }"
    socket = Faye::WebSocket::Client.new(url, [], options)

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

    socket.on :close do |event|
      progress.increment
      run_case[n + 1]
    end
  end

  socket.onclose = lambda do |event|
    run_case[1]
  end
}