Пример #1
0
    def __init__(self, address):
        self.address = address

        self.messages = _collections.deque()
        self.consumers = list()

        _plano.notice("Creating {}", self)
Пример #2
0
    def add_consumer(self, link):
        assert link.is_sender
        assert link not in self.consumers

        _plano.notice("Adding consumer for '{}' to {}",
                      link.connection.remote_container, self)

        self.consumers.append(link)
Пример #3
0
    def on_start(self, event):
        domain = "{}:{}".format(self.broker.host, self.broker.port)

        event.container.listen(domain)

        _plano.notice("Listening on '{}'", domain)

        if self.broker.ready_file != "-":
            _plano.write(self.broker.ready_file, "ready\n")
Пример #4
0
    def remove_consumer(self, link):
        assert link.is_sender

        _plano.notice("Removing consumer for '{}' from {}",
                      link.connection.remote_container, self)

        try:
            self.consumers.remove(link)
        except ValueError:
            pass
Пример #5
0
    def run(self):
        args = self.prelude + [
            self.impl_file,
            self.connection_mode,
            self.channel_mode,
            self.operation,
            self.id_,
            self.host,
            self.port,
            self.path,
            str(self.messages),
            str(self.body_size),
            str(self.credit_window),
        ]

        assert None not in args, args

        with open(self.transfers_file, "wb") as fout:
            _plano.notice("Calling '{}'", " ".join(args))

            proc = _plano.start_process(args, stdout=fout)

            try:
                self.monitor_subprocess(proc)
            except:
                _plano.stop_process(proc)
                raise

            if proc.returncode != 0:
                raise CommandError("{} exited with code {}", self.role,
                                   proc.returncode)

        if _os.path.getsize(self.transfers_file) == 0:
            raise CommandError("No transfers")

        self.compute_results()
        self.save_summary()

        _plano.call("xz --compress -0 --threads 0 {}", self.transfers_file)
Пример #6
0
    def init_impl_attributes(self):
        sender_impls = set(ARROW_IMPLS)
        receiver_impls = set(ARROW_IMPLS)
        server_impls = set(SERVER_IMPLS)

        if self.args.include_senders != "all":
            sender_impls = self.parse_impls(self.args.include_senders)

        if self.args.include_receivers != "all":
            receiver_impls = self.parse_impls(self.args.include_receivers)

        if self.args.include_servers != "all":
            server_impls = self.parse_impls(self.args.include_servers)

        if self.args.exclude_senders != "none":
            sender_impls -= self.parse_impls(self.args.exclude_senders)

        if self.args.exclude_receivers != "none":
            receiver_impls -= self.parse_impls(self.args.exclude_receivers)

        if self.args.exclude_servers != "none":
            server_impls -= self.parse_impls(self.args.exclude_servers)

        for name in list(sender_impls):
            if not impl_available(name):
                _plano.notice("Sender '{}' is unavailable", name)
                sender_impls.remove(name)

        for name in list(receiver_impls):
            if not impl_available(name):
                _plano.notice("Receiver '{}' is unavailable", name)
                receiver_impls.remove(name)

        for name in list(server_impls):
            if not impl_available(name):
                _plano.notice("Server '{}' is unavailable", name)
                server_impls.remove(name)

        self.sender_impls = sorted(sender_impls)
        self.receiver_impls = sorted(receiver_impls)
        self.server_impls = sorted(server_impls)
Пример #7
0
    def init_impl_attributes(self):
        sender_impls = set(ARROW_IMPLS)
        receiver_impls = set(ARROW_IMPLS)
        server_impls = set(SERVER_IMPLS)

        if self.args.include_senders != "all":
            sender_impls = self.parse_impls(self.args.include_senders)

        if self.args.include_receivers != "all":
            receiver_impls = self.parse_impls(self.args.include_receivers)

        if self.args.include_servers != "all":
            server_impls = self.parse_impls(self.args.include_servers)

        if self.args.exclude_senders != "none":
            sender_impls -= self.parse_impls(self.args.exclude_senders)

        if self.args.exclude_receivers != "none":
            receiver_impls -= self.parse_impls(self.args.exclude_receivers)

        if self.args.exclude_servers != "none":
            server_impls -= self.parse_impls(self.args.exclude_servers)

        for name in list(sender_impls):
            if not impl_available(name):
                _plano.notice("Sender '{}' is unavailable", name)
                sender_impls.remove(name)

        for name in list(receiver_impls):
            if not impl_available(name):
                _plano.notice("Receiver '{}' is unavailable", name)
                receiver_impls.remove(name)

        for name in list(server_impls):
            if not impl_available(name):
                _plano.notice("Server '{}' is unavailable", name)
                server_impls.remove(name)

        self.sender_impls = sorted(sender_impls)
        self.receiver_impls = sorted(receiver_impls)
        self.server_impls = sorted(server_impls)
Пример #8
0
 def notice(self, message, *args):
     _plano.notice(message, *args)
Пример #9
0
 def notice(self, message, *args):
     _plano.notice(message, *args)
Пример #10
0
    def on_disconnected(self, event):
        _plano.notice("Disconnected from {}",
                      event.connection.remote_container)

        self.remove_consumers(event.connection)
Пример #11
0
    def on_connection_closing(self, event):
        _plano.notice("Closing connection from '{}'",
                      event.connection.remote_container)

        self.remove_consumers(event.connection)
Пример #12
0
    def on_connection_opening(self, event):
        _plano.notice("Opening connection from '{}'",
                      event.connection.remote_container)

        # XXX I think this should happen automatically
        event.connection.container = event.container.container_id