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

Proposed by Ryan Harper
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
Scott Moser (community) Approve
Chad Smith 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.
Revision history for this message
Server Team CI bot (server-team-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
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.

Revision history for this message
Chad Smith (chad.smith) wrote :

Looks pretty good, couple of nits and questions.

Revision history for this message
Ryan Harper (raharper) wrote :

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

533. By Ryan Harper

Fix spelling of 'additional' in curthooks log message

534. By Ryan Harper

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

535. By Ryan Harper

Raise a ValueError in ip_route_show regex failure to match

536. By Ryan Harper

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

Revision history for this message
Server Team CI bot (server-team-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Scott Moser (smoser) :
Revision history for this message
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

Use util.lsb_release()

Revision history for this message
Scott Moser (smoser) wrote :

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

Revision history for this message
Scott Moser (smoser) wrote :

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

Revision history for this message
Server Team CI bot (server-team-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
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.
>

Revision history for this message
Scott Moser (smoser) :
Revision history for this message
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

Merge from smoser

539. By Ryan Harper

Fix up merge issues

Revision history for this message
Scott Moser (smoser) wrote :
Revision history for this message
Scott Moser (smoser) wrote :

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

review: Approve
Revision history for this message
Server Team CI bot (server-team-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
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