src/wok/server.py | 3 ++- tests/utils.py | 17 ++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-)
Currently administration permissions are required to
run tests in order to change nginx configuration.
With this patch, tests requests are handled directly by
cherrypy, without being proxied by nginx. This allows
tests to be run without administration permissions.
Signed-off-by: Lucio Correia <luciojhc@linux.vnet.ibm.com>
---
src/wok/server.py | 3 ++-
tests/utils.py | 17 ++++++++++++-----
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/wok/server.py b/src/wok/server.py
index fc2e167..cdffe6d 100644
--- a/src/wok/server.py
+++ b/src/wok/server.py
@@ -69,7 +69,8 @@ class Server(object):
config.config.set(sec, item, str(getattr(options, item)))
# Check proxy configuration
- check_proxy_config()
+ if not hasattr(options, 'no_proxy') or not options.no_proxy:
+ check_proxy_config()
make_dirs = [
os.path.abspath(config.get_log_download_path()),
diff --git a/tests/utils.py b/tests/utils.py
index 3c7e9da..2e4c63a 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -40,6 +40,7 @@ from wok.exception import NotFoundError, OperationFailed
from wok.utils import wok_log
HOST = '0.0.0.0'
+PORT = 8010
PROXY_PORT = 8001
fake_user = {'admin': 'letmein!', 'user': 'letmein!'}
@@ -88,14 +89,15 @@ if sys.version_info[:2] == (2, 6):
unittest.TestCase.assertNotIn = assertNotIn
-def run_server(test_mode, environment='dev', server_root=''):
+def run_server(test_mode, environment='dev', server_root='', no_proxy=True):
+ port = PORT if no_proxy else PROXY_PORT
args = type('_', (object,),
- {'cherrypy_port': 8010, 'max_body_size': '4*1024',
+ {'cherrypy_port': port, 'max_body_size': '4*1024',
'test': test_mode, 'access_log': '/dev/null',
'error_log': '/dev/null', 'environment': environment,
'log_level': 'debug', 'session_timeout': 10,
- 'server_root': server_root})()
+ 'server_root': server_root, 'no_proxy': no_proxy})()
s = wok.server.Server(args)
t = threading.Thread(target=s.start)
@@ -121,8 +123,8 @@ def _request(conn, path, data, method, headers, user):
return conn.getresponse()
-def request(path, data=None, method='GET', headers=None, user='admin'):
- # verify if HTTPSConnection has context parameter
+def requestHttps(path, data=None, method='GET', headers=None, user='admin'):
+ # To work, this requires run_server() to be called with no_proxy=False.
if "context" in inspect.getargspec(httplib.HTTPSConnection.__init__).args:
context = ssl._create_unverified_context()
conn = httplib.HTTPSConnection(HOST, PROXY_PORT, context=context)
@@ -132,6 +134,11 @@ def request(path, data=None, method='GET', headers=None, user='admin'):
return _request(conn, path, data, method, headers, user)
+def request(path, data=None, method='GET', headers=None, user='admin'):
+ conn = httplib.HTTPConnection(HOST, PORT)
+ return _request(conn, path, data, method, headers, user)
+
+
class FakeUser(User):
auth_type = "fake"
--
2.7.4
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
Hi Lucio,
After applying this patch, I got the following errors while running the
tests:
======================================================================
ERROR: test_production_env (test_server_root.ServerRootTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_server_root.py", line 47, in test_production_env
setup_server('production', server_root)
File "test_server_root.py", line 35, in setup_server
server_root=server_root)
File "utils.py", line 102, in run_server
s = wok.server.Server(args)
File "/home/alinefm/wok/src/wok/server.py", line 148, in __init__
self.reqLogger = RequestLogger()
File "/home/alinefm/wok/src/wok/reqlogger.py", line 123, in __init__
h = logging.handlers.WatchedFileHandler(log, 'a')
File "/usr/lib64/python2.7/logging/handlers.py", line 391, in __init__
logging.FileHandler.__init__(self, filename, mode, encoding, delay)
File "/usr/lib64/python2.7/logging/__init__.py", line 913, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib64/python2.7/logging/__init__.py", line 943, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied:
'/home/alinefm/wok/data/user-requests.data'
======================================================================
ERROR: test_production_env (test_server_root.ServerRootTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "test_server_root.py", line 40, in tearDown
test_server.stop()
AttributeError: 'NoneType' object has no attribute 'stop'
----------------------------------------------------------------------
Ran 21 tests in 30.105s
FAILED (errors=12)
I have already deleted the former user-requests.data file but the error
keeps the same.
Do I need to do something before tetsing this patch?
Regards,
Aline Manera
On 02/24/2017 05:54 PM, Lucio Correia wrote:
> Currently administration permissions are required to
> run tests in order to change nginx configuration.
>
> With this patch, tests requests are handled directly by
> cherrypy, without being proxied by nginx. This allows
> tests to be run without administration permissions.
>
> Signed-off-by: Lucio Correia <luciojhc@linux.vnet.ibm.com>
> ---
> src/wok/server.py | 3 ++-
> tests/utils.py | 17 ++++++++++++-----
> 2 files changed, 14 insertions(+), 6 deletions(-)
>
> diff --git a/src/wok/server.py b/src/wok/server.py
> index fc2e167..cdffe6d 100644
> --- a/src/wok/server.py
> +++ b/src/wok/server.py
> @@ -69,7 +69,8 @@ class Server(object):
> config.config.set(sec, item, str(getattr(options, item)))
>
> # Check proxy configuration
> - check_proxy_config()
> + if not hasattr(options, 'no_proxy') or not options.no_proxy:
> + check_proxy_config()
>
> make_dirs = [
> os.path.abspath(config.get_log_download_path()),
> diff --git a/tests/utils.py b/tests/utils.py
> index 3c7e9da..2e4c63a 100644
> --- a/tests/utils.py
> +++ b/tests/utils.py
> @@ -40,6 +40,7 @@ from wok.exception import NotFoundError, OperationFailed
> from wok.utils import wok_log
>
> HOST = '0.0.0.0'
> +PORT = 8010
> PROXY_PORT = 8001
>
> fake_user = {'admin': 'letmein!', 'user': 'letmein!'}
> @@ -88,14 +89,15 @@ if sys.version_info[:2] == (2, 6):
> unittest.TestCase.assertNotIn = assertNotIn
>
>
> -def run_server(test_mode, environment='dev', server_root=''):
> +def run_server(test_mode, environment='dev', server_root='', no_proxy=True):
>
> + port = PORT if no_proxy else PROXY_PORT
> args = type('_', (object,),
> - {'cherrypy_port': 8010, 'max_body_size': '4*1024',
> + {'cherrypy_port': port, 'max_body_size': '4*1024',
> 'test': test_mode, 'access_log': '/dev/null',
> 'error_log': '/dev/null', 'environment': environment,
> 'log_level': 'debug', 'session_timeout': 10,
> - 'server_root': server_root})()
> + 'server_root': server_root, 'no_proxy': no_proxy})()
>
> s = wok.server.Server(args)
> t = threading.Thread(target=s.start)
> @@ -121,8 +123,8 @@ def _request(conn, path, data, method, headers, user):
> return conn.getresponse()
>
>
> -def request(path, data=None, method='GET', headers=None, user='admin'):
> - # verify if HTTPSConnection has context parameter
> +def requestHttps(path, data=None, method='GET', headers=None, user='admin'):
> + # To work, this requires run_server() to be called with no_proxy=False.
> if "context" in inspect.getargspec(httplib.HTTPSConnection.__init__).args:
> context = ssl._create_unverified_context()
> conn = httplib.HTTPSConnection(HOST, PROXY_PORT, context=context)
> @@ -132,6 +134,11 @@ def request(path, data=None, method='GET', headers=None, user='admin'):
> return _request(conn, path, data, method, headers, user)
>
>
> +def request(path, data=None, method='GET', headers=None, user='admin'):
> + conn = httplib.HTTPConnection(HOST, PORT)
> + return _request(conn, path, data, method, headers, user)
> +
> +
> class FakeUser(User):
> auth_type = "fake"
>
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
On 27/02/2017 10:42, Aline Manera wrote:
> Hi Lucio,
>
> After applying this patch, I got the following errors while running the
> tests:
>
> ======================================================================
> ERROR: test_production_env (test_server_root.ServerRootTests)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "test_server_root.py", line 47, in test_production_env
> setup_server('production', server_root)
> File "test_server_root.py", line 35, in setup_server
> server_root=server_root)
> File "utils.py", line 102, in run_server
> s = wok.server.Server(args)
> File "/home/alinefm/wok/src/wok/server.py", line 148, in __init__
> self.reqLogger = RequestLogger()
> File "/home/alinefm/wok/src/wok/reqlogger.py", line 123, in __init__
> h = logging.handlers.WatchedFileHandler(log, 'a')
> File "/usr/lib64/python2.7/logging/handlers.py", line 391, in __init__
> logging.FileHandler.__init__(self, filename, mode, encoding, delay)
> File "/usr/lib64/python2.7/logging/__init__.py", line 913, in __init__
> StreamHandler.__init__(self, self._open())
> File "/usr/lib64/python2.7/logging/__init__.py", line 943, in _open
> stream = open(self.baseFilename, self.mode)
> IOError: [Errno 13] Permission denied:
> '/home/alinefm/wok/data/user-requests.data'
>
> ======================================================================
> ERROR: test_production_env (test_server_root.ServerRootTests)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "test_server_root.py", line 40, in tearDown
> test_server.stop()
> AttributeError: 'NoneType' object has no attribute 'stop'
>
> ----------------------------------------------------------------------
> Ran 21 tests in 30.105s
>
> FAILED (errors=12)
>
> I have already deleted the former user-requests.data file but the error
> keeps the same.
>
> Do I need to do something before tetsing this patch?
>
> Regards,
> Aline Manera
Yes, you need to remove the data dir as well, since it also has wrong
permission.
--
Lucio Correia
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
© 2016 - 2025 Red Hat, Inc.