tests: Add a create-many-IPs-in-parallel test, as this is a common operation

This commit is contained in:
nick
2014-08-27 09:06:44 +01:00
parent a8ad8c1e09
commit 4afbfa91c0

View File

@@ -40,6 +40,28 @@ class TestAddr < Test::Unit::TestCase
end
end
test "massively parallel IP address addition" do
@ifname = create_test_interface
ips = (10..20).map {|y| (1..254).map {|z| "10.100.#{y}.#{z}" } }.flatten.compact
threads = ips.map {|ip|
Thread.new {
Linux::Netlink::Route::Socket.new.addr.add(
:index => @ifname,
:local => ip,
:prefixlen => 8
)
}
}
threads.map(&:join)
created = @ip.addr.list(:index => @ifname, :family => Socket::AF_INET).
map {|ifaddr| ifaddr.address.to_s }
ips.each {|ip| assert created.include?( ip ), "#{ip} was not created" }
end
def create_test_interface(ifname = "test_#{$$}")
begin
@ip.link.add(