aetherscale

[unmaintained] code for a cloud provider tutorial
Log | Files | Refs | README | LICENSE

test_networking.py (2452B)


      1 from unittest import mock
      2 import pytest
      3 
      4 from aetherscale import networking
      5 
      6 
      7 def test_mac_address_is_random():
      8     mac_a = networking.create_mac_address()
      9     mac_b = networking.create_mac_address()
     10 
     11     assert mac_a != mac_b
     12 
     13 
     14 def test_device_name_validation():
     15     # must not raise exception
     16     networking.Iproute2Network.validate_device_name('valid-dev')
     17     networking.Iproute2Network.validate_device_name('qemu-tap-10')
     18     networking.Iproute2Network.validate_device_name('fifteen-chars15')
     19 
     20     with pytest.raises(networking.NetworkingException):
     21         networking.Iproute2Network.validate_device_name('too-long-device-name')
     22 
     23     with pytest.raises(networking.NetworkingException):
     24         networking.Iproute2Network.validate_device_name('invalid space')
     25 
     26     with pytest.raises(networking.NetworkingException):
     27         networking.Iproute2Network.validate_device_name('non-ascii-日本')
     28 
     29 
     30 def test_ip_address_validation():
     31     # must not raise exception
     32     networking.Iproute2Network.validate_ip_address('10.0.0.1')
     33     networking.Iproute2Network.validate_ip_address('2001:0db8::3b:0:1')
     34     networking.Iproute2Network.validate_ip_address('10.0.0.1/32')
     35     networking.Iproute2Network.validate_ip_address('2001:0db8::/64')
     36 
     37     with pytest.raises(networking.NetworkingException):
     38         networking.Iproute2Network.validate_ip_address('something-invalid')
     39 
     40 
     41 def test_iproute2_networking_scripts():
     42     iproute = networking.Iproute2Network()
     43     iproute.bridged_network('unittestbr0', 'eth0', '10.0.0.2/24', '10.0.0.1')
     44     iproute.tap_device('tap0', 'myuser', 'unittestbr0')
     45     setup_script = iproute.setup_script()
     46     teardown_script = iproute.teardown_script()
     47 
     48     assert 'link add unittestbr0 type bridge' in setup_script
     49     assert 'set eth0 master unittestbr0' in setup_script
     50     assert 'addr add 10.0.0.2/24 dev unittestbr0' in setup_script
     51     assert 'tuntap add dev tap0' in setup_script
     52 
     53     assert 'link del unittestbr0' in teardown_script
     54     assert 'link del tap0' in teardown_script
     55     assert 'addr add 10.0.0.2/24 dev eth0' in teardown_script
     56 
     57 
     58 @mock.patch('aetherscale.execution.run_command_chain')
     59 def test_iproute2_networking_direct_execution(command_chain):
     60     iproute = networking.Iproute2Network()
     61     iproute.bridged_network('unittestbr0', 'eth0')
     62 
     63     iproute.setup()
     64 
     65     bridge_command = ['sudo', 'ip', 'link', 'add', 'unittestbr0', 'type', 'bridge']
     66     assert bridge_command in command_chain.call_args[0][0]