Skip to content

Commit 6849567

Browse files
authoredFeb 5, 2017
add getting performance command (#480)
* add getting performance command * remove pry * fix lint * rename get_performance_data_types * insert spaces
1 parent 0b52c16 commit 6849567

File tree

5 files changed

+77
-35
lines changed

5 files changed

+77
-35
lines changed
 

‎android_tests/lib/android/specs/common/command.rb

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ def before_first
1818
Selenium::WebDriver::Remote::Bridge.method_defined?(:toggle_airplane_mode).must_equal true
1919
Selenium::WebDriver::Remote::Bridge.method_defined?(:current_activity).must_equal true
2020
Selenium::WebDriver::Remote::Bridge.method_defined?(:get_network_connection).must_equal true
21+
Selenium::WebDriver::Remote::Bridge.method_defined?(:get_performance_data_types).must_equal true
22+
Selenium::WebDriver::Remote::Bridge.method_defined?(:get_performance_data).must_equal true
2123
end
2224

2325
t 'check all command with arg' do

‎android_tests/lib/android/specs/common/device.rb

+10-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@
1111
# install ENV['APP_PATH']
1212
end
1313

14+
t 'get_performance_data_types' do
15+
expected = %w(cpuinfo batteryinfo networkinfo memoryinfo)
16+
get_performance_data_types.must_equal expected
17+
18+
get_performance_data(package_name: 'io.appium.android.apis',
19+
data_type: 'cpuinfo').must_equal [%w(user kernel), %w(0 0)]
20+
end
21+
1422
t 'device_time' do
1523
Date.parse(device_time)
1624
end
@@ -21,7 +29,8 @@
2129

2230
t 'start_activity' do
2331
wait { current_activity.must_equal '.ApiDemos' }
24-
start_activity app_package: 'io.appium.android.apis', app_activity: '.accessibility.AccessibilityNodeProviderActivity'
32+
start_activity app_package: 'io.appium.android.apis',
33+
app_activity: '.accessibility.AccessibilityNodeProviderActivity'
2534
wait { current_activity.include?('Node').must_equal true }
2635
start_activity app_package: 'com.android.settings', app_activity: '.Settings',
2736
app_wait_package: 'com.android.settings', app_wait_activity: '.Settings'

‎appium_lib.gemspec

+1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
2929

3030
s.add_development_dependency 'rubocop', '~> 0.46.0'
3131
s.add_development_dependency 'rainbow', '>= 2.1.0', '< 2.2.0' # workaround for Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
32+
s.add_development_dependency 'pry'
3233

3334
s.files = `git ls-files`.split "\n"
3435
end

‎lib/appium_lib/common/command.rb

+36-34
Original file line numberDiff line numberDiff line change
@@ -3,52 +3,54 @@ class Driver
33
module Commands
44
COMMAND_NO_ARG = {
55
# common
6-
shake: [:post, 'session/:session_id/appium/device/shake'.freeze],
7-
launch_app: [:post, 'session/:session_id/appium/app/launch'.freeze],
8-
close_app: [:post, 'session/:session_id/appium/app/close'.freeze],
9-
reset: [:post, 'session/:session_id/appium/app/reset'.freeze],
10-
device_locked?: [:post, 'session/:session_id/appium/device/is_locked'.freeze],
6+
shake: [:post, 'session/:session_id/appium/device/shake'.freeze],
7+
launch_app: [:post, 'session/:session_id/appium/app/launch'.freeze],
8+
close_app: [:post, 'session/:session_id/appium/app/close'.freeze],
9+
reset: [:post, 'session/:session_id/appium/app/reset'.freeze],
10+
device_locked?: [:post, 'session/:session_id/appium/device/is_locked'.freeze],
1111

1212
# Android
13-
open_notifications: [:post, 'session/:session_id/appium/device/open_notifications'.freeze],
14-
toggle_airplane_mode: [:post, 'session/:session_id/appium/device/toggle_airplane_mode'.freeze],
15-
current_activity: [:get, 'session/:session_id/appium/device/current_activity'.freeze],
16-
get_network_connection: [:get, 'session/:session_id/network_connection'.freeze],
13+
open_notifications: [:post, 'session/:session_id/appium/device/open_notifications'.freeze],
14+
toggle_airplane_mode: [:post, 'session/:session_id/appium/device/toggle_airplane_mode'.freeze],
15+
current_activity: [:get, 'session/:session_id/appium/device/current_activity'.freeze],
16+
get_network_connection: [:get, 'session/:session_id/network_connection'.freeze],
17+
get_performance_data_types: [:post, 'session/:session_id/appium/performanceData/types'.freeze],
1718

1819
# iOS
19-
device_time: [:get, 'session/:session_id/appium/device/system_time'.freeze],
20-
current_context: [:get, 'session/:session_id/context'.freeze]
20+
device_time: [:get, 'session/:session_id/appium/device/system_time'.freeze],
21+
current_context: [:get, 'session/:session_id/context'.freeze]
2122
}.freeze
2223

2324
COMMAND = {
2425
# common
25-
available_contexts: [:get, 'session/:session_id/contexts'.freeze],
26-
set_context: [:post, 'session/:session_id/context'.freeze],
27-
app_strings: [:post, 'session/:session_id/appium/app/strings'.freeze],
28-
lock: [:post, 'session/:session_id/appium/device/lock'.freeze],
29-
install_app: [:post, 'session/:session_id/appium/device/install_app'.freeze],
30-
remove_app: [:post, 'session/:session_id/appium/device/remove_app'.freeze],
31-
app_installed?: [:post, 'session/:session_id/appium/device/app_installed'.freeze],
32-
background_app: [:post, 'session/:session_id/appium/app/background'.freeze],
33-
hide_keyboard: [:post, 'session/:session_id/appium/device/hide_keyboard'.freeze],
34-
press_keycode: [:post, 'session/:session_id/appium/device/press_keycode'.freeze],
35-
long_press_keycode: [:post, 'session/:session_id/appium/device/long_press_keycode'.freeze],
36-
set_immediate_value: [:post, 'session/:session_id/appium/element/:id/value'.freeze],
37-
push_file: [:post, 'session/:session_id/appium/device/push_file'.freeze],
38-
pull_file: [:post, 'session/:session_id/appium/device/pull_file'.freeze],
39-
pull_folder: [:post, 'session/:session_id/appium/device/pull_folder'.freeze],
40-
get_settings: [:get, 'session/:session_id/appium/settings'.freeze],
41-
update_settings: [:post, 'session/:session_id/appium/settings'.freeze],
42-
touch_actions: [:post, 'session/:session_id/touch/perform'.freeze],
43-
multi_touch: [:post, 'session/:session_id/touch/multi/perform'.freeze],
26+
available_contexts: [:get, 'session/:session_id/contexts'.freeze],
27+
set_context: [:post, 'session/:session_id/context'.freeze],
28+
app_strings: [:post, 'session/:session_id/appium/app/strings'.freeze],
29+
lock: [:post, 'session/:session_id/appium/device/lock'.freeze],
30+
install_app: [:post, 'session/:session_id/appium/device/install_app'.freeze],
31+
remove_app: [:post, 'session/:session_id/appium/device/remove_app'.freeze],
32+
app_installed?: [:post, 'session/:session_id/appium/device/app_installed'.freeze],
33+
background_app: [:post, 'session/:session_id/appium/app/background'.freeze],
34+
hide_keyboard: [:post, 'session/:session_id/appium/device/hide_keyboard'.freeze],
35+
press_keycode: [:post, 'session/:session_id/appium/device/press_keycode'.freeze],
36+
long_press_keycode: [:post, 'session/:session_id/appium/device/long_press_keycode'.freeze],
37+
set_immediate_value: [:post, 'session/:session_id/appium/element/:id/value'.freeze],
38+
push_file: [:post, 'session/:session_id/appium/device/push_file'.freeze],
39+
pull_file: [:post, 'session/:session_id/appium/device/pull_file'.freeze],
40+
pull_folder: [:post, 'session/:session_id/appium/device/pull_folder'.freeze],
41+
get_settings: [:get, 'session/:session_id/appium/settings'.freeze],
42+
update_settings: [:post, 'session/:session_id/appium/settings'.freeze],
43+
touch_actions: [:post, 'session/:session_id/touch/perform'.freeze],
44+
multi_touch: [:post, 'session/:session_id/touch/multi/perform'.freeze],
4445

4546
# Android
46-
start_activity: [:post, 'session/:session_id/appium/device/start_activity'.freeze],
47-
end_coverage: [:post, 'session/:session_id/appium/app/end_test_coverage'.freeze],
48-
set_network_connection: [:post, 'session/:session_id/network_connection'.freeze],
47+
start_activity: [:post, 'session/:session_id/appium/device/start_activity'.freeze],
48+
end_coverage: [:post, 'session/:session_id/appium/app/end_test_coverage'.freeze],
49+
set_network_connection: [:post, 'session/:session_id/network_connection'.freeze],
50+
get_performance_data: [:post, 'session/:session_id/appium/getPerformanceData'.freeze],
4951

5052
# iOS
51-
touch_id: [:post, 'session/:session_id/appium/simulator/touch_id'.freeze]
53+
touch_id: [:post, 'session/:session_id/appium/simulator/touch_id'.freeze]
5254
}.merge(COMMAND_NO_ARG).merge(::Selenium::WebDriver::Remote::Bridge::COMMANDS).freeze
5355
end
5456
end

‎lib/appium_lib/device/device.rb

+28
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,26 @@ module Device
135135
# ```ruby
136136
# set_immediate_value element, 'hello'
137137
# ```
138+
139+
# @!method get_performance_data_types
140+
# Get the information type of the system state which is supported to read such as
141+
# cpu, memory, network, battery via adb commands.
142+
# https://github.com/appium/appium-base-driver/blob/be29aec2318316d12b5c3295e924a5ba8f09b0fb/lib/mjsonwp/routes.js#L300
143+
#
144+
# ```ruby
145+
# get_performance_data_types #=> ["cpuinfo", "batteryinfo", "networkinfo", "memoryinfo"]
146+
# ```
147+
148+
# @!method get_performance_data
149+
# Get the resource usage information of the application.
150+
# https://github.com/appium/appium-base-driver/blob/be29aec2318316d12b5c3295e924a5ba8f09b0fb/lib/mjsonwp/routes.js#L303
151+
# @param [String] package_name Package name
152+
# @param [String] data_type Data type get with `get_performance_data_types`
153+
# @param [String] data_read_timeout Command timeout. Default is 2.
154+
#
155+
# ```ruby
156+
# get_performance_data package_name: package_name, data_type: data_type, data_read_timeout: 2
157+
# ```
138158
class << self
139159
def extended(_mod)
140160
extend_webdriver_with_forwardable
@@ -308,6 +328,14 @@ def set_network_connection(mode)
308328
end
309329
end
310330

331+
add_endpoint_method(:get_performance_data) do
332+
def get_performance_data(package_name:, data_type:, data_read_timeout: 1000)
333+
execute :get_performance_data, {}, packageName: package_name,
334+
dataType: data_type,
335+
dataReadTimeout: data_read_timeout
336+
end
337+
end
338+
311339
add_touch_actions
312340
add_ime_actions
313341
extend_search_contexts

0 commit comments

Comments
 (0)
Please sign in to comment.