From 9cdd52be577fff75830c854bd7738ee1649e7083 Mon Sep 17 00:00:00 2001 From: Bruno Wagner Date: Fri, 19 Aug 2016 21:37:34 -0300 Subject: Started deferring leap session creation #759 Started adapting get_leap_session to deferreds Soledad and keymanager setup calls will now happen in deferreds and leap session creation itself is a deferred with callbacks This is a start in breaking the big blocking calls we were doing on the main thread, this was done without changing code inside the leap libraries yet so things can be further optimized This breaks the ~4 seconds get_leap_session piece into smaller 1 seconds one, that can be further optimized and deferred to even smaller calls There are requests calls happening on the main thread that should get this number even further down Also moved some pieces from bitmask libraries to our bootstrap, because they are not bitmask libraries anymore and that was causing confusion --- .../bitmask_libraries/test_smtp_cert_downloader.py | 84 ---------------------- 1 file changed, 84 deletions(-) delete mode 100644 service/test/unit/bitmask_libraries/test_smtp_cert_downloader.py (limited to 'service/test/unit/bitmask_libraries/test_smtp_cert_downloader.py') diff --git a/service/test/unit/bitmask_libraries/test_smtp_cert_downloader.py b/service/test/unit/bitmask_libraries/test_smtp_cert_downloader.py deleted file mode 100644 index 2a4afa40..00000000 --- a/service/test/unit/bitmask_libraries/test_smtp_cert_downloader.py +++ /dev/null @@ -1,84 +0,0 @@ -# -# Copyright (c) 2015 ThoughtWorks, Inc. -# -# Pixelated is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Pixelated is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with Pixelated. If not, see . -import unittest -from mockito import mock, unstub -from requests import HTTPError -from pixelated.bitmask_libraries.session import SmtpCertDownloader -from tempfile import NamedTemporaryFile -from httmock import all_requests, HTTMock, urlmatch - -CERTIFICATE_DATA = 'some cert data' -USERNAME = 'some_user_name' - - -@all_requests -def not_found_mock(url, request): - return {'status_code': 404, - 'content': 'foobar'} - - -@urlmatch(netloc='api.some-server.test:4430', path='/1/smtp_cert', method='POST') -def smtp_cert_mock(url, request): - if request.body == 'address=%s' % USERNAME: - return { - "status_code": 200, - "content": CERTIFICATE_DATA - } - else: - return { - 'status_code': 401 - } - - -class TestSmtpCertDownloader(unittest.TestCase): - - def setUp(self): - self._provider = mock() - self._config = mock() - self._config.leap_home = '/tmp' - self._auth = mock() - - self._provider.config = self._config - self._provider.api_uri = 'https://api.some-server.test:4430' - self._provider.api_version = '1' - self._provider.server_name = 'some.host.tld' - - self._auth.username = USERNAME - self._auth.token = 'some token' - - def tearDown(self): - unstub() - - def test_download_certificate(self): - with HTTMock(smtp_cert_mock, not_found_mock): - cert_data = SmtpCertDownloader(self._provider, self._auth).download() - - self.assertEqual(CERTIFICATE_DATA, cert_data) - - def test_error_if_not_found(self): - downloader = SmtpCertDownloader(self._provider, self._auth) - with HTTMock(not_found_mock): - self.assertRaises(HTTPError, downloader.download) - - def test_download_to(self): - downloader = SmtpCertDownloader(self._provider, self._auth) - - with NamedTemporaryFile() as tmp_file: - with HTTMock(smtp_cert_mock, not_found_mock): - downloader.download_to(tmp_file.name) - - file_content = open(tmp_file.name).read() - self.assertEqual(CERTIFICATE_DATA, file_content) -- cgit v1.2.3