コード例 #1
0
class BaseWebTest(unittest.TestCase):
    initial_auth = ('Basic', ('brokername', ''))
    relative_to = os.path.dirname(__file__)

    def setUp(self):
        self.app = webtest.TestApp('config:tests.ini', relative_to=self.relative_to)
        self.app.RequestClass = PrefixedRequestClass

        self.db = DB(config)
        self.valid_params = ['inn', 'atc', 'inn2atc', 'atc2inn']

    def tearDown(self):
        self.db.flushall()
コード例 #2
0
 def setUpClass(cls):
     cls.redis_process = subprocess.Popen(
         ['redis-server', '--port',
          str(cls.PORT), '--logfile /dev/null'])
     sleep(0.1)
     cls.db = DB(cache_config)
     cls.redis = StrictRedis(port=cls.PORT)
コード例 #3
0
    def __init__(self, config):
        self.config = config

        # Cache DB settings
        self.db = DB(self.config)
        logger.info(
            'Caching backend: \'{}\', db name: \'{}\', host: \'{}\', port: \'{}\''
            .format(self.db.backend, self.db.db_name, self.db.host,
                    self.db.port),
            extra=journal_context({'MESSAGE_ID': BRIDGE_INFO}, {}))

        self.BASE_DIR = BASE_DIR

        self.INFINITY_LOOP = True

        self.time_update_at = string_time_to_datetime(
            self.config_get('time_update_at') or '05:30:00')
        self.delay = int(self.config_get('delay')) or 60
        self.registry_delay = int(self.config_get('registry_delay')) or 60
        self.json_files_delay = int(self.config_get('json_files_delay')) or 10
        self.file_cleaner_delay = int(
            self.config_get('file_cleaner_delay')) or 10
        self.cache_monitoring_delay = int(
            self.config_get('cache_monitoring_delay')) or 10

        self.source_registry = self.config_get('source_registry')
        try:
            self.source_registry_proxy = self.config_get(
                'source_registry_proxy')
        except (NoOptionError, KeyError):
            self.source_registry_proxy = None

        self._files_init()

        self.proxy_client = ProxyClient(
            host=self.config_get('proxy_host'),
            port=self.config_get('proxy_port'),
            version=self.config_get('proxy_version'))

        self.services_not_available = event.Event()
        self.services_not_available.set()

        self.registry = partial(
            Registry.spawn,
            source_registry=self.source_registry,
            source_registry_proxy=self.source_registry_proxy,
            time_update_at=self.time_update_at,
            delay=self.delay,
            registry_delay=self.registry_delay,
            services_not_available=self.services_not_available)
        self.json_former = partial(
            JsonFormer.spawn,
            db=self.db,
            delay=self.delay,
            json_files_delay=self.json_files_delay,
            cache_monitoring_delay=self.cache_monitoring_delay,
            services_not_available=self.services_not_available)

        self.sandbox_mode = os.environ.get('SANDBOX_MODE', 'False')
コード例 #4
0
    def setUp(self):
        self.db = DB(config)
        self.DATA_PATH = os.path.join(self.BASE_DIR, 'temp')
        if not os.path.exists(self.DATA_PATH):
            os.makedirs(self.DATA_PATH)

        with open(os.path.join(self.DATA_PATH, 'registry.xml'), 'w'):
            pass
コード例 #5
0
    def __init__(self, request):
        self.request = request
        self.DATA_PATH = os.path.join(BASE_DIR, 'data')

        db_config = {
            'app:api': {
                'cache_host':
                self.request.registry.settings.get('cache_host'),
                'cache_port':
                self.request.registry.settings.get('cache_port'),
                'cache_db_name':
                self.request.registry.settings.get('cache_db_name'),
            }
        }
        self.db = DB(db_config)

        self.valid_params = ['inn', 'atc', 'inn2atc', 'atc2inn']
コード例 #6
0
class RegistryView(object):
    def __init__(self, request):
        self.request = request
        self.DATA_PATH = os.path.join(BASE_DIR, 'data')

        db_config = {
            'app:api': {
                'cache_host':
                self.request.registry.settings.get('cache_host'),
                'cache_port':
                self.request.registry.settings.get('cache_port'),
                'cache_db_name':
                self.request.registry.settings.get('cache_db_name'),
            }
        }
        self.db = DB(db_config)

        self.valid_params = ['inn', 'atc', 'inn2atc', 'atc2inn']

    @view_config(request_method='GET', permission='registry')
    def get(self):
        param = self.request.matchdict.get('param')

        if param in self.valid_params:
            try:
                data = str_to_obj(self.db.get(param))
            except ValueError:
                data = None
                logger.warn('Cache is empty!',
                            extra=journal_context({'MESSAGE_ID': API_INFO},
                                                  {}))

            if data:
                response = Response(body=json.dumps(data),
                                    content_type='application/json',
                                    status=200)
            else:
                file_path = os.path.join(self.DATA_PATH,
                                         '{}.json'.format(param))
                response = FileResponse(path=file_path,
                                        request=self.request,
                                        content_type='application/json')
        else:
            msg = 'URL parameter must be "inn.json", "atc.json", "inn2atc.json" or "atc2inn.json"'
            data = {
                'success': False,
                'error': True,
                'message':
                'URL parameter "{}" not valid. {}'.format(param, msg)
            }
            response = Response(body=json.dumps(data),
                                content_type='application/json',
                                status=400)

        return response
コード例 #7
0
    def setUp(self):
        self.app = webtest.TestApp('config:tests.ini', relative_to=self.relative_to)
        self.app.RequestClass = PrefixedRequestClass

        self.db = DB(config)
        self.valid_params = ['inn', 'atc', 'inn2atc', 'atc2inn']