Esempio n. 1
0
    def test_basic(self):
        api = DjangoServerAPI()

        try:
            api.delete_cruise('test_0')
        except ValueError:
            pass
        try:
            api.delete_cruise('test_1')
        except ValueError:
            pass
        api.load_cruise(sample_test_0)
        api.load_cruise(sample_test_1)

        self.assertEqual(api.get_cruises(), ['test_0', 'test_1'])

        self.assertEqual(api.get_modes('test_0'), ['off', 'port', 'underway'])
        self.assertEqual(api.get_mode('test_0'), 'off')
        self.assertDictEqual(
            api.get_configs('test_0'), {
                'knud': {
                    'name': 'off'
                },
                'gyr1': {
                    'name': 'off'
                },
                'mwx1': {
                    'name': 'off'
                },
                's330': {
                    'name': 'off'
                }
            })

        with self.assertRaises(ValueError):
            api.set_mode('test_0', 'invalid mode')

        api.set_mode('test_0', 'underway')
        self.assertEqual(api.get_mode('test_0'), 'underway')
        self.assertDictEqual(
            api.get_configs('test_0'), {
                'knud': {
                    'knud': 'config knud->net/file',
                    'name': 'knud->net/file'
                },
                'gyr1': {
                    'gyr1': 'config gyr1->net/file',
                    'name': 'gyr1->net/file'
                },
                'mwx1': {
                    'mwx1': 'config mwx1->net/file',
                    'name': 'mwx1->net/file'
                },
                's330': {
                    's330': 'config s330->net/file',
                    'name': 's330->net/file'
                }
            })
        self.assertDictEqual(
            api.get_configs(), {
                'test_0:knud': {
                    'knud': 'config knud->net/file',
                    'name': 'knud->net/file'
                },
                'test_0:gyr1': {
                    'gyr1': 'config gyr1->net/file',
                    'name': 'gyr1->net/file'
                },
                'test_0:mwx1': {
                    'mwx1': 'config mwx1->net/file',
                    'name': 'mwx1->net/file'
                },
                'test_0:s330': {
                    's330': 'config s330->net/file',
                    'name': 's330->net/file'
                },
                'test_1:knud': {
                    'name': 'off'
                },
                'test_1:gyr1': {
                    'name': 'off'
                },
                'test_1:mwx1': {
                    'name': 'off'
                },
                'test_1:s330': {
                    'name': 'off'
                }
            })

        with self.assertRaises(ValueError):
            api.get_configs('test_1', 'invalid_mode')
        self.assertEqual(
            api.get_configs('test_1', 'port'), {
                'gyr1': {
                    'gyr1': 'config gyr1->net',
                    'name': 'gyr1->net'
                },
                'knud': {
                    'name': 'off'
                },
                'mwx1': {
                    'mwx1': 'config mwx1->net',
                    'name': 'mwx1->net'
                },
                's330': {
                    'name': 'off'
                }
            })
        self.assertDictEqual(
            api.get_loggers('test_0'), {
                'knud': {
                    'configs': ['off', 'knud->net', 'knud->net/file']
                },
                'gyr1': {
                    'configs': ['off', 'gyr1->net', 'gyr1->net/file']
                },
                'mwx1': {
                    'configs': ['off', 'mwx1->net', 'mwx1->net/file']
                },
                's330': {
                    'configs': ['off', 's330->net', 's330->net/file']
                }
            })
        api.delete_cruise('test_0')
        self.assertEqual(api.get_cruises(), ['test_1'])
        self.assertDictEqual(
            api.get_configs(), {
                'test_1:knud': {
                    'name': 'off'
                },
                'test_1:gyr1': {
                    'name': 'off'
                },
                'test_1:mwx1': {
                    'name': 'off'
                },
                'test_1:s330': {
                    'name': 'off'
                }
            })
Esempio n. 2
0
    ############################
    # If they've given us an initial cruise_config, get and load it.
    if args.config:
        cruise_config = read_json(args.config)
        api.load_cruise(cruise_config)
        api.message_log(SOURCE_NAME, '(%s@%s)' % (USER, HOSTNAME), api.INFO,
                        'started with cruise: %s' % args.config)
    if args.mode:
        if not args.config:
            raise ValueError('Argument --mode can only be used with --config')
        cruise_id = cruise_config.get('cruise', {}).get('id', None)
        if not cruise_id:
            raise ValueError('Unable to find cruise_id in config: %s' %
                             args.config)
        api.set_mode(cruise_id, args.mode)
        api.message_log(SOURCE_NAME, api.INFO, 'initial mode (%s@%s): %s',
                        (USER, HOSTNAME, args.mode))

    try:
        # If no console, just wait for the configuration update thread to
        # end as a signal that we're done.
        if args.no_console:
            logging.warning(
                '--no-console specified; waiting for LoggerManager '
                'to exit.')
            if logger_manager.update_configs_thread:
                logger_manager.update_configs_thread.join()
            else:
                logging.warning('LoggerManager has no update_configs_thread? '
                                'Exiting...')