sanity: implement network connectivity test

Sanity test to verify files can be fetched from the network using git, http
and https fetchers point users at a page to help get set up in the case of a
failure.

Requires a variable CONNECTIVITY_CHECK_URIS to be set, using the same pattern
as SRC_URI, of URI's to test against.
The variable CONNECTIVITY_CHECK_MSG can be set to provide a custom error
message, such as a pointer to some help, when this check fails.

Addresses [YOCTO #933]

(From OE-Core rev: 8fdea2a1ac8875a42b3a57f0fd7b530f851c20e9)

Signed-off-by: Joshua Lock <josh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock 2011-06-29 14:55:03 -07:00 committed by Richard Purdie
parent 8338c2dd19
commit 9569e2b347
1 changed files with 37 additions and 0 deletions

View File

@ -35,6 +35,8 @@ def check_sanity_tmpdir_change(tmpdir, data):
# Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS)
testmsg = check_create_long_filename(tmpdir, "TMPDIR")
# Check that we can fetch from various network transports
testmsg = testmsg + check_connectivity(data)
return testmsg
def check_sanity_version_change(data):
@ -79,6 +81,41 @@ def check_create_long_filename(filepath, pathname):
return "Failed to create a file in %s: %s" % (pathname, strerror)
return ""
def check_connectivity(d):
# URI's to check can be set in the CONNECTIVITY_CHECK_URIS variable
# using the same syntax as for SRC_URI. If the variable is not set
# the check is skipped
test_uris = (bb.data.getVar('CONNECTIVITY_CHECK_URIS', d, True) or "").split()
retval = ""
# Only check connectivity if network enabled and the
# CONNECTIVITY_CHECK_URIS are set
network_enabled = not bb.data.getVar('BB_NO_NETWORK', d, True)
check_enabled = len(test_uris)
if check_enabled and network_enabled:
data = bb.data.createCopy(d)
bookmark = os.getcwd()
dldir = bb.data.expand('${TMPDIR}/sanity', data)
bb.data.setVar('DL_DIR', dldir, data)
try:
fetcher = bb.fetch2.Fetch(test_uris, data)
fetcher.download()
fetcher.clean(test_uris)
except Exception:
# Allow the message to be configured so that users can be
# pointed to a support mechanism.
msg = bb.data.getVar('CONNECTIVITY_CHECK_MSG', d, True) or ""
if len(msg) == 0:
msg = "Failed to fetch test data from the network. Please ensure your network is configured correctly.\n"
retval = msg
finally:
# Make sure we tidy up the cruft
oe.path.remove(dldir)
os.chdir(bookmark)
return retval
def check_sanity(e):
from bb import note, error, data, __version__