Exemplo n.º 1
0
class TimezoneTest(unittest.TestCase):
    def setUp(self):
        self.port = 8000
        self.url = 'localhost'
        self.server = WSGIServer((self.url, self.port), WSGIRequestHandler)
        self.server.set_app(timezones_app)
        self.t = threading.Thread(target=self.server.serve_forever)
        self.t.start()

    def test_api(self):
        tz_list = ('GMT', 'Europe/Moscow', 'EST')
        for tz in tz_list:
            response = requests.get(f'http://localhost:{self.port}/{tz}')
            dt = datetime.now(timezone(tz))
            self.assertEqual(response.status_code, 200)
            self.assertEqual(response.content.decode('utf-8'),
                             dt.strftime('%m.%d.%Y %H:%M:%S'))
        payload = {
            "first_date": "12.20.2021 22:21:05",
            "first_tz": "GMT",
            "second_date": "12.20.2021 22:21:05",
            "second_tz": "Europe/Moscow"
        }
        response = requests.post(
            f'http://localhost:{self.port}/api/v1/datediff', json=payload)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content.decode('utf-8'), '9000.0')
        payload = {
            "date": "12.20.2021 22:21:05",
            "tz": "Europe/Moscow",
            "target_tz": "Asia/Tomsk"
        }
        response = requests.post(
            f'http://localhost:{self.port}/api/v1/convert', json=payload)
        input_dt = datetime.strptime(payload['date'], '%m.%d.%Y %H:%M:%S')
        input_dt_tz = input_dt.replace(tzinfo=timezone(payload['tz']))
        output_dt = input_dt_tz.astimezone(timezone(payload['target_tz']))
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content.decode('utf-8'),
                         output_dt.strftime('%m.%d.%Y %H:%M:%S'))

    def tearDown(self):
        self.server.shutdown()
        self.t.join()
Exemplo n.º 2
0
class GaeTestServer(object):

    def __init__(self):
        self.sdk_path = resolve_sdk_path()
        print 'python sdk found', self.sdk_path
        sys.path.insert(0, self.sdk_path)
        import dev_appserver
        dev_appserver.fix_sys_path()
        sys.path.insert(0, 'src')
        self.testbed = None
        self.httpd = None

    def boot_gae(self):
        from google.appengine.api import memcache
        from google.appengine.ext import ndb
        from google.appengine.ext import testbed
        from google.appengine.datastore import datastore_stub_util
        self.testbed = testbed.Testbed()
        self.testbed.activate()
        self.policy = datastore_stub_util.PseudoRandomHRConsistencyPolicy(probability=0)
        self.testbed.init_datastore_v3_stub(consistency_policy=self.policy)
        self.testbed.init_memcache_stub()

    def boot_web(self, port, app):
        self.port = port
        self.httpd = WSGIServer(('localhost', port), WSGIRequestHandler)
        self.httpd.set_app(app)

    def server_forever_background(self):
        self.thread = threading.Thread(target=self.httpd.serve_forever)
        self.thread.start()

    def server_forever(self):
        self.httpd.serve_forever()

    def shutdown(self):
        if self.testbed:
            self.testbed.deactivate()
        if self.httpd:
            self.httpd.shutdown()
            self.httpd = None
Exemplo n.º 3
0
class _HTTPServer(bottle.ServerAdapter):
    """
    Reimplement bottle's WSGIRefServer. Override the request handler class and
    add a stop() method for cleanly shutting down the server.
    """
    srv = None
    app = None

    def run(self, handler):
        # Handle the TIME_WAIT state for quick server restarts
        WSGIServer.allow_reuse_address = 1

        # Create the server and start it
        self.srv = WSGIServer((self.host, self.port), _HTTPRequestHandler)
        self.srv.set_app(self.app)
        try:
            self.srv.serve_forever()
        finally:
            self.srv.server_close()

    def stop(self):
        if self.srv:
            self.srv.shutdown()
Exemplo n.º 4
0
 def shutdown(self):
     self.application.shutdown()
     WSGIServer.shutdown(self)