honeydew 0.19.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,8 +11,7 @@ module Honeydew
11
11
  include Honeydew::DeviceLogFormatter
12
12
 
13
13
  ServerTimeoutError = Class.new(Timeout::Error)
14
- ActionFailedError = Class.new(Timeout::Error)
15
- FinderTimeout = Class.new(Timeout::Error)
14
+ ActionFailedError = Class.new(RuntimeError)
16
15
 
17
16
  attr_reader :serial, :port
18
17
 
@@ -59,7 +58,8 @@ module Honeydew
59
58
  response = benchmark do
60
59
  Net::HTTP.start(uri.hostname, uri.port) do |http|
61
60
  http.read_timeout = Honeydew.config.server_timeout
62
- http.request request
61
+ response = http.request request
62
+ {response: response, action: action}
63
63
  end
64
64
  end
65
65
 
@@ -69,7 +69,7 @@ module Honeydew
69
69
  response.body
70
70
  when Net::HTTPNoContent
71
71
  info "action failed, response: #{response.body}"
72
- raise ActionFailedError.new response.body
72
+ raise ActionFailedError.new "Action #{action} called with arguments #{arguments.inspect} failed"
73
73
  else
74
74
  raise "honeydew-server failed to process command, response: #{response.body}"
75
75
  end
@@ -80,8 +80,8 @@ module Honeydew
80
80
  realtime = Benchmark.realtime do
81
81
  result = yield
82
82
  end
83
- debug "action completed in #{(realtime * 1000).to_i}ms"
84
- result
83
+ debug "action '#{result[:action]}' completed in #{(realtime * 1000).to_i}ms"
84
+ result[:response]
85
85
  end
86
86
 
87
87
  def ensure_device_ready
@@ -1,3 +1,3 @@
1
1
  module Honeydew
2
- VERSION = '0.19.0'
2
+ VERSION = '0.20.0'
3
3
  end
data/server/pom.xml CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  <groupId>amplify</groupId>
7
7
  <artifactId>honeydew-server</artifactId>
8
- <version>0.19.0</version>
8
+ <version>0.20.0</version>
9
9
  <packaging>jar</packaging>
10
10
  <name>Honeydew Android Server</name>
11
11
 
12
12
  <properties>
13
- <platform.version>4.1.1.4</platform.version>
13
+ <platform.version>4.2.2_r2</platform.version>
14
14
  </properties>
15
15
 
16
16
  <repositories>
@@ -31,13 +31,13 @@
31
31
 
32
32
  <dependencies>
33
33
  <dependency>
34
- <groupId>com.google.android</groupId>
34
+ <groupId>android</groupId>
35
35
  <artifactId>android</artifactId>
36
36
  <version>${platform.version}</version>
37
37
  <scope>provided</scope>
38
38
  </dependency>
39
39
  <dependency>
40
- <groupId>com.google.android</groupId>
40
+ <groupId>android.test.uiautomator</groupId>
41
41
  <artifactId>uiautomator</artifactId>
42
42
  <version>${platform.version}</version>
43
43
  <scope>provided</scope>
@@ -68,7 +68,7 @@
68
68
  <artifactId>commons-io</artifactId>
69
69
  <version>2.4</version>
70
70
  </dependency>
71
- <dependency>
71
+ <dependency>
72
72
  <groupId>fi.iki.elonen</groupId>
73
73
  <artifactId>nanohttpd</artifactId>
74
74
  <version>2.0.3</version>
@@ -81,19 +81,18 @@
81
81
  </dependencies>
82
82
 
83
83
  <build>
84
- <testSourceDirectory>${test.directory}</testSourceDirectory>
85
84
  <plugins>
86
85
  <plugin>
87
86
  <groupId>com.jayway.maven.plugins.android.generation2</groupId>
88
87
  <artifactId>android-maven-plugin</artifactId>
89
- <version>3.5.3</version>
88
+ <version>3.6.1</version>
90
89
  <configuration>
91
90
  <zipalign>
92
91
  <verbose>true</verbose>
93
92
  </zipalign>
94
93
  <undeployBeforeDeploy>true</undeployBeforeDeploy>
95
94
  <sdk>
96
- <platform>16</platform>
95
+ <platform>17</platform>
97
96
  </sdk>
98
97
  <lint>
99
98
  <skip>true</skip>
@@ -194,32 +193,6 @@
194
193
  <artifactId>build-helper-maven-plugin</artifactId>
195
194
  <version>1.5</version>
196
195
  </plugin>
197
- <!--This plugin's configuration is used to store Eclipse m2e settings
198
- only. It has no influence on the Maven build itself. -->
199
- <plugin>
200
- <groupId>org.eclipse.m2e</groupId>
201
- <artifactId>lifecycle-mapping</artifactId>
202
- <version>1.0.0</version>
203
- <configuration>
204
- <lifecycleMappingMetadata>
205
- <pluginExecutions>
206
- <pluginExecution>
207
- <pluginExecutionFilter>
208
- <groupId>com.jayway.maven.plugins.android.generation2</groupId>
209
- <artifactId>android-maven-plugin</artifactId>
210
- <versionRange>[3.2.0,)</versionRange>
211
- <goals>
212
- <goal>manifest-update</goal>
213
- </goals>
214
- </pluginExecutionFilter>
215
- <action>
216
- <execute/>
217
- </action>
218
- </pluginExecution>
219
- </pluginExecutions>
220
- </lifecycleMappingMetadata>
221
- </configuration>
222
- </plugin>
223
196
  </plugins>
224
197
  </build>
225
198
  </project>
@@ -3,9 +3,14 @@ package com.amplify.honeydew_server;
3
3
  import android.util.Log;
4
4
  import com.amplify.honeydew_server.actions.*;
5
5
  import com.android.uiautomator.core.UiDevice;
6
+ import com.android.uiautomator.core.UiObjectNotFoundException;
7
+ import com.google.common.base.Stopwatch;
6
8
 
7
- import java.lang.reflect.*;
8
- import java.util.*;
9
+ import java.lang.reflect.Constructor;
10
+ import java.lang.reflect.InvocationTargetException;
11
+ import java.util.HashMap;
12
+ import java.util.Set;
13
+ import java.util.concurrent.TimeUnit;
9
14
 
10
15
  import static com.google.common.collect.Sets.newHashSet;
11
16
 
@@ -32,12 +37,26 @@ public class ActionsExecutor {
32
37
  if (action == null) {
33
38
  return new Result("Action: " + actionName + " does not exists");
34
39
  }
35
- return action.execute(command.getArguments());
40
+
41
+ Result result = executeWithStopwatch(command, action);
42
+
43
+ return result;
36
44
  } catch (Exception e) {
37
45
  return new Result("Exception, on calling " + actionName, e);
38
46
  }
39
47
  }
40
48
 
49
+ private Result executeWithStopwatch(Command command, Action action) throws UiObjectNotFoundException {
50
+ Stopwatch timer = new Stopwatch().start();
51
+
52
+ Result result = action.execute(command.getArguments());
53
+
54
+ timer.stop();
55
+ Log.i(getClass().getName(), String.format("action '%s' took %d ms to execute on the tablet",
56
+ command.getAction(), timer.elapsed(TimeUnit.MILLISECONDS)));
57
+ return result;
58
+ }
59
+
41
60
  private static Set<Class<? extends Action>> allActionClasses() {
42
61
  Set<Class<? extends Action>> actionClasses = newHashSet();
43
62
  actionClasses.add(LaunchApp.class);
metadata CHANGED
@@ -1,121 +1,128 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeydew
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.0
5
- prerelease:
4
+ prerelease:
5
+ version: 0.20.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Selvakumar Natesan
9
9
  - Christopher Rex
10
10
  - Shyam Vala
11
11
  - John Barker
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-08-13 00:00:00.000000000 Z
15
+ date: 2013-08-19 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activesupport
19
- requirement: !ruby/object:Gem::Requirement
20
- none: false
19
+ version_requirements: !ruby/object:Gem::Requirement
21
20
  requirements:
22
- - - ! '>='
21
+ - - ">="
23
22
  - !ruby/object:Gem::Version
24
- version: '0'
25
- type: :runtime
26
- prerelease: false
27
- version_requirements: !ruby/object:Gem::Requirement
23
+ version: !binary |-
24
+ MA==
28
25
  none: false
26
+ requirement: !ruby/object:Gem::Requirement
29
27
  requirements:
30
- - - ! '>='
28
+ - - ">="
31
29
  - !ruby/object:Gem::Version
32
- version: '0'
30
+ version: !binary |-
31
+ MA==
32
+ none: false
33
+ prerelease: false
34
+ type: :runtime
33
35
  - !ruby/object:Gem::Dependency
34
36
  name: json
35
- requirement: !ruby/object:Gem::Requirement
36
- none: false
37
+ version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - ! '>='
39
+ - - ">="
39
40
  - !ruby/object:Gem::Version
40
- version: '0'
41
- type: :runtime
42
- prerelease: false
43
- version_requirements: !ruby/object:Gem::Requirement
41
+ version: !binary |-
42
+ MA==
44
43
  none: false
44
+ requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ! '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: !binary |-
49
+ MA==
50
+ none: false
51
+ prerelease: false
52
+ type: :runtime
49
53
  - !ruby/object:Gem::Dependency
50
54
  name: bundler
51
- requirement: !ruby/object:Gem::Requirement
52
- none: false
55
+ version_requirements: !ruby/object:Gem::Requirement
53
56
  requirements:
54
- - - ~>
57
+ - - "~>"
55
58
  - !ruby/object:Gem::Version
56
59
  version: '1.3'
57
- type: :development
58
- prerelease: false
59
- version_requirements: !ruby/object:Gem::Requirement
60
60
  none: false
61
+ requirement: !ruby/object:Gem::Requirement
61
62
  requirements:
62
- - - ~>
63
+ - - "~>"
63
64
  - !ruby/object:Gem::Version
64
65
  version: '1.3'
66
+ none: false
67
+ prerelease: false
68
+ type: :development
65
69
  - !ruby/object:Gem::Dependency
66
70
  name: rake
67
- requirement: !ruby/object:Gem::Requirement
68
- none: false
71
+ version_requirements: !ruby/object:Gem::Requirement
69
72
  requirements:
70
- - - ! '>='
73
+ - - ">="
71
74
  - !ruby/object:Gem::Version
72
- version: '0'
73
- type: :development
74
- prerelease: false
75
- version_requirements: !ruby/object:Gem::Requirement
75
+ version: !binary |-
76
+ MA==
76
77
  none: false
78
+ requirement: !ruby/object:Gem::Requirement
77
79
  requirements:
78
- - - ! '>='
80
+ - - ">="
79
81
  - !ruby/object:Gem::Version
80
- version: '0'
82
+ version: !binary |-
83
+ MA==
84
+ none: false
85
+ prerelease: false
86
+ type: :development
81
87
  - !ruby/object:Gem::Dependency
82
88
  name: rspec
83
- requirement: !ruby/object:Gem::Requirement
84
- none: false
89
+ version_requirements: !ruby/object:Gem::Requirement
85
90
  requirements:
86
- - - ! '>='
91
+ - - ">="
87
92
  - !ruby/object:Gem::Version
88
- version: '0'
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
93
+ version: !binary |-
94
+ MA==
92
95
  none: false
96
+ requirement: !ruby/object:Gem::Requirement
93
97
  requirements:
94
- - - ! '>='
98
+ - - ">="
95
99
  - !ruby/object:Gem::Version
96
- version: '0'
100
+ version: !binary |-
101
+ MA==
102
+ none: false
103
+ prerelease: false
104
+ type: :development
97
105
  - !ruby/object:Gem::Dependency
98
106
  name: simplecov
99
- requirement: !ruby/object:Gem::Requirement
100
- none: false
107
+ version_requirements: !ruby/object:Gem::Requirement
101
108
  requirements:
102
- - - ! '>='
109
+ - - ">="
103
110
  - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
111
+ version: !binary |-
112
+ MA==
108
113
  none: false
114
+ requirement: !ruby/object:Gem::Requirement
109
115
  requirements:
110
- - - ! '>='
116
+ - - ">="
111
117
  - !ruby/object:Gem::Version
112
- version: '0'
113
- description: ! 'Honeydew is a Ruby driver for UIAutomator which enables automated
114
- testing of
115
-
118
+ version: !binary |-
119
+ MA==
120
+ none: false
121
+ prerelease: false
122
+ type: :development
123
+ description: |
124
+ Honeydew is a Ruby driver for UIAutomator which enables automated testing of
116
125
  Android devices.
117
-
118
- '
119
126
  email:
120
127
  - scmp-team@amplify.com
121
128
  - jbarker@amplify.com
@@ -123,10 +130,10 @@ executables: []
123
130
  extensions: []
124
131
  extra_rdoc_files: []
125
132
  files:
126
- - .gitignore
127
- - .rspec
128
- - .ruby-gemset
129
- - .ruby-version
133
+ - ".gitignore"
134
+ - ".rspec"
135
+ - ".ruby-gemset"
136
+ - ".ruby-version"
130
137
  - Gemfile
131
138
  - LICENSE.txt
132
139
  - README.md
@@ -203,33 +210,35 @@ files:
203
210
  - spec/honeydew/device_matchers_spec.rb
204
211
  - spec/honeydew/device_spec.rb
205
212
  - spec/spec_helper.rb
206
- - server/target/honeydew-server-0.19.0.jar
207
- homepage:
213
+ - server/target/honeydew-server-0.20.0.jar
214
+ homepage:
208
215
  licenses: []
209
- post_install_message:
216
+ post_install_message:
210
217
  rdoc_options: []
211
218
  require_paths:
212
219
  - lib
213
220
  required_ruby_version: !ruby/object:Gem::Requirement
214
- none: false
215
221
  requirements:
216
- - - ! '>='
222
+ - - ">="
217
223
  - !ruby/object:Gem::Version
218
- version: '0'
219
- required_rubygems_version: !ruby/object:Gem::Requirement
224
+ version: !binary |-
225
+ MA==
220
226
  none: false
227
+ required_rubygems_version: !ruby/object:Gem::Requirement
221
228
  requirements:
222
- - - ! '>='
229
+ - - ">="
223
230
  - !ruby/object:Gem::Version
224
- version: '0'
231
+ version: !binary |-
232
+ MA==
233
+ none: false
225
234
  requirements: []
226
- rubyforge_project:
227
- rubygems_version: 1.8.25
228
- signing_key:
235
+ rubyforge_project:
236
+ rubygems_version: 1.8.24
237
+ signing_key:
229
238
  specification_version: 3
230
239
  summary: Ruby DSL for controlling Android devices
231
240
  test_files:
232
- - .rspec
241
+ - ".rspec"
233
242
  - examples/rspec/Gemfile
234
243
  - examples/rspec/Rakefile
235
244
  - examples/rspec/spec/browse_spec.rb