[oe-commits] [openembedded-core] 01/01: oeqa/httpserver: Add extra logging for debugging
git at git.openembedded.org
git at git.openembedded.org
Thu Nov 15 09:19:34 UTC 2018
This is an automated email from the git hooks/post-receive script.
rpurdie pushed a commit to branch master-next
in repository openembedded-core.
commit 1af7f104fc4468891208c912169b00856151e2f8
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Wed Nov 14 09:23:54 2018 +0000
oeqa/httpserver: Add extra logging for debugging
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
meta/classes/testimage.bbclass | 4 +---
meta/lib/oeqa/runtime/cases/apt.py | 2 +-
meta/lib/oeqa/runtime/cases/dnf.py | 2 +-
meta/lib/oeqa/runtime/cases/opkg.py | 2 +-
meta/lib/oeqa/utils/httpserver.py | 46 +++++++++++++++++++++++++++++++------
5 files changed, 43 insertions(+), 13 deletions(-)
diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass
index 914c9b3..742d287 100644
--- a/meta/classes/testimage.bbclass
+++ b/meta/classes/testimage.bbclass
@@ -44,9 +44,7 @@ BASICTESTSUITE = "\
ping date df ssh scp python perl gi ptest parselogs \
logrotate connman systemd oe_syslog pam stap ldd xorg \
kernelmodule gcc buildcpio buildlzip buildgalculator \
- ${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'dnf rpm', '', d)} \
- ${@bb.utils.contains('IMAGE_PKGTYPE', 'ipk', 'opkg', '', d)} \
- ${@bb.utils.contains('IMAGE_PKGTYPE', 'deb', 'apt', '', d)}"
+ dnf rpm opkg apt"
DEFAULT_TEST_SUITES = "${BASICTESTSUITE}"
diff --git a/meta/lib/oeqa/runtime/cases/apt.py b/meta/lib/oeqa/runtime/cases/apt.py
index 8d4dd35..793143f 100644
--- a/meta/lib/oeqa/runtime/cases/apt.py
+++ b/meta/lib/oeqa/runtime/cases/apt.py
@@ -18,7 +18,7 @@ class AptRepoTest(AptTest):
@classmethod
def setUpClass(cls):
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_DEB'], 'all')
- cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip)
+ cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger)
cls.repo_server.start()
@classmethod
diff --git a/meta/lib/oeqa/runtime/cases/dnf.py b/meta/lib/oeqa/runtime/cases/dnf.py
index e93a1ce..c1ed39d 100644
--- a/meta/lib/oeqa/runtime/cases/dnf.py
+++ b/meta/lib/oeqa/runtime/cases/dnf.py
@@ -55,7 +55,7 @@ class DnfRepoTest(DnfTest):
@classmethod
def setUpClass(cls):
cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-testimage-repo'),
- cls.tc.target.server_ip)
+ cls.tc.target.server_ip, logger=cls.tc.logger)
cls.repo_server.start()
@classmethod
diff --git a/meta/lib/oeqa/runtime/cases/opkg.py b/meta/lib/oeqa/runtime/cases/opkg.py
index 3be480a..693f5d6 100644
--- a/meta/lib/oeqa/runtime/cases/opkg.py
+++ b/meta/lib/oeqa/runtime/cases/opkg.py
@@ -21,7 +21,7 @@ class OpkgRepoTest(OpkgTest):
if cls.tc.td["MULTILIB_VARIANTS"]:
allarchfeed = cls.tc.td["TUNE_PKGARCH"]
service_repo = os.path.join(cls.tc.td['DEPLOY_DIR_IPK'], allarchfeed)
- cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip)
+ cls.repo_server = HTTPService(service_repo, cls.tc.target.server_ip, logger=cls.tc.logger)
cls.repo_server.start()
@classmethod
diff --git a/meta/lib/oeqa/utils/httpserver.py b/meta/lib/oeqa/utils/httpserver.py
index 7d12331..620c95b 100644
--- a/meta/lib/oeqa/utils/httpserver.py
+++ b/meta/lib/oeqa/utils/httpserver.py
@@ -1,15 +1,22 @@
import http.server
import multiprocessing
import os
+import traceback
+import signal
from socketserver import ThreadingMixIn
class HTTPServer(ThreadingMixIn, http.server.HTTPServer):
- def server_start(self, root_dir):
- import signal
- signal.signal(signal.SIGTERM, signal.SIG_DFL)
- os.chdir(root_dir)
- self.serve_forever()
+ def server_start(self, root_dir, logger):
+ self.logger = logger
+ try:
+ self.logger.info("In server")
+ os.chdir(root_dir)
+ self.logger.info("In server3")
+ self.serve_forever()
+ except Exception as e:
+ self.logger.info("In server4 %s" % traceback.format_exc())
+ raise
class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
@@ -18,19 +25,44 @@ class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
class HTTPService(object):
- def __init__(self, root_dir, host=''):
+ def __init__(self, root_dir, host='', logger=None):
self.root_dir = root_dir
self.host = host
self.port = 0
+ self.logger = logger
def start(self):
+ if self.logger:
+ self.logger.info("Starting HTTPServer %s:%s" % (self.host, self.port))
self.server = HTTPServer((self.host, self.port), HTTPRequestHandler)
if self.port == 0:
self.port = self.server.server_port
- self.process = multiprocessing.Process(target=self.server.server_start, args=[self.root_dir])
+ self.process = multiprocessing.Process(target=self.server.server_start, args=[self.root_dir, self.logger])
+ if self.logger:
+ self.logger.info("Started HTTPServer1 %s:%s" % (self.host, self.port))
+ # The signal handler from testimage.bbclass can cause deadlocks here
+ # if the HTTPServer is terminated before it can restore the standard
+ #signal behaviour
+ orig = signal.getsignal(signal.SIGTERM)
+ signal.signal(signal.SIGTERM, signal.SIG_DFL)
self.process.start()
+ signal.signal(signal.SIGTERM, orig)
+
+ if self.logger:
+ self.logger.info("Started HTTPServer2 %s:%s" % (self.host, self.port))
+
def stop(self):
+ if self.logger:
+ self.logger.info("Stopping HTTPServer %s:%s" % (self.host, self.port))
self.server.server_close()
+ if self.logger:
+ self.logger.info("Stopping HTTPServer1 %s:%s" % (self.host, self.port))
self.process.terminate()
+
+ if self.logger:
+ self.logger.info("Stopping HTTPServer2 %s:%s" % (self.host, self.port))
self.process.join()
+ if self.logger:
+ self.logger.info("Stopped HTTPServer3 %s:%s" % (self.host, self.port))
+
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list