lackie 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lackie (0.1.0)
4
+ lackie (0.1.1)
5
+ json (~> 1.4.6)
5
6
  rack (~> 1.2.1)
6
7
  rest-client (~> 1.4.2)
7
8
 
@@ -10,6 +11,8 @@ GEM
10
11
  specs:
11
12
  builder (2.1.2)
12
13
  cgi_multipart_eof_fix (2.5.0)
14
+ childprocess (0.1.6)
15
+ ffi (~> 0.6.3)
13
16
  cucumber (0.10.0)
14
17
  builder (>= 2.1.2)
15
18
  diff-lcs (~> 1.1.2)
@@ -19,10 +22,13 @@ GEM
19
22
  daemons (1.0.10)
20
23
  diff-lcs (1.1.2)
21
24
  fastthread (1.0.1)
25
+ ffi (0.6.3)
26
+ rake (>= 0.8.7)
22
27
  gem_plugin (0.2.3)
23
28
  gherkin (2.3.3)
24
29
  json (~> 1.4.6)
25
30
  json (1.4.6)
31
+ json_pure (1.4.6)
26
32
  mime-types (1.16)
27
33
  mongrel (1.1.5)
28
34
  cgi_multipart_eof_fix (>= 2.4)
@@ -30,7 +36,7 @@ GEM
30
36
  fastthread (>= 1.0.1)
31
37
  gem_plugin (>= 0.2.3)
32
38
  rack (1.2.1)
33
- relevance-rcov (0.9.2.1)
39
+ rake (0.8.7)
34
40
  rest-client (1.4.2)
35
41
  mime-types (>= 1.16)
36
42
  rspec (2.2.0)
@@ -41,6 +47,12 @@ GEM
41
47
  rspec-expectations (2.3.0)
42
48
  diff-lcs (~> 1.1.2)
43
49
  rspec-mocks (2.3.0)
50
+ rubyzip (0.9.4)
51
+ selenium-webdriver (0.1.2)
52
+ childprocess (~> 0.1.5)
53
+ ffi (~> 0.6.3)
54
+ json_pure
55
+ rubyzip
44
56
  term-ansicolor (1.0.5)
45
57
 
46
58
  PLATFORMS
@@ -49,9 +61,10 @@ PLATFORMS
49
61
  DEPENDENCIES
50
62
  bundler (~> 1.0.7)
51
63
  cucumber (~> 0.10.0)
64
+ json (~> 1.4.6)
52
65
  lackie!
53
66
  mongrel (~> 1.1.5)
54
67
  rack (~> 1.2.1)
55
- relevance-rcov (~> 0.9.2.1)
56
68
  rest-client (~> 1.4.2)
57
69
  rspec (~> 2.2.0)
70
+ selenium-webdriver (~> 0.1.2)
data/lackie.gemspec CHANGED
@@ -11,13 +11,14 @@ Gem::Specification.new do |s|
11
11
  s.email = 'joshuachisholm@gmail.com'
12
12
  s.homepage = 'http://github.com/joshski/lackie'
13
13
 
14
+ s.add_dependency 'json', '~> 1.4.6'
14
15
  s.add_dependency 'rack', '~> 1.2.1'
15
16
  s.add_dependency 'rest-client', '~> 1.4.2'
16
17
 
17
18
  s.add_development_dependency 'rspec', '~> 2.2.0'
18
19
  s.add_development_dependency 'cucumber', '~> 0.10.0'
19
20
  s.add_development_dependency 'mongrel', '~> 1.1.5'
20
- s.add_development_dependency 'relevance-rcov', '~> 0.9.2.1'
21
+ #s.add_development_dependency 'relevance-rcov', '~> 0.9.2.1'
21
22
  s.add_development_dependency 'selenium-webdriver', '~> 0.1.2'
22
23
 
23
24
  s.rubygems_version = "1.3.7"
@@ -1,6 +1,7 @@
1
1
  Lackie = {
2
2
  wip: false,
3
3
  enabled: true,
4
+ baseUrl: "/lackie",
4
5
 
5
6
  createXMLHttpRequest: function() {
6
7
  try { return new XMLHttpRequest(); } catch(e) {}
@@ -26,7 +27,7 @@ Lackie = {
26
27
  } catch(e) {}
27
28
  }
28
29
  }
29
- xhReq.open("GET", "/lackie/yield", true);
30
+ xhReq.open("GET", Lackie.baseUrl + "/yield", true);
30
31
  xhReq.onreadystatechange = readyStateChange;
31
32
  xhReq.send(null);
32
33
  },
@@ -34,7 +35,7 @@ Lackie = {
34
35
  result: function(value) {
35
36
  var xhReq = Lackie.createXMLHttpRequest();
36
37
  var params = JSON.stringify(value);
37
- xhReq.open("POST", "/lackie/result", true);
38
+ xhReq.open("POST", Lackie.baseUrl + "/result", true);
38
39
  xhReq.setRequestHeader("Content-type", "application/json");
39
40
  xhReq.setRequestHeader("Content-length", params.length);
40
41
  xhReq.setRequestHeader("Connection", "close");
data/lib/lackie/poller.rb CHANGED
@@ -6,9 +6,10 @@ module Lackie
6
6
  @sleeper = options.delete(:sleeper) || Kernel
7
7
  end
8
8
 
9
- def await(outcome)
9
+ def await(outcome, options={})
10
10
  seconds_waited = 0
11
- while seconds_waited <= @timeout_seconds
11
+ timeout_seconds = options[:timeout_seconds] || @timeout_seconds
12
+ while seconds_waited <= timeout_seconds
12
13
  return if yield
13
14
  @sleeper.sleep @interval_seconds
14
15
  seconds_waited += @interval_seconds
@@ -4,7 +4,6 @@ module Lackie
4
4
  module Rack
5
5
  class Middleware
6
6
  def initialize(app)
7
- #puts "MIDDLEWARE CREATED"
8
7
  @app = app
9
8
  @command = nil
10
9
  @result = nil
@@ -12,9 +12,9 @@ module Lackie
12
12
  exec("Lackie.log(#{message.to_json})")
13
13
  end
14
14
 
15
- def exec(command)
15
+ def exec(command, options={})
16
16
  send_command(command)
17
- poll_for_result(command)
17
+ poll_for_result(command, options)
18
18
  end
19
19
 
20
20
  private
@@ -28,9 +28,9 @@ module Lackie
28
28
  end
29
29
  end
30
30
 
31
- def poll_for_result(command)
31
+ def poll_for_result(command, options={})
32
32
  body = nil
33
- @poller.await("result of command:\n#{command}") do
33
+ @poller.await("result of command:\n#{command}", options) do
34
34
  body = retrieve_result_body
35
35
  !body.nil?
36
36
  end
data/lib/lackie.rb CHANGED
@@ -2,7 +2,7 @@ lib = File.dirname(__FILE__)
2
2
  $:.unshift(lib) unless $:.include?(lib) || $:.include?(File.expand_path(lib))
3
3
 
4
4
  module Lackie
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
6
6
  end
7
7
 
8
8
  require 'lackie/remote_control'
@@ -3,7 +3,7 @@ require 'lackie/poller'
3
3
 
4
4
  module Lackie
5
5
  describe Poller do
6
- it "sleeps for a sepecified number of seconds between yields, until the block returns true" do
6
+ it "sleeps for a default number of seconds between yields, until the block returns true" do
7
7
  Kernel.should_receive(:sleep).with(0.666).exactly(:twice)
8
8
  return_values = [false, false, true]
9
9
  Poller.new(:interval_seconds => 0.666).await("foo") do
@@ -12,7 +12,7 @@ module Lackie
12
12
  return_values.should be_empty
13
13
  end
14
14
 
15
- it "gives up after a specified number of seconds" do
15
+ it "gives up after a default number of seconds" do
16
16
  Kernel.stub!(:sleep)
17
17
  poller = Poller.new(:timeout_seconds => 2.5)
18
18
  lambda {
@@ -22,6 +22,17 @@ module Lackie
22
22
  }.should raise_error("Timed out after 2.5 seconds awaiting foo")
23
23
  end
24
24
 
25
+ it "accepts an optional, ad-hoc timeout" do
26
+ poller = Poller.new(:interval_seconds => 1.1, :timeout_seconds => 100)
27
+ Kernel.should_receive(:sleep).with(1.1).exactly(:twice)
28
+ begin
29
+ poller.await("something", :timeout_seconds => 2) {
30
+ false
31
+ }
32
+ rescue
33
+ end
34
+ end
35
+
25
36
  it "uses a different sleeper when Kernel is not convenient" do
26
37
  sleeper = mock("sleeper")
27
38
  sleeper.should_receive(:sleep).with(0.999).exactly(:twice)
@@ -33,6 +33,16 @@ module Lackie
33
33
  responses.should be_empty
34
34
  end
35
35
 
36
+ it "waits for a default number of seconds" do
37
+ @poller.should_receive(:await).with("result of command:\nfoo", {}).and_yield
38
+ @rc.exec("foo")
39
+ end
40
+
41
+ it "waits for an ad-hoc number of seconds" do
42
+ @poller.should_receive(:await).with("result of command:\nbar", :timeout_seconds => 666).and_yield
43
+ @rc.exec("bar", :timeout_seconds => 666)
44
+ end
45
+
36
46
  it "deserializes json results" do
37
47
  RestClient.should_receive(:get).and_return(mock("response", :body => '{"value":666}'))
38
48
  @rc.log("oops").should == 666
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lackie
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
4
+ hash: 31
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Josh Chisholm
@@ -15,13 +15,29 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-02 00:00:00 +00:00
18
+ date: 2011-01-06 00:00:00 +00:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rack
22
+ name: json
23
23
  prerelease: false
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ hash: 11
30
+ segments:
31
+ - 1
32
+ - 4
33
+ - 6
34
+ version: 1.4.6
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: rack
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
25
41
  none: false
26
42
  requirements:
27
43
  - - ~>
@@ -33,11 +49,11 @@ dependencies:
33
49
  - 1
34
50
  version: 1.2.1
35
51
  type: :runtime
36
- version_requirements: *id001
52
+ version_requirements: *id002
37
53
  - !ruby/object:Gem::Dependency
38
54
  name: rest-client
39
55
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
41
57
  none: false
42
58
  requirements:
43
59
  - - ~>
@@ -49,11 +65,11 @@ dependencies:
49
65
  - 2
50
66
  version: 1.4.2
51
67
  type: :runtime
52
- version_requirements: *id002
68
+ version_requirements: *id003
53
69
  - !ruby/object:Gem::Dependency
54
70
  name: rspec
55
71
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
72
+ requirement: &id004 !ruby/object:Gem::Requirement
57
73
  none: false
58
74
  requirements:
59
75
  - - ~>
@@ -65,11 +81,11 @@ dependencies:
65
81
  - 0
66
82
  version: 2.2.0
67
83
  type: :development
68
- version_requirements: *id003
84
+ version_requirements: *id004
69
85
  - !ruby/object:Gem::Dependency
70
86
  name: cucumber
71
87
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
88
+ requirement: &id005 !ruby/object:Gem::Requirement
73
89
  none: false
74
90
  requirements:
75
91
  - - ~>
@@ -81,11 +97,11 @@ dependencies:
81
97
  - 0
82
98
  version: 0.10.0
83
99
  type: :development
84
- version_requirements: *id004
100
+ version_requirements: *id005
85
101
  - !ruby/object:Gem::Dependency
86
102
  name: mongrel
87
103
  prerelease: false
88
- requirement: &id005 !ruby/object:Gem::Requirement
104
+ requirement: &id006 !ruby/object:Gem::Requirement
89
105
  none: false
90
106
  requirements:
91
107
  - - ~>
@@ -97,23 +113,6 @@ dependencies:
97
113
  - 5
98
114
  version: 1.1.5
99
115
  type: :development
100
- version_requirements: *id005
101
- - !ruby/object:Gem::Dependency
102
- name: relevance-rcov
103
- prerelease: false
104
- requirement: &id006 !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- hash: 13
110
- segments:
111
- - 0
112
- - 9
113
- - 2
114
- - 1
115
- version: 0.9.2.1
116
- type: :development
117
116
  version_requirements: *id006
118
117
  - !ruby/object:Gem::Dependency
119
118
  name: selenium-webdriver
@@ -195,10 +194,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
194
  requirements: []
196
195
 
197
196
  rubyforge_project:
198
- rubygems_version: 1.3.7
197
+ rubygems_version: 1.4.1
199
198
  signing_key:
200
199
  specification_version: 3
201
- summary: lackie-0.1.1
200
+ summary: lackie-0.1.2
202
201
  test_files:
203
202
  - features/remote_control.feature
204
203
  - features/step_definitions/lackie_steps.rb