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
diff --git a/src/maasserver/forms/tests/test_bootresource.py b/src/maasserver/forms/tests/test_bootresource.py
index 4a3c51e..1cb5d74 100644
--- a/src/maasserver/forms/tests/test_bootresource.py
+++ b/src/maasserver/forms/tests/test_bootresource.py
@@ -134,6 +134,7 @@ class TestBootResourceForm(MAASServerTestCase):
134 def test_prevents_reversed_osystem_from_driver(self):134 def test_prevents_reversed_osystem_from_driver(self):
135 reserved_name = factory.make_name("name")135 reserved_name = factory.make_name("name")
136 OperatingSystemRegistry.register_item(reserved_name, CustomOS())136 OperatingSystemRegistry.register_item(reserved_name, CustomOS())
137 self.addCleanup(OperatingSystemRegistry.unregister_item, reserved_name)
137 upload_type, filetype = self.pick_filetype()138 upload_type, filetype = self.pick_filetype()
138 size = random.randint(1024, 2048)139 size = random.randint(1024, 2048)
139 content = factory.make_string(size).encode("utf-8")140 content = factory.make_string(size).encode("utf-8")
diff --git a/src/provisioningserver/utils/network.py b/src/provisioningserver/utils/network.py
index 1ea4ec0..6124f68 100644
--- a/src/provisioningserver/utils/network.py
+++ b/src/provisioningserver/utils/network.py
@@ -29,6 +29,7 @@ import netifaces
29from twisted.internet.defer import Deferred, inlineCallbacks29from twisted.internet.defer import Deferred, inlineCallbacks
30from twisted.internet.interfaces import IResolver30from twisted.internet.interfaces import IResolver
31from twisted.names.client import getResolver31from twisted.names.client import getResolver
32from twisted.names.dns import AAAA
32from twisted.names.error import (33from twisted.names.error import (
33 AuthoritativeDomainError,34 AuthoritativeDomainError,
34 DNSQueryTimeoutError,35 DNSQueryTimeoutError,
@@ -772,8 +773,15 @@ def safe_getaddrinfo(
772 resolver = getResolver()773 resolver = getResolver()
773 answers = yield resolver.lookupIPV6Address(hostname)774 answers = yield resolver.lookupIPV6Address(hostname)
774 return [775 return [
775 (AF_INET6, sock_type, proto, "", (ans._address, port, 0, 0))776 (
777 AF_INET6,
778 sock_type,
779 proto,
780 "",
781 (ans.payload._address, port, 0, 0),
782 )
776 for ans in answers[0]783 for ans in answers[0]
784 if ans.type == AAAA
777 ]785 ]
778786
779 try:787 try:
diff --git a/src/provisioningserver/utils/tests/test_network.py b/src/provisioningserver/utils/tests/test_network.py
index 1ed3e6e..24fec44 100644
--- a/src/provisioningserver/utils/tests/test_network.py
+++ b/src/provisioningserver/utils/tests/test_network.py
@@ -24,7 +24,7 @@ from testtools.matchers import (
24 StartsWith,24 StartsWith,
25)25)
26from twisted.internet.defer import inlineCallbacks, succeed26from twisted.internet.defer import inlineCallbacks, succeed
27from twisted.names.dns import Record_AAAA27from twisted.names.dns import AAAA, Record_AAAA, RRHeader
28from twisted.names.error import (28from twisted.names.error import (
29 AuthoritativeDomainError,29 AuthoritativeDomainError,
30 DNSQueryTimeoutError,30 DNSQueryTimeoutError,
@@ -2568,7 +2568,11 @@ class TestSafeGetaddrinfo(MAASTestCase):
2568 mock_resolver = Mock()2568 mock_resolver = Mock()
2569 mock_resolver.lookupIPV6Address = lambda _: succeed(2569 mock_resolver.lookupIPV6Address = lambda _: succeed(
2570 (2570 (
2571 [Record_AAAA(address="::")],2571 [
2572 RRHeader(
2573 name="::", type=AAAA, payload=Record_AAAA(address="::")
2574 )
2575 ],
2572 [],2576 [],
2573 [],2577 [],
2574 )2578 )
@@ -2585,7 +2589,13 @@ class TestSafeGetaddrinfo(MAASTestCase):
2585 mock_resolver = Mock()2589 mock_resolver = Mock()
2586 mock_resolver.lookupIPV6Address = lambda _: succeed(2590 mock_resolver.lookupIPV6Address = lambda _: succeed(
2587 (2591 (
2588 [Record_AAAA(address="::1")],2592 [
2593 RRHeader(
2594 name="example.com",
2595 type=AAAA,
2596 payload=Record_AAAA(address="::1"),
2597 )
2598 ],
2589 [],2599 [],
2590 [],2600 [],
2591 )2601 )
diff --git a/utilities/run-py-tests-ci b/utilities/run-py-tests-ci
index 5113d55..c8a8ff5 100755
--- a/utilities/run-py-tests-ci
+++ b/utilities/run-py-tests-ci
@@ -7,18 +7,21 @@
77
8set -o pipefail8set -o pipefail
99
10MAX_PROCESSES=${MAAS_MAX_TEST_PROCESSES:-4}
11
10MAAS_RAND_SEED="$(od -vAn -N8 -tx8 < /dev/urandom | tr -d ' ')"12MAAS_RAND_SEED="$(od -vAn -N8 -tx8 < /dev/urandom | tr -d ' ')"
11PYTHONHASHSEED="$(shuf -i 0-4294967295 -n 1)"13PYTHONHASHSEED="$(shuf -i 0-4294967295 -n 1)"
12export MAAS_RAND_SEED PYTHONHASHSEED14export MAAS_RAND_SEED PYTHONHASHSEED
1315
14echo "MAAS_RAND_SEED=${MAAS_RAND_SEED}"16echo "MAAS_RAND_SEED=${MAAS_RAND_SEED}"
15echo "PYTHONHASHSEED=${PYTHONHASHSEED}"17echo "PYTHONHASHSEED=${PYTHONHASHSEED}"
18echo "MAX_PROCESSES=${MAX_PROCESSES}"
1619
17bin/test.parallel --emit-subunit | \20bin/test.parallel --emit-subunit --subprocesses="${MAX_PROCESSES}" | \
18 bin/subunit-1to2 | \21 bin/subunit-1to2 | \
19 bin/subunit2junitxml --no-passthrough -f -o junit.xml | \22 bin/subunit2junitxml --no-passthrough -f -o junit.xml | \
20 bin/subunit2pyunit --no-passthrough23 bin/subunit2pyunit --no-passthrough
21res1=$?24res1=$?
22bin/pytest -n auto --maxprocesses=6 --dist=loadscope --junit-xml=junit-pytest.xml25bin/pytest -n auto --maxprocesses="${MAX_PROCESSES}" --dist=loadscope --junit-xml=junit-pytest.xml
23res2=$?26res2=$?
24exit $((res1 + res2))27exit $((res1 + res2))

Subscribers

People subscribed via source and target branches