diff options
| author | Joshua Lock <josh@linux.intel.com> | 2011-06-29 14:55:03 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-07-07 13:45:28 +0100 |
| commit | 9569e2b3471e0c61f2f105f8d611a1ba71cd93d0 (patch) | |
| tree | bcf2a1f9776faaa8e6ae090887253bb1ba696e1d | |
| parent | 8338c2dd19b2770cfc29ab87b2ce59d4c5034477 (diff) | |
| download | poky-9569e2b3471e0c61f2f105f8d611a1ba71cd93d0.tar.gz | |
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>
| -rw-r--r-- | meta/classes/sanity.bbclass | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass index 720777a399..c9d37c9d88 100644 --- a/meta/classes/sanity.bbclass +++ b/meta/classes/sanity.bbclass | |||
| @@ -35,6 +35,8 @@ def check_sanity_tmpdir_change(tmpdir, data): | |||
| 35 | 35 | ||
| 36 | # Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS) | 36 | # Check that TMPDIR isn't on a filesystem with limited filename length (eg. eCryptFS) |
| 37 | testmsg = check_create_long_filename(tmpdir, "TMPDIR") | 37 | testmsg = check_create_long_filename(tmpdir, "TMPDIR") |
| 38 | # Check that we can fetch from various network transports | ||
| 39 | testmsg = testmsg + check_connectivity(data) | ||
| 38 | return testmsg | 40 | return testmsg |
| 39 | 41 | ||
| 40 | def check_sanity_version_change(data): | 42 | def check_sanity_version_change(data): |
| @@ -79,6 +81,41 @@ def check_create_long_filename(filepath, pathname): | |||
| 79 | return "Failed to create a file in %s: %s" % (pathname, strerror) | 81 | return "Failed to create a file in %s: %s" % (pathname, strerror) |
| 80 | return "" | 82 | return "" |
| 81 | 83 | ||
| 84 | def check_connectivity(d): | ||
| 85 | # URI's to check can be set in the CONNECTIVITY_CHECK_URIS variable | ||
| 86 | # using the same syntax as for SRC_URI. If the variable is not set | ||
| 87 | # the check is skipped | ||
| 88 | test_uris = (bb.data.getVar('CONNECTIVITY_CHECK_URIS', d, True) or "").split() | ||
| 89 | retval = "" | ||
| 90 | |||
| 91 | # Only check connectivity if network enabled and the | ||
| 92 | # CONNECTIVITY_CHECK_URIS are set | ||
| 93 | network_enabled = not bb.data.getVar('BB_NO_NETWORK', d, True) | ||
| 94 | check_enabled = len(test_uris) | ||
| 95 | if check_enabled and network_enabled: | ||
| 96 | data = bb.data.createCopy(d) | ||
| 97 | bookmark = os.getcwd() | ||
| 98 | dldir = bb.data.expand('${TMPDIR}/sanity', data) | ||
| 99 | bb.data.setVar('DL_DIR', dldir, data) | ||
| 100 | |||
| 101 | try: | ||
| 102 | fetcher = bb.fetch2.Fetch(test_uris, data) | ||
| 103 | fetcher.download() | ||
| 104 | fetcher.clean(test_uris) | ||
| 105 | except Exception: | ||
| 106 | # Allow the message to be configured so that users can be | ||
| 107 | # pointed to a support mechanism. | ||
| 108 | msg = bb.data.getVar('CONNECTIVITY_CHECK_MSG', d, True) or "" | ||
| 109 | if len(msg) == 0: | ||
| 110 | msg = "Failed to fetch test data from the network. Please ensure your network is configured correctly.\n" | ||
| 111 | retval = msg | ||
| 112 | finally: | ||
| 113 | # Make sure we tidy up the cruft | ||
| 114 | oe.path.remove(dldir) | ||
| 115 | os.chdir(bookmark) | ||
| 116 | |||
| 117 | return retval | ||
| 118 | |||
| 82 | def check_sanity(e): | 119 | def check_sanity(e): |
| 83 | from bb import note, error, data, __version__ | 120 | from bb import note, error, data, __version__ |
| 84 | 121 | ||
