File: test_basic.py

package info (click to toggle)
pyroute2 0.8.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,700 kB
  • sloc: python: 50,245; makefile: 280; javascript: 183; ansic: 81; sh: 44; awk: 17
file content (63 lines) | stat: -rw-r--r-- 1,546 bytes parent folder | download | duplicates (3)
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()