TestRoots/watchdog

View on GitHub
server/stress.rb

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env ruby

#require 'parallel'
require 'rest_client'
require 'json'

def test_user
  user = Hash.new
  user['email']       = 'foo@bar.gr'
  user['name']        = 'Foo Bar'
  user['org']         = 'Baz B.V.'
  user['org_website'] = 'http://baz.nl'
  user['prize']       = false
  user
end

def test_project(user_id)
  project = Hash.new
  project['name']        = 'Foo Bar Proj'
  project['role']        = 'Foo Barer'
  project['belongToASingleSofware'] = true
  project['usesJunit'] = true
  project['usesOtherFrameworks'] = false
  project['productionPercentage'] = 50
  project['useJunitOnlyForUnitTesting'] = false
  project['followTestDrivenDesign'] = false
  project['userId'] = user_id
  project
end

def interval

  int = rand(1..2**32 - 50)

  [{
    :doc => {
    "pn" => "foobar",
    "fn" => "debug.rel",
    "sloc" => rand(1 .. 50),
    "dt" => "un"
    },

    :it => "re",
    :ts => int,
    :te => int + rand(1..50),
    :ss => rand(1..2**32 - 1),
    :wdv => "1.0-SNAPSHOT"
  }]
end

# Configuration params
username = "watchdogplugin"
passwd = "hnspqsznpq"
urlbase = "http://#{username}:#{passwd}@watchdog.testroots.org"
num_intervals = 10000

#create test user
@user_id = RestClient.post(urlbase + '/user', test_user.to_json)
puts "user_id=#{@user_id}"

#create test project
@pid = RestClient.post(urlbase + '/project', test_project(@user_id).to_json)
puts "pid=#{@pid}"

loader = Proc.new do |req_id|
    resp = RestClient.post(urlbase + "/user/#{@user_id}/#{@pid}/intervals",
                           interval.to_json)
    puts "Req id: #{req_id}, resp: #{resp}"
end

start = Time.now.to_i

#Parallel.map((1..num_intervals), :in_threads => 30) do |req|
#  loader.call(req)
#end

delta = Time.now.to_i - start
#puts "#{num_intervals} intervals in #{delta} secs #{(num_intervals/delta).to_f} intervals per sec"

# Test how many intervals can se send at once
many_intervals = (1..20000).map do |x|
  interval()[0]
end

RestClient.post(urlbase + "/user/#{@user_id}/#{@pid}/intervals", many_intervals.to_json)