Merge lp:~raharper/curtin/trunk.vmtest-remove-bug-timers into lp:~curtin-dev/curtin/trunk

Proposed by Ryan Harper on 2017-10-04
Status: Merged
Merged at revision: 532
Proposed branch: lp:~raharper/curtin/trunk.vmtest-remove-bug-timers
Merge into: lp:~curtin-dev/curtin/trunk
Diff against target: 544 lines (+128/-134)
13 files modified
curtin/commands/curthooks.py (+19/-5)
examples/tests/network_alias.yaml (+0/-2)
examples/tests/network_static_routes.yaml (+10/-15)
tests/vmtests/__init__.py (+20/-1)
tests/vmtests/test_network.py (+15/-11)
tests/vmtests/test_network_bonding.py (+16/-17)
tests/vmtests/test_network_bridging.py (+15/-9)
tests/vmtests/test_network_enisource.py (+2/-4)
tests/vmtests/test_network_ipv6.py (+0/-11)
tests/vmtests/test_network_ipv6_enisource.py (+3/-17)
tests/vmtests/test_network_ipv6_vlan.py (+0/-6)
tests/vmtests/test_network_mtu.py (+26/-24)
tests/vmtests/test_network_vlan.py (+2/-12)
To merge this branch: bzr merge lp:~raharper/curtin/trunk.vmtest-remove-bug-timers
Reviewer Review Type Date Requested Status
Server Team CI bot continuous-integration Approve on 2017-10-05
Scott Moser Approve on 2017-10-05
Chad Smith 2017-10-04 Pending
Review via email: mp+331757@code.launchpad.net

Description of the change

vmtest: fix artful networking

- Remove skip_by_date calls in vmtests that are no longer valid
- ifenslave brings in ifupdown, so filter out ifenslave package if target
  release is artful
- Adjust artful bonding test to skip checking for ifslave and instead check
  that ifenslave is *not* installed
- Drop mtu settings in network-static-routes configuration, (not needed)
- Move static routes under an interface subnet to be compatible with
  netplan format which requires routes under an interface
- Refactor ip_route_show parsing, ignoring default route and fetching
  variable settings like 'proto'.
- Skiptest bridging in artful, need a cloud-init fix for stp in netplan
- Skiptest for mtu in artful, need networkd to support mtu6 support

To post a comment you must log in.
Ryan Harper (raharper) wrote :

For testing, generally this affects the following path:

./tools/jenkins-runner -vv --nologcapture tests/vmtests/test_network*

Note, that while we're specifically looking for all of the ArtfulTest* tests to now pass (or skip)
we need to ensure that we don't regress non-artful releases.

Chad Smith (chad.smith) wrote :

Looks pretty good, couple of nits and questions.

Ryan Harper (raharper) wrote :

Thanks for the review, I'll fix up several things you've mentioned.

533. By Ryan Harper on 2017-10-04

Fix spelling of 'additional' in curthooks log message

534. By Ryan Harper on 2017-10-04

Remove unneeded .lower(), switch to an equality check

535. By Ryan Harper on 2017-10-04

Raise a ValueError in ip_route_show regex failure to match

536. By Ryan Harper on 2017-10-04

Just check for empty dpkg-query status in Artful Bonding tests

Scott Moser (smoser) :
Ryan Harper (raharper) wrote :

On Thu, Oct 5, 2017 at 11:21 AM, Scott Moser <email address hidden> wrote:

>
>
> Diff comments:
>
> > === modified file 'curtin/commands/curthooks.py'
> > --- curtin/commands/curthooks.py 2017-08-04 19:53:29 +0000
> > +++ curtin/commands/curthooks.py 2017-10-04 20:53:13 +0000
> > @@ -687,6 +689,19 @@
> > if pkg not in needed_packages:
> > needed_packages.append(pkg)
> >
> > + # do not install ifenslave if target release is artful as it
> > + # triggers an install of ifupdown which will break network rendering
> > + if 'ifenslave' in needed_packages:
> > + codename, _ = util.subp(['lsb_release', '--codename',
> '--short'],
>
> util.lsb_release(target=target)
>

I didn't want the dict =); will fix.

>
> > + capture=True, target=target)
> > + # drop the newline
> > + codename = codename.strip()
> > + LOG.debug('Target release codename: %s', codename)
> > + if codename == 'artful':
> > + LOG.debug("Skipping install of package 'ifenslave' to
> prevent"
> > + " network configutation errors on release %s",
> codename)
> > + needed_packages.remove('ifenslave')
>
> what about bridge-utils and vlan ?
>

bridge-utils recommends ifupdown but does not install
vlan does not bring in ifupdown either.

>
> it looks like we will install those in some scenarios too.
> maybe they dont break stuff, but ... fix ?
>
> > +
> > if needed_packages:
> > state = util.load_command_environment()
> > with events.ReportEventStack(
>
>
> --
> https://code.launchpad.net/~raharper/curtin/trunk.vmtest-
> remove-bug-timers/+merge/331757
> You are the owner of lp:~raharper/curtin/trunk.vmtest-remove-bug-timers.
>

537. By Ryan Harper on 2017-10-05

Use util.lsb_release()

Scott Moser (smoser) wrote :

but vlan and bridge-utils are not needed or desired in artful, right?

Scott Moser (smoser) wrote :

that means best case we install some stuff that odesnt get used and slow down the install.

Ryan Harper (raharper) wrote :

vlan appears to be installed already,
bridge-utils while not needed directly to create bridges, is highly useful
for modifying/displaying bridge config. I don't think it's bad to install
it.

On Thu, Oct 5, 2017 at 11:44 AM, Scott Moser <email address hidden> wrote:

> but vlan and bridge-utils are not needed or desired in artful, right?
>
> --
> https://code.launchpad.net/~raharper/curtin/trunk.vmtest-
> remove-bug-timers/+merge/331757
> You are the owner of lp:~raharper/curtin/trunk.vmtest-remove-bug-timers.
>

Scott Moser (smoser) :
Ryan Harper (raharper) wrote :
Download full text (3.6 KiB)

On Thu, Oct 5, 2017 at 1:38 PM, Scott Moser <email address hidden> wrote:

>
>
> Diff comments:
>
> >
> > === modified file 'examples/tests/network_alias.yaml'
> > --- examples/tests/network_alias.yaml 2017-06-13 22:10:10 +0000
> > +++ examples/tests/network_alias.yaml 2017-10-05 16:35:19 +0000
> > @@ -9,11 +9,9 @@
> > subnets:
> > - type: static
> > address: 10.47.98.1/24
> > - mtu: 1501
> > - type: static
> > address: 2001:4800:78ff:1b:be76:4eff:fe06:ffac
> > netmask: 'ffff:ffff:ffff:ffff::'
> > - mtu: 1480
>
> you say "not needed" in your commit message, but why?
> and isnt it concerning that this diddnt have fallout in tests ?
>

It does have fallout for netplan which doesn;'t support ipv6 mtu;
however, the *scope* of this test is multiple ip address per interface
The mtu itself has no affect on assigning multiple addresses to a single
interface.

The failure to apply an ipv6 MTU in this test is not germane; we're
only testing if we can set multiple ips.

>
> > # multi_v4_alias: multiple v4 addrs on same interface
> > - type: physical
> > name: interface1
> >
> > === modified file 'tests/vmtests/test_network.py'
> > --- tests/vmtests/test_network.py 2017-08-02 15:46:35 +0000
> > +++ tests/vmtests/test_network.py 2017-10-05 16:35:19 +0000
> > @@ -285,14 +285,19 @@
> > ip_route_show = self.load_collect_file("ip_route_show")
> > logger.debug("ip route show:\n{}".format(ip_route_show))
> > for line in [line for line in ip_route_show.split('\n')
> > - if 'src' in line]:
> > + if 'src' in line and not
> line.startswith('default')]:
> > + print('ip_route_show: line: %s' % line)
> > m = re.search(r'^(?P<network>\S+)\sdev\s' +
> > r'(?P<devname>\S+)\s+' +
> > - r'proto kernel\s+scope link' +
> > - r'\s+src\s(?P<src_ip>\S+)',
> > + r'proto\s(?P<proto>\S+)\s+' +
> > + r'scope\s(?P<scope>\S+)\s+' +
> > + r'src\s(?P<src_ip>\S+)',
> > line)
> > - route_info = m.groupdict('')
> > - logger.debug(route_info)
> > + if m:
> > + route_info = m.groupdict('')
> > + logger.debug(route_info)
> > + else:
> > + raise ValueError('Failed match ip_route_show line: %s'
> % line)
>
> bikeshed: this is probably more of a RuntimeException
> kind of "got stuff i didnt expect".
> doesnt matter. take input or not.
>

Sure

>
> >
> > routes = {
> > '4': route_n,
> > @@ -390,7 +395,8 @@
> > gateways.append(subnet.get('gateway'))
> > for route in subnet.get('routes', []):
> > gateways += __find_gw_config(route)
> > - return gateways
> > + # drop duplicate gateways (static routes)
>
> this does have the side affect of sorting your list.
>

That's ok, we iterate ...

Read more...

538. By Ryan Harper on 2017-10-05

Merge from smoser

539. By Ryan Harper on 2017-10-05

Fix up merge issues

Scott Moser (smoser) wrote :

i'm good with this. lets see it pass the test run above and then pull.

review: Approve
Ryan Harper (raharper) wrote :

Computer says yes!

Ran 2167 tests in 9300.984s

OK (SKIP=161)
Thu, 05 Oct 2017 23:51:46 +0000: vmtest end [0] in 9302s
+ RET=0

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'curtin/commands/curthooks.py'
2--- curtin/commands/curthooks.py 2017-08-04 19:53:29 +0000
3+++ curtin/commands/curthooks.py 2017-10-05 21:13:20 +0000
4@@ -663,6 +663,8 @@
5 found_reqs = mapped_config['handler'](cfg, mapped_config['mapping'])
6 needed_packages.extend(found_reqs)
7
8+ LOG.debug('Curtin config dependencies requires additional packages: %s',
9+ needed_packages)
10 return needed_packages
11
12
13@@ -675,8 +677,8 @@
14 '''
15
16 installed_packages = util.get_installed_packages(target)
17- needed_packages = [pkg for pkg in detect_required_packages(cfg)
18- if pkg not in installed_packages]
19+ needed_packages = set([pkg for pkg in detect_required_packages(cfg)
20+ if pkg not in installed_packages])
21
22 arch_packages = {
23 's390x': [('s390-tools', 'zipl')],
24@@ -685,16 +687,28 @@
25 for pkg, cmd in arch_packages.get(platform.machine(), []):
26 if not util.which(cmd, target=target):
27 if pkg not in needed_packages:
28- needed_packages.append(pkg)
29+ needed_packages.add(pkg)
30+
31+ # FIXME: This needs cleaning up.
32+ # do not install certain packages on artful as they are no longer needed.
33+ # ifenslave specifically causes issuse due to dependency on ifupdown.
34+ codename = util.lsb_release(target=target).get('codename')
35+ if codename == 'artful':
36+ drops = set(['bridge-utils', 'ifenslave', 'vlan'])
37+ if needed_packages.union(drops):
38+ LOG.debug("Skipping install of %s. Not needed on artful.",
39+ needed_packages.union(drops))
40+ needed_packages = needed_packages.difference(drops)
41
42 if needed_packages:
43+ to_add = list(sorted(needed_packages))
44 state = util.load_command_environment()
45 with events.ReportEventStack(
46 name=state.get('report_stack_prefix'),
47 reporting_enabled=True, level="INFO",
48 description="Installing packages on target system: " +
49- str(needed_packages)):
50- util.install_packages(needed_packages, target=target)
51+ str(to_add)):
52+ util.install_packages(to_add, target=target)
53
54
55 def system_upgrade(cfg, target):
56
57=== modified file 'examples/tests/network_alias.yaml'
58--- examples/tests/network_alias.yaml 2017-06-13 22:10:10 +0000
59+++ examples/tests/network_alias.yaml 2017-10-05 21:13:20 +0000
60@@ -9,11 +9,9 @@
61 subnets:
62 - type: static
63 address: 10.47.98.1/24
64- mtu: 1501
65 - type: static
66 address: 2001:4800:78ff:1b:be76:4eff:fe06:ffac
67 netmask: 'ffff:ffff:ffff:ffff::'
68- mtu: 1480
69 # multi_v4_alias: multiple v4 addrs on same interface
70 - type: physical
71 name: interface1
72
73=== modified file 'examples/tests/network_static_routes.yaml'
74--- examples/tests/network_static_routes.yaml 2017-01-25 00:16:35 +0000
75+++ examples/tests/network_static_routes.yaml 2017-10-05 21:13:20 +0000
76@@ -10,18 +10,13 @@
77 - address: 172.23.31.42/26
78 gateway: 172.23.31.2
79 type: static
80- - type: route
81- id: 4
82- metric: 0
83- destination: 10.0.0.0/12
84- gateway: 172.23.31.1
85- - type: route
86- id: 5
87- metric: 0
88- destination: 192.168.0.0/16
89- gateway: 172.23.31.1
90- - type: route
91- id: 6
92- metric: 1
93- destination: 10.200.0.0/16
94- gateway: 172.23.31.1
95+ routes:
96+ - gateway: 172.23.31.1
97+ network: 10.0.0.0/12
98+ metric: 0
99+ - gateway: 172.23.31.1
100+ network: 192.168.0.0/16
101+ metric: 0
102+ - gateway: 172.23.31.1
103+ network: 10.200.0.0/16
104+ metric: 1
105
106=== modified file 'tests/vmtests/__init__.py'
107--- tests/vmtests/__init__.py 2017-10-02 15:32:45 +0000
108+++ tests/vmtests/__init__.py 2017-10-05 21:13:20 +0000
109@@ -336,7 +336,12 @@
110 __test__ = False
111 arch_skip = []
112 boot_timeout = BOOT_TIMEOUT
113- collect_scripts = []
114+ collect_scripts = [textwrap.dedent("""
115+ cd OUTPUT_COLLECT_D
116+ dpkg-query --show \
117+ --showformat='${db:Status-Abbrev}\t${Package}\t${Version}\n' \
118+ > debian-packages.txt 2> debian-packages.txt.err
119+ """)]
120 conf_file = "examples/tests/basic.yaml"
121 nr_cpus = None
122 dirty_disks = False
123@@ -369,6 +374,8 @@
124 target_krel = None
125 target_ftype = "vmtest.root-tgz"
126
127+ _debian_packages = None
128+
129 def shortDescription(self):
130 return None
131
132@@ -1154,6 +1161,18 @@
133 fp.write(json.dumps(data, indent=2, sort_keys=True,
134 separators=(',', ': ')) + "\n")
135
136+ @property
137+ def debian_packages(self):
138+ if self._debian_packages is None:
139+ data = self.load_collect_file("debian-packages.txt")
140+ pkgs = {}
141+ for line in data.splitlines():
142+ # lines are <status>\t<
143+ status, pkg, ver = line.split('\t')
144+ pkgs[pkg] = {'status': status, 'version': ver}
145+ self._debian_packages = pkgs
146+ return self._debian_packages
147+
148
149 class PsuedoVMBaseClass(VMBaseClass):
150 # This mimics much of the VMBaseClass just with faster setUpClass
151
152=== modified file 'tests/vmtests/test_network.py'
153--- tests/vmtests/test_network.py 2017-08-02 15:46:35 +0000
154+++ tests/vmtests/test_network.py 2017-10-05 21:13:20 +0000
155@@ -19,7 +19,7 @@
156 extra_nics = []
157 # XXX: command | tee output is required for Centos under SELinux
158 # http://danwalsh.livejournal.com/22860.html
159- collect_scripts = [textwrap.dedent("""
160+ collect_scripts = VMBaseClass.collect_scripts + [textwrap.dedent("""
161 cd OUTPUT_COLLECT_D
162 echo "waiting for ipv6 to settle" && sleep 5
163 route -n | tee first_route_n
164@@ -39,9 +39,6 @@
165 cp -av /var/log/upstart ./upstart ||:
166 cp -av /etc/cloud ./etc_cloud
167 cp -av /var/log/cloud*.log ./
168- dpkg-query -W -f '${Version}' cloud-init |tee dpkg_cloud-init_version
169- dpkg-query -W -f '${Version}' nplan |tee dpkg_nplan_version
170- dpkg-query -W -f '${Version}' systemd |tee dpkg_systemd_version
171 rpm -q --queryformat '%{VERSION}\n' cloud-init |tee rpm_ci_version
172 V=/usr/lib/python*/*-packages/cloudinit/version.py;
173 grep -c NETWORK_CONFIG_V2 $V |tee cloudinit_passthrough_available
174@@ -285,14 +282,19 @@
175 ip_route_show = self.load_collect_file("ip_route_show")
176 logger.debug("ip route show:\n{}".format(ip_route_show))
177 for line in [line for line in ip_route_show.split('\n')
178- if 'src' in line]:
179+ if 'src' in line and not line.startswith('default')]:
180+ print('ip_route_show: line: %s' % line)
181 m = re.search(r'^(?P<network>\S+)\sdev\s' +
182 r'(?P<devname>\S+)\s+' +
183- r'proto kernel\s+scope link' +
184- r'\s+src\s(?P<src_ip>\S+)',
185+ r'proto\s(?P<proto>\S+)\s+' +
186+ r'scope\s(?P<scope>\S+)\s+' +
187+ r'src\s(?P<src_ip>\S+)',
188 line)
189- route_info = m.groupdict('')
190- logger.debug(route_info)
191+ if m:
192+ route_info = m.groupdict('')
193+ logger.debug(route_info)
194+ else:
195+ raise ValueError('Failed match ip_route_show line: %s' % line)
196
197 routes = {
198 '4': route_n,
199@@ -390,7 +392,8 @@
200 gateways.append(subnet.get('gateway'))
201 for route in subnet.get('routes', []):
202 gateways += __find_gw_config(route)
203- return gateways
204+ # drop duplicate gateways (static routes)
205+ return list(set(gateways))
206
207 # handle gateways by looking at routing table
208 configured_gws = __find_gw_config(subnet)
209@@ -408,7 +411,8 @@
210
211 print('found_gws: %s\nexpected: %s' % (found_gws,
212 configured_gws))
213- self.assertEqual(len(found_gws), len(configured_gws))
214+ # we only need to check that we found at least one as we walk
215+ self.assertGreater(len(found_gws), 0)
216 for fgw in found_gws:
217 if ":" in gw_ip:
218 (dest, gw, flags, metric, ref, use, iface) = \
219
220=== modified file 'tests/vmtests/test_network_bonding.py'
221--- tests/vmtests/test_network_bonding.py 2017-08-02 15:46:35 +0000
222+++ tests/vmtests/test_network_bonding.py 2017-10-05 21:13:20 +0000
223@@ -8,19 +8,10 @@
224
225 class TestNetworkBondingAbs(TestNetworkBaseTestsAbs):
226 conf_file = "examples/tests/bonding_network.yaml"
227- collect_scripts = TestNetworkBaseTestsAbs.collect_scripts + [
228- textwrap.dedent("""
229- cd OUTPUT_COLLECT_D
230- dpkg-query -W -f '${Status}' ifenslave > ifenslave_installed
231- """)]
232-
233- def test_output_files_exist_ifenslave(self):
234- self.output_files_exist(["ifenslave_installed"])
235
236 def test_ifenslave_installed(self):
237- status = self.load_collect_file("ifenslave_installed")
238- logger.debug('ifenslave installed: {}'.format(status))
239- self.assertEqual('install ok installed', status)
240+ self.assertIn("ifenslave", self.debian_packages,
241+ "ifenslave deb not installed")
242
243
244 class CentosTestNetworkBondingAbs(TestNetworkBondingAbs):
245@@ -49,12 +40,10 @@
246
247 class PreciseHWETTestBonding(relbase.precise_hwe_t, TestNetworkBondingAbs):
248 __test__ = True
249- # package names on precise are different, need to check on ifenslave-2.6
250- collect_scripts = TestNetworkBondingAbs.collect_scripts + [
251- textwrap.dedent("""
252- cd OUTPUT_COLLECT_D
253- dpkg-query -W -f '${Status}' ifenslave-2.6 > ifenslave_installed
254- """)]
255+
256+ def test_ifenslave_installed(self):
257+ self.assertIn("ifenslave-2.6", self.debian_packages,
258+ "ifenslave deb not installed")
259
260
261 class TrustyTestBonding(relbase.trusty, TestNetworkBondingAbs):
262@@ -88,6 +77,16 @@
263 class ArtfulTestBonding(relbase.artful, TestNetworkBondingAbs):
264 __test__ = True
265
266+ def test_ifenslave_installed(self):
267+ """Artful should not have ifenslave installed."""
268+ pass
269+
270+ def test_ifenslave_not_installed(self):
271+ """Confirm that ifenslave is not installed on artful"""
272+ self.assertNotIn('ifenslave', self.debian_packages,
273+ "ifenslave is not expected in artful: %s" %
274+ self.debian_packages.get('ifenslave'))
275+
276
277 class Centos66TestNetworkBonding(centos_relbase.centos66fromxenial,
278 CentosTestNetworkBondingAbs):
279
280=== modified file 'tests/vmtests/test_network_bridging.py'
281--- tests/vmtests/test_network_bridging.py 2017-08-22 14:50:10 +0000
282+++ tests/vmtests/test_network_bridging.py 2017-10-05 21:13:20 +0000
283@@ -101,7 +101,6 @@
284 grep -r . /sys/class/net/br0 > sysfs_br0
285 grep -r . /sys/class/net/br0/brif/eth1 > sysfs_br0_eth1
286 grep -r . /sys/class/net/br0/brif/eth2 > sysfs_br0_eth2
287- dpkg-query -W -f '${Status}' bridge-utils 2>&1 > bridge-utils_installed
288 """)]
289
290 def test_output_files_exist_bridge(self):
291@@ -110,10 +109,8 @@
292 "sysfs_br0_eth2"])
293
294 def test_bridge_utils_installed(self):
295- self.output_files_exist(["bridge-utils_installed"])
296- status = self.load_collect_file("bridge-utils_installed").strip()
297- logger.debug('bridge-utils installed: {}'.format(status))
298- self.assertEqual('install ok installed', status)
299+ self.assertIn("bridge-utils", self.debian_packages,
300+ "bridge-utilsi deb not installed")
301
302 def test_bridge_params(self):
303
304@@ -225,12 +222,21 @@
305 class ZestyTestBridging(relbase.zesty, TestBridgeNetworkAbs):
306 __test__ = True
307
308+
309+class ArtfulTestBridging(relbase.artful, TestBridgeNetworkAbs):
310+ __test__ = True
311+
312 @classmethod
313 def setUpClass(cls):
314- cls.skip_by_date(cls.__name__, cls.release, "1706752",
315- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
316+ cls.skip_by_date(cls.__name__, cls.release, "1721157",
317+ fixby=(2017, 10, 16), removeby=(2017, 11, 16))
318 super().setUpClass()
319
320+ def test_bridge_utils_installed(self):
321+ """bridge-utils not needed in artful."""
322+ pass
323
324-class ArtfulTestBridging(relbase.artful, TestBridgeNetworkAbs):
325- __test__ = True
326+ def test_bridge_utils_not_installed(self):
327+ self.assertNotIn("bridge-utils", self.debian_packages,
328+ "bridge-utils is not expected in artful: %s" %
329+ self.debian_packages.get('bridge-utils'))
330
331=== modified file 'tests/vmtests/test_network_enisource.py'
332--- tests/vmtests/test_network_enisource.py 2017-08-02 15:46:35 +0000
333+++ tests/vmtests/test_network_enisource.py 2017-10-05 21:13:20 +0000
334@@ -26,6 +26,8 @@
335 This testcase then uses curtin.net.deb_parse_config method to
336 extract information about what curtin wrote and compare that
337 with what was actually configured (which we capture via ifconfig)
338+
339+ Note: This test is *not* valid for Artful as it has no ENI.
340 """
341
342 conf_file = "examples/tests/network_source.yaml"
343@@ -98,7 +100,3 @@
344
345 class ZestyTestNetworkENISource(relbase.zesty, TestNetworkENISource):
346 __test__ = True
347-
348-
349-class ArtfulTestNetworkENISource(relbase.artful, TestNetworkENISource):
350- __test__ = True
351
352=== modified file 'tests/vmtests/test_network_ipv6.py'
353--- tests/vmtests/test_network_ipv6.py 2017-08-22 14:50:10 +0000
354+++ tests/vmtests/test_network_ipv6.py 2017-10-05 21:13:20 +0000
355@@ -67,21 +67,10 @@
356 class XenialTestNetworkIPV6(relbase.xenial, TestNetworkIPV6Abs):
357 __test__ = True
358
359- @classmethod
360- def test_ip_output(cls):
361- cls.skip_by_date(cls.__name__, cls.release, bugnum="1701097",
362- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
363-
364
365 class ZestyTestNetworkIPV6(relbase.zesty, TestNetworkIPV6Abs):
366 __test__ = True
367
368- @classmethod
369- def setUpClass(cls):
370- cls.skip_by_date(cls.__name__, cls.release, "ci-003c6678e",
371- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
372- super().setUpClass()
373-
374
375 class ArtfulTestNetworkIPV6(relbase.artful, TestNetworkIPV6Abs):
376 __test__ = True
377
378=== modified file 'tests/vmtests/test_network_ipv6_enisource.py'
379--- tests/vmtests/test_network_ipv6_enisource.py 2017-08-22 14:50:10 +0000
380+++ tests/vmtests/test_network_ipv6_enisource.py 2017-10-05 21:13:20 +0000
381@@ -31,25 +31,11 @@
382 class XenialTestNetworkIPV6ENISource(relbase.xenial, TestNetworkIPV6ENISource):
383 __test__ = True
384
385- @classmethod
386- def test_ip_output(cls):
387- cls.skip_by_date(cls.__name__, cls.release, bugnum="1701097",
388- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
389-
390
391 class ZestyTestNetworkIPV6ENISource(relbase.zesty, TestNetworkIPV6ENISource):
392 __test__ = True
393
394- @classmethod
395- def test_ip_output(cls):
396- cls.skip_by_date(cls.__name__, cls.release, bugnum="1701097",
397- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
398-
399-
400+
401+# Artful no longer has eni/ifupdown
402 class ArtfulTestNetworkIPV6ENISource(relbase.artful, TestNetworkIPV6ENISource):
403- __test__ = True
404-
405- @classmethod
406- def test_ip_output(cls):
407- cls.skip_by_date(cls.__name__, cls.release, bugnum="1701097",
408- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
409+ __test__ = False
410
411=== modified file 'tests/vmtests/test_network_ipv6_vlan.py'
412--- tests/vmtests/test_network_ipv6_vlan.py 2017-08-22 14:50:10 +0000
413+++ tests/vmtests/test_network_ipv6_vlan.py 2017-10-05 21:13:20 +0000
414@@ -44,12 +44,6 @@
415 class ZestyTestNetworkIPV6Vlan(relbase.zesty, TestNetworkIPV6VlanAbs):
416 __test__ = True
417
418- @classmethod
419- def setUpClass(cls):
420- cls.skip_by_date(cls.__name__, cls.release, bugnum="ci-003c6678e",
421- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
422- super().setUpClass()
423-
424
425 class ArtfulTestNetworkIPV6Vlan(relbase.artful, TestNetworkIPV6VlanAbs):
426 __test__ = True
427
428=== modified file 'tests/vmtests/test_network_mtu.py'
429--- tests/vmtests/test_network_mtu.py 2017-08-22 14:50:10 +0000
430+++ tests/vmtests/test_network_mtu.py 2017-10-05 21:13:20 +0000
431@@ -3,6 +3,7 @@
432 from .test_network_ipv6 import TestNetworkIPV6Abs
433
434 import textwrap
435+import unittest
436
437
438 class TestNetworkMtuAbs(TestNetworkIPV6Abs):
439@@ -133,30 +134,25 @@
440 def test_etc_resolvconf(self):
441 pass
442
443- @classmethod
444- def test_ip_output(cls):
445- cls.skip_by_date(cls.__name__, cls.release, bugnum="1706973",
446- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
447-
448- @classmethod
449- def test_ipv6_mtu_smaller_than_ipv4_v6_iface_first(cls):
450- cls.skip_by_date(cls.__name__, cls.release, bugnum="1706973",
451- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
452-
453- @classmethod
454- def test_ipv6_mtu_smaller_than_ipv4_non_default(cls):
455- cls.skip_by_date(cls.__name__, cls.release, bugnum="1706973",
456- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
457-
458- @classmethod
459- def test_ipv6_mtu_higher_than_default_no_ipv4_iface_up(cls):
460- cls.skip_by_date(cls.__name__, cls.release, bugnum="1706973",
461- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
462-
463- @classmethod
464- def test_ipv6_mtu_higher_than_default_no_ipv4_iface_v6_iface_first(cls):
465- cls.skip_by_date(cls.__name__, cls.release, bugnum="1706973",
466- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
467+ @unittest.skip("Sysconfig does not support mixed v4/v6 MTU: LP:#1706973")
468+ def test_ip_output(self):
469+ pass
470+
471+ @unittest.skip("Sysconfig does not support mixed v4/v6 MTU: LP:#1706973")
472+ def test_ipv6_mtu_smaller_than_ipv4_v6_iface_first(self):
473+ pass
474+
475+ @unittest.skip("Sysconfig does not support mixed v4/v6 MTU: LP:#1706973")
476+ def test_ipv6_mtu_smaller_than_ipv4_non_default(self):
477+ pass
478+
479+ @unittest.skip("Sysconfig does not support mixed v4/v6 MTU: LP:#1706973")
480+ def test_ipv6_mtu_higher_than_default_no_ipv4_iface_up(self):
481+ pass
482+
483+ @unittest.skip("Sysconfig does not support mixed v4/v6 MTU: LP:#1706973")
484+ def test_ipv6_mtu_higher_than_default_no_ipv4_iface_v6_iface_first(self):
485+ pass
486
487
488 class PreciseHWETTestNetworkMtu(relbase.precise_hwe_t, TestNetworkMtuAbs):
489@@ -204,6 +200,12 @@
490 class ArtfulTestNetworkMtu(relbase.artful, TestNetworkMtuAbs):
491 __test__ = True
492
493+ @classmethod
494+ def setUpClass(cls):
495+ cls.skip_by_date(cls.__name__, cls.release, "1671951",
496+ fixby=(2017, 10, 20), removeby=(2018, 1, 23))
497+ super().setUpClass()
498+
499
500 class Centos66TestNetworkMtu(centos_relbase.centos66fromxenial,
501 CentosTestNetworkMtuAbs):
502
503=== modified file 'tests/vmtests/test_network_vlan.py'
504--- tests/vmtests/test_network_vlan.py 2017-08-22 14:50:10 +0000
505+++ tests/vmtests/test_network_vlan.py 2017-10-05 21:13:20 +0000
506@@ -12,7 +12,6 @@
507 collect_scripts = TestNetworkBaseTestsAbs.collect_scripts + [
508 textwrap.dedent("""
509 cd OUTPUT_COLLECT_D
510- dpkg-query -W -f '${Status}' vlan > vlan_installed
511 ip -d link show interface1.2667 |tee ip_link_show_interface1.2667
512 ip -d link show interface1.2668 |tee ip_link_show_interface1.2668
513 ip -d link show interface1.2669 |tee ip_link_show_interface1.2669
514@@ -31,15 +30,12 @@
515 def test_output_files_exist_vlan(self):
516 link_files = ["ip_link_show_%s" % vlan['name']
517 for vlan in self.get_vlans()]
518- self.output_files_exist(["vlan_installed"] + link_files)
519+ self.output_files_exist(link_files)
520
521 def test_vlan_installed(self):
522- status = self.load_collect_file("vlan_installed").strip()
523- logger.debug('vlan installed?: %s', status)
524- self.assertEqual('install ok installed', status)
525+ self.assertIn("vlan", self.debian_packages, "vlan deb not installed")
526
527 def test_vlan_enabled(self):
528-
529 # we must have at least one
530 self.assertGreaterEqual(len(self.get_vlans()), 1)
531
532@@ -103,12 +99,6 @@
533 class ZestyTestNetworkVlan(relbase.zesty, TestNetworkVlanAbs):
534 __test__ = True
535
536- @classmethod
537- def setUpClass(cls):
538- cls.skip_by_date(cls.__name__, cls.release, "ci-003c6678e",
539- fixby=(2017, 9, 18), removeby=(2017, 9, 27))
540- super().setUpClass()
541-
542
543 class ArtfulTestNetworkVlan(relbase.artful, TestNetworkVlanAbs):
544 __test__ = True

Subscribers

People subscribed via source and target branches