|
55 | 55 | end
|
56 | 56 |
|
57 | 57 | context "on all systems" do
|
58 |
| - IP_SHOW_ARGS = [ |
| 58 | + IP_LINK_ARGS = [ |
| 59 | + LinuxAdmin::Common.cmd("ip"), |
| 60 | + :params => %w(--json link) |
| 61 | + ] |
| 62 | + |
| 63 | + IP_SHOW_ARGS = IP_SHOW_ETH0_ARGS = [ |
59 | 64 | LinuxAdmin::Common.cmd("ip"),
|
60 | 65 | :params => %w(addr show eth0)
|
61 | 66 | ]
|
62 | 67 |
|
| 68 | + IP_SHOW_LO_ARGS = [ |
| 69 | + LinuxAdmin::Common.cmd("ip"), |
| 70 | + :params => %w(addr show lo) |
| 71 | + ] |
| 72 | + |
63 | 73 | IP_ROUTE_ARGS = [
|
64 | 74 | LinuxAdmin::Common.cmd("ip"),
|
65 | 75 | :params => ['-4', 'route']
|
|
80 | 90 | :params => ["eth0"]
|
81 | 91 | ]
|
82 | 92 |
|
| 93 | + IP_LINK_OUT = <<~IP_OUT |
| 94 | + [{"ifindex":1,"ifname":"lo","flags":["LOOPBACK","UP","LOWER_UP"],"mtu":65536,"qdisc":"noqueue","operstate":"UNKNOWN","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"loopback","address":"00:00:00:00:00:00","broadcast":"00:00:00:00:00:00"},{"ifindex":2,"ifname":"eth0","flags":["BROADCAST","MULTICAST","UP","LOWER_UP"],"mtu":1500,"qdisc":"fq_codel","operstate":"UP","linkmode":"DEFAULT","group":"default","txqlen":1000,"link_type":"ether","address":"52:54:00:e8:67:81","broadcast":"ff:ff:ff:ff:ff:ff","altnames":["enp0s2","ens2"]}] |
| 95 | + IP_OUT |
| 96 | + |
| 97 | + IP_ADDR_LO_OUT = <<~IP_OUT |
| 98 | + 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 |
| 99 | + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 |
| 100 | + inet 127.0.0.1/8 scope host lo |
| 101 | + valid_lft forever preferred_lft forever |
| 102 | + inet6 ::1/128 scope host |
| 103 | + valid_lft forever preferred_lft forever |
| 104 | + IP_OUT |
| 105 | + |
83 | 106 | IP_ADDR_OUT = <<-IP_OUT
|
84 | 107 | 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
|
85 | 108 | link/ether 00:0c:29:ed:0e:8b brd ff:ff:ff:ff:ff:ff
|
|
115 | 138 | link/ether 52:54:00:ce:b4:f4 brd ff:ff:ff:ff:ff:ff
|
116 | 139 | IP_OUT
|
117 | 140 |
|
| 141 | + subject(:subj_list) do |
| 142 | + allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.generic) |
| 143 | + described_class.dist_class(true) |
| 144 | + |
| 145 | + allow(AwesomeSpawn).to receive(:run!).with(*IP_LINK_ARGS).and_return(result(IP_LINK_OUT, 0)) |
| 146 | + allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_LO_ARGS).and_return(result(IP_ADDR_LO_OUT, 0)) |
| 147 | + allow(AwesomeSpawn).to receive(:run!).with(*IP_SHOW_ETH0_ARGS).and_return(result(IP_ADDR_OUT, 0)) |
| 148 | + allow(AwesomeSpawn).to receive(:run!).with(*IP_ROUTE_ARGS).and_return(result(IP_ROUTE_OUT, 0)) |
| 149 | + allow(AwesomeSpawn).to receive(:run!).with(*IP6_ROUTE_ARGS).and_return(result(IP6_ROUTE_OUT, 0)) |
| 150 | + described_class.list |
| 151 | + end |
| 152 | + |
118 | 153 | subject(:subj) do
|
119 | 154 | allow(LinuxAdmin::Distros).to receive(:local).and_return(LinuxAdmin::Distros.generic)
|
120 | 155 | described_class.dist_class(true)
|
@@ -149,6 +184,14 @@ def result(output, exit_status)
|
149 | 184 | AwesomeSpawn::CommandResult.new("", output, "", nil, exit_status)
|
150 | 185 | end
|
151 | 186 |
|
| 187 | + describe ".list" do |
| 188 | + it "returns a list of NetworkInterface objects" do |
| 189 | + interfaces = subj_list |
| 190 | + expect(interfaces.count).to eq(2) |
| 191 | + expect(interfaces.map(&:interface)).to match_array(["eth0", "lo"]) |
| 192 | + end |
| 193 | + end |
| 194 | + |
152 | 195 | describe "#reload" do
|
153 | 196 | it "returns false when ip addr show fails" do
|
154 | 197 | subj
|
|
0 commit comments