monkey_master 1.0.0 → 1.1.0
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.
- checksums.yaml +7 -7
- data/.gitignore +4 -1
- data/.rubocop.yml +865 -0
- data/.travis.yml +11 -0
- data/README.md +30 -11
- data/Rakefile +6 -5
- data/bin/monkey_master +29 -30
- data/lib/monkey_master.rb +1 -1
- data/lib/monkey_master/adb.rb +81 -0
- data/lib/monkey_master/monkey_commander.rb +125 -149
- data/lib/monkey_master/version.rb +1 -1
- data/monkey_master.gemspec +6 -3
- data/spec/monkey_master_spec.rb +106 -0
- data/spec/spec_helper.rb +7 -0
- metadata +97 -44
- data/test/test_monkey_master.rb +0 -50
data/monkey_master.gemspec
CHANGED
@@ -15,9 +15,12 @@ Gem::Specification.new do |spec|
|
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(
|
18
|
+
spec.test_files = spec.files.grep(%r{^(spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.
|
22
|
-
spec.add_development_dependency
|
21
|
+
spec.add_runtime_dependency 'docopt', '~> 0.5'
|
22
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
23
|
+
spec.add_development_dependency 'pry', '~> 0.10'
|
24
|
+
spec.add_development_dependency 'rake', '~> 10.3'
|
25
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
23
26
|
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe MonkeyMaster::MonkeyCommander do
|
4
|
+
let(:device_stubs) { %w(80123 34555) }
|
5
|
+
let(:default_args) { '-v 80000 --throttle 200 --ignore-timeouts --pct-majornav 20 --pct-appswitch 0 --kill-process-after-error' }
|
6
|
+
|
7
|
+
before do
|
8
|
+
allow(MonkeyMaster::ADB).to receive(:monkey_run) { 0 }
|
9
|
+
allow(MonkeyMaster::ADB).to receive(:monkey_stop) { `echo 'testing'` }
|
10
|
+
allow(MonkeyMaster::ADB).to receive(:detect_devices) { %w(42 43) }
|
11
|
+
allow(MonkeyMaster::ADB).to receive(:kill_monkeys) { %w(42 43) }
|
12
|
+
allow(MonkeyMaster::ADB).to receive(:start_logging) { nil }
|
13
|
+
allow(MonkeyMaster::ADB).to receive(:end_logging) { nil }
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'killing monkeys' do
|
17
|
+
let(:commander) { MonkeyMaster::MonkeyCommander.new('com.test.Example') }
|
18
|
+
|
19
|
+
describe 'invalid device ids are given' do
|
20
|
+
before { commander.device_list = device_stubs }
|
21
|
+
|
22
|
+
it 'should be able to call the kill command' do
|
23
|
+
expect { commander.kill_monkeys }.not_to raise_error
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'when no devices are configured' do
|
28
|
+
it 'should be able to call the kill command' do
|
29
|
+
expect { commander.kill_monkeys }.not_to raise_error
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'commanding monkeys' do
|
35
|
+
describe '+ positive' do
|
36
|
+
let(:app_id) { 'com.test.Example' }
|
37
|
+
let(:commander) do
|
38
|
+
commander = MonkeyMaster::MonkeyCommander.new(app_id)
|
39
|
+
commander.instance_variable_set(:@device_list, device_stubs)
|
40
|
+
commander
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'regular run' do
|
44
|
+
before do
|
45
|
+
allow(commander).to receive(:archive_and_clean_log) { nil }
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'should start and stop adb monkeys' do
|
49
|
+
device_stubs.each do |device_stub|
|
50
|
+
expect(MonkeyMaster::ADB).to receive(:monkey_run).with(app_id, device_stub, default_args)
|
51
|
+
expect(MonkeyMaster::ADB).to receive(:monkey_stop).with(app_id, device_stub)
|
52
|
+
end
|
53
|
+
commander.command_monkeys
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'should accept arguments for adb monkeys' do
|
57
|
+
adb_args = "--throttle 3000"
|
58
|
+
expect(MonkeyMaster::ADB).to receive(:monkey_run).with(app_id, device_stubs.first, adb_args)
|
59
|
+
commander.command_monkeys(adb_args)
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should make a log for each iteration of each device' do
|
63
|
+
commander.instance_variable_set(:@iterations, 2)
|
64
|
+
# two devices, two iterations => 4 runs
|
65
|
+
expect(commander).to receive(:archive_and_clean_log).exactly(4).times
|
66
|
+
expect(MonkeyMaster::ADB).to receive(:end_logging).once
|
67
|
+
commander.command_monkeys
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should kill the monkeys after running' do
|
71
|
+
expect(MonkeyMaster::ADB).to receive(:kill_monkeys).with(device_stubs)
|
72
|
+
commander.command_monkeys
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '- negative' do
|
78
|
+
describe 'with an invalid app id' do
|
79
|
+
before do
|
80
|
+
allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:archive_and_clean_log) { true }
|
81
|
+
allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:log_for_device) { true }
|
82
|
+
end
|
83
|
+
it 'should raise an error' do
|
84
|
+
commander = MonkeyMaster::MonkeyCommander.new(nil)
|
85
|
+
commander.device_list = device_stubs
|
86
|
+
expect { commander.command_monkeys }.to raise_error(ArgumentError)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe 'with invalid devices' do
|
91
|
+
before do
|
92
|
+
allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:archive_and_clean_log) { true }
|
93
|
+
allow_any_instance_of(MonkeyMaster::MonkeyCommander).to receive(:log_for_device) {
|
94
|
+
raise ArgumentError, 'It doesn’t seem like there are ready, connected devices.'
|
95
|
+
}
|
96
|
+
end
|
97
|
+
it 'should raise an error' do
|
98
|
+
commander = MonkeyMaster::MonkeyCommander.new('com.test.Example')
|
99
|
+
commander.device_list = device_stubs
|
100
|
+
# invalid devices, should raise an exception
|
101
|
+
expect { commander.command_monkeys }.to raise_error(ArgumentError)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,80 +1,133 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: monkey_master
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Lukas Nagl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
date: 2015-07-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: docopt
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
type: :development
|
16
35
|
prerelease: false
|
17
|
-
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.10'
|
22
48
|
type: :development
|
23
|
-
|
24
|
-
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.10'
|
55
|
+
- !ruby/object:Gem::Dependency
|
25
56
|
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.3'
|
62
|
+
type: :development
|
26
63
|
prerelease: false
|
27
|
-
|
28
|
-
requirements:
|
29
|
-
-
|
30
|
-
-
|
31
|
-
|
32
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: bundler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.3'
|
33
76
|
type: :development
|
34
|
-
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.3'
|
35
83
|
description: A tool for conveniently employing Android adb monkeys.
|
36
|
-
email:
|
84
|
+
email:
|
37
85
|
- lukas.nagl@innovaptor.com
|
38
|
-
executables:
|
86
|
+
executables:
|
39
87
|
- monkey_master
|
40
88
|
extensions: []
|
41
|
-
|
42
89
|
extra_rdoc_files: []
|
43
|
-
|
44
|
-
|
45
|
-
- .
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rubocop.yml"
|
93
|
+
- ".travis.yml"
|
46
94
|
- Gemfile
|
47
95
|
- LICENSE.txt
|
48
96
|
- README.md
|
49
97
|
- Rakefile
|
50
98
|
- bin/monkey_master
|
51
99
|
- lib/monkey_master.rb
|
100
|
+
- lib/monkey_master/adb.rb
|
52
101
|
- lib/monkey_master/monkey_commander.rb
|
53
102
|
- lib/monkey_master/version.rb
|
54
103
|
- monkey_master.gemspec
|
55
|
-
-
|
104
|
+
- spec/monkey_master_spec.rb
|
105
|
+
- spec/spec_helper.rb
|
56
106
|
homepage: https://github.com/j4zz/monkey_master.git
|
57
|
-
licenses:
|
107
|
+
licenses:
|
58
108
|
- MIT
|
59
109
|
metadata: {}
|
60
|
-
|
61
110
|
post_install_message:
|
62
111
|
rdoc_options: []
|
63
|
-
|
64
|
-
require_paths:
|
112
|
+
require_paths:
|
65
113
|
- lib
|
66
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
-
requirements:
|
68
|
-
-
|
69
|
-
|
70
|
-
|
71
|
-
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
72
124
|
requirements: []
|
73
|
-
|
74
125
|
rubyforge_project:
|
75
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.4.3
|
76
127
|
signing_key:
|
77
128
|
specification_version: 4
|
78
129
|
summary: A tool for conveniently employing Android adb monkeys.
|
79
|
-
test_files:
|
80
|
-
-
|
130
|
+
test_files:
|
131
|
+
- spec/monkey_master_spec.rb
|
132
|
+
- spec/spec_helper.rb
|
133
|
+
has_rdoc:
|
data/test/test_monkey_master.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
require 'monkey_master'
|
3
|
-
|
4
|
-
class MonkeyCommanderTest < Test::Unit::TestCase
|
5
|
-
# Test the kill option in case no devices are connected
|
6
|
-
def test_kill_no_devices
|
7
|
-
assert_nothing_raised do
|
8
|
-
commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
|
9
|
-
commander.kill_monkeys
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# Test the kill option with a list of invalid devices
|
14
|
-
def test_kill_invalid_devices
|
15
|
-
assert_nothing_raised do
|
16
|
-
commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
|
17
|
-
commander.device_list = ["80123","34555"]
|
18
|
-
commander.kill_monkeys
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
# Test trying regular execution in case no devices are connected
|
23
|
-
def test_command_no_devices
|
24
|
-
assert_raise ArgumentError do
|
25
|
-
commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
|
26
|
-
# no devices
|
27
|
-
commander.command_monkeys
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Test trying regular execution with an invalid app id
|
32
|
-
def test_command_no_app_id
|
33
|
-
assert_raise ArgumentError do
|
34
|
-
commander = MonkeyMaster::MonkeyCommander.new(nil)
|
35
|
-
commander.device_list = ["80123","34555"]
|
36
|
-
# no app id
|
37
|
-
commander.command_monkeys
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
# Test trying regular execution when invalid devices are given
|
42
|
-
def test_command_invalid_devices
|
43
|
-
assert_raise ArgumentError do
|
44
|
-
commander = MonkeyMaster::MonkeyCommander.new("com.test.Example")
|
45
|
-
commander.device_list = ["80123","34555"]
|
46
|
-
# invalid devices, should raise an exception
|
47
|
-
commander.command_monkeys
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|