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 CHANGED
@@ -3,11 +3,7 @@ source 'http://rubygems.org'
3
3
  # Specify your gem's dependencies in gridinit-jmeter.gemspec
4
4
  gemspec
5
5
 
6
- gem 'docile'
7
6
  gem 'nokogiri'
8
- gem 'active_attr'
9
- gem 'activesupport'
10
- gem 'logger-colors'
11
7
  gem 'rest-client'
12
8
 
13
9
  group :test do
@@ -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) }
@@ -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'
@@ -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
- Docile.dsl_eval(Gridinit::Jmeter::DSL.new, &block)
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
@@ -0,0 +1,5 @@
1
+ class String
2
+ def strip_heredoc
3
+ gsub /^#{self[/\A\s*/]}/, ''
4
+ end
5
+ end
@@ -1,5 +1,5 @@
1
1
  module Gridinit
2
2
  module Jmeter
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  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.1
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-19 00:00:00.000000000 Z
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: