def main(): """ main loop """ parser = options.ConnectorOptions() opts, _ = parser.parse_args() ecode = 0 threads = [] results = [] errors = [] stats = None opts.conn_reconnect = "false" if opts.log_stats == 'connector': stats = [] if opts.log_lib is not None: utils.set_up_client_logging(opts.log_lib) try: # main loop for i in range(opts.count): connector = threading.Thread(target=run_connectors, args=(opts, results, errors, stats)) threads.append(connector) connector.start() for i in range(len(threads)): threads[i].join() except Exception: # pylint: disable=broad-except ecode = 1 result = [sum(i_res) for i_res in zip(*results)] ecode = (len(result) == 3 and result[1] > 0) or ecode stdout = ' '.join(str(val) for val in result) for err in errors: utils.dump_error(err) if opts.log_stats == 'connector': for stat in stats: print("STATS", stat) print(stdout) sys.exit(ecode)
def prepare_content_from_file(filename): """ reads and returns file contents :param filename: path to file to be opened and read :type filename: str :return: contents of filename as unicode string :rtype: str (unicode) or None """ try: content_file = open(filename, "r") content = content_file.read() content_file.close() except IOError as exc: utils.dump_error(exc) return None content = content.rstrip() try: # python2.x convert to unicode return content.decode(sys.getfilesystemencoding()) except AttributeError: return content
def on_unhandled(self, name, event): """ Universal handler which sees all events when added as global handler to reactor. .. seealso:: node_data/clients/python/receiver.py and node_data/clients/python/sender.py :param name: event name :type name: str :param event: event object :type event: proton.Event """ dlv = event.delivery # trx_declare_failed if ((dlv is not None) and (hasattr(event, "transaction")) and (event.transaction is not None) and (dlv == event.transaction._declare) # pylint: disable=protected-access and (dlv.remote_state == proton.Delivery.REJECTED)): raise ClientException("Transaction error: %s ..." % "Transaction declare failed") # trx_failed if ((dlv is not None) and (hasattr(event, "transaction")) and (event.transaction is not None) and (dlv == event.transaction._discharge) # pylint: disable=protected-access and (dlv.remote_state == proton.Delivery.REJECTED) and (not event.transaction.failed)): raise ClientException("Transaction error: %s ..." % "Transaction failed") # connection_err if ((name == "on_connection_remote_close") and event.connection.remote_condition): err_message = "Connection error: %s ..." \ % self._evaluate_endpoint_error(event.connection, "connection") if self.conn_reconnect == "false": raise ClientException(err_message) else: utils.dump_error(err_message) # link_err if ((name == "on_link_remote_close") and event.link.remote_condition): raise ClientException( "Link error: %s ..." % self._evaluate_endpoint_error(event.link, "link")) # session_err if ((name == "on_session_remote_close") and event.session.remote_condition): raise ClientException( "Session error: %s ..." % self._evaluate_endpoint_error(event.session, "session")) # transport_err if name == "on_transport_error": err_message = "Transport error: %s - %s" % ( event.transport.condition.name, event.transport.condition.description) if ("authentication" in event.transport.condition.description.lower() or self.conn_reconnect == "false"): raise ClientException(err_message) else: utils.dump_error(err_message) # select_err if name == "on_selectable_error": raise ClientException("Selector error: %s ..." % "Selectable error ...") # delivery rejected err if (name == "on_delivery" and ((dlv is not None) and dlv.remote_state == proton.Delivery.REJECTED)): raise ClientException("Message delivery error: %s ..." % "REJECTED")