kanrisuru 0.10.0 → 0.12.1
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 +4 -4
- data/.github/CONTRIBUTING.md +9 -9
- data/.github/ISSUE_TEMPLATE/bug_report.md +7 -8
- data/.rspec +1 -1
- data/CHANGELOG.md +127 -102
- data/CODE_OF_CONDUCT.md +10 -10
- data/README.md +19 -90
- data/kanrisuru.gemspec +2 -1
- data/lib/kanrisuru/command.rb +7 -0
- data/lib/kanrisuru/core/archive.rb +11 -35
- data/lib/kanrisuru/core/disk.rb +0 -3
- data/lib/kanrisuru/core/dmi.rb +1 -1
- data/lib/kanrisuru/core/file.rb +4 -11
- data/lib/kanrisuru/core/find.rb +6 -11
- data/lib/kanrisuru/core/mount.rb +14 -15
- data/lib/kanrisuru/core/socket.rb +2 -1
- data/lib/kanrisuru/core/stream.rb +1 -2
- data/lib/kanrisuru/core/zypper.rb +6 -23
- data/lib/kanrisuru/os_package/collection.rb +58 -0
- data/lib/kanrisuru/os_package/define.rb +34 -0
- data/lib/kanrisuru/os_package/include.rb +163 -0
- data/lib/kanrisuru/os_package.rb +3 -245
- data/lib/kanrisuru/remote/cpu.rb +5 -1
- data/lib/kanrisuru/remote/fstab.rb +5 -5
- data/lib/kanrisuru/result.rb +5 -4
- data/lib/kanrisuru/util.rb +1 -1
- data/lib/kanrisuru/version.rb +1 -1
- data/spec/functional/core/apt_spec.rb +22 -30
- data/spec/functional/core/archive_spec.rb +96 -120
- data/spec/functional/core/find_spec.rb +94 -113
- data/spec/functional/core/mount_spec.rb +121 -0
- data/spec/functional/core/socket_spec.rb +23 -28
- data/spec/functional/core/stream_spec.rb +12 -12
- data/spec/functional/core/transfer_spec.rb +108 -131
- data/spec/functional/core/yum_spec.rb +58 -83
- data/spec/functional/remote/cluster_spec.rb +11 -2
- data/spec/functional/remote/cpu_spec.rb +104 -0
- data/spec/functional/remote/env_spec.rb +3 -5
- data/spec/helper/stub_network.rb +35 -16
- data/spec/helper/test_hosts.rb +11 -1
- data/spec/integration/core/apt_spec.rb +2 -3
- data/spec/integration/core/archive_spec.rb +8 -13
- data/spec/integration/core/disk_spec.rb +2 -3
- data/spec/integration/core/dmi_spec.rb +2 -3
- data/spec/integration/core/file_spec.rb +4 -14
- data/spec/integration/core/find_spec.rb +3 -3
- data/spec/integration/core/group_spec.rb +2 -3
- data/spec/integration/core/ip_spec.rb +2 -3
- data/spec/integration/core/path_spec.rb +2 -3
- data/spec/integration/core/socket_spec.rb +2 -4
- data/spec/integration/core/stat_spec.rb +2 -3
- data/spec/integration/core/stream_spec.rb +6 -9
- data/spec/integration/core/system_spec.rb +2 -4
- data/spec/integration/core/transfer_spec.rb +4 -9
- data/spec/integration/core/user_spec.rb +2 -4
- data/spec/integration/core/yum_spec.rb +2 -3
- data/spec/integration/core/zypper_spec.rb +5 -6
- data/spec/integration/remote/cpu_spec.rb +2 -3
- data/spec/integration/remote/env_spec.rb +2 -3
- data/spec/integration/remote/fstab_spec.rb +2 -3
- data/spec/integration/remote/host_spec.rb +2 -3
- data/spec/integration/remote/memory_spec.rb +2 -2
- data/spec/integration/remote/os_spec.rb +2 -3
- data/spec/integration/remote/remote_file_spec.rb +9 -15
- data/spec/spec_helper.rb +12 -3
- data/spec/unit/command_spec.rb +19 -1
- data/spec/unit/core/find_spec.rb +1 -1
- data/spec/unit/core/yum_spec.rb +1 -1
- data/spec/unit/mode_spec.rb +2 -2
- data/spec/unit/remote/cluster_spec.rb +3 -1
- data/spec/unit/remote/cpu_spec.rb +1 -2
- data/spec/unit/remote/env_spec.rb +1 -3
- data/spec/unit/util_spec.rb +13 -0
- metadata +23 -4
@@ -0,0 +1,104 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Kanrisuru::Remote::Cpu do
|
6
|
+
before(:all) do
|
7
|
+
StubNetwork.stub!
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
StubNetwork.unstub!
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'with metal' do
|
15
|
+
let(:host) do
|
16
|
+
Kanrisuru::Remote::Host.new(
|
17
|
+
host: 'metal-host',
|
18
|
+
username: 'ubuntu',
|
19
|
+
keys: ['id_rsa']
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
before do
|
24
|
+
StubNetwork.stub_command!(:lscpu) do |_args|
|
25
|
+
struct = Kanrisuru::Core::System::CPUArchitecture.new
|
26
|
+
struct.architecture = 'x86_64'
|
27
|
+
struct.cores = 48
|
28
|
+
struct.byte_order = 'Little Endian'
|
29
|
+
struct.address_sizes = ['46 bits physical', '48 bits virtual']
|
30
|
+
struct.operation_modes = %w[32-bit 64-bit]
|
31
|
+
struct.online_cpus = 0
|
32
|
+
struct.threads_per_core = 2
|
33
|
+
struct.cores_per_socket = 12
|
34
|
+
struct.sockets = 2
|
35
|
+
struct.numa_mode = nil
|
36
|
+
struct.vendor_id = 'GenuineIntel'
|
37
|
+
struct.cpu_family = 6
|
38
|
+
struct.model = 63
|
39
|
+
struct.model_name = 'Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz'
|
40
|
+
struct.stepping = 2
|
41
|
+
struct.cpu_mhz = 1200.16
|
42
|
+
struct.cpu_max_mhz = 3300.0
|
43
|
+
struct.cpu_min_mhz = 1200.0
|
44
|
+
struct.bogo_mips = nil
|
45
|
+
struct.virtualization = 'VT-x'
|
46
|
+
struct.hypervisor_vendor = nil
|
47
|
+
struct.virtualization_type = nil
|
48
|
+
struct.l1d_cache = '768 KiB'
|
49
|
+
struct.l1i_cache = '768 KiB'
|
50
|
+
struct.l2_cache = '6 MiB'
|
51
|
+
struct.l3_cache = '60 MiB'
|
52
|
+
struct.numa_nodes = 2
|
53
|
+
struct.vulnerabilities = [
|
54
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Itlb multihit',
|
55
|
+
'KVM: Mitigation: Split huge pages'),
|
56
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('L1tf',
|
57
|
+
'Mitigation; PTE Inversion; VMX conditional cache flushes, SMT vulnerable'),
|
58
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Mds',
|
59
|
+
'Mitigation; Clear CPU buffers; SMT vulnerable'),
|
60
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Meltdown', 'Mitigation; PTI'),
|
61
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Spec store bypass',
|
62
|
+
'Mitigation; Speculative Store Bypass disabled via prctl and seccomp'),
|
63
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Spectre v1',
|
64
|
+
'Mitigation; usercopy/swapgs barriers and __user pointer sanitization'),
|
65
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Spectre v2',
|
66
|
+
'Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP conditional, RSB filling'),
|
67
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Srbds', 'Not affected'),
|
68
|
+
Kanrisuru::Core::System::CPUArchitectureVulnerability.new('Tsx async abort', 'Not affected')
|
69
|
+
]
|
70
|
+
struct.flags = %w[fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
|
71
|
+
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti intel_ppin ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts md_clear flush_l1d]
|
72
|
+
struct
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
after do
|
77
|
+
StubNetwork.unstub_command!(:lscpu)
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'gets host cpu attributes' do
|
81
|
+
expect(host.cpu.architecture).to eq('x86_64')
|
82
|
+
expect(host.cpu.cores).to eq(48)
|
83
|
+
expect(host.cpu.byte_order).to eq('Little Endian')
|
84
|
+
expect(host.cpu.address_sizes).to eq(['46 bits physical', '48 bits virtual'])
|
85
|
+
expect(host.cpu.threads_per_core).to eq(2)
|
86
|
+
expect(host.cpu.cores_per_socket).to eq(12)
|
87
|
+
expect(host.cpu.sockets).to eq(2)
|
88
|
+
expect(host.cpu.vendor_id).to eq('GenuineIntel')
|
89
|
+
expect(host.cpu.cpu_family).to eq(6)
|
90
|
+
expect(host.cpu.model).to eq(63)
|
91
|
+
expect(host.cpu.model_name).to eq('Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz')
|
92
|
+
expect(host.cpu.cpu_mhz).to eq(1200.16)
|
93
|
+
expect(host.cpu.cpu_max_mhz).to eq(3300.0)
|
94
|
+
expect(host.cpu.cpu_min_mhz).to eq(1200.0)
|
95
|
+
expect(host.cpu.hypervisor).to be_nil
|
96
|
+
expect(host.cpu.virtualization_type).to be_nil
|
97
|
+
# expect(host.cpu.l1d_cache).to eq("768 KiB")
|
98
|
+
# expect(host.cpu.l1i_cache).to eq("768 KiB")
|
99
|
+
# expect(host.cpu.l2_cache).to eq("6 MiB")
|
100
|
+
# expect(host.cpu.l3_cache).to eq("60 MiB")
|
101
|
+
expect(host.cpu.numa_nodes).to eq(2)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -3,13 +3,12 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
RSpec.describe Kanrisuru::Remote::Env do
|
6
|
-
|
7
|
-
let (:env) { Kanrisuru::Remote::Env.new }
|
6
|
+
let(:env) { described_class.new }
|
8
7
|
|
9
8
|
it 'adds a environment variable' do
|
10
9
|
env['VAR1'] = 'hello'
|
11
10
|
expect(env.count).to eq(1)
|
12
|
-
expect(env.to_h).to eq({'VAR1' => 'hello'})
|
11
|
+
expect(env.to_h).to eq({ 'VAR1' => 'hello' })
|
13
12
|
expect(env.to_s).to eq('export VAR1=hello;')
|
14
13
|
expect(env['VAR1']).to eq('hello')
|
15
14
|
end
|
@@ -19,7 +18,7 @@ RSpec.describe Kanrisuru::Remote::Env do
|
|
19
18
|
env['var2'] = 'world'
|
20
19
|
|
21
20
|
expect(env.count).to eq(2)
|
22
|
-
expect(env.to_h).to eq({'VAR1' => 'hello', 'VAR2' => 'world'})
|
21
|
+
expect(env.to_h).to eq({ 'VAR1' => 'hello', 'VAR2' => 'world' })
|
23
22
|
expect(env.to_s).to eq('export VAR1=hello; export VAR2=world;')
|
24
23
|
expect(env['VAR1']).to eq('hello')
|
25
24
|
expect(env['VAR2']).to eq('world')
|
@@ -46,5 +45,4 @@ RSpec.describe Kanrisuru::Remote::Env do
|
|
46
45
|
|
47
46
|
expect(env.count).to eq(0)
|
48
47
|
end
|
49
|
-
|
50
48
|
end
|
data/spec/helper/stub_network.rb
CHANGED
@@ -17,7 +17,7 @@ class StubNetwork
|
|
17
17
|
|
18
18
|
unless Kanrisuru::Remote::Os.instance_methods(false).include?(:initialize_alias)
|
19
19
|
Kanrisuru::Remote::Os.class_eval do
|
20
|
-
alias_method :initialize_alias, :initialize
|
20
|
+
alias_method :initialize_alias, :initialize
|
21
21
|
define_method :initialize do |host|
|
22
22
|
@host = host
|
23
23
|
|
@@ -32,25 +32,46 @@ class StubNetwork
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
|
36
|
-
Kanrisuru::Result.class_eval do
|
37
|
-
alias_method :initialize_alias, :initialize
|
38
|
-
def initialize(command)
|
39
|
-
@command = command
|
40
|
-
@data = nil
|
35
|
+
return if Kanrisuru::Result.instance_methods(false).include?(:initialize_alias)
|
41
36
|
|
42
|
-
|
37
|
+
Kanrisuru::Result.class_eval do
|
38
|
+
alias_method :initialize_alias, :initialize
|
39
|
+
def initialize(command, parse_result = false, &block)
|
40
|
+
@command = command
|
41
|
+
@data = nil
|
42
|
+
|
43
|
+
@data = block.call(@command) if @command.success? && block_given? && parse_result
|
44
|
+
@error = @command.to_a if @command.failure?
|
45
|
+
|
46
|
+
## Define getter methods on result that maps to
|
47
|
+
## the same methods of a data struct.
|
48
|
+
return unless @command.success? && Kanrisuru::Util.present?(@data) && @data.class.ancestors.include?(Struct)
|
49
|
+
|
50
|
+
method_names = @data.members
|
51
|
+
self.class.class_eval do
|
52
|
+
method_names.each do |method_name|
|
53
|
+
define_method method_name do
|
54
|
+
@data[method_name]
|
55
|
+
end
|
56
|
+
end
|
43
57
|
end
|
44
58
|
end
|
45
59
|
end
|
46
60
|
end
|
47
61
|
|
48
|
-
def stub_command!(method, &block)
|
62
|
+
def stub_command!(method, opts = {}, &block)
|
49
63
|
Kanrisuru::Remote::Host.class_eval do
|
50
64
|
alias_method "#{method}_alias", method
|
51
65
|
|
52
66
|
define_method(method) do |*args|
|
53
|
-
|
67
|
+
command = Kanrisuru::Command.new(method.to_s)
|
68
|
+
|
69
|
+
status = opts[:status] || 0
|
70
|
+
command.handle_status(status)
|
71
|
+
|
72
|
+
Kanrisuru::Result.new(command, true) do |_cmd|
|
73
|
+
block.call(args)
|
74
|
+
end
|
54
75
|
end
|
55
76
|
end
|
56
77
|
end
|
@@ -67,11 +88,11 @@ class StubNetwork
|
|
67
88
|
end
|
68
89
|
|
69
90
|
Kanrisuru::Remote::Os.class_eval do
|
70
|
-
alias_method :initialize, :initialize_alias
|
91
|
+
alias_method :initialize, :initialize_alias
|
71
92
|
end
|
72
93
|
|
73
94
|
Kanrisuru::Result.class_eval do
|
74
|
-
alias_method :initialize, :initialize_alias
|
95
|
+
alias_method :initialize, :initialize_alias
|
75
96
|
end
|
76
97
|
end
|
77
98
|
|
@@ -106,13 +127,11 @@ class StubNetwork
|
|
106
127
|
hardware_platform: 'x86_64',
|
107
128
|
processor: 'x86_64',
|
108
129
|
release: 'opensuse-leap',
|
109
|
-
version:15.2
|
130
|
+
version: 15.2
|
110
131
|
}
|
111
132
|
}
|
112
133
|
|
113
|
-
defaults[name].key?(property)
|
114
|
-
defaults[name][property] : nil
|
134
|
+
defaults[name][property] if defaults[name].key?(property)
|
115
135
|
end
|
116
|
-
|
117
136
|
end
|
118
137
|
end
|
data/spec/helper/test_hosts.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'securerandom'
|
4
|
+
|
3
5
|
class TestHosts
|
4
6
|
class << self
|
5
7
|
def each_os(opts = {}, &block)
|
@@ -7,7 +9,10 @@ class TestHosts
|
|
7
9
|
next unless test?(os_name)
|
8
10
|
next if opts[:only] && !only?(opts, os_name)
|
9
11
|
|
10
|
-
|
12
|
+
host_json = TestHosts.host(os_name)
|
13
|
+
spec_dir = spec_dir(host_json)
|
14
|
+
|
15
|
+
block.call(os_name, host_json, spec_dir)
|
11
16
|
end
|
12
17
|
end
|
13
18
|
|
@@ -15,6 +20,11 @@ class TestHosts
|
|
15
20
|
hosts(name)
|
16
21
|
end
|
17
22
|
|
23
|
+
def spec_dir(host_json)
|
24
|
+
random_string = SecureRandom.hex
|
25
|
+
"#{host_json['home']}/.kanrisuru_spec_files_#{random_string[0..5]}"
|
26
|
+
end
|
27
|
+
|
18
28
|
def only?(opts, name)
|
19
29
|
((opts[:only].instance_of?(Array) && opts[:only].include?(name)) ||
|
20
30
|
(opts[:only].instance_of?(String) && opts[:only] == name))
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os(only: %w[debian ubuntu]) do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Apt do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -2,22 +2,20 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json, spec_dir|
|
6
|
+
RSpec.describe Kanrisuru::Core::Archive do
|
7
7
|
context "with #{os_name}" do
|
8
8
|
before(:all) do
|
9
|
-
host_json = TestHosts.host(os_name)
|
10
9
|
host = Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
12
11
|
username: host_json['username'],
|
13
12
|
keys: [host_json['ssh_key']]
|
14
13
|
)
|
15
14
|
|
16
|
-
host.mkdir(
|
15
|
+
host.mkdir(spec_dir, silent: true)
|
17
16
|
host.disconnect
|
18
17
|
end
|
19
18
|
|
20
|
-
let(:host_json) { TestHosts.host(os_name) }
|
21
19
|
let(:host) do
|
22
20
|
Kanrisuru::Remote::Host.new(
|
23
21
|
host: host_json['hostname'],
|
@@ -26,22 +24,19 @@ RSpec.describe Kanrisuru::Core::Archive do
|
|
26
24
|
)
|
27
25
|
end
|
28
26
|
|
29
|
-
let(:spec_dir) { "#{host_json['home']}/.kanrisuru_spec_files" }
|
30
|
-
|
31
27
|
after do
|
32
28
|
host.disconnect
|
33
29
|
end
|
34
30
|
|
35
31
|
after(:all) do
|
36
|
-
host_json = TestHosts.host(os_name)
|
37
32
|
host = Kanrisuru::Remote::Host.new(
|
38
33
|
host: host_json['hostname'],
|
39
34
|
username: host_json['username'],
|
40
35
|
keys: [host_json['ssh_key']]
|
41
36
|
)
|
42
37
|
|
43
|
-
host.rmdir(
|
44
|
-
host.rmdir("#{
|
38
|
+
host.rmdir(spec_dir)
|
39
|
+
host.rmdir("#{spec_dir}/extract-tar-files") if host.dir?("#{spec_dir}/extract-tar-files")
|
45
40
|
host.disconnect
|
46
41
|
end
|
47
42
|
|
@@ -126,10 +121,10 @@ RSpec.describe Kanrisuru::Core::Archive do
|
|
126
121
|
paths = result.map(&:path)
|
127
122
|
expect(paths.include?('test2.config')).to eq(false)
|
128
123
|
|
129
|
-
host.mkdir("#{
|
130
|
-
host.tar('extract', 'archive.tar', directory: "#{
|
124
|
+
host.mkdir("#{spec_dir}/extract-tar-files", silent: true)
|
125
|
+
host.tar('extract', 'archive.tar', directory: "#{spec_dir}/extract-tar-files")
|
131
126
|
|
132
|
-
result = host.ls(path: "#{
|
127
|
+
result = host.ls(path: "#{spec_dir}/extract-tar-files")
|
133
128
|
paths = result.map(&:path)
|
134
129
|
|
135
130
|
expect(paths.include?('test1.config')).to eq(true)
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Disk do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Dmi do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -2,22 +2,20 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json, spec_dir|
|
6
|
+
RSpec.describe Kanrisuru::Core::File do
|
7
7
|
context "with #{os_name}" do
|
8
8
|
before(:all) do
|
9
|
-
host_json = TestHosts.host(os_name)
|
10
9
|
host = Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
12
11
|
username: host_json['username'],
|
13
12
|
keys: [host_json['ssh_key']]
|
14
13
|
)
|
15
14
|
|
16
|
-
host.mkdir(
|
15
|
+
host.mkdir(spec_dir, silent: true)
|
17
16
|
host.disconnect
|
18
17
|
end
|
19
18
|
|
20
|
-
let(:host_json) { TestHosts.host(os_name) }
|
21
19
|
let(:host) do
|
22
20
|
Kanrisuru::Remote::Host.new(
|
23
21
|
host: host_json['hostname'],
|
@@ -26,25 +24,18 @@ RSpec.describe Kanrisuru::Core::File do
|
|
26
24
|
)
|
27
25
|
end
|
28
26
|
|
29
|
-
let(:spec_dir) { "#{host_json['home']}/.kanrisuru_spec_files" }
|
30
|
-
|
31
27
|
after do
|
32
28
|
host.disconnect
|
33
29
|
end
|
34
30
|
|
35
31
|
after(:all) do
|
36
|
-
host_json = TestHosts.host(os_name)
|
37
32
|
host = Kanrisuru::Remote::Host.new(
|
38
33
|
host: host_json['hostname'],
|
39
34
|
username: host_json['username'],
|
40
35
|
keys: [host_json['ssh_key']]
|
41
36
|
)
|
42
37
|
|
43
|
-
host.rm(
|
44
|
-
if host.dir?("#{host_json['home']}/extract-tar-files")
|
45
|
-
host.rm("#{host_json['home']}/extract-tar-files", force: true,
|
46
|
-
recursive: true)
|
47
|
-
end
|
38
|
+
host.rm(spec_dir, force: true, recursive: true)
|
48
39
|
host.disconnect
|
49
40
|
end
|
50
41
|
|
@@ -356,7 +347,6 @@ RSpec.describe Kanrisuru::Core::File do
|
|
356
347
|
data = host.cat('/etc/hosts').command.raw_result
|
357
348
|
doc = data.map(&:lines).flatten
|
358
349
|
|
359
|
-
lines = doc.length
|
360
350
|
words = doc.map(&:split).flatten
|
361
351
|
chars = doc.map(&:length).flatten
|
362
352
|
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Find do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -19,6 +18,7 @@ RSpec.describe Kanrisuru::Core::Find do
|
|
19
18
|
end
|
20
19
|
|
21
20
|
it 'finds home directory' do
|
21
|
+
host.su('root')
|
22
22
|
result = host.find(paths: '/home')
|
23
23
|
home = result.find { |item| item.path == host_json['home'] }
|
24
24
|
expect(home.path).to eq(host_json['home'])
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Group do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::IP do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Path do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -2,11 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Socket do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
|
-
|
10
8
|
let(:host) do
|
11
9
|
Kanrisuru::Remote::Host.new(
|
12
10
|
host: host_json['hostname'],
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::Stat do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
TestHosts.each_os do |os_name, host_json, spec_dir|
|
6
|
+
RSpec.describe Kanrisuru::Core::Stream do
|
5
7
|
context "with #{os_name}" do
|
6
8
|
before(:all) do
|
7
|
-
host_json = TestHosts.host(os_name)
|
8
9
|
host = Kanrisuru::Remote::Host.new(
|
9
10
|
host: host_json['hostname'],
|
10
11
|
username: host_json['username'],
|
11
12
|
keys: [host_json['ssh_key']]
|
12
13
|
)
|
13
14
|
|
14
|
-
host.mkdir(
|
15
|
+
host.mkdir(spec_dir, silent: true)
|
15
16
|
host.disconnect
|
16
17
|
end
|
17
18
|
|
18
|
-
let(:host_json) { TestHosts.host(os_name) }
|
19
19
|
let(:host) do
|
20
20
|
Kanrisuru::Remote::Host.new(
|
21
21
|
host: host_json['hostname'],
|
@@ -24,21 +24,18 @@ RSpec.describe Kanrisuru::Core::Stream do
|
|
24
24
|
)
|
25
25
|
end
|
26
26
|
|
27
|
-
let(:spec_dir) { "#{host_json['home']}/.kanrisuru_spec_files" }
|
28
|
-
|
29
27
|
after do
|
30
28
|
host.disconnect
|
31
29
|
end
|
32
30
|
|
33
31
|
after(:all) do
|
34
|
-
host_json = TestHosts.host(os_name)
|
35
32
|
host = Kanrisuru::Remote::Host.new(
|
36
33
|
host: host_json['hostname'],
|
37
34
|
username: host_json['username'],
|
38
35
|
keys: [host_json['ssh_key']]
|
39
36
|
)
|
40
37
|
|
41
|
-
host.rmdir(
|
38
|
+
host.rmdir(spec_dir)
|
42
39
|
host.disconnect
|
43
40
|
end
|
44
41
|
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::System do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -107,7 +106,6 @@ RSpec.describe Kanrisuru::Core::System do
|
|
107
106
|
host.su('root')
|
108
107
|
|
109
108
|
result = host.last(failed_attempts: true)
|
110
|
-
puts result.data
|
111
109
|
expect(result).to be_success
|
112
110
|
end
|
113
111
|
|
@@ -2,22 +2,20 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json, spec_dir|
|
6
|
+
RSpec.describe Kanrisuru::Core::File do
|
7
7
|
context "with #{os_name}" do
|
8
8
|
before(:all) do
|
9
|
-
host_json = TestHosts.host(os_name)
|
10
9
|
host = Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
12
11
|
username: host_json['username'],
|
13
12
|
keys: [host_json['ssh_key']]
|
14
13
|
)
|
15
14
|
|
16
|
-
host.mkdir(
|
15
|
+
host.mkdir(spec_dir, silent: true)
|
17
16
|
host.disconnect
|
18
17
|
end
|
19
18
|
|
20
|
-
let(:host_json) { TestHosts.host(os_name) }
|
21
19
|
let(:host) do
|
22
20
|
Kanrisuru::Remote::Host.new(
|
23
21
|
host: host_json['hostname'],
|
@@ -26,21 +24,18 @@ RSpec.describe Kanrisuru::Core::File do
|
|
26
24
|
)
|
27
25
|
end
|
28
26
|
|
29
|
-
let(:spec_dir) { "#{host_json['home']}/.kanrisuru_spec_files" }
|
30
|
-
|
31
27
|
after do
|
32
28
|
host.disconnect
|
33
29
|
end
|
34
30
|
|
35
31
|
after(:all) do
|
36
|
-
host_json = TestHosts.host(os_name)
|
37
32
|
host = Kanrisuru::Remote::Host.new(
|
38
33
|
host: host_json['hostname'],
|
39
34
|
username: host_json['username'],
|
40
35
|
keys: [host_json['ssh_key']]
|
41
36
|
)
|
42
37
|
|
43
|
-
host.rmdir(
|
38
|
+
host.rmdir(spec_dir)
|
44
39
|
host.disconnect
|
45
40
|
end
|
46
41
|
|
@@ -2,10 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
TestHosts.each_os do |os_name, host_json|
|
6
|
+
RSpec.describe Kanrisuru::Core::User do
|
7
7
|
context "with #{os_name}" do
|
8
|
-
let(:host_json) { TestHosts.host(os_name) }
|
9
8
|
let(:host) do
|
10
9
|
Kanrisuru::Remote::Host.new(
|
11
10
|
host: host_json['hostname'],
|
@@ -19,7 +18,6 @@ RSpec.describe Kanrisuru::Core::User do
|
|
19
18
|
end
|
20
19
|
|
21
20
|
after(:all) do
|
22
|
-
host_json = TestHosts.host(os_name)
|
23
21
|
host = Kanrisuru::Remote::Host.new(
|
24
22
|
host: host_json['hostname'],
|
25
23
|
username: host_json['username'],
|