monkey_master 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module MonkeyMaster
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -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{^(test|spec|features)/})
18
+ spec.test_files = spec.files.grep(%r{^(spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
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
@@ -0,0 +1,7 @@
1
+ require 'bundler/setup'
2
+ Bundler.setup
3
+
4
+ require 'monkey_master'
5
+
6
+ RSpec.configure do |config|
7
+ end
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.0.0
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
- date: 2013-08-18 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
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
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: "1.3"
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
- version_requirements: *id001
24
- - !ruby/object:Gem::Dependency
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
- requirement: &id002 !ruby/object:Gem::Requirement
28
- requirements:
29
- - &id003
30
- - ">="
31
- - !ruby/object:Gem::Version
32
- version: "0"
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
- version_requirements: *id002
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
- files:
45
- - .gitignore
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
- - test/test_monkey_master.rb
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
- - *id003
69
- required_rubygems_version: !ruby/object:Gem::Requirement
70
- requirements:
71
- - *id003
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.0.3
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
- - test/test_monkey_master.rb
130
+ test_files:
131
+ - spec/monkey_master_spec.rb
132
+ - spec/spec_helper.rb
133
+ has_rdoc:
@@ -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