Add unit tests to ensure TZ variable remains set
See review https://review.openstack.org/29836. Change-Id: I8ec80202789707f723abfe93ccc9cf1e677e4dc6 Signed-off-by: Peter Portante <peter.portante@redhat.com>
This commit is contained in:
parent
7bc9b0cb15
commit
eb658a1034
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
import signal
|
import signal
|
||||||
from re import sub
|
from re import sub
|
||||||
|
|
||||||
@ -99,6 +100,12 @@ def run_daemon(klass, conf_file, section_name='', once=False, **kwargs):
|
|||||||
eventlet_debug = utils.config_true_value(conf.get('eventlet_debug', 'no'))
|
eventlet_debug = utils.config_true_value(conf.get('eventlet_debug', 'no'))
|
||||||
eventlet.debug.hub_exceptions(eventlet_debug)
|
eventlet.debug.hub_exceptions(eventlet_debug)
|
||||||
|
|
||||||
|
# Ensure TZ environment variable exists to avoid stat('/etc/localtime') on
|
||||||
|
# some platforms. This locks in reported times to the timezone in which
|
||||||
|
# the server first starts running in locations that periodically change
|
||||||
|
# timezones.
|
||||||
|
os.environ['TZ'] = time.strftime("%z", time.gmtime())
|
||||||
|
|
||||||
try:
|
try:
|
||||||
klass(conf).run(once=once, **kwargs)
|
klass(conf).run(once=once, **kwargs)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
|
@ -190,6 +190,12 @@ class RestrictedGreenPool(GreenPool):
|
|||||||
|
|
||||||
|
|
||||||
def run_server(conf, logger, sock):
|
def run_server(conf, logger, sock):
|
||||||
|
# Ensure TZ environment variable exists to avoid stat('/etc/localtime') on
|
||||||
|
# some platforms. This locks in reported times to the timezone in which
|
||||||
|
# the server first starts running in locations that periodically change
|
||||||
|
# timezones.
|
||||||
|
os.environ['TZ'] = time.strftime("%z", time.gmtime())
|
||||||
|
|
||||||
wsgi.HttpProtocol.default_request_version = "HTTP/1.0"
|
wsgi.HttpProtocol.default_request_version = "HTTP/1.0"
|
||||||
# Turn off logging requests by the underlying WSGI software.
|
# Turn off logging requests by the underlying WSGI software.
|
||||||
wsgi.HttpProtocol.log_request = lambda *a: None
|
wsgi.HttpProtocol.log_request = lambda *a: None
|
||||||
@ -245,12 +251,6 @@ def run_wsgi(conf_path, app_section, *args, **kwargs):
|
|||||||
# redirect errors to logger and close stdio
|
# redirect errors to logger and close stdio
|
||||||
capture_stdio(logger)
|
capture_stdio(logger)
|
||||||
|
|
||||||
# Ensure TZ environment variable exists to avoid stat('/etc/localtime') on
|
|
||||||
# some platforms. This locks in reported times to the timezone in which
|
|
||||||
# the server first starts running in locations that periodically change
|
|
||||||
# timezones.
|
|
||||||
os.environ['TZ'] = time.strftime("%z", time.gmtime())
|
|
||||||
|
|
||||||
worker_count = int(conf.get('workers', '1'))
|
worker_count = int(conf.get('workers', '1'))
|
||||||
# Useful for profiling [no forks].
|
# Useful for profiling [no forks].
|
||||||
if worker_count == 0:
|
if worker_count == 0:
|
||||||
|
@ -15,11 +15,13 @@
|
|||||||
|
|
||||||
# TODO: Test kill_children signal handlers
|
# TODO: Test kill_children signal handlers
|
||||||
|
|
||||||
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
from getpass import getuser
|
from getpass import getuser
|
||||||
import logging
|
import logging
|
||||||
from StringIO import StringIO
|
from StringIO import StringIO
|
||||||
from test.unit import tmpfile
|
from test.unit import tmpfile
|
||||||
|
from mock import patch
|
||||||
|
|
||||||
from swift.common import daemon, utils
|
from swift.common import daemon, utils
|
||||||
|
|
||||||
@ -85,8 +87,10 @@ class TestRunDaemon(unittest.TestCase):
|
|||||||
user = %s
|
user = %s
|
||||||
""" % getuser()
|
""" % getuser()
|
||||||
with tmpfile(sample_conf) as conf_file:
|
with tmpfile(sample_conf) as conf_file:
|
||||||
|
with patch.dict('os.environ', {'TZ': ''}):
|
||||||
daemon.run_daemon(MyDaemon, conf_file)
|
daemon.run_daemon(MyDaemon, conf_file)
|
||||||
self.assertEquals(MyDaemon.forever_called, True)
|
self.assertEquals(MyDaemon.forever_called, True)
|
||||||
|
self.assert_(os.environ['TZ'] is not '')
|
||||||
daemon.run_daemon(MyDaemon, conf_file, once=True)
|
daemon.run_daemon(MyDaemon, conf_file, once=True)
|
||||||
self.assertEquals(MyDaemon.once_called, True)
|
self.assertEquals(MyDaemon.once_called, True)
|
||||||
|
|
||||||
|
@ -360,10 +360,12 @@ class TestWSGI(unittest.TestCase):
|
|||||||
_fake_rings(conf_root)
|
_fake_rings(conf_root)
|
||||||
with patch('swift.common.wsgi.wsgi') as _wsgi:
|
with patch('swift.common.wsgi.wsgi') as _wsgi:
|
||||||
with patch('swift.common.wsgi.eventlet') as _eventlet:
|
with patch('swift.common.wsgi.eventlet') as _eventlet:
|
||||||
|
with patch.dict('os.environ', {'TZ': ''}):
|
||||||
conf = wsgi.appconfig(conf_dir)
|
conf = wsgi.appconfig(conf_dir)
|
||||||
logger = logging.getLogger('test')
|
logger = logging.getLogger('test')
|
||||||
sock = listen(('localhost', 0))
|
sock = listen(('localhost', 0))
|
||||||
wsgi.run_server(conf, logger, sock)
|
wsgi.run_server(conf, logger, sock)
|
||||||
|
self.assert_(os.environ['TZ'] is not '')
|
||||||
|
|
||||||
self.assertEquals('HTTP/1.0',
|
self.assertEquals('HTTP/1.0',
|
||||||
_wsgi.HttpProtocol.default_request_version)
|
_wsgi.HttpProtocol.default_request_version)
|
||||||
|
Loading…
Reference in New Issue
Block a user