jstd-runner 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2010 FINN.no AS
1
+ Copyright 2010-2011 FINN.no AS
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
data/README.rdoc CHANGED
@@ -22,4 +22,4 @@ A gem that provides a tool to launch a JsTestDriver server, capture browser(s) a
22
22
 
23
23
  == Copyright
24
24
 
25
- Copyright (c) 2010 FINN.no. See LICENSE for details.
25
+ Copyright (c) 2010-2011 FINN.no. See LICENSE for details.
data/jstd-runner.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
17
17
  s.require_path = 'lib'
18
18
 
19
- s.add_dependency "selenium-webdriver", "0.1.0"
19
+ s.add_dependency "selenium-webdriver", ">= 0.1.4"
20
20
  s.add_dependency "eventmachine", "0.12.10"
21
21
  s.add_dependency "mail", "2.2.10"
22
22
  s.add_dependency "daemons", "1.1.0"
@@ -39,23 +39,24 @@ module JstdRunner
39
39
  def running?
40
40
  Log.info "browser state: #{status}"
41
41
  true
42
- rescue
42
+ rescue => ex
43
+ Log.warn "#{self}#running? caught #{ex.message}"
43
44
  false
44
45
  end
45
46
 
46
47
  def status
47
- status_span.text
48
+ status_spans.map { |e| e.text }.inspect
48
49
  end
49
50
 
50
51
  private
51
52
 
52
- def status_span
53
+ def status_spans
53
54
  unless @switched
54
- @browser.switch_to.frame("0")
55
+ @browser.switch_to.frame(@browser.find_element(:tag_name => "frame"))
55
56
  @switched = true
56
57
  end
57
58
 
58
- @browser.find_element(:tag_name => "span")
59
+ @browser.find_elements(:tag_name => "span")
59
60
  end
60
61
 
61
62
  end
@@ -39,6 +39,10 @@ module JstdRunner
39
39
  op.on("-n", "--notify email1,email2,email3", Array) do |emails|
40
40
  runner.options[:emails] = emails
41
41
  end
42
+
43
+ op.on("-r", "--restart hour:minute") do |hour_minute|
44
+ runner.options[:restart_at] = hour_minute
45
+ end
42
46
  }.parse!(args)
43
47
  end
44
48
 
@@ -6,7 +6,8 @@ module JstdRunner
6
6
  :vnc => false,
7
7
  :monitor_interval => 10,
8
8
  :browser => :firefox,
9
- :daemonize => false
9
+ :daemonize => false,
10
+ :restart_at => nil
10
11
  }
11
12
 
12
13
  attr_reader :options
@@ -26,6 +27,7 @@ module JstdRunner
26
27
  start_server
27
28
  start_browser
28
29
  capture_browser
30
+ setup_restarts if options[:restart_at]
29
31
  }
30
32
  end
31
33
 
@@ -94,6 +96,7 @@ module JstdRunner
94
96
 
95
97
  def start_browser
96
98
  start_vnc if options[:vnc]
99
+
97
100
  browser.start
98
101
  browser.monitor(options[:monitor_interval]) {
99
102
  browser.restart
@@ -111,6 +114,20 @@ module JstdRunner
111
114
  browser.stop
112
115
  end
113
116
 
117
+ def setup_restarts
118
+ EM.daily options[:restart_at] do
119
+ Log.warn "daily restart"
120
+ restart
121
+ Log.warn "daily restart finished."
122
+ end
123
+ end
124
+
125
+ def restart
126
+ browser.restart
127
+ server.restart
128
+ capture_browser
129
+ end
130
+
114
131
  def start_vnc
115
132
  vnc.start
116
133
  ENV['DISPLAY'] = vnc.display
@@ -8,7 +8,7 @@ module JstdRunner
8
8
  class StopError < StandardError
9
9
  end
10
10
 
11
- JAR = File.expand_path("../JsTestDriver-1.2.2.jar", __FILE__)
11
+ JAR = File.expand_path("../JsTestDriver-1.3.2.jar", __FILE__)
12
12
  LAUNCH_TIMEOUT = 120 # this is huge, but I've seen it happen
13
13
 
14
14
  attr_reader :host, :port
@@ -1,3 +1,3 @@
1
1
  module JstdRunner
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/jstd-runner.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "logger"
2
2
  require "optparse"
3
3
  require "etc"
4
+ require 'time'
4
5
 
5
6
  module JstdRunner
6
7
  Log = Logger.new(STDOUT)
@@ -25,3 +26,17 @@ require "jstd-runner/server"
25
26
  require "jstd-runner/runner"
26
27
 
27
28
 
29
+ module EventMachine
30
+ def self.daily at, &blk
31
+ time = Time.parse(at) - Time.now
32
+ time += 86400 if time < 0
33
+
34
+ EM.run do
35
+ run_me = proc{
36
+ EM.add_timer(86400, run_me)
37
+ blk.call
38
+ }
39
+ EM.add_timer(time, run_me)
40
+ end
41
+ end
42
+ end
@@ -43,5 +43,10 @@ module JstdRunner
43
43
  runner.should_receive(:run)
44
44
  cli.run
45
45
  end
46
+
47
+ it "configures restarts" do
48
+ cli "--restart 01:15"
49
+ runner.options[:restart_at].should == "01:15"
50
+ end
46
51
  end
47
52
  end
@@ -35,6 +35,23 @@ module JstdRunner
35
35
  runner.run
36
36
  end
37
37
 
38
+ it "sets up restarts" do
39
+ browser = mock(Browser).as_null_object
40
+ server = mock(Server, :host => "localhost", :port => 1234).as_null_object
41
+
42
+ runner.stub!(:browser).and_return browser
43
+ runner.stub!(:server).and_return server
44
+
45
+ EM.should_receive(:daily).with("01:15").and_yield
46
+ runner.options[:restart_at] = "01:15"
47
+
48
+ server.should_receive(:restart)
49
+ browser.should_receive(:restart)
50
+ browser.should_receive(:capture).with("localhost", 1234).twice
51
+
52
+ runner.run
53
+ end
54
+
38
55
  # TODO: more specs here
39
56
  end
40
57
  end
@@ -8,6 +8,10 @@ module JstdRunner
8
8
  let(:connected_poller) { mock(:connected? => true, :closed? => false) }
9
9
  let(:closed_poller) { mock(:connected? => false, :closed? => true) }
10
10
 
11
+ it "has a correct reference to the bundled jar" do
12
+ File.exist?(Server::JAR).should be_true
13
+ end
14
+
11
15
  it "launches the server on the given port" do
12
16
  server.stub!(:immediate_poller => closed_poller)
13
17
 
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jstd-runner
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 2
9
- version: 0.0.2
4
+ prerelease:
5
+ version: 0.0.3
10
6
  platform: ruby
11
7
  authors:
12
8
  - Jari Bakken
@@ -14,8 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2010-11-26 00:00:00 +01:00
18
- default_executable:
13
+ date: 2011-04-13 00:00:00 Z
19
14
  dependencies:
20
15
  - !ruby/object:Gem::Dependency
21
16
  name: selenium-webdriver
@@ -23,13 +18,9 @@ dependencies:
23
18
  requirement: &id001 !ruby/object:Gem::Requirement
24
19
  none: false
25
20
  requirements:
26
- - - "="
21
+ - - ">="
27
22
  - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 1
31
- - 0
32
- version: 0.1.0
23
+ version: 0.1.4
33
24
  type: :runtime
34
25
  version_requirements: *id001
35
26
  - !ruby/object:Gem::Dependency
@@ -40,10 +31,6 @@ dependencies:
40
31
  requirements:
41
32
  - - "="
42
33
  - !ruby/object:Gem::Version
43
- segments:
44
- - 0
45
- - 12
46
- - 10
47
34
  version: 0.12.10
48
35
  type: :runtime
49
36
  version_requirements: *id002
@@ -55,10 +42,6 @@ dependencies:
55
42
  requirements:
56
43
  - - "="
57
44
  - !ruby/object:Gem::Version
58
- segments:
59
- - 2
60
- - 2
61
- - 10
62
45
  version: 2.2.10
63
46
  type: :runtime
64
47
  version_requirements: *id003
@@ -70,10 +53,6 @@ dependencies:
70
53
  requirements:
71
54
  - - "="
72
55
  - !ruby/object:Gem::Version
73
- segments:
74
- - 1
75
- - 1
76
- - 0
77
56
  version: 1.1.0
78
57
  type: :runtime
79
58
  version_requirements: *id004
@@ -85,10 +64,6 @@ dependencies:
85
64
  requirements:
86
65
  - - ">="
87
66
  - !ruby/object:Gem::Version
88
- segments:
89
- - 2
90
- - 0
91
- - 0
92
67
  version: 2.0.0
93
68
  type: :development
94
69
  version_requirements: *id005
@@ -111,7 +86,7 @@ files:
111
86
  - bin/jstd-runner
112
87
  - jstd-runner.gemspec
113
88
  - lib/jstd-runner.rb
114
- - lib/jstd-runner/JsTestDriver-1.2.2.jar
89
+ - lib/jstd-runner/JsTestDriver-1.3.2.jar
115
90
  - lib/jstd-runner/browser.rb
116
91
  - lib/jstd-runner/cli.rb
117
92
  - lib/jstd-runner/monitorable.rb
@@ -126,7 +101,6 @@ files:
126
101
  - spec/jstd-runner/server_spec.rb
127
102
  - spec/jstd-runner/vnc_control_spec.rb
128
103
  - spec/spec_helper.rb
129
- has_rdoc: true
130
104
  homepage: http://github.com/jarib/jstd-runner
131
105
  licenses: []
132
106
 
@@ -140,23 +114,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
114
  requirements:
141
115
  - - ">="
142
116
  - !ruby/object:Gem::Version
143
- segments:
144
- - 0
145
117
  version: "0"
146
118
  required_rubygems_version: !ruby/object:Gem::Requirement
147
119
  none: false
148
120
  requirements:
149
121
  - - ">="
150
122
  - !ruby/object:Gem::Version
151
- segments:
152
- - 0
153
123
  version: "0"
154
124
  requirements: []
155
125
 
156
126
  rubyforge_project:
157
- rubygems_version: 1.3.7
127
+ rubygems_version: 1.7.2
158
128
  signing_key:
159
129
  specification_version: 3
160
130
  summary: JsTestDriver wrapper
161
131
  test_files: []
162
132
 
133
+ has_rdoc: