Merge ~bjornt/maas:bug-2066276-3.4 into maas:3.4

Proposed by Björn Tillenius
Status: Merged
Approved by: Björn Tillenius
Approved revision: 6c1e6d871da4e4f2616102f83f35eab120912131
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~bjornt/maas:bug-2066276-3.4
Merge into: maas:3.4
Diff against target: 110 lines (+28/-6)
4 files modified
src/maasserver/forms/tests/test_bootresource.py (+1/-0)
src/provisioningserver/utils/network.py (+9/-1)
src/provisioningserver/utils/tests/test_network.py (+13/-3)
utilities/run-py-tests-ci (+5/-2)
Reviewer Review Type Date Requested Status
MAAS Lander Needs Fixing
Björn Tillenius Approve
Review via email: mp+466218@code.launchpad.net

Commit message

Bug #2066276: ipv6 test failures: AttributeError: 'RRHeader' object has no attribute '_address'

fix: parse DNS results correctly

(cherry picked from commit 4f6ef7d4e2feab5445b39330949ed5a13d10d526)
(cherry picked from commit 557d3f62aa3399150b84cfc95949cd3416c6ce04)

Limit test processes in parallel to 4 by default.

It's possible to change the number of parallel processes by passing
in the MAAS_MAX_TEST_PROCESSES environment variable. For example:
MAAS_MAX_TEST_PROCESSES=8 utilities/run-py-tests-ci

This aims to reduce the number of intermittent failures in our CI.

(cherry picked from commit b2df4b603143d36e95b7e0d8e6b442fd2ac7c8ed)

Apply intermittent test failure fix from e4d49a5503.

To post a comment you must log in.
Revision history for this message
Björn Tillenius (bjornt) wrote :

Self-approve backport

review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b bug-2066276-3.4 lp:~bjornt/maas/+git/maas into -b 3.4 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5587/console
COMMIT: 941ca1710023763cde8b50895a181b987282bd17

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
Björn Tillenius (bjornt) wrote :

I had to pull in b2df4b603143d36e95b7e0d8e6b442fd2ac7c8ed as well, in order to get the tests to pass.

Revision history for this message
MAAS Lander (maas-lander) wrote :
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b bug-2066276-3.4 lp:~bjornt/maas/+git/maas into -b 3.4 lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/5617/console
COMMIT: a38369c18761084dc7d6e5cccb0c548ed3647061

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :
~bjornt/maas:bug-2066276-3.4 updated
6c1e6d8... by Björn Tillenius

Apply intermittent test failure fix from e4d49a5503.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/forms/tests/test_bootresource.py b/src/maasserver/forms/tests/test_bootresource.py
2index 4a3c51e..1cb5d74 100644
3--- a/src/maasserver/forms/tests/test_bootresource.py
4+++ b/src/maasserver/forms/tests/test_bootresource.py
5@@ -134,6 +134,7 @@ class TestBootResourceForm(MAASServerTestCase):
6 def test_prevents_reversed_osystem_from_driver(self):
7 reserved_name = factory.make_name("name")
8 OperatingSystemRegistry.register_item(reserved_name, CustomOS())
9+ self.addCleanup(OperatingSystemRegistry.unregister_item, reserved_name)
10 upload_type, filetype = self.pick_filetype()
11 size = random.randint(1024, 2048)
12 content = factory.make_string(size).encode("utf-8")
13diff --git a/src/provisioningserver/utils/network.py b/src/provisioningserver/utils/network.py
14index 1ea4ec0..6124f68 100644
15--- a/src/provisioningserver/utils/network.py
16+++ b/src/provisioningserver/utils/network.py
17@@ -29,6 +29,7 @@ import netifaces
18 from twisted.internet.defer import Deferred, inlineCallbacks
19 from twisted.internet.interfaces import IResolver
20 from twisted.names.client import getResolver
21+from twisted.names.dns import AAAA
22 from twisted.names.error import (
23 AuthoritativeDomainError,
24 DNSQueryTimeoutError,
25@@ -772,8 +773,15 @@ def safe_getaddrinfo(
26 resolver = getResolver()
27 answers = yield resolver.lookupIPV6Address(hostname)
28 return [
29- (AF_INET6, sock_type, proto, "", (ans._address, port, 0, 0))
30+ (
31+ AF_INET6,
32+ sock_type,
33+ proto,
34+ "",
35+ (ans.payload._address, port, 0, 0),
36+ )
37 for ans in answers[0]
38+ if ans.type == AAAA
39 ]
40
41 try:
42diff --git a/src/provisioningserver/utils/tests/test_network.py b/src/provisioningserver/utils/tests/test_network.py
43index 1ed3e6e..24fec44 100644
44--- a/src/provisioningserver/utils/tests/test_network.py
45+++ b/src/provisioningserver/utils/tests/test_network.py
46@@ -24,7 +24,7 @@ from testtools.matchers import (
47 StartsWith,
48 )
49 from twisted.internet.defer import inlineCallbacks, succeed
50-from twisted.names.dns import Record_AAAA
51+from twisted.names.dns import AAAA, Record_AAAA, RRHeader
52 from twisted.names.error import (
53 AuthoritativeDomainError,
54 DNSQueryTimeoutError,
55@@ -2568,7 +2568,11 @@ class TestSafeGetaddrinfo(MAASTestCase):
56 mock_resolver = Mock()
57 mock_resolver.lookupIPV6Address = lambda _: succeed(
58 (
59- [Record_AAAA(address="::")],
60+ [
61+ RRHeader(
62+ name="::", type=AAAA, payload=Record_AAAA(address="::")
63+ )
64+ ],
65 [],
66 [],
67 )
68@@ -2585,7 +2589,13 @@ class TestSafeGetaddrinfo(MAASTestCase):
69 mock_resolver = Mock()
70 mock_resolver.lookupIPV6Address = lambda _: succeed(
71 (
72- [Record_AAAA(address="::1")],
73+ [
74+ RRHeader(
75+ name="example.com",
76+ type=AAAA,
77+ payload=Record_AAAA(address="::1"),
78+ )
79+ ],
80 [],
81 [],
82 )
83diff --git a/utilities/run-py-tests-ci b/utilities/run-py-tests-ci
84index 5113d55..c8a8ff5 100755
85--- a/utilities/run-py-tests-ci
86+++ b/utilities/run-py-tests-ci
87@@ -7,18 +7,21 @@
88
89 set -o pipefail
90
91+MAX_PROCESSES=${MAAS_MAX_TEST_PROCESSES:-4}
92+
93 MAAS_RAND_SEED="$(od -vAn -N8 -tx8 < /dev/urandom | tr -d ' ')"
94 PYTHONHASHSEED="$(shuf -i 0-4294967295 -n 1)"
95 export MAAS_RAND_SEED PYTHONHASHSEED
96
97 echo "MAAS_RAND_SEED=${MAAS_RAND_SEED}"
98 echo "PYTHONHASHSEED=${PYTHONHASHSEED}"
99+echo "MAX_PROCESSES=${MAX_PROCESSES}"
100
101-bin/test.parallel --emit-subunit | \
102+bin/test.parallel --emit-subunit --subprocesses="${MAX_PROCESSES}" | \
103 bin/subunit-1to2 | \
104 bin/subunit2junitxml --no-passthrough -f -o junit.xml | \
105 bin/subunit2pyunit --no-passthrough
106 res1=$?
107-bin/pytest -n auto --maxprocesses=6 --dist=loadscope --junit-xml=junit-pytest.xml
108+bin/pytest -n auto --maxprocesses="${MAX_PROCESSES}" --dist=loadscope --junit-xml=junit-pytest.xml
109 res2=$?
110 exit $((res1 + res2))

Subscribers

People subscribed via source and target branches