kanrisuru 0.9.1 → 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CONTRIBUTING.md +9 -9
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +7 -8
  4. data/.gitignore +3 -1
  5. data/CHANGELOG.md +151 -130
  6. data/CODE_OF_CONDUCT.md +10 -10
  7. data/README.md +8 -3
  8. data/kanrisuru.gemspec +2 -1
  9. data/lib/kanrisuru/core/archive.rb +6 -5
  10. data/lib/kanrisuru/core/disk.rb +0 -3
  11. data/lib/kanrisuru/core/dmi.rb +1 -1
  12. data/lib/kanrisuru/core/file.rb +2 -2
  13. data/lib/kanrisuru/core/find.rb +4 -5
  14. data/lib/kanrisuru/core/socket.rb +2 -1
  15. data/lib/kanrisuru/core/stream.rb +1 -1
  16. data/lib/kanrisuru/core/zypper.rb +3 -3
  17. data/lib/kanrisuru/remote/cpu.rb +5 -1
  18. data/lib/kanrisuru/remote/env.rb +8 -0
  19. data/lib/kanrisuru/remote/fstab.rb +4 -4
  20. data/lib/kanrisuru/util.rb +1 -1
  21. data/lib/kanrisuru/version.rb +1 -1
  22. data/spec/functional/core/apt_spec.rb +22 -30
  23. data/spec/functional/core/archive_spec.rb +169 -0
  24. data/spec/functional/core/find_spec.rb +94 -113
  25. data/spec/functional/core/socket_spec.rb +23 -28
  26. data/spec/functional/core/stream_spec.rb +12 -12
  27. data/spec/functional/core/transfer_spec.rb +108 -131
  28. data/spec/functional/core/yum_spec.rb +58 -83
  29. data/spec/functional/remote/cluster_spec.rb +12 -3
  30. data/spec/functional/remote/cpu_spec.rb +104 -0
  31. data/spec/functional/remote/env_spec.rb +48 -0
  32. data/spec/helper/stub_network.rb +57 -14
  33. data/spec/integration/core/file_spec.rb +0 -1
  34. data/spec/integration/core/find_spec.rb +1 -0
  35. data/spec/integration/core/system_spec.rb +0 -1
  36. data/spec/integration/core/zypper_spec.rb +3 -3
  37. data/spec/{functional → integration}/os_package_spec.rb +0 -0
  38. data/spec/spec_helper.rb +3 -0
  39. data/spec/unit/command_spec.rb +31 -0
  40. data/spec/unit/core/apt_spec.rb +20 -0
  41. data/spec/unit/core/archive_spec.rb +20 -0
  42. data/spec/unit/core/disk_spec.rb +23 -0
  43. data/spec/unit/core/dmi_spec.rb +20 -0
  44. data/spec/unit/core/file_spec.rb +35 -0
  45. data/spec/unit/core/find_spec.rb +21 -1
  46. data/spec/unit/core/group_spec.rb +24 -0
  47. data/spec/unit/core/ip_spec.rb +20 -0
  48. data/spec/unit/core/path_spec.rb +25 -0
  49. data/spec/unit/core/socket_spec.rb +20 -0
  50. data/spec/unit/core/stat_spec.rb +27 -0
  51. data/spec/unit/core/system_spec.rb +35 -0
  52. data/spec/unit/core/transfer_spec.rb +22 -0
  53. data/spec/unit/core/user_spec.rb +25 -0
  54. data/spec/unit/core/yum_spec.rb +20 -0
  55. data/spec/unit/core/zypper_spec.rb +20 -0
  56. data/spec/unit/mode_spec.rb +33 -2
  57. data/spec/unit/remote/cluster_spec.rb +36 -0
  58. data/spec/unit/remote/cpu_spec.rb +3 -4
  59. data/spec/unit/remote/env_spec.rb +17 -0
  60. data/spec/unit/{fstab_spec.rb → remote/fstab_spec.rb} +0 -0
  61. data/spec/unit/util_spec.rb +13 -0
  62. metadata +26 -5
@@ -3,6 +3,33 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Core::Stat do
6
+ before(:all) do
7
+ StubNetwork.stub!
8
+ end
9
+
10
+ after(:all) do
11
+ StubNetwork.unstub!
12
+ end
13
+
14
+ let(:host) do
15
+ Kanrisuru::Remote::Host.new(
16
+ host: 'localhost',
17
+ username: 'ubuntu',
18
+ keys: ['id_rsa']
19
+ )
20
+ end
21
+
22
+ it 'responds to methods' do
23
+ expect(host).to respond_to(:dir?)
24
+ expect(host).to respond_to(:file?)
25
+ expect(host).to respond_to(:block_device?)
26
+ expect(host).to respond_to(:char_device?)
27
+ expect(host).to respond_to(:symlink?)
28
+ expect(host).to respond_to(:file_type?)
29
+ expect(host).to respond_to(:inode?)
30
+ expect(host).to respond_to(:stat)
31
+ end
32
+
6
33
  it 'responds to stat fields' do
7
34
  expect(Kanrisuru::Core::Stat::FileStat.new).to respond_to(
8
35
  :mode, :blocks, :device, :file_type,
@@ -3,6 +3,41 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Core::System do
6
+ before(:all) do
7
+ StubNetwork.stub!
8
+ end
9
+
10
+ after(:all) do
11
+ StubNetwork.unstub!
12
+ end
13
+
14
+ let(:host) do
15
+ Kanrisuru::Remote::Host.new(
16
+ host: 'localhost',
17
+ username: 'ubuntu',
18
+ keys: ['id_rsa']
19
+ )
20
+ end
21
+
22
+ it 'responds to methods' do
23
+ expect(host).to respond_to(:load_env)
24
+ expect(host).to respond_to(:cpu_info)
25
+ expect(host).to respond_to(:lscpu)
26
+ expect(host).to respond_to(:load_average)
27
+ expect(host).to respond_to(:free)
28
+ expect(host).to respond_to(:ps)
29
+ expect(host).to respond_to(:kill)
30
+ expect(host).to respond_to(:kernel_statistics)
31
+ expect(host).to respond_to(:kstat)
32
+ expect(host).to respond_to(:lsof)
33
+ expect(host).to respond_to(:last)
34
+ expect(host).to respond_to(:uptime)
35
+ expect(host).to respond_to(:w)
36
+ expect(host).to respond_to(:who)
37
+ expect(host).to respond_to(:reboot)
38
+ expect(host).to respond_to(:poweroff)
39
+ end
40
+
6
41
  it 'responds to system fields' do
7
42
  expect(Kanrisuru::Core::System::CPUArchitectureVulnerability.new).to respond_to(
8
43
  :name,
@@ -3,6 +3,28 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Core::Transfer do
6
+ before(:all) do
7
+ StubNetwork.stub!
8
+ end
9
+
10
+ after(:all) do
11
+ StubNetwork.unstub!
12
+ end
13
+
14
+ let(:host) do
15
+ Kanrisuru::Remote::Host.new(
16
+ host: 'localhost',
17
+ username: 'ubuntu',
18
+ keys: ['id_rsa']
19
+ )
20
+ end
21
+
22
+ it 'responds to methods' do
23
+ expect(host).to respond_to(:download)
24
+ expect(host).to respond_to(:upload)
25
+ expect(host).to respond_to(:wget)
26
+ end
27
+
6
28
  it 'responds to transfer fields' do
7
29
  expect(Kanrisuru::Core::Transfer::WGET_FILENAME_MODES).to eq(
8
30
  %w[unix windows nocontrol ascii lowercase uppercase]
@@ -3,6 +3,31 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Core::User do
6
+ before(:all) do
7
+ StubNetwork.stub!
8
+ end
9
+
10
+ after(:all) do
11
+ StubNetwork.unstub!
12
+ end
13
+
14
+ let(:host) do
15
+ Kanrisuru::Remote::Host.new(
16
+ host: 'localhost',
17
+ username: 'ubuntu',
18
+ keys: ['id_rsa']
19
+ )
20
+ end
21
+
22
+ it 'responds to methods' do
23
+ expect(host).to respond_to(:user?)
24
+ expect(host).to respond_to(:get_uid)
25
+ expect(host).to respond_to(:get_user)
26
+ expect(host).to respond_to(:create_user)
27
+ expect(host).to respond_to(:update_user)
28
+ expect(host).to respond_to(:delete_user)
29
+ end
30
+
6
31
  it 'responds to user fields' do
7
32
  expect(Kanrisuru::Core::User::User.new).to respond_to(:uid, :name, :home, :shell, :groups)
8
33
  expect(Kanrisuru::Core::User::UserGroup.new).to respond_to(:gid, :name)
@@ -3,6 +3,26 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Core::Yum do
6
+ before(:all) do
7
+ StubNetwork.stub!('centos')
8
+ end
9
+
10
+ after(:all) do
11
+ StubNetwork.unstub!
12
+ end
13
+
14
+ let(:host) do
15
+ Kanrisuru::Remote::Host.new(
16
+ host: 'centos-host',
17
+ username: 'centos',
18
+ keys: ['id_rsa']
19
+ )
20
+ end
21
+
22
+ it 'responds to methods' do
23
+ expect(host).to respond_to(:yum)
24
+ end
25
+
6
26
  it 'responds to yum fields' do
7
27
  expect(Kanrisuru::Core::Yum::PackageOverview.new).to respond_to(
8
28
  :package, :architecture, :version, :installed
@@ -3,6 +3,26 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Core::Zypper do
6
+ before(:all) do
7
+ StubNetwork.stub!('opensuse')
8
+ end
9
+
10
+ after(:all) do
11
+ StubNetwork.unstub!
12
+ end
13
+
14
+ let(:host) do
15
+ Kanrisuru::Remote::Host.new(
16
+ host: 'opensuse-host',
17
+ username: 'opensuse',
18
+ keys: ['id_rsa']
19
+ )
20
+ end
21
+
22
+ it 'responds to methods' do
23
+ expect(host).to respond_to(:zypper)
24
+ end
25
+
6
26
  it 'responds to zypper fields' do
7
27
  expect(Kanrisuru::Core::Zypper::PACKAGE_TYPES).to(
8
28
  eq(%w[package patch pattern product srcpackage application])
@@ -3,6 +3,18 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  RSpec.describe Kanrisuru::Mode do
6
+ it 'responds to methods' do
7
+ mode = described_class.new('644')
8
+ expect(mode).to respond_to(:directory?)
9
+ expect(mode).to respond_to(:symbolic)
10
+ expect(mode).to respond_to(:symbolic=)
11
+ expect(mode).to respond_to(:numeric)
12
+ expect(mode).to respond_to(:numeric=)
13
+ expect(mode).to respond_to(:inspect)
14
+ expect(mode).to respond_to(:to_s)
15
+ expect(mode).to respond_to(:to_i)
16
+ end
17
+
6
18
  it 'parses int mode' do
7
19
  mode = described_class.new('644')
8
20
  expect(mode.directory?).to eq(false)
@@ -80,9 +92,9 @@ RSpec.describe Kanrisuru::Mode do
80
92
  expect(mode.other.to_i).to eq(7)
81
93
  expect(mode.other.symbolic).to eq('rwx')
82
94
 
83
- mode = described_class.new("---x--x--x")
95
+ mode = described_class.new('---x--x--x')
84
96
  expect(mode.directory?).to eq(false)
85
- expect(mode.numeric).to eq("111")
97
+ expect(mode.numeric).to eq('111')
86
98
 
87
99
  expect(mode.owner.read?).to eq(false)
88
100
  expect(mode.owner.write?).to eq(false)
@@ -205,4 +217,23 @@ RSpec.describe Kanrisuru::Mode do
205
217
  mode.symbolic = '-w'
206
218
  expect(mode.symbolic).to eq('---xr-xr--')
207
219
  end
220
+
221
+ context Kanrisuru::Mode::Permission do
222
+ it 'responds to methods' do
223
+ mode = Kanrisuru::Mode::Permission.new('644', 'rw-rw-r--')
224
+ expect(mode).to respond_to(:to_i)
225
+ expect(mode).to respond_to(:to_s)
226
+ expect(mode).to respond_to(:all?)
227
+ expect(mode).to respond_to(:numeric)
228
+ expect(mode).to respond_to(:numeric=)
229
+ expect(mode).to respond_to(:symbolic=)
230
+ expect(mode).to respond_to(:symbolic)
231
+ expect(mode).to respond_to(:read=)
232
+ expect(mode).to respond_to(:read?)
233
+ expect(mode).to respond_to(:write=)
234
+ expect(mode).to respond_to(:write?)
235
+ expect(mode).to respond_to(:execute=)
236
+ expect(mode).to respond_to(:execute?)
237
+ end
238
+ end
208
239
  end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Kanrisuru::Remote::Cluster do
4
+ before(:all) do
5
+ StubNetwork.stub!
6
+ end
7
+
8
+ after(:all) do
9
+ StubNetwork.unstub!
10
+ end
11
+
12
+ let(:host1) do
13
+ Kanrisuru::Remote::Host.new(
14
+ host: 'localhost',
15
+ username: 'ubuntu',
16
+ keys: ['id_rsa']
17
+ )
18
+ end
19
+
20
+ it 'responds to methods' do
21
+ cluster = described_class.new(host1)
22
+ expect(cluster).to respond_to(:hosts)
23
+ expect(cluster).to respond_to(:[])
24
+ expect(cluster).to respond_to(:<<)
25
+ expect(cluster).to respond_to(:delete)
26
+ expect(cluster).to respond_to(:execute)
27
+ expect(cluster).to respond_to(:execute_shell)
28
+ expect(cluster).to respond_to(:each)
29
+ expect(cluster).to respond_to(:hostname)
30
+ expect(cluster).to respond_to(:ping?)
31
+ expect(cluster).to respond_to(:su)
32
+ expect(cluster).to respond_to(:chdir)
33
+ expect(cluster).to respond_to(:cd)
34
+ expect(cluster).to respond_to(:disconnect)
35
+ end
36
+ end
@@ -11,7 +11,7 @@ RSpec.describe Kanrisuru::Remote::Cpu do
11
11
  StubNetwork.unstub!
12
12
  end
13
13
 
14
- let(:host1) do
14
+ let(:host) do
15
15
  Kanrisuru::Remote::Host.new(
16
16
  host: 'localhost',
17
17
  username: 'ubuntu',
@@ -20,8 +20,7 @@ RSpec.describe Kanrisuru::Remote::Cpu do
20
20
  end
21
21
 
22
22
  it 'responds to methods' do
23
- cpu = Kanrisuru::Remote::Cpu.new(host1)
24
-
23
+ cpu = described_class.new(host)
25
24
  expect(cpu).to respond_to(:load_average)
26
25
  expect(cpu).to respond_to(:load_average1)
27
26
  expect(cpu).to respond_to(:load_average5)
@@ -47,4 +46,4 @@ RSpec.describe Kanrisuru::Remote::Cpu do
47
46
  expect(cpu).to respond_to(:flags)
48
47
  expect(cpu).to respond_to(:hyperthreading?)
49
48
  end
50
- end
49
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Remote::Env do
6
+ it 'responds to methods' do
7
+ env = described_class.new
8
+ expect(env).to respond_to(:to_h)
9
+ expect(env).to respond_to(:to_s)
10
+ expect(env).to respond_to(:clear)
11
+ expect(env).to respond_to(:count)
12
+ expect(env).to respond_to(:count)
13
+ expect(env).to respond_to(:delete)
14
+ expect(env).to respond_to(:[])
15
+ expect(env).to respond_to(:[]=)
16
+ end
17
+ end
File without changes
@@ -84,6 +84,10 @@ RSpec.describe Kanrisuru::Util do
84
84
  expect { Kanrisuru::Util::Bits.convert_bytes(100, :kilobytee, :kilobit) }.to raise_error(ArgumentError)
85
85
  end
86
86
 
87
+ it 'gets invalid signal type' do
88
+ expect { Kanrisuru::Util::Signal[{ 'Hello' => 'World' }] }.to raise_error(ArgumentError)
89
+ end
90
+
87
91
  it 'translates signal from string to numeric' do
88
92
  expect(Kanrisuru::Util::Signal['HUP']).to eq(1)
89
93
  expect(Kanrisuru::Util::Signal['INT']).to eq(2)
@@ -214,6 +218,10 @@ RSpec.describe Kanrisuru::Util do
214
218
  expect(Kanrisuru::Util::Signal[64]).to eq('RTMAX')
215
219
  end
216
220
 
221
+ it 'gets invalid dmi type' do
222
+ expect { Kanrisuru::Util::DmiType[{ 'Hello' => 'World' }] }.to raise_error(ArgumentError)
223
+ end
224
+
217
225
  it 'translates dmi types from string to integer' do
218
226
  expect(Kanrisuru::Util::DmiType['BIOS']).to eq(0)
219
227
  expect(Kanrisuru::Util::DmiType['System']).to eq(1)
@@ -308,6 +316,11 @@ RSpec.describe Kanrisuru::Util do
308
316
  expect(Kanrisuru::Util::DmiType[43]).to eq('TPM Device')
309
317
  end
310
318
 
319
+ it 'gets fs_mount options' do
320
+ expect(Kanrisuru::Util::FsMountOpts.get_device('common')[:async]).to eq('boolean')
321
+ expect(Kanrisuru::Util::FsMountOpts.get_device_opt(:ext4, :acl)).to eq('boolean')
322
+ end
323
+
311
324
  it 'converts power' do
312
325
  expect(Kanrisuru::Util::Bits.convert_power(:deca, :deca)).to eq(0)
313
326
  expect(Kanrisuru::Util::Bits.convert_power(:deca, :kilo)).to eq(-1)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kanrisuru
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Mammina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-29 00:00:00.000000000 Z
11
+ date: 2021-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.21'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov-cobertura
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: net-ping
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +122,8 @@ dependencies:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: '6.1'
111
- description: Manage remote servers over ssh with ruby.
125
+ description: Kanrisuru helps manage remote servers with objected oriented ruby. Results
126
+ come back as structured data, parsed, prepared and ready.
112
127
  email: ryan@avamia.com
113
128
  executables: []
114
129
  extensions: []
@@ -174,6 +189,7 @@ files:
174
189
  - lib/kanrisuru/util/signal.rb
175
190
  - lib/kanrisuru/version.rb
176
191
  - spec/functional/core/apt_spec.rb
192
+ - spec/functional/core/archive_spec.rb
177
193
  - spec/functional/core/find_spec.rb
178
194
  - spec/functional/core/path_spec.rb
179
195
  - spec/functional/core/socket_spec.rb
@@ -181,8 +197,9 @@ files:
181
197
  - spec/functional/core/stream_spec.rb
182
198
  - spec/functional/core/transfer_spec.rb
183
199
  - spec/functional/core/yum_spec.rb
184
- - spec/functional/os_package_spec.rb
185
200
  - spec/functional/remote/cluster_spec.rb
201
+ - spec/functional/remote/cpu_spec.rb
202
+ - spec/functional/remote/env_spec.rb
186
203
  - spec/helper/expect_helpers.rb
187
204
  - spec/helper/stub_network.rb
188
205
  - spec/helper/test_hosts.rb
@@ -204,6 +221,7 @@ files:
204
221
  - spec/integration/core/user_spec.rb
205
222
  - spec/integration/core/yum_spec.rb
206
223
  - spec/integration/core/zypper_spec.rb
224
+ - spec/integration/os_package_spec.rb
207
225
  - spec/integration/remote/cluster_spec.rb
208
226
  - spec/integration/remote/cpu_spec.rb
209
227
  - spec/integration/remote/env_spec.rb
@@ -213,6 +231,7 @@ files:
213
231
  - spec/integration/remote/os_spec.rb
214
232
  - spec/integration/remote/remote_file_spec.rb
215
233
  - spec/spec_helper.rb
234
+ - spec/unit/command_spec.rb
216
235
  - spec/unit/core/apt_spec.rb
217
236
  - spec/unit/core/archive_spec.rb
218
237
  - spec/unit/core/disk_spec.rb
@@ -229,10 +248,12 @@ files:
229
248
  - spec/unit/core/user_spec.rb
230
249
  - spec/unit/core/yum_spec.rb
231
250
  - spec/unit/core/zypper_spec.rb
232
- - spec/unit/fstab_spec.rb
233
251
  - spec/unit/kanrisuru_spec.rb
234
252
  - spec/unit/mode_spec.rb
253
+ - spec/unit/remote/cluster_spec.rb
235
254
  - spec/unit/remote/cpu_spec.rb
255
+ - spec/unit/remote/env_spec.rb
256
+ - spec/unit/remote/fstab_spec.rb
236
257
  - spec/unit/template_spec.rb
237
258
  - spec/unit/util_spec.rb
238
259
  - spec/zz_reboot_spec.rb