~smoser/curtin/trunk.auto-proxy

« back to all changes in this revision

Viewing changes to tests/vmtests/test_network.py

  • Committer: Ryan Harper
  • Author(s): Scott Moser
  • Date: 2017-05-19 21:40:48 UTC
  • mfrom: (489.4.6 trunk.vmtest-cleanup)
  • Revision ID: ryan.harper@canonical.com-20170519214048-a70x1trnt7vmfrpq
tests: clean up usage of collect files

This adds a helper 'collect_path' to the vmtests base class, and then
uses it wherever appropriate. It also cleans up all code that
used read collect files to use load_collect_file.

Lastly, it updates output_files_exist and output_files_dont_exist
to show which files do or do not exist. Previously all you'd see
in the log was an assertion that something was or was not true.
Now, you'll see a list of files that do or do not exist, and not
just the first.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
from .releases import base_vm_classes as relbase
3
3
 
4
4
import ipaddress
5
 
import os
6
5
import re
7
6
import textwrap
8
7
import yaml
46
45
        ])
47
46
 
48
47
    def test_etc_network_interfaces(self):
49
 
        with open(os.path.join(self.td.collect, "interfaces")) as fp:
50
 
            eni = fp.read()
51
 
            logger.debug('etc/network/interfaces:\n{}'.format(eni))
 
48
        eni = self.load_collect_file("interfaces")
 
49
        logger.debug('etc/network/interfaces:\n{}'.format(eni))
52
50
 
53
51
        expected_eni = self.get_expected_etc_network_interfaces()
54
52
        eni_lines = eni.split('\n')
55
53
        for line in expected_eni.split('\n'):
56
 
            self.assertTrue(line in eni_lines)
 
54
            self.assertTrue(line in eni_lines, msg="missing line: %s" % line)
57
55
 
58
56
    def test_etc_resolvconf(self):
59
 
        with open(os.path.join(self.td.collect, "resolv.conf")) as fp:
60
 
            resolvconf = fp.read()
61
 
            logger.debug('etc/resolv.conf:\n{}'.format(resolvconf))
 
57
        resolvconf = self.load_collect_file("resolv.conf")
 
58
        logger.debug('etc/resolv.conf:\n{}'.format(resolvconf))
62
59
 
63
60
        resolv_lines = resolvconf.split('\n')
64
61
        logger.debug('resolv.conf lines:\n{}'.format(resolv_lines))
140
137
        logger.debug('expected_network_state:\n{}'.format(
141
138
            yaml.dump(network_state, default_flow_style=False, indent=4)))
142
139
 
143
 
        with open(os.path.join(self.td.collect, "ip_a")) as fp:
144
 
            ip_a = fp.read()
145
 
            logger.debug('ip a:\n{}'.format(ip_a))
 
140
        ip_a = self.load_collect_file("ip_a")
 
141
        logger.debug('ip a:\n{}'.format(ip_a))
146
142
 
147
143
        ip_dict = helpers.ip_a_to_dict(ip_a)
148
144
        print('parsed ip_a dict:\n{}'.format(
149
145
            yaml.dump(ip_dict, default_flow_style=False, indent=4)))
150
146
 
151
 
        with open(os.path.join(self.td.collect, "ip_route_show")) as fp:
152
 
            ip_route_show = fp.read()
153
 
            logger.debug("ip route show:\n{}".format(ip_route_show))
154
 
            for line in [line for line in ip_route_show.split('\n')
155
 
                         if 'src' in line]:
156
 
                m = re.search(r'^(?P<network>\S+)\sdev\s' +
157
 
                              r'(?P<devname>\S+)\s+' +
158
 
                              r'proto kernel\s+scope link' +
159
 
                              r'\s+src\s(?P<src_ip>\S+)',
160
 
                              line)
161
 
                route_info = m.groupdict('')
162
 
                logger.debug(route_info)
163
 
 
164
 
        with open(os.path.join(self.td.collect, "route_n")) as fp:
165
 
            route_n = fp.read()
166
 
            logger.debug("route -n:\n{}".format(route_n))
167
 
 
168
 
        with open(os.path.join(self.td.collect, "route_6_n")) as fp:
169
 
            route_6_n = fp.read()
170
 
            logger.debug("route -6 -n:\n{}".format(route_6_n))
 
147
        ip_route_show = self.load_collect_file("ip_route_show")
 
148
        logger.debug("ip route show:\n{}".format(ip_route_show))
 
149
        for line in [line for line in ip_route_show.split('\n')
 
150
                     if 'src' in line]:
 
151
            m = re.search(r'^(?P<network>\S+)\sdev\s' +
 
152
                          r'(?P<devname>\S+)\s+' +
 
153
                          r'proto kernel\s+scope link' +
 
154
                          r'\s+src\s(?P<src_ip>\S+)',
 
155
                          line)
 
156
            route_info = m.groupdict('')
 
157
            logger.debug(route_info)
 
158
 
 
159
        route_n = self.load_collect_file("route_n")
 
160
        logger.debug("route -n:\n{}".format(route_n))
 
161
 
 
162
        route_6_n = self.load_collect_file("route_6_n")
 
163
        logger.debug("route -6 -n:\n{}".format(route_6_n))
171
164
 
172
165
        routes = {
173
166
            '4': route_n,