smokey 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ class BaseScript
2
+
3
+ def initialize
4
+
5
+ end
6
+
7
+ end
@@ -0,0 +1,15 @@
1
+ class Homepage < BaseScript
2
+ def initialize(base_url)
3
+ @base_url = base_url
4
+ @logger = Logger.new
5
+ end
6
+
7
+ def run
8
+ timer = Timer.new.time do
9
+ request = Request.new("bla", "bla")
10
+ request.get("#{@base_url}/people")
11
+ end
12
+ @logger.log("info", "response time: #{timer.round(2)} seconds")
13
+ end
14
+
15
+ end
@@ -1,5 +1,32 @@
1
- require "smokey/version"
2
-
3
1
  module Smokey
4
- # Your code goes here...
2
+ Dir[File.dirname(__FILE__) + '/smokey/*.rb'].each {|file| require file }
3
+ Dir[File.dirname(__FILE__) + '/scripts/*.rb'].each {|file| require file }
4
+
5
+ class Runner
6
+ attr_reader :testscript, :vusers, :base_url, :duration, :delay, :rampup, :think_time
7
+
8
+ def initialize(testscript, vusers, base_url, duration, delay, rampup, think_time)
9
+ @testscript = testscript
10
+ @vusers = vusers
11
+ @base_url = base_url
12
+ @duration = duration
13
+ @delay = delay
14
+ @rampup = rampup
15
+ @think_time = think_time
16
+ end
17
+
18
+ def start_test
19
+ threads = []
20
+ @vusers.times do
21
+ thread = Thread.new do
22
+ VirtualUser.new(@testscript, @base_url).start
23
+ end
24
+ threads << thread
25
+ end
26
+ threads.each { |t| t.join }
27
+ end
28
+ end
5
29
  end
30
+
31
+ @smokey = Smokey::Runner.new('Homepage', 5, 'http://localhost:3000', 10, 5, 1, 2)
32
+ @smokey.start_test
@@ -0,0 +1,21 @@
1
+ require "redis"
2
+
3
+ class Logger
4
+
5
+ def initialize
6
+ @redis = Redis.new
7
+ end
8
+
9
+ def log(type, item)
10
+ case type
11
+ when "error"
12
+ puts "ERROR - #{item}"
13
+ when "success"
14
+ puts "SUCCESS - #{item}"
15
+ when "info"
16
+ @redis.set("logje", "INFO - #{item}")
17
+ storage = @redis.get("logje")
18
+ puts storage
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ require 'httparty'
2
+
3
+ class Request
4
+ def initialize(username, password)
5
+ @auth = { username: username, password: password }
6
+ @logger = Logger.new
7
+ end
8
+
9
+ def get(url, options={})
10
+ begin
11
+ options.merge!({basic_auth: @auth})
12
+ response = HTTParty.get(url, options)
13
+ @logger.log("info", "#{response.code} - #{response.message}")
14
+ rescue => e
15
+ e.response
16
+ end
17
+ end
18
+
19
+ def post(url, parameters)
20
+ # RestClient.post(url, parameters)
21
+ end
22
+ end
@@ -0,0 +1,7 @@
1
+ class Timer
2
+ def time
3
+ start = Time.now
4
+ yield
5
+ Time.now.to_f - start.to_f
6
+ end
7
+ end
@@ -1,3 +1,3 @@
1
1
  module Smokey
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,52 @@
1
+ class VirtualUser
2
+
3
+ def initialize(testscript, base_url)
4
+ @testscript = testscript
5
+ @base_url = base_url
6
+ @logger = Logger.new
7
+ end
8
+
9
+ def start
10
+ @logger.log("info", "Script started")
11
+ script = Kernel.const_get(@testscript)
12
+ script = script.new(@base_url)
13
+ script.run
14
+ @logger.log("info", "Script finished")
15
+ end
16
+ end
17
+
18
+ =begin
19
+ dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
20
+ require File.join(dir, 'httparty')
21
+
22
+ class TripIt
23
+ include HTTParty
24
+ base_uri 'http://www.tripit.com'
25
+ debug_output
26
+
27
+ def initialize(email, password)
28
+ @email = email
29
+ response = self.class.get('/account/login')
30
+ response = self.class.post(
31
+ '/account/login',
32
+ :body => {
33
+ :login_email_address => email,
34
+ :login_password => password
35
+ },
36
+ :headers => {'Cookie' => response.headers['Set-Cookie']}
37
+ )
38
+ @cookie = response.request.options[:headers]['Cookie']
39
+ end
40
+
41
+ def account_settings
42
+ self.class.get('/account/edit', :headers => {'Cookie' => @cookie})
43
+ end
44
+
45
+ def logged_in?
46
+ account_settings.include? "You're logged in as #{@email}"
47
+ end
48
+ end
49
+
50
+ tripit = TripIt.new('email', 'password')
51
+ puts "Logged in: #{tripit.logged_in?}"
52
+ =end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+ require 'smokey'
3
+
4
+ describe Smokey do
5
+ before :each do
6
+ @smokey = Smokey::Runner.new(5, 'http://localhost:3000', 10, 5, 1, 2)
7
+ end
8
+
9
+ describe "new" do
10
+ it "returns a Smokey object" do
11
+ @smokey.should be_an_instance_of Smokey::Runner
12
+ end
13
+ end
14
+
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smokey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -39,9 +39,16 @@ files:
39
39
  - LICENSE.txt
40
40
  - README.md
41
41
  - Rakefile
42
+ - lib/scripts/base_script.rb
43
+ - lib/scripts/homepage.rb
42
44
  - lib/smokey.rb
45
+ - lib/smokey/logger.rb
46
+ - lib/smokey/request.rb
47
+ - lib/smokey/timer.rb
43
48
  - lib/smokey/version.rb
49
+ - lib/smokey/virtual_user.rb
44
50
  - smokey.gemspec
51
+ - spec/smokey_spec.rb
45
52
  - spec/spec_helper.rb
46
53
  homepage: ''
47
54
  licenses: []
@@ -69,4 +76,5 @@ specification_version: 3
69
76
  summary: With Smokey it is easy to execute a simple performance test for a webapp
70
77
  to see if it can handle the load.
71
78
  test_files:
79
+ - spec/smokey_spec.rb
72
80
  - spec/spec_helper.rb