1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
import socket
import pytest
from pyroute2 import IPRoute
from pyroute2.netlink import nlmsg
def test_context_manager():
with IPRoute() as ipr:
ipr.get_links()
def test_multiple_instances():
ipr1 = IPRoute()
ipr2 = IPRoute()
ipr1.close()
ipr2.close()
def test_close():
ipr = IPRoute()
ipr.get_links()
ipr.close()
# Shouldn't be able to use the socket after closing
with pytest.raises(socket.error):
ipr.get_links()
def test_fileno():
ipr1 = IPRoute()
ipr2 = IPRoute(fileno=ipr1.fileno())
ipr1.close()
with pytest.raises(OSError) as e:
ipr2.get_links()
assert e.value.errno == 9 # sendto -> Bad file descriptor
with pytest.raises(OSError) as e:
ipr2.close()
assert e.value.errno == 9 # close -> Bad file descriptor
def test_get_policy_map(context):
assert isinstance(context.ipr.get_policy_map(), dict)
def test_register_policy(context):
context.ipr.register_policy(100, nlmsg)
context.ipr.register_policy({101: nlmsg})
context.ipr.register_policy(102, nlmsg)
assert context.ipr.get_policy_map()[100] == nlmsg
assert context.ipr.get_policy_map(101)[101] == nlmsg
assert context.ipr.get_policy_map([102])[102] == nlmsg
context.ipr.unregister_policy(100)
context.ipr.unregister_policy([101])
context.ipr.unregister_policy({102: nlmsg})
assert 100 not in context.ipr.get_policy_map()
assert 101 not in context.ipr.get_policy_map()
assert 102 not in context.ipr.get_policy_map()
|