gridinit-jmeter 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: