gridinit-jmeter 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +0 -4
- data/gridinit-jmeter.gemspec +2 -0
- data/lib/gridinit-jmeter.rb +4 -3
- data/lib/gridinit-jmeter/dsl.rb +16 -1
- data/lib/gridinit-jmeter/fallback_content_proxy.rb +57 -0
- data/lib/gridinit-jmeter/logger-colors.rb +48 -0
- data/lib/gridinit-jmeter/strip-heredoc.rb +5 -0
- data/lib/gridinit-jmeter/version.rb +1 -1
- metadata +39 -3
data/Gemfile
CHANGED
data/gridinit-jmeter.gemspec
CHANGED
@@ -11,6 +11,8 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.description = %q{This is a Ruby based DSL for writing JMeter test plans}
|
12
12
|
gem.summary = %q{This is a Ruby based DSL for writing JMeter test plans}
|
13
13
|
gem.homepage = ""
|
14
|
+
gem.add_dependency("rest-client", "~> 1.6.7")
|
15
|
+
gem.add_dependency("nokogiri", "~> 1.5.5")
|
14
16
|
|
15
17
|
gem.files = `git ls-files`.split($/)
|
16
18
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/lib/gridinit-jmeter.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
require 'nokogiri'
|
2
|
-
require 'docile'
|
3
|
-
require 'active_support/core_ext'
|
4
|
-
require 'logger/colors'
|
5
2
|
require 'rest_client'
|
3
|
+
require 'json'
|
6
4
|
require 'cgi'
|
7
5
|
|
8
6
|
require 'gridinit-jmeter/dsl'
|
7
|
+
require 'gridinit-jmeter/fallback_content_proxy'
|
8
|
+
require 'gridinit-jmeter/logger-colors'
|
9
|
+
require 'gridinit-jmeter/strip-heredoc'
|
9
10
|
require 'gridinit-jmeter/version'
|
10
11
|
require 'gridinit-jmeter/test_plan'
|
11
12
|
require 'gridinit-jmeter/auth_manager'
|
data/lib/gridinit-jmeter/dsl.rb
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
module Gridinit
|
2
|
+
|
3
|
+
def dsl_eval(dsl, &block)
|
4
|
+
block_context = eval("self", block.binding)
|
5
|
+
proxy_context = Gridinit::Jmeter::FallbackContextProxy.new(dsl, block_context)
|
6
|
+
begin
|
7
|
+
block_context.instance_variables.each { |ivar| proxy_context.instance_variable_set(ivar, block_context.instance_variable_get(ivar)) }
|
8
|
+
proxy_context.instance_eval(&block)
|
9
|
+
ensure
|
10
|
+
block_context.instance_variables.each { |ivar| block_context.instance_variable_set(ivar, proxy_context.instance_variable_get(ivar)) }
|
11
|
+
end
|
12
|
+
dsl
|
13
|
+
end
|
14
|
+
|
15
|
+
module_function :dsl_eval
|
16
|
+
|
2
17
|
module Jmeter
|
3
18
|
|
4
19
|
class DSL
|
@@ -173,5 +188,5 @@ module Gridinit
|
|
173
188
|
end
|
174
189
|
|
175
190
|
def test(&block)
|
176
|
-
|
191
|
+
Gridinit.dsl_eval(Gridinit::Jmeter::DSL.new, &block)
|
177
192
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
3
|
+
module Gridinit
|
4
|
+
module Jmeter
|
5
|
+
|
6
|
+
class FallbackContextProxy
|
7
|
+
NON_PROXIED_METHODS = Set[:object_id, :__send__, :__id__, :==, :equal?, :"!", :"!=", :instance_eval,
|
8
|
+
:instance_variables, :instance_variable_get, :instance_variable_set,
|
9
|
+
:remove_instance_variable]
|
10
|
+
|
11
|
+
NON_PROXIED_INSTANCE_VARIABLES = Set[:@__receiver__, :@__fallback__]
|
12
|
+
|
13
|
+
instance_methods.each do |method|
|
14
|
+
unless NON_PROXIED_METHODS.include?(method.to_sym)
|
15
|
+
undef_method(method)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(receiver, fallback)
|
20
|
+
@__receiver__ = receiver
|
21
|
+
@__fallback__ = fallback
|
22
|
+
end
|
23
|
+
|
24
|
+
def id
|
25
|
+
@__receiver__.__send__(:id)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Special case due to `Kernel#sub`'s existence
|
29
|
+
def sub(*args, &block)
|
30
|
+
__proxy_method__(:sub, *args, &block)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Special case to allow proxy instance variables
|
34
|
+
def instance_variables
|
35
|
+
# Ruby 1.8.x returns string names, convert to symbols
|
36
|
+
super.map(&:to_sym) - NON_PROXIED_INSTANCE_VARIABLES.to_a
|
37
|
+
end
|
38
|
+
|
39
|
+
def method_missing(method, *args, &block)
|
40
|
+
__proxy_method__(method, *args, &block)
|
41
|
+
end
|
42
|
+
|
43
|
+
def __proxy_method__(method, *args, &block)
|
44
|
+
begin
|
45
|
+
@__receiver__.__send__(method.to_sym, *args, &block)
|
46
|
+
rescue ::NoMethodError => e
|
47
|
+
begin
|
48
|
+
@__fallback__.__send__(method.to_sym, *args, &block)
|
49
|
+
rescue ::NoMethodError
|
50
|
+
raise(e)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'logger'
|
2
|
+
|
3
|
+
class Logger
|
4
|
+
module Colors
|
5
|
+
VERSION = '1.0.0'
|
6
|
+
|
7
|
+
NOTHING = '0;0'
|
8
|
+
BLACK = '0;30'
|
9
|
+
RED = '0;31'
|
10
|
+
GREEN = '0;32'
|
11
|
+
BROWN = '0;33'
|
12
|
+
BLUE = '0;34'
|
13
|
+
PURPLE = '0;35'
|
14
|
+
CYAN = '0;36'
|
15
|
+
LIGHT_GRAY = '0;37'
|
16
|
+
DARK_GRAY = '1;30'
|
17
|
+
LIGHT_RED = '1;31'
|
18
|
+
LIGHT_GREEN = '1;32'
|
19
|
+
YELLOW = '1;33'
|
20
|
+
LIGHT_BLUE = '1;34'
|
21
|
+
LIGHT_PURPLE = '1;35'
|
22
|
+
LIGHT_CYAN = '1;36'
|
23
|
+
WHITE = '1;37'
|
24
|
+
|
25
|
+
SCHEMA = {
|
26
|
+
STDOUT => %w[nothing green brown red purple cyan],
|
27
|
+
STDERR => %w[nothing green yellow light_red light_purple light_cyan],
|
28
|
+
}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Logger
|
33
|
+
alias format_message_colorless format_message
|
34
|
+
|
35
|
+
def format_message(level, *args)
|
36
|
+
if Logger::Colors::SCHEMA[@logdev.dev]
|
37
|
+
color = begin
|
38
|
+
Logger::Colors.const_get \
|
39
|
+
Logger::Colors::SCHEMA[@logdev.dev][Logger.const_get(level.sub "ANY","UNKNOWN")].to_s.upcase
|
40
|
+
rescue NameError
|
41
|
+
"0;0"
|
42
|
+
end
|
43
|
+
"\e[#{ color }m#{ format_message_colorless(level, *args) }\e[0;0m"
|
44
|
+
else
|
45
|
+
format_message_colorless(level, *args)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gridinit-jmeter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,40 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-11-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rest-client
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.6.7
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.6.7
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: nokogiri
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 1.5.5
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.5.5
|
14
46
|
description: This is a Ruby based DSL for writing JMeter test plans
|
15
47
|
email:
|
16
48
|
- support@gridinit.com
|
@@ -43,10 +75,13 @@ files:
|
|
43
75
|
- lib/gridinit-jmeter/cache_manager.rb
|
44
76
|
- lib/gridinit-jmeter/cookie_manager.rb
|
45
77
|
- lib/gridinit-jmeter/dsl.rb
|
78
|
+
- lib/gridinit-jmeter/fallback_content_proxy.rb
|
46
79
|
- lib/gridinit-jmeter/gaussian_random_timer.rb
|
47
80
|
- lib/gridinit-jmeter/http_sampler.rb
|
81
|
+
- lib/gridinit-jmeter/logger-colors.rb
|
48
82
|
- lib/gridinit-jmeter/regex_extractor.rb
|
49
83
|
- lib/gridinit-jmeter/response_assertion.rb
|
84
|
+
- lib/gridinit-jmeter/strip-heredoc.rb
|
50
85
|
- lib/gridinit-jmeter/test_plan.rb
|
51
86
|
- lib/gridinit-jmeter/thread_group.rb
|
52
87
|
- lib/gridinit-jmeter/transaction.rb
|
@@ -83,3 +118,4 @@ test_files:
|
|
83
118
|
- spec/dsl_spec.rb
|
84
119
|
- spec/spec_helper.rb
|
85
120
|
- spec/stub.rb
|
121
|
+
has_rdoc:
|