[OE-core] [RFC PATCH 2/2] sanity: implement network connectivity test

Joshua Lock josh at linux.intel.com
Sat Jun 18 03:04:22 UTC 2011


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

Addresses [YOCTO #933]

Signed-off-by: Joshua Lock <josh at linux.intel.com>
---
 meta/classes/sanity.bbclass |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/meta/classes/sanity.bbclass b/meta/classes/sanity.bbclass
index bffa4f5..83a9887 100644
--- a/meta/classes/sanity.bbclass
+++ b/meta/classes/sanity.bbclass
@@ -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):
@@ -75,6 +77,33 @@ def check_create_long_filename(filepath, pathname):
             return "Failed to create a file in %s: %s" % (pathname, strerror)
     return ""
 
+def check_connectivity(d):
+    test_uris= ["http://yoctoproject.org/about",
+                "https://eula-downloads.yoctoproject.org/crownbay/crownbay-bernard-5.0.0",
+                "git://git.yoctoproject.org/yocto-firewall-test;protocol=git;rev=HEAD"]
+    retval = ""
+
+    # Only check connectivity if network and this check enabled
+    # Because it's a fairy heavy test allow disabling of just this sanity test
+    # by setting DISABLE_NETWORK_SANITY
+    data = bb.data.createCopy(d)
+    network_disabled = not bb.data.getVar('BB_NO_NETWORK', data, True)
+    check_disabled = bb.data.getVar('DISABLE_NETWORK_SANITY', data, True)
+    if check_disabled or network_disabled:
+        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, e:
+            retval = "Error connecting to the network to fetch, http/https and git checked.\nPlease check the wiki (https://wiki.yoctoproject.org/wiki/Connectivity%20Troubleshooting) for more suggestions.\n" % e
+        finally:
+            # Make sure we tidy up the cruft
+            oe.path.remove(dldir)
+    return retval
+
 def check_sanity(e):
     from bb import note, error, data, __version__
 
-- 
1.7.5.4





More information about the Openembedded-core mailing list