Exemple #1
0
def main():
    """Start and run the dispatcher."""
    parser = argparse.ArgumentParser()
    parser.add_argument("config_file",
                        help="The configuration file to run on.")
    parser.add_argument("-l",
                        "--log",
                        help="The file to log to. stdout otherwise.")
    parser.add_argument(
        "-c",
        "--log-config",
        help="Log config file to use instead of the standard logging.")
    parser.add_argument(
        "-v",
        "--verbose",
        dest="verbosity",
        action="count",
        default=0,
        help="Verbosity (between 1 and 2 occurrences with more leading to more "
        "verbose logging). WARN=0, INFO=1, "
        "DEBUG=2. This is overridden by the log config file if specified.")
    parser.add_argument(
        "-p",
        "--publish-port",
        type=int,
        dest="pub_port",
        nargs='?',
        const=0,
        default=None,
        help="Publish messages for dispatched files on this port. "
        "Default: no publishing.")
    parser.add_argument("-n",
                        "--publish-nameserver",
                        nargs='*',
                        dest="pub_nameservers",
                        help="Nameserver for publisher to connect to")
    cmd_args = parser.parse_args()
    setup_logging(cmd_args)
    logger.info("Starting up.")

    try:
        dispatcher = Dispatcher(cmd_args.config_file,
                                publish_port=cmd_args.pub_port,
                                publish_nameservers=cmd_args.pub_nameservers)
    except Exception as err:
        logger.error('Dispatcher crashed: %s', str(err))
        sys.exit(1)
    try:
        dispatcher.start()
        dispatcher.join()
    except KeyboardInterrupt:
        logger.debug("Interrupting")
    finally:
        dispatcher.close()
def test_dispatcher():
    """Test the dispatcher class."""
    dp = None
    try:
        dest_dir = os.path.join(gettempdir(), 'dptest')
        if os.path.exists(dest_dir):
            shutil.rmtree(dest_dir)
        with patch('trollmoves.dispatcher.ListenerContainer') as lc:
            queue = Queue()
            lc.return_value.output_queue = queue
            with NamedTemporaryFile('w', delete=False) as config_file:
                config_file_name = config_file.name
                config_file.write(test_local)
                config_file.flush()
                config_file.close()
                dp = Dispatcher(config_file_name)
                dp.start()
                dest_dir = os.path.join(gettempdir(), 'dptest')
                assert not os.path.exists(dest_dir)
                with NamedTemporaryFile('w') as test_file:
                    msg = Mock()
                    msg.type = 'file'
                    msg.subject = '/level2/viirs'
                    msg.data = {
                        'sensor': 'viirs',
                        'product': 'green_snow',
                        'platform_name': 'NOAA-20',
                        'start_time': datetime(2019, 9, 19, 9, 19),
                        'format': 'tif',
                        'area': 'euron1',
                        'uid': '201909190919_NOAA-20_viirs.tif',
                        'uri': test_file.name
                    }
                    expected_file = os.path.join(dest_dir,
                                                 'NOAA-20_201909190919.tif')
                    queue.put(msg)
                    time.sleep(.1)
                    assert os.path.exists(expected_file)
            # Check that the listener config items are passed correctly
            lc.assert_called_once_with(
                addresses=['tcp://127.0.0.1:40000'],
                nameserver='127.0.0.1',
                services=['service_name_1', 'service_name_2'],
                topics={'/level3/cloudtype', '/level2/viirs', '/level2/avhrr'})
    finally:
        if dp is not None:
            dp.close()
        os.remove(expected_file)
        os.rmdir(dest_dir)
        os.remove(config_file_name)
Exemple #3
0
def main():
    """Start and run the dispatcher."""
    cmd_args = parse_args()
    setup_logging(cmd_args)
    logger.info("Starting up.")

    try:
        dispatcher = Dispatcher(cmd_args.config_file,
                                publish_port=cmd_args.pub_port,
                                publish_nameservers=cmd_args.pub_nameservers)
    except Exception as err:
        logger.error('Dispatcher crashed: %s', str(err))
        sys.exit(1)
    try:
        dispatcher.start()
        dispatcher.join()
    except KeyboardInterrupt:
        logger.debug("Interrupting")
    finally:
        dispatcher.close()
Exemple #4
0
def main():
    """Start and run the dispatcher."""
    parser = argparse.ArgumentParser()
    parser.add_argument("config_file",
                        help="The configuration file to run on.")
    parser.add_argument("-l",
                        "--log",
                        help="The file to log to. stdout otherwise.")
    parser.add_argument(
        "-c",
        "--log-config",
        help="Log config file to use instead of the standard logging.")
    parser.add_argument(
        "-v",
        "--verbose",
        dest="verbosity",
        action="count",
        default=0,
        help="Verbosity (between 1 and 2 occurrences with more leading to more "
        "verbose logging). WARN=0, INFO=1, "
        "DEBUG=2. This is overridden by the log config file if specified.")
    cmd_args = parser.parse_args()

    setup_logging(cmd_args)
    logger.info("Starting up.")

    try:
        dispatcher = Dispatcher(cmd_args.config_file)
    except Exception as err:
        logger.error('Dispatcher crashed: %s', str(err))
        sys.exit(1)
    try:
        dispatcher.start()
        dispatcher.join()
    except KeyboardInterrupt:
        logger.debug("Interrupting")
    finally:
        dispatcher.close()
Exemple #5
0
def test_dispatcher(get_destinations_message):
    """Test the dispatcher class."""
    dp = None
    try:
        dest_dir = os.path.join(gettempdir(), 'dptest')
        if os.path.exists(dest_dir):
            shutil.rmtree(dest_dir)
        with patch('trollmoves.dispatcher.ListenerContainer') as lc:
            queue = Queue()
            lc.return_value.output_queue = queue
            with NamedTemporaryFile('w', delete=False) as config_file:
                config_file_name = config_file.name
                config_file.write(test_local)
                config_file.flush()
                config_file.close()
                dp = Dispatcher(config_file_name)
                dp.start()
                dest_dir = os.path.join(gettempdir(), 'dptest')
                assert not os.path.exists(dest_dir)
                with NamedTemporaryFile('w') as test_file:
                    get_destinations_message.data['uri'] = test_file.name
                    expected_file = os.path.join(dest_dir,
                                                 'NOAA-20_201909190919.tif')
                    queue.put(get_destinations_message)
                    time.sleep(.1)
                    assert os.path.exists(expected_file)
            # Check that the listener config items are passed correctly
            lc.assert_called_once_with(
                addresses=['tcp://127.0.0.1:40000'],
                nameserver='127.0.0.1',
                services=['service_name_1', 'service_name_2'],
                topics={'/level3/cloudtype', '/level2/viirs', '/level2/avhrr'})
    finally:
        if dp is not None:
            dp.close()
        os.remove(expected_file)
        os.rmdir(dest_dir)
        os.remove(config_file_name)