summaryrefslogtreecommitdiff
path: root/tests/integration_tests/bugs/test_gh668.py
blob: 2a97c488194e7a30359bab9de53fdcee8ca240c4 (plain)
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
"""Integration test for gh-668.

Ensure that static route to host is working correctly.
The original problem is specific to the ENI renderer but that test is suitable
for all network configuration outputs.
"""

import pytest

from tests.integration_tests import random_mac_address
from tests.integration_tests.instances import IntegrationInstance
from tests.integration_tests.integration_settings import PLATFORM

DESTINATION_IP = "172.16.0.10"
GATEWAY_IP = "10.0.0.100"
MAC_ADDRESS = random_mac_address()

NETWORK_CONFIG = """\
version: 2
ethernets:
  eth0:
    addresses: [10.0.0.10/8]
    dhcp4: false
    routes:
    - to: {}/32
      via: {}
    match:
      macaddress: {}
""".format(
    DESTINATION_IP, GATEWAY_IP, MAC_ADDRESS
)

EXPECTED_ROUTE = "{} via {}".format(DESTINATION_IP, GATEWAY_IP)


@pytest.mark.skipif(
    PLATFORM not in ["lxd_container", "lxd_vm"],
    reason="Test requires custom networking provided by LXD",
)
@pytest.mark.lxd_config_dict(
    {
        "user.network-config": NETWORK_CONFIG,
        "volatile.eth0.hwaddr": MAC_ADDRESS,
    }
)
@pytest.mark.lxd_use_exec
def test_static_route_to_host(client: IntegrationInstance):
    route = client.execute("ip route | grep {}".format(DESTINATION_IP))
    assert route.startswith(EXPECTED_ROUTE)