kanrisuru 0.12.1 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/kanrisuru/version.rb +1 -1
  4. data/spec/functional/result_spec.rb +150 -0
  5. data/spec/{hosts.json → helper/hosts.json} +0 -0
  6. data/spec/helper/simplecov.rb +21 -0
  7. data/spec/helper/test_hosts.rb +1 -1
  8. data/spec/integration/core/apt/debian_spec.rb +9 -0
  9. data/spec/integration/core/apt/ubuntu_spec.rb +9 -0
  10. data/spec/integration/core/archive/centos_spec.rb +9 -0
  11. data/spec/integration/core/archive/debian_spec.rb +9 -0
  12. data/spec/integration/core/archive/fedora_spec.rb +9 -0
  13. data/spec/integration/core/archive/opensuse_spec.rb +9 -0
  14. data/spec/integration/core/archive/rhel_spec.rb +9 -0
  15. data/spec/integration/core/archive/sles_spec.rb +9 -0
  16. data/spec/integration/core/archive/ubuntu_spec.rb +9 -0
  17. data/spec/integration/core/disk/centos_spec.rb +9 -0
  18. data/spec/integration/core/disk/debian_spec.rb +9 -0
  19. data/spec/integration/core/disk/fedora_spec.rb +9 -0
  20. data/spec/integration/core/disk/opensuse_spec.rb +9 -0
  21. data/spec/integration/core/disk/rhel_spec.rb +9 -0
  22. data/spec/integration/core/disk/sles_spec.rb +9 -0
  23. data/spec/integration/core/disk/ubuntu_spec.rb +9 -0
  24. data/spec/integration/core/dmi/centos_spec.rb +9 -0
  25. data/spec/integration/core/dmi/debian_spec.rb +9 -0
  26. data/spec/integration/core/dmi/fedora_spec.rb +9 -0
  27. data/spec/integration/core/dmi/opensuse_spec.rb +9 -0
  28. data/spec/integration/core/dmi/rhel_spec.rb +9 -0
  29. data/spec/integration/core/dmi/sles_spec.rb +9 -0
  30. data/spec/integration/core/dmi/ubuntu_spec.rb +9 -0
  31. data/spec/integration/core/file/centos_spec.rb +9 -0
  32. data/spec/integration/core/file/debian_spec.rb +9 -0
  33. data/spec/integration/core/file/fedora_spec.rb +9 -0
  34. data/spec/integration/core/file/opensuse_spec.rb +9 -0
  35. data/spec/integration/core/file/rhel_spec.rb +9 -0
  36. data/spec/integration/core/file/sles_spec.rb +9 -0
  37. data/spec/integration/core/file/ubuntu_spec.rb +9 -0
  38. data/spec/integration/core/find/centos_spec.rb +9 -0
  39. data/spec/integration/core/find/debian_spec.rb +9 -0
  40. data/spec/integration/core/find/fedora_spec.rb +9 -0
  41. data/spec/integration/core/find/opensuse_spec.rb +9 -0
  42. data/spec/integration/core/find/rhel_spec.rb +9 -0
  43. data/spec/integration/core/find/sles_spec.rb +9 -0
  44. data/spec/integration/core/find/ubuntu_spec.rb +9 -0
  45. data/spec/integration/core/group/centos_spec.rb +9 -0
  46. data/spec/integration/core/group/debian_spec.rb +9 -0
  47. data/spec/integration/core/group/fedora_spec.rb +9 -0
  48. data/spec/integration/core/group/opensuse_spec.rb +9 -0
  49. data/spec/integration/core/group/rhel_spec.rb +9 -0
  50. data/spec/integration/core/group/sles_spec.rb +9 -0
  51. data/spec/integration/core/group/ubuntu_spec.rb +9 -0
  52. data/spec/integration/core/ip/centos_spec.rb +9 -0
  53. data/spec/integration/core/ip/debian_spec.rb +9 -0
  54. data/spec/integration/core/ip/fedora_spec.rb +9 -0
  55. data/spec/integration/core/ip/opensuse_spec.rb +9 -0
  56. data/spec/integration/core/ip/rhel_spec.rb +9 -0
  57. data/spec/integration/core/ip/sles_spec.rb +9 -0
  58. data/spec/integration/core/ip/ubuntu_spec.rb +9 -0
  59. data/spec/integration/core/path/centos_spec.rb +9 -0
  60. data/spec/integration/core/path/debian_spec.rb +9 -0
  61. data/spec/integration/core/path/fedora_spec.rb +9 -0
  62. data/spec/integration/core/path/opensuse_spec.rb +9 -0
  63. data/spec/integration/core/path/rhel_spec.rb +9 -0
  64. data/spec/integration/core/path/sles_spec.rb +9 -0
  65. data/spec/integration/core/path/ubuntu_spec.rb +9 -0
  66. data/spec/integration/core/socket/centos_spec.rb +9 -0
  67. data/spec/integration/core/socket/debian_spec.rb +9 -0
  68. data/spec/integration/core/socket/fedora_spec.rb +9 -0
  69. data/spec/integration/core/socket/opensuse_spec.rb +9 -0
  70. data/spec/integration/core/socket/rhel_spec.rb +9 -0
  71. data/spec/integration/core/socket/sles_spec.rb +9 -0
  72. data/spec/integration/core/socket/ubuntu_spec.rb +9 -0
  73. data/spec/integration/core/stat/centos_spec.rb +9 -0
  74. data/spec/integration/core/stat/debian_spec.rb +9 -0
  75. data/spec/integration/core/stat/fedora_spec.rb +9 -0
  76. data/spec/integration/core/stat/opensuse_spec.rb +9 -0
  77. data/spec/integration/core/stat/rhel_spec.rb +9 -0
  78. data/spec/integration/core/stat/sles_spec.rb +9 -0
  79. data/spec/integration/core/stat/ubuntu_spec.rb +9 -0
  80. data/spec/integration/core/stream/centos_spec.rb +9 -0
  81. data/spec/integration/core/stream/debian_spec.rb +9 -0
  82. data/spec/integration/core/stream/fedora_spec.rb +9 -0
  83. data/spec/integration/core/stream/opensuse_spec.rb +9 -0
  84. data/spec/integration/core/stream/rhel_spec.rb +9 -0
  85. data/spec/integration/core/stream/sles_spec.rb +9 -0
  86. data/spec/integration/core/stream/ubuntu_spec.rb +9 -0
  87. data/spec/integration/core/system/centos_spec.rb +9 -0
  88. data/spec/integration/core/system/debian_spec.rb +9 -0
  89. data/spec/integration/core/system/fedora_spec.rb +9 -0
  90. data/spec/integration/core/system/opensuse_spec.rb +9 -0
  91. data/spec/integration/core/system/rhel_spec.rb +9 -0
  92. data/spec/integration/core/system/sles_spec.rb +9 -0
  93. data/spec/integration/core/system/ubuntu_spec.rb +9 -0
  94. data/spec/integration/core/transfer/centos_spec.rb +9 -0
  95. data/spec/integration/core/transfer/debian_spec.rb +9 -0
  96. data/spec/integration/core/transfer/fedora_spec.rb +9 -0
  97. data/spec/integration/core/transfer/opensuse_spec.rb +9 -0
  98. data/spec/integration/core/transfer/rhel_spec.rb +9 -0
  99. data/spec/integration/core/transfer/sles_spec.rb +9 -0
  100. data/spec/integration/core/transfer/ubuntu_spec.rb +9 -0
  101. data/spec/integration/core/user/centos_spec.rb +9 -0
  102. data/spec/integration/core/user/debian_spec.rb +9 -0
  103. data/spec/integration/core/user/fedora_spec.rb +9 -0
  104. data/spec/integration/core/user/opensuse_spec.rb +9 -0
  105. data/spec/integration/core/user/rhel_spec.rb +9 -0
  106. data/spec/integration/core/user/sles_spec.rb +9 -0
  107. data/spec/integration/core/user/ubuntu_spec.rb +9 -0
  108. data/spec/integration/core/yum/centos_spec.rb +9 -0
  109. data/spec/integration/core/yum/fedora_spec.rb +9 -0
  110. data/spec/integration/core/yum/rhel_spec.rb +9 -0
  111. data/spec/integration/core/zypper/opensuse_spec.rb +9 -0
  112. data/spec/integration/core/zypper/sles_spec.rb +9 -0
  113. data/spec/integration/remote/cluster/ubuntu_spec.rb +9 -0
  114. data/spec/integration/remote/cpu/centos_spec.rb +9 -0
  115. data/spec/integration/remote/cpu/debian_spec.rb +9 -0
  116. data/spec/integration/remote/cpu/fedora_spec.rb +9 -0
  117. data/spec/integration/remote/cpu/opensuse_spec.rb +9 -0
  118. data/spec/integration/remote/cpu/rhel_spec.rb +9 -0
  119. data/spec/integration/remote/cpu/sles_spec.rb +9 -0
  120. data/spec/integration/remote/cpu/ubuntu_spec.rb +9 -0
  121. data/spec/integration/remote/env/centos_spec.rb +9 -0
  122. data/spec/integration/remote/env/debian_spec.rb +9 -0
  123. data/spec/integration/remote/env/fedora_spec.rb +9 -0
  124. data/spec/integration/remote/env/opensuse_spec.rb +9 -0
  125. data/spec/integration/remote/env/rhel_spec.rb +9 -0
  126. data/spec/integration/remote/env/sles_spec.rb +9 -0
  127. data/spec/integration/remote/env/ubuntu_spec.rb +9 -0
  128. data/spec/integration/remote/fstab/centos_spec.rb +9 -0
  129. data/spec/integration/remote/fstab/debian_spec.rb +9 -0
  130. data/spec/integration/remote/fstab/fedora_spec.rb +9 -0
  131. data/spec/integration/remote/fstab/opensuse_spec.rb +9 -0
  132. data/spec/integration/remote/fstab/rhel_spec.rb +9 -0
  133. data/spec/integration/remote/fstab/sles_spec.rb +9 -0
  134. data/spec/integration/remote/fstab/ubuntu_spec.rb +9 -0
  135. data/spec/integration/remote/host/centos_spec.rb +9 -0
  136. data/spec/integration/remote/host/debian_spec.rb +9 -0
  137. data/spec/integration/remote/host/fedora_spec.rb +9 -0
  138. data/spec/integration/remote/host/opensuse_spec.rb +9 -0
  139. data/spec/integration/remote/host/rhel_spec.rb +9 -0
  140. data/spec/integration/remote/host/sles_spec.rb +9 -0
  141. data/spec/integration/remote/host/ubuntu_spec.rb +9 -0
  142. data/spec/integration/remote/memory/centos_spec.rb +9 -0
  143. data/spec/integration/remote/memory/debian_spec.rb +9 -0
  144. data/spec/integration/remote/memory/fedora_spec.rb +9 -0
  145. data/spec/integration/remote/memory/opensuse_spec.rb +9 -0
  146. data/spec/integration/remote/memory/rhel_spec.rb +9 -0
  147. data/spec/integration/remote/memory/sles_spec.rb +9 -0
  148. data/spec/integration/remote/memory/ubuntu_spec.rb +9 -0
  149. data/spec/integration/remote/os/centos_spec.rb +9 -0
  150. data/spec/integration/remote/os/debian_spec.rb +9 -0
  151. data/spec/integration/remote/os/fedora_spec.rb +9 -0
  152. data/spec/integration/remote/os/opensuse_spec.rb +9 -0
  153. data/spec/integration/remote/os/rhel_spec.rb +9 -0
  154. data/spec/integration/remote/os/sles_spec.rb +9 -0
  155. data/spec/integration/remote/os/ubuntu_spec.rb +9 -0
  156. data/spec/integration/remote/remote_file/centos_spec.rb +9 -0
  157. data/spec/integration/remote/remote_file/debian_spec.rb +9 -0
  158. data/spec/integration/remote/remote_file/fedora_spec.rb +9 -0
  159. data/spec/integration/remote/remote_file/opensuse_spec.rb +9 -0
  160. data/spec/integration/remote/remote_file/rhel_spec.rb +9 -0
  161. data/spec/integration/remote/remote_file/sles_spec.rb +9 -0
  162. data/spec/integration/remote/remote_file/ubuntu_spec.rb +9 -0
  163. data/spec/spec_helper.rb +2 -11
  164. data/spec/support/shared_examples/integration/core/apt.rb +117 -0
  165. data/spec/support/shared_examples/integration/core/archive.rb +221 -0
  166. data/spec/support/shared_examples/integration/core/disk.rb +91 -0
  167. data/spec/support/shared_examples/integration/core/dmi.rb +34 -0
  168. data/spec/support/shared_examples/integration/core/file.rb +357 -0
  169. data/spec/support/shared_examples/integration/core/find.rb +50 -0
  170. data/spec/support/shared_examples/integration/core/group.rb +62 -0
  171. data/spec/support/shared_examples/integration/core/ip.rb +68 -0
  172. data/spec/support/shared_examples/integration/core/path.rb +90 -0
  173. data/spec/support/shared_examples/integration/core/socket.rb +27 -0
  174. data/spec/support/shared_examples/integration/core/stat.rb +95 -0
  175. data/spec/support/shared_examples/integration/core/stream.rb +112 -0
  176. data/spec/support/shared_examples/integration/core/system.rb +155 -0
  177. data/spec/support/shared_examples/integration/core/transfer.rb +101 -0
  178. data/spec/support/shared_examples/integration/core/user.rb +72 -0
  179. data/spec/support/shared_examples/integration/core/yum.rb +115 -0
  180. data/spec/support/shared_examples/integration/core/zypper.rb +196 -0
  181. data/spec/{integration/remote/cluster_spec.rb → support/shared_examples/integration/remote/cluster.rb} +2 -2
  182. data/spec/support/shared_examples/integration/remote/cpu.rb +38 -0
  183. data/spec/support/shared_examples/integration/remote/env_spec.rb +33 -0
  184. data/spec/support/shared_examples/integration/remote/fstab.rb +89 -0
  185. data/spec/support/shared_examples/integration/remote/host.rb +65 -0
  186. data/spec/support/shared_examples/integration/remote/memory.rb +27 -0
  187. data/spec/support/shared_examples/integration/remote/os.rb +60 -0
  188. data/spec/support/shared_examples/integration/remote/remote_file.rb +172 -0
  189. metadata +185 -29
  190. data/spec/integration/core/apt_spec.rb +0 -119
  191. data/spec/integration/core/archive_spec.rb +0 -223
  192. data/spec/integration/core/disk_spec.rb +0 -93
  193. data/spec/integration/core/dmi_spec.rb +0 -36
  194. data/spec/integration/core/file_spec.rb +0 -359
  195. data/spec/integration/core/find_spec.rb +0 -52
  196. data/spec/integration/core/group_spec.rb +0 -64
  197. data/spec/integration/core/ip_spec.rb +0 -70
  198. data/spec/integration/core/path_spec.rb +0 -92
  199. data/spec/integration/core/socket_spec.rb +0 -29
  200. data/spec/integration/core/stat_spec.rb +0 -97
  201. data/spec/integration/core/stream_spec.rb +0 -114
  202. data/spec/integration/core/system_spec.rb +0 -142
  203. data/spec/integration/core/transfer_spec.rb +0 -103
  204. data/spec/integration/core/user_spec.rb +0 -74
  205. data/spec/integration/core/yum_spec.rb +0 -117
  206. data/spec/integration/core/zypper_spec.rb +0 -198
  207. data/spec/integration/remote/cpu_spec.rb +0 -40
  208. data/spec/integration/remote/env_spec.rb +0 -35
  209. data/spec/integration/remote/fstab_spec.rb +0 -91
  210. data/spec/integration/remote/host_spec.rb +0 -67
  211. data/spec/integration/remote/memory_spec.rb +0 -29
  212. data/spec/integration/remote/os_spec.rb +0 -62
  213. data/spec/integration/remote/remote_file_spec.rb +0 -174
  214. data/spec/zz_reboot_spec.rb +0 -46
@@ -0,0 +1,117 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.shared_examples 'apt' do |os_name, host_json, _spec_dir|
6
+ context "with #{os_name}" do
7
+ let(:host) do
8
+ Kanrisuru::Remote::Host.new(
9
+ host: host_json['hostname'],
10
+ username: host_json['username'],
11
+ keys: [host_json['ssh_key']]
12
+ )
13
+ end
14
+
15
+ after do
16
+ host.disconnect
17
+ end
18
+
19
+ it 'installs package' do
20
+ host.su('root')
21
+ result = host.apt('install', packages: %w[ffmpeg curl])
22
+ expect(result).to be_success
23
+
24
+ result = host.which('ffmpeg')
25
+ expect(result).to be_success
26
+ paths = result.map(&:path)
27
+ expect(paths).to include(match('ffmpeg'))
28
+
29
+ result = host.which('curl')
30
+ expect(result).to be_success
31
+ paths = result.map(&:path)
32
+ expect(paths).to include(match('curl'))
33
+ end
34
+
35
+ it 'removes installed packages' do
36
+ host.su('root')
37
+ result = host.apt('remove', packages: ['ffmpeg'])
38
+ expect(result).to be_success
39
+ end
40
+
41
+ it 'purges installed packages' do
42
+ host.su('root')
43
+ result = host.apt('purge', packages: ['ffmpeg'])
44
+ expect(result).to be_success
45
+ end
46
+
47
+ it 'removes unused packages' do
48
+ host.su('root')
49
+ result = host.apt('autoremove')
50
+ expect(result).to be_success
51
+ end
52
+
53
+ it 'cleans packages' do
54
+ host.su('root')
55
+ result = host.apt('clean')
56
+ expect(result).to be_success
57
+ end
58
+
59
+ it 'autocleans packages' do
60
+ host.su('root')
61
+ result = host.apt('autoclean')
62
+ expect(result).to be_success
63
+ end
64
+
65
+ it 'updates packages' do
66
+ host.su('root')
67
+ result = host.apt('update')
68
+ expect(result).to be_success
69
+ end
70
+
71
+ it 'upgrades packages' do
72
+ host.su('root')
73
+ result = host.apt('upgrade')
74
+ expect(result).to be_success
75
+ end
76
+
77
+ it 'fully upgrades packages' do
78
+ host.su('root')
79
+ result = host.apt('full-upgrade')
80
+ expect(result).to be_success
81
+ end
82
+
83
+ it 'shows details of listed packages' do
84
+ result = host.apt('show', packages: %w[wget curl git sudo])
85
+ expect(result).to be_success
86
+ end
87
+
88
+ it 'lists all packages' do
89
+ host.su('root')
90
+ result = host.apt('list')
91
+ expect(result).to be_success
92
+ end
93
+
94
+ it 'lists installed packages' do
95
+ host.su('root')
96
+ result = host.apt('list', installed: true)
97
+ expect(result).to be_success
98
+ end
99
+
100
+ it 'lists upgradable packages' do
101
+ host.su('root')
102
+ result = host.apt('list', upgradable: true)
103
+ expect(result).to be_success
104
+ end
105
+
106
+ it 'lists all versions for packages' do
107
+ host.su('root')
108
+ result = host.apt('list', all_versions: true)
109
+ expect(result).to be_success
110
+ end
111
+
112
+ it 'searches packages' do
113
+ result = host.apt('search', query: 'wget')
114
+ expect(result).to be_success
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,221 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.shared_examples 'archive' do |os_name, host_json, spec_dir|
6
+ context "with #{os_name}" do
7
+ before(:all) do
8
+ host = Kanrisuru::Remote::Host.new(
9
+ host: host_json['hostname'],
10
+ username: host_json['username'],
11
+ keys: [host_json['ssh_key']]
12
+ )
13
+
14
+ host.mkdir(spec_dir, silent: true)
15
+ host.disconnect
16
+ end
17
+
18
+ let(:host) do
19
+ Kanrisuru::Remote::Host.new(
20
+ host: host_json['hostname'],
21
+ username: host_json['username'],
22
+ keys: [host_json['ssh_key']]
23
+ )
24
+ end
25
+
26
+ after do
27
+ host.disconnect
28
+ end
29
+
30
+ after(:all) do
31
+ host = Kanrisuru::Remote::Host.new(
32
+ host: host_json['hostname'],
33
+ username: host_json['username'],
34
+ keys: [host_json['ssh_key']]
35
+ )
36
+
37
+ host.rmdir(spec_dir)
38
+ host.rmdir("#{spec_dir}/extract-tar-files") if host.dir?("#{spec_dir}/extract-tar-files")
39
+ host.disconnect
40
+ end
41
+
42
+ it 'tars an archive' do
43
+ archive = 'archive.tar'
44
+ archive2 = 'archive2.tar'
45
+ directory = spec_dir
46
+
47
+ host.touch("#{spec_dir}/test-file.txt")
48
+ host.touch("#{spec_dir}/test1.txt")
49
+ host.touch("#{spec_dir}/test2.txt")
50
+ host.touch("#{spec_dir}/test3.txt")
51
+
52
+ host.touch("#{spec_dir}/test1.config")
53
+ host.touch("#{spec_dir}/test2.config")
54
+ host.touch("#{spec_dir}/test3.config")
55
+
56
+ host.cd(spec_dir)
57
+ result = host.tar('create', archive, paths: ['*.txt'], exclude: 'test-file.txt', directory: directory)
58
+
59
+ expect(result.success?).to eq(true)
60
+
61
+ file = host.file("#{spec_dir}/#{archive}")
62
+
63
+ expect(file.path).to eq("#{spec_dir}/archive.tar")
64
+ expect(file.user).to eq(host_json['username'])
65
+
66
+ case os_name
67
+ when 'opensuse', 'sles'
68
+ expect(file.group).to eq('users')
69
+ else
70
+ expect(file.group).to eq(host_json['username'])
71
+ end
72
+
73
+ result = host.tar('list', archive, directory: directory)
74
+ expect(result.success?).to eq(true)
75
+ paths = result.map(&:path)
76
+ expect(paths.include?('test-file.txt')).to eq(false)
77
+
78
+ result = host.tar('append', archive, paths: 'test-file.txt', directory: directory)
79
+ expect(result.success?).to eq(true)
80
+
81
+ result = host.tar('list', archive, directory: directory)
82
+ paths = result.map(&:path)
83
+
84
+ expect(paths.include?('test-file.txt')).to eq(true)
85
+
86
+ result = host.tar('create', archive2, paths: '*.config', directory: directory)
87
+ expect(result.success?).to eq(true)
88
+
89
+ file = host.file("#{spec_dir}/#{archive2}")
90
+
91
+ expect(file.path).to eq("#{spec_dir}/archive2.tar")
92
+ expect(file.user).to eq(host_json['username'])
93
+
94
+ case os_name
95
+ when 'opensuse', 'sles'
96
+ expect(file.group).to eq('users')
97
+ else
98
+ expect(file.group).to eq(host_json['username'])
99
+ end
100
+
101
+ result = host.tar('concat', archive, paths: archive2, directory: directory)
102
+ expect(result.success?).to eq(true)
103
+
104
+ result = host.tar('list', archive, directory: directory)
105
+ expect(result.success?).to eq(true)
106
+ paths = result.map(&:path)
107
+
108
+ expect(paths.include?('test1.config')).to eq(true)
109
+ expect(paths.include?('test2.config')).to eq(true)
110
+ expect(paths.include?('test3.config')).to eq(true)
111
+
112
+ result = host.tar('diff', archive, directory: directory)
113
+ expect(result.success?).to eq(true)
114
+
115
+ result = host.tar('delete', archive, directory: directory, paths: 'test2.config')
116
+ expect(result.success?).to eq(true)
117
+
118
+ result = host.tar('list', archive, directory: directory)
119
+ expect(result.success?).to eq(true)
120
+ paths = result.map(&:path)
121
+ expect(paths.include?('test2.config')).to eq(false)
122
+
123
+ host.mkdir("#{spec_dir}/extract-tar-files", silent: true)
124
+ host.tar('extract', 'archive.tar', directory: "#{spec_dir}/extract-tar-files")
125
+
126
+ result = host.ls(path: "#{spec_dir}/extract-tar-files")
127
+ paths = result.map(&:path)
128
+
129
+ expect(paths.include?('test1.config')).to eq(true)
130
+ expect(paths.include?('test3.config')).to eq(true)
131
+ expect(paths.include?('test-file.txt')).to eq(true)
132
+ expect(paths.include?('test1.txt')).to eq(true)
133
+ expect(paths.include?('test2.txt')).to eq(true)
134
+ expect(paths.include?('test3.txt')).to eq(true)
135
+ end
136
+
137
+ it 'compresses archive while tar' do
138
+ archive = 'archive.tar'
139
+ directory = spec_dir
140
+
141
+ host.touch("#{spec_dir}/test1.log")
142
+ host.touch("#{spec_dir}/test2.log")
143
+ host.touch("#{spec_dir}/test3.log")
144
+
145
+ host.cd(spec_dir)
146
+ result = host.tar('create', "#{archive}.gz", compress: 'gzip', paths: ['*.log'], directory: directory)
147
+ expect(result.success?).to eq(true)
148
+
149
+ file = host.file("#{spec_dir}/#{archive}.gz")
150
+ expect(file.path).to eq("#{spec_dir}/archive.tar.gz")
151
+ expect(file.uid).to eq(1000)
152
+
153
+ case os_name
154
+ when 'opensuse', 'sles'
155
+ expect(file.gid).to eq(100)
156
+ else
157
+ expect(file.gid).to eq(1000)
158
+ end
159
+
160
+ case os_name
161
+ when 'debian', 'ubuntu'
162
+ result = host.tar('create', "#{archive}.bz", compress: 'bzip2', paths: ['*.log'], directory: directory)
163
+ expect(result.success?).to eq(true)
164
+
165
+ file = host.file("#{spec_dir}/#{archive}.bz")
166
+ expect(file.path).to eq("#{spec_dir}/archive.tar.bz")
167
+ expect(file.uid).to eq(1000)
168
+ expect(file.gid).to eq(1000)
169
+ end
170
+
171
+ # case os_name
172
+ # when 'opensuse', 'sles'
173
+ # expect(file.gid).to eq(100)
174
+ # else
175
+ # end
176
+
177
+ case os_name
178
+ when 'debian'
179
+ ## no op
180
+ else
181
+ result = host.tar('create', "#{archive}.xz", compress: 'xz', paths: ['*.log'], directory: directory)
182
+ expect(result.success?).to eq(true)
183
+
184
+ file = host.file("#{spec_dir}/#{archive}.xz")
185
+ expect(file.path).to eq("#{spec_dir}/archive.tar.xz")
186
+ expect(file.uid).to eq(1000)
187
+
188
+ case os_name
189
+ when 'opensuse', 'sles'
190
+ expect(file.gid).to eq(100)
191
+ else
192
+ expect(file.gid).to eq(1000)
193
+ end
194
+ end
195
+
196
+ case os_name
197
+ when 'centos', 'rhel', 'debian'
198
+ ## no op
199
+ else
200
+ result = host.tar('create', "#{archive}.lzma", compress: 'lzma', paths: ['*.log'], directory: directory)
201
+ expect(result.success?).to eq(true)
202
+
203
+ file = host.file("#{spec_dir}/#{archive}.lzma")
204
+ expect(file.path).to eq("#{spec_dir}/archive.tar.lzma")
205
+ expect(file.uid).to eq(1000)
206
+
207
+ case os_name
208
+ when 'opensuse', 'sles'
209
+ expect(file.gid).to eq(100)
210
+ else
211
+ expect(file.gid).to eq(1000)
212
+ end
213
+ end
214
+
215
+ expect do
216
+ host.tar('create', "#{archive}.lzop", compress: 'lzop', paths: ['*.log'],
217
+ directory: directory)
218
+ end.to raise_error(ArgumentError)
219
+ end
220
+ end
221
+ end
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.shared_examples 'disk' do |os_name, host_json, _spec_dir|
6
+ context "with #{os_name}" do
7
+ let(:host) do
8
+ Kanrisuru::Remote::Host.new(
9
+ host: host_json['hostname'],
10
+ username: host_json['username'],
11
+ keys: [host_json['ssh_key']]
12
+ )
13
+ end
14
+
15
+ after do
16
+ host.disconnect
17
+ end
18
+
19
+ it 'searches detail on block devices' do
20
+ host.su('root')
21
+ result = host.blkid
22
+ expect(result.success?).to eq(true)
23
+
24
+ device = result[0]
25
+ expect(device).to respond_to(
26
+ :name, :label, :type, :uuid,
27
+ :label_fatboot, :part_uuid, :uuid_sub
28
+ )
29
+
30
+ result = host.blkid(uuid: device.uuid)
31
+ expect(result.success?).to eq(true)
32
+ expect(result.data).to eq(device.name)
33
+
34
+ result = host.blkid(device: device.name)
35
+ # puts device.name
36
+ # puts result.inspect
37
+ expect(result.success?).to eq(true)
38
+ expect(result.data[0]).to respond_to(
39
+ :name, :label, :uuid, :type, :uuid_sub, :label_fatboot, :version, :usage,
40
+ :part_uuid, :part_entry_scheme, :part_entry_uuid, :part_entry_type,
41
+ :part_entry_number, :part_entry_offset, :part_entry_size, :part_entry_disk,
42
+ :minimum_io_size, :physical_sector_size, :logical_sector_size
43
+ )
44
+ end
45
+
46
+ it 'gets details on block devices' do
47
+ result = host.lsblk
48
+ expect(result.data).to be_instance_of(Array)
49
+
50
+ device = result[0]
51
+
52
+ expect(device).to respond_to(
53
+ :name, :maj_dev, :min_dev,
54
+ :removable_device, :readonly_device,
55
+ :owner, :group, :mode,
56
+ :fsize, :type, :mount_point,
57
+ :fs_type, :uuid, :children
58
+ )
59
+ end
60
+
61
+ it 'gets summarize disk usage' do
62
+ result = host.du(path: "#{host_json['home']}/.bashrc", summarize: true)
63
+ expect(result).to be_success
64
+ expect(result[0].path).to eq("#{host_json['home']}/.bashrc")
65
+ end
66
+
67
+ it 'gets all disk usage' do
68
+ result = host.du(path: host_json['home'])
69
+ expect(result).to be_success
70
+ expect(result.data.length).to be >= 2
71
+ end
72
+
73
+ it 'gets summarized disk usage root user' do
74
+ host.su('root')
75
+ result = host.du(path: '/etc', summarize: true)
76
+ expect(result).to be_success
77
+ expect(result[0].path).to eq('/etc')
78
+ end
79
+
80
+ it 'gets disk free for system' do
81
+ expect(host.df.data).to be_instance_of(Array)
82
+ expect(host.df(inodes: true).data).to be_instance_of(Array)
83
+ end
84
+
85
+ it 'gets disk usage for path' do
86
+ result = host.df(path: '/')
87
+ expect(result.data).to be_instance_of(Array)
88
+ expect(result[0].mount).to eq('/')
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.shared_examples 'dmi' do |os_name, host_json, _spec_dir|
6
+ context "with #{os_name}" do
7
+ let(:host) do
8
+ Kanrisuru::Remote::Host.new(
9
+ host: host_json['hostname'],
10
+ username: host_json['username'],
11
+ keys: [host_json['ssh_key']]
12
+ )
13
+ end
14
+
15
+ after do
16
+ host.disconnect
17
+ end
18
+
19
+ it 'parses dmi values' do
20
+ host.su('root')
21
+ result = host.dmi
22
+ expect(result).to be_success
23
+ end
24
+
25
+ it 'parses dmi values with types' do
26
+ host.su('root')
27
+ result = host.dmi(types: ['System', 3])
28
+ expect(result).to be_success
29
+
30
+ expect(result.find { |i| i.dmi_type == 'System' }).to be_instance_of(Kanrisuru::Core::Dmi::System)
31
+ expect(result.find { |i| i.dmi_type == 'Chassis' }).to be_instance_of(Kanrisuru::Core::Dmi::Chassis)
32
+ end
33
+ end
34
+ end