예제 #1
0
    def _exception(self, e):
        logger.exception(e)

        self.exception = e
        self.exit.set()

        CaesarConfig.unregister()
예제 #2
0
파일: app_test.py 프로젝트: cpadavis/swap
    def test_config_caesar(self, put):
        addr = Address.swap_classify()
        data = {
            'extractors_config': {
                'name': {
                    'type': 'external',
                    'url': addr
                }
            },
            'reducers_config': {
                'name': {
                    'type': 'external'
                }
            },
        }

        mock = MagicMock()
        mock.text = json.dumps({
            'extractors_config': {
                'name': {
                    'type': 'external',
                    'url': addr
                }
            },
            'reducers_config': {
                'name': {
                    'type': 'external'
                }
            },
        })
        with patch.object(Requests, 'fetch_caesar_config',
                          MagicMock(return_value=mock)):
            CaesarConfig.register()

        put.assert_called_with(data)
예제 #3
0
    def run(args, swap=None):
        control = caesar.init_threader(swap)
        api = caesar.API(control)

        logger.info('Registering swap in caesar')

        if args.register:
            # Try to deregister swap from caesar on exit
            atexit.register(CaesarConfig.unregister())
            # Register swap in caesar
            CaesarConfig.register()

        logger.info('launching flask app')
        api.run()
예제 #4
0
    def run(swap=None):
        if CaesarConfig.is_registered():
            raise RuntimeError(
                'Another instance of SWAP is already registered with caesar.')

        control = caesar.init_threader(swap)
        api = caesar.API(control)

        logger.info('Registering swap in caesar')
        # Try to disable swap in caesar on exit
        atexit.register(CaesarConfig.disable)
        # Register swap in caesar
        CaesarConfig.register()

        logger.info('launching flask app')
        api.run()
예제 #5
0
    def call(self, args):
        """
        Define what to do if this interface's command was passed
        """
        swap = None

        if args.port:
            config.online_swap.port = int(args.port[0])

        if args.load:
            swap = self.load(args.load[0])

        if args.login:
            AuthCaesar().login()

        if args.run:
            self.run(args, swap)
        else:
            if args.register:
                CaesarConfig.register()
            elif args.unregister:
                CaesarConfig.unregister()
예제 #6
0
    def generate_scores(cls):
        user = config.online_swap._auth_username
        key = CaesarConfig.registered_key()

        r = Requests.generate_scores(user, key)
        data = json.loads(r.text)

        logger.debug('Parsed scores for %d subjects', len(data))

        scores = {}
        for item in data['scores'].values():
            item['id_'] = item.pop('id')
            score = Score(**item)
            scores[score.id] = score

        thresholds = tuple(data['thresholds'])

        return ScoreExport(scores, new_golds=False, thresholds=thresholds)
예제 #7
0
    def call(self, args):
        """
        Define what to do if this interface's command was passed
        """
        swap = None

        if args.port:
            config.online_swap.port = int(args.port[0])

        if args.load:
            swap = self.load(args.load[0])

        if args.login:
            AuthCaesar().login()

        if args.run:
            self.run(swap)
        else:
            if args.register:
                CaesarConfig.register()

            elif args.unregister:
                CaesarConfig.unregister()

            elif args.clear_config:
                CaesarConfig.clear_all()
                self.print_config()

            elif args.print_config:
                self.print_config()

        if args.interact:

            if args.score_export:
                scores = SwapInteract.generate_scores()

            code.interact(local=locals())
예제 #8
0
 def print_config():
     config = CaesarConfig.get_config()
     from pprint import pprint
     pprint(config)