kanrisuru 0.14.0 → 0.16.2

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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +5 -5
  4. data/kanrisuru.gemspec +7 -3
  5. data/lib/kanrisuru/command.rb +16 -3
  6. data/lib/kanrisuru/core/apt/parsers/base.rb +1 -1
  7. data/lib/kanrisuru/core/disk/commands/lsblk.rb +6 -11
  8. data/lib/kanrisuru/core/disk/constants.rb +9 -0
  9. data/lib/kanrisuru/core/disk/parser.rb +1 -0
  10. data/lib/kanrisuru/core/disk/parsers/lsblk_version.rb +21 -0
  11. data/lib/kanrisuru/core/disk.rb +1 -0
  12. data/lib/kanrisuru/core/dmi/commands/dmi.rb +1 -1
  13. data/lib/kanrisuru/core/file/commands/chmod.rb +1 -1
  14. data/lib/kanrisuru/core/file/commands/copy.rb +1 -3
  15. data/lib/kanrisuru/core/file/commands/mkdir.rb +11 -6
  16. data/lib/kanrisuru/core/file/commands/rm.rb +4 -1
  17. data/lib/kanrisuru/core/file/commands/touch.rb +2 -1
  18. data/lib/kanrisuru/core/ip/commands/address.rb +64 -47
  19. data/lib/kanrisuru/core/ip/commands/address_label.rb +32 -16
  20. data/lib/kanrisuru/core/ip/commands/link.rb +96 -54
  21. data/lib/kanrisuru/core/ip/commands/link_set_opts.rb +61 -0
  22. data/lib/kanrisuru/core/ip/commands/link_type_opts.rb +313 -0
  23. data/lib/kanrisuru/core/ip/commands/maddress.rb +22 -13
  24. data/lib/kanrisuru/core/ip/commands/neighbour.rb +49 -32
  25. data/lib/kanrisuru/core/ip/commands/route.rb +130 -93
  26. data/lib/kanrisuru/core/ip/commands/rule.rb +37 -22
  27. data/lib/kanrisuru/core/ip/commands.rb +5 -3
  28. data/lib/kanrisuru/core/ip/constants.rb +12 -0
  29. data/lib/kanrisuru/core/ip/parser.rb +1 -0
  30. data/lib/kanrisuru/core/ip/parsers/version.rb +15 -0
  31. data/lib/kanrisuru/core/ip.rb +10 -7
  32. data/lib/kanrisuru/core/system/commands/kill.rb +1 -1
  33. data/lib/kanrisuru/core/user/commands/create_user.rb +9 -17
  34. data/lib/kanrisuru/core/user/commands/delete_user.rb +1 -1
  35. data/lib/kanrisuru/core/user/commands/update_user.rb +14 -23
  36. data/lib/kanrisuru/core/zypper/commands/add_repo.rb +1 -8
  37. data/lib/kanrisuru/core/zypper/commands/add_service.rb +4 -2
  38. data/lib/kanrisuru/core/zypper/commands/info.rb +1 -2
  39. data/lib/kanrisuru/core/zypper/commands/install.rb +2 -3
  40. data/lib/kanrisuru/core/zypper/commands/modify_repo.rb +1 -7
  41. data/lib/kanrisuru/core/zypper/commands/modify_service.rb +3 -1
  42. data/lib/kanrisuru/core/zypper/commands/remove.rb +1 -2
  43. data/lib/kanrisuru/core/zypper/commands/remove_repo.rb +3 -3
  44. data/lib/kanrisuru/core/zypper/commands/remove_service.rb +6 -1
  45. data/lib/kanrisuru/core/zypper/commands/search.rb +1 -3
  46. data/lib/kanrisuru/core/zypper/commands/source_install.rb +2 -0
  47. data/lib/kanrisuru/core/zypper/commands.rb +10 -1
  48. data/lib/kanrisuru/os_package.rb +2 -0
  49. data/lib/kanrisuru/remote/host.rb +1 -3
  50. data/lib/kanrisuru/result.rb +15 -0
  51. data/lib/kanrisuru/version.rb +1 -1
  52. data/spec/functional/core/archive_spec.rb +1 -1
  53. data/spec/functional/core/disk_spec.rb +77 -0
  54. data/spec/functional/core/dmi_spec.rb +78 -0
  55. data/spec/functional/core/file_spec.rb +284 -0
  56. data/spec/functional/core/group_spec.rb +62 -0
  57. data/spec/functional/core/ip_address_label_spec.rb +81 -0
  58. data/spec/functional/core/ip_address_spec.rb +95 -0
  59. data/spec/functional/core/ip_link_spec.rb +814 -0
  60. data/spec/functional/core/ip_maddress_spec.rb +78 -0
  61. data/spec/functional/core/ip_neighbour_spec.rb +119 -0
  62. data/spec/functional/core/ip_route_spec.rb +174 -0
  63. data/spec/functional/core/ip_rule_spec.rb +75 -0
  64. data/spec/functional/core/ip_spec.rb +27 -0
  65. data/spec/functional/core/system_spec.rb +135 -0
  66. data/spec/functional/core/user_spec.rb +97 -0
  67. data/spec/functional/core/zypper_spec.rb +708 -0
  68. data/spec/functional/result_spec.rb +91 -44
  69. data/spec/helper/stub_network.rb +7 -3
  70. data/spec/support/shared_examples/integration/core/transfer.rb +1 -1
  71. data/spec/unit/command_spec.rb +2 -0
  72. data/spec/unit/core/ip_spec.rb +12 -0
  73. metadata +25 -4
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Core::IP 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
+ %w[maddress maddr m].each do |object_variant|
23
+ context "with ip #{object_variant}" do
24
+ context 'with json support' do
25
+ before(:all) do
26
+ StubNetwork.stub_command!(:ip_version) do
27
+ Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION
28
+ end
29
+ end
30
+
31
+ after(:all) do
32
+ StubNetwork.unstub_command!(:ip_version)
33
+ end
34
+
35
+ %w[show list].each do |action_variant|
36
+ it "prepares #{action_variant} command" do
37
+ expect_command(host.ip(object_variant, action_variant), 'ip -json maddress show')
38
+ expect_command(host.ip(object_variant, action_variant, {
39
+ dev: 'eth0',
40
+ family: 'inet'
41
+ }), 'ip -json -family inet maddress show dev eth0')
42
+ end
43
+ end
44
+ end
45
+
46
+ context 'without json support' do
47
+ before(:all) do
48
+ StubNetwork.stub_command!(:ip_version) do
49
+ Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION - 23
50
+ end
51
+ end
52
+
53
+ after(:all) do
54
+ StubNetwork.unstub_command!(:ip_version)
55
+ end
56
+
57
+ %w[show list].each do |action_variant|
58
+ it "prepares #{action_variant} command" do
59
+ expect_command(host.ip(object_variant, action_variant), 'ip maddress show')
60
+ expect_command(host.ip(object_variant, action_variant, {
61
+ dev: 'eth0',
62
+ family: 'inet'
63
+ }), 'ip -family inet maddress show dev eth0')
64
+ end
65
+ end
66
+ end
67
+
68
+ %w[add delete del].each do |action_variant|
69
+ it "prepares #{action_variant} command" do
70
+ expect_command(host.ip(object_variant, action_variant, {
71
+ address: '01:80:c2:00:00:0e',
72
+ dev: 'eth0'
73
+ }), "ip maddress #{action_variant} address 01:80:c2:00:00:0e dev eth0")
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,119 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Core::IP 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
+ %w[neighbour neigh n].each do |object_variant|
23
+ context "with ip #{object_variant}" do
24
+ context 'with json support' do
25
+ before(:all) do
26
+ StubNetwork.stub_command!(:ip_version) do
27
+ Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION
28
+ end
29
+ end
30
+
31
+ after(:all) do
32
+ StubNetwork.unstub_command!(:ip_version)
33
+ end
34
+
35
+ %w[show list].each do |action_variant|
36
+ it "prepares #{action_variant} command" do
37
+ expect_command(host.ip(object_variant), 'ip -json neighbour show')
38
+ expect_command(host.ip(object_variant, {
39
+ stats: true,
40
+ to: '10.10.10.10',
41
+ dev: 'ens3',
42
+ vrf: 'red',
43
+ proxy: true,
44
+ unused: true,
45
+ nud: 'all'
46
+ }), 'ip -json -s neighbour show to 10.10.10.10 dev ens3 nud all proxy unused')
47
+ end
48
+ end
49
+ end
50
+
51
+ context 'without json support' do
52
+ before(:all) do
53
+ StubNetwork.stub_command!(:ip_version) do
54
+ Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION - 10
55
+ end
56
+ end
57
+
58
+ after(:all) do
59
+ StubNetwork.unstub_command!(:ip_version)
60
+ end
61
+
62
+ %w[show list].each do |action_variant|
63
+ it "prepares #{action_variant} command" do
64
+ expect_command(host.ip(object_variant), 'ip neighbour show')
65
+ expect_command(host.ip(object_variant, {
66
+ stats: true,
67
+ to: '10.10.10.10',
68
+ dev: 'ens3',
69
+ vrf: 'red',
70
+ proxy: true,
71
+ unused: true,
72
+ nud: 'all'
73
+ }), 'ip -s neighbour show to 10.10.10.10 dev ens3 nud all proxy unused')
74
+ end
75
+ end
76
+ end
77
+
78
+ %w[add change replace].each do |action_variant|
79
+ it "prepares #{action_variant} command" do
80
+ expect_command(host.ip(object_variant, action_variant, {
81
+ to: '192.168.16.14',
82
+ dev: 'eno1',
83
+ proxy: true,
84
+ router: true,
85
+ extern_learn: true,
86
+ permanent: true,
87
+ nud: 'probe',
88
+ lladdr: '17:39:D1:24:53:CF'
89
+ }), "ip neighbour #{action_variant} to 192.168.16.14 dev eno1 lladdr 17:39:D1:24:53:CF nud probe proxy router extern_learn")
90
+ end
91
+ end
92
+
93
+ %w[delete del].each do |action_variant|
94
+ it "prepares #{action_variant} command" do
95
+ expect_command(host.ip(object_variant, action_variant, {
96
+ to: '192.168.16.14',
97
+ dev: 'eno1',
98
+ proxy: true,
99
+ router: true,
100
+ extern_learn: true,
101
+ permanent: true
102
+ }), "ip neighbour #{action_variant} to 192.168.16.14 dev eno1 proxy router extern_learn")
103
+ end
104
+ end
105
+
106
+ it 'prepares flush command' do
107
+ expect_command(host.ip(object_variant, 'flush', {
108
+ stats: true,
109
+ to: '10.10.10.10',
110
+ dev: 'ens3',
111
+ vrf: 'red',
112
+ proxy: true,
113
+ unused: true,
114
+ nud: 'all'
115
+ }), 'ip -s neighbour flush to 10.10.10.10 dev ens3 nud all unused')
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,174 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Core::IP 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
+ %w[route r ro rou rout].each do |object_variant|
23
+ context "with ip #{object_variant}" do
24
+ context 'with json support' do
25
+ before(:all) do
26
+ StubNetwork.stub_command!(:ip_version) do
27
+ Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION
28
+ end
29
+ end
30
+
31
+ after(:all) do
32
+ StubNetwork.unstub_command!(:ip_version)
33
+ end
34
+
35
+ %w[show list].each do |action_variant|
36
+ it "prepares #{action_variant} command" do
37
+ expect_command(host.ip(object_variant), 'ip -json route show')
38
+ expect_command(host.ip(object_variant, {
39
+ family: 'inet',
40
+ to: '10.0/16',
41
+ from: '10.1/16',
42
+ dev: 'eno4',
43
+ protocol: 'kernel',
44
+ dsfield: '0x30',
45
+ table: 'all',
46
+ vrf: 'blue',
47
+ cloned: true,
48
+ cached: true,
49
+ via: '10.0.0.1',
50
+ src: '10.5.5.5',
51
+ realms: '6'
52
+ }), 'ip -json -family inet route show to 10.0/16 dev eno4 protocol kernel table all dsfield 0x30 via 10.0.0.1 vrf blue src 10.5.5.5 realms 6 cloned cached')
53
+ end
54
+ end
55
+ end
56
+
57
+ context 'without json support' do
58
+ before(:all) do
59
+ StubNetwork.stub_command!(:ip_version) do
60
+ Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION - 33
61
+ end
62
+ end
63
+
64
+ after(:all) do
65
+ StubNetwork.unstub_command!(:ip_version)
66
+ end
67
+
68
+ %w[show list].each do |action_variant|
69
+ it "prepares #{action_variant} command" do
70
+ expect_command(host.ip(object_variant), 'ip route show')
71
+ expect_command(host.ip(object_variant, {
72
+ family: 'inet',
73
+ to: '10.0/16',
74
+ from: '10.1/16',
75
+ dev: 'eno4',
76
+ protocol: 'kernel',
77
+ dsfield: '0x30',
78
+ table: 'all',
79
+ vrf: 'blue',
80
+ cloned: true,
81
+ cached: true,
82
+ via: '10.0.0.1',
83
+ src: '10.5.5.5',
84
+ realms: '6'
85
+ }), 'ip -family inet route show to 10.0/16 dev eno4 protocol kernel table all dsfield 0x30 via 10.0.0.1 vrf blue src 10.5.5.5 realms 6 cloned cached')
86
+ end
87
+ end
88
+ end
89
+
90
+ %w[add change append del delete replace].each do |action_variant|
91
+ it "prepares #{action_variant} command" do
92
+ expect_command(host.ip(object_variant, action_variant, {
93
+ dev: 'eno2',
94
+ mtu: 1600,
95
+ congctl: 'test'
96
+ }), "ip route #{action_variant} dev eno2 mtu 1600 congctl test")
97
+
98
+ expect_command(host.ip(object_variant, action_variant, {
99
+ to: '0/0',
100
+ tos: '0x28',
101
+ dsfield: '0x98',
102
+ metric: 32,
103
+ table: 254,
104
+ vrf: 'green',
105
+ src: '172.3.3.3',
106
+ realm: '6',
107
+ mtu: 1600,
108
+ mtu_lock: true,
109
+ window: 3,
110
+ rtt: 4,
111
+ rttvar: 12,
112
+ rto_min: 1,
113
+ sshthresh: 0,
114
+ cwnd: 12,
115
+ initcwnd: 5,
116
+ initrwnd: 5,
117
+ features: 'ecn',
118
+ quickack: 'true',
119
+ fastopen_no_cookie: 'true',
120
+ congctl: 'test',
121
+ congctl_lock: true,
122
+ advmss: 7,
123
+ reordering: 3,
124
+ next_hop: {
125
+ via: '172.0.0.0',
126
+ dev: 'gateway',
127
+ weight: 100
128
+ },
129
+ scope: 0,
130
+ protocol: 'static',
131
+ onlink: true,
132
+ pref: 'high'
133
+ }), "ip route #{action_variant} to 0/0 tos 0x28 dsfield 0x98 metric 32 table 254 vrf green src 172.3.3.3 realm 6 mtu lock 1600 window 3 rtt 4 rttvar 12 rto_min 1 cwnd 12 initcwnd 5 initrwnd 5 features ecn quickack true fastopen_no_cookie true congctl lock test advmss 7 reordering 3 next_hop via 172.0.0.0 dev gateway weight 100 scope 0 protocol static onlink pref high")
134
+ end
135
+ end
136
+
137
+ it 'prepares flush command' do
138
+ expect_command(host.ip(object_variant, 'flush', {
139
+ family: 'inet',
140
+ to: '10.0/16',
141
+ from: '10.1/16',
142
+ dev: 'eno4',
143
+ protocol: 'kernel',
144
+ dsfield: '0x30',
145
+ table: 'all',
146
+ vrf: 'blue',
147
+ cloned: true,
148
+ cached: true,
149
+ via: '10.0.0.1',
150
+ src: '10.5.5.5',
151
+ realms: '6'
152
+ }), 'ip -family inet route flush to 10.0/16 dev eno4 protocol kernel table all dsfield 0x30 via 10.0.0.1 vrf blue src 10.5.5.5 realms 6 cloned cached')
153
+ end
154
+
155
+ it 'prepares get command' do
156
+ expect_command(host.ip(object_variant, 'get', {
157
+ dev: 'eth1',
158
+ to: '10.0/16',
159
+ from: '10.1/16',
160
+ fibmatch: true,
161
+ tos: '0x28',
162
+ dsfield: '0x30',
163
+ iif: 'eth0',
164
+ oif: 'eth1',
165
+ mark: '0x20',
166
+ ipproto: 'tcp',
167
+ dport: 80,
168
+ sport: 80,
169
+ connected: true
170
+ }), 'ip route get fibmatch to 10.0/16 from 10.1/16 tos 0x28 dsfield 0x30 iif eth0 oif eth1 mark 0x20 ipproto tcp sport 80 dport 80 connected')
171
+ end
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Core::IP 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
+ %w[rule ru].each do |object_variant|
23
+ context "with ip #{object_variant}" do
24
+ context 'with json support' do
25
+ before(:all) do
26
+ StubNetwork.stub_command!(:ip_version) do
27
+ Kanrisuru::Core::IP::IPROUTE2_JSON_VERSION
28
+ end
29
+ end
30
+
31
+ after(:all) do
32
+ StubNetwork.unstub_command!(:ip_version)
33
+ end
34
+
35
+ %w[show list].each do |action_variant|
36
+ it "prepares #{action_variant} command" do
37
+ expect_command(host.ip(object_variant, action_variant), 'ip -json rule show')
38
+ end
39
+ end
40
+
41
+ %w[add delete del].each do |action_variant|
42
+ it "prepares #{action_variant} command" do
43
+ expect_command(host.ip(object_variant, action_variant, {
44
+ type: 'unicast',
45
+ from: '0/0',
46
+ to: '0/0',
47
+ iif: 'eth0',
48
+ oif: 'eth1',
49
+ tos: '0x28',
50
+ dsfield: '0x30',
51
+ fwmark: 2,
52
+ uidrange: '1-10',
53
+ ipproto: 'tcp',
54
+ sport: 80,
55
+ dport: 80,
56
+ priority: 1,
57
+ table: 5,
58
+ protocol: 'kernel',
59
+ suppress_prefixlength: 8,
60
+ suppress_ifgroup: 6,
61
+ realms: '1',
62
+ nat: '10.1.1.1'
63
+ }), "ip rule #{action_variant} type unicast from 0/0 to 0/0 iif eth0 tos 0x28 dsfield 0x30 fwmark 2 priority 1 table 5 realms 1 nat 10.1.1.1")
64
+ end
65
+ end
66
+
67
+ it 'prepares flush command' do
68
+ expect_command(host.ip(object_variant, 'flush', {
69
+ protocol: 'kernel'
70
+ }), 'ip rule flush protocol kernel')
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Kanrisuru::Core::IP 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
+ context 'with ip version' do
23
+ it 'prepares ip_version command' do
24
+ expect_command(host.ip_version, 'ip -V')
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
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 'prepares cpu_info command' do
23
+ expect_command(host.cpu_info('sockets'), "lscpu | grep -i '^Socket' | awk '{print $NF}'")
24
+ expect_command(host.cpu_info('cores_per_socket'), "lscpu | grep -i '^Core' | awk '{print $NF}'")
25
+ expect_command(host.cpu_info('threads'), "lscpu | grep -i '^Thread' | awk '{print $NF}'")
26
+
27
+ allow(Kanrisuru.logger).to receive(:info)
28
+ expect(Kanrisuru.logger).to receive(:info) do |&block|
29
+ expect(block.call).to eq('DEPRECATION WARNING: cpu_info will be removed in the upcoming major release. Use lscpu instead.')
30
+ end
31
+
32
+ expect_command(host.cpu_info('cores'), "lscpu | grep -i '^CPU(' | awk '{print $NF}'")
33
+ end
34
+
35
+ it 'prepares free command' do
36
+ expect_command(host.free('total'), "cat /proc/meminfo | grep -i '^MemTotal' | awk '{print $2}'")
37
+ expect_command(host.free('free'), "cat /proc/meminfo | grep -i '^MemFree' | awk '{print $2}'")
38
+ expect_command(host.free('swap'), "cat /proc/meminfo | grep -i '^SwapTotal' | awk '{print $2}'")
39
+ expect_command(host.free('swap_free'), "cat /proc/meminfo | grep -i '^SwapFree' | awk '{print $2}'")
40
+
41
+ expect do
42
+ host.free('hello')
43
+ end.to raise_error(ArgumentError)
44
+ end
45
+
46
+ it 'prepares kernel_statistics command' do
47
+ expect_command(host.kernel_statistics, 'cat /proc/stat')
48
+ end
49
+
50
+ it 'prepares kill command' do
51
+ expect_command(host.kill('KILL', 1024), 'kill -KILL 1024')
52
+ expect_command(host.kill(1, 1024), 'kill -HUP 1024')
53
+ expect_command(host.kill('TERM', [1024, 1025, 1026]), 'kill -TERM 1024 1025 1026')
54
+
55
+ expect do
56
+ host.kill('all', 0)
57
+ end.to raise_error(ArgumentError)
58
+ end
59
+
60
+ it 'prepares last command' do
61
+ expect_command(host.last, "last -i -F | sed 's/ / /'")
62
+ expect_command(host.last({ file: '/var/log/login.log' }), "last -i -F -f /var/log/login.log | sed 's/ / /'")
63
+ expect_command(host.last({ failed_attempts: true }), "lastb -i -F | sed 's/ / /'")
64
+ end
65
+
66
+ it 'prepares load_average command' do
67
+ expect_command(host.load_average, "cat /proc/loadavg | awk '{print $1,$2,$3}'")
68
+ end
69
+
70
+ it 'prepares load_env command' do
71
+ expect_command(host.load_env, 'env')
72
+ end
73
+
74
+ it 'prepares lscpu command' do
75
+ expect_command(host.lscpu, 'lscpu')
76
+ end
77
+
78
+ it 'prepares lsof command' do
79
+ expect_command(host.lsof, 'lsof -F pcuftDsin')
80
+ end
81
+
82
+ it 'prepares poweroff command' do
83
+ expect_command(host.poweroff, 'shutdown')
84
+ expect_command(host.poweroff(cancel: true), 'shutdown -c')
85
+ expect_command(host.poweroff(cancel: true, message: 'canceling...'), 'shutdown -c canceling...')
86
+ expect_command(host.poweroff(no_wall: true), 'shutdown --no-wall')
87
+ expect_command(host.poweroff(time: 10), 'shutdown +10')
88
+ expect_command(host.poweroff(time: 'now'), 'shutdown now')
89
+ expect_command(host.poweroff(time: '11:11'), 'shutdown 11:11')
90
+ expect_command(host.poweroff(time: '11:11', message: 'turning off'), 'shutdown 11:11 turning off')
91
+
92
+ expect do
93
+ host.poweroff(time: 'hsadf')
94
+ end.to raise_error(ArgumentError)
95
+ end
96
+
97
+ it 'prepares ps command' do
98
+ expect_command(host.ps,
99
+ 'ps ww ax -o uid,user,gid,group,ppid,pid,pcpu,pmem,stat,pri,flags,policy,time,cmd --no-headers')
100
+ expect_command(host.ps(user: '1000', group: '1000'),
101
+ 'ps ww --user 1000 --group 1000 -o uid,user,gid,group,ppid,pid,pcpu,pmem,stat,pri,flags,policy,time,cmd --no-headers')
102
+ expect_command(host.ps(user: [0, 1000], group: [0, 1000]),
103
+ 'ps ww --user 0,1000 --group 0,1000 -o uid,user,gid,group,ppid,pid,pcpu,pmem,stat,pri,flags,policy,time,cmd --no-headers')
104
+ expect_command(host.ps(pid: 100),
105
+ 'ps ww --pid 100 -o uid,user,gid,group,ppid,pid,pcpu,pmem,stat,pri,flags,policy,time,cmd --no-headers')
106
+ expect_command(host.ps(pid: [100, 101, 102]),
107
+ 'ps ww --pid 100,101,102 -o uid,user,gid,group,ppid,pid,pcpu,pmem,stat,pri,flags,policy,time,cmd --no-headers')
108
+ expect_command(host.ps(pid: [100, 101, 102], ppid: [0, 3, 5]),
109
+ 'ps ww --pid 100,101,102 --ppid 0,3,5 -o uid,user,gid,group,ppid,pid,pcpu,pmem,stat,pri,flags,policy,time,cmd --no-headers')
110
+ end
111
+
112
+ it 'prepares reboot command' do
113
+ expect_command(host.reboot, 'shutdown -r')
114
+ expect_command(host.reboot(cancel: true), 'shutdown -c')
115
+ expect_command(host.reboot(cancel: true, message: 'canceling...'), 'shutdown -c canceling...')
116
+ expect_command(host.reboot(no_wall: true), 'shutdown -r --no-wall')
117
+ expect_command(host.reboot(time: 10), 'shutdown -r +10')
118
+ expect_command(host.reboot(time: 'now'), 'shutdown -r now')
119
+ expect_command(host.reboot(time: '11:11'), 'shutdown -r 11:11')
120
+ expect_command(host.reboot(time: '11:11', message: 'turning off'), 'shutdown -r 11:11 turning off')
121
+
122
+ expect do
123
+ host.reboot(time: 'hsadf')
124
+ end.to raise_error(ArgumentError)
125
+ end
126
+
127
+ it 'prepares uptime command' do
128
+ expect_command(host.uptime, 'cat /proc/uptime')
129
+ end
130
+
131
+ it 'prepares w command' do
132
+ expect_command(host.w, 'w -hi')
133
+ expect_command(host.who(users: 'centos'), 'w -hi centos')
134
+ end
135
+ end