def open(cls, profile, user_agent=None, on_bind=None, on_unbind=None, on_release=None): """ Open a Bolt connection to a server. :param profile: :class:`.ConnectionProfile` detailing how and where to connect :param user_agent: :param on_bind: :param on_unbind: :param on_release: """ wire = cls._connect(profile) protocol_version = cls._handshake(wire) subclass = cls._get_subclass(protocol_version) if subclass is None: raise RuntimeError("Unable to agree supported protocol version") bolt = subclass(wire, profile, (user_agent or bolt_user_agent()), on_bind=on_bind, on_unbind=on_unbind, on_release=on_release) bolt.__local_port = wire.local_address.port_number bolt._hello() return bolt
def open(cls, profile, user_agent=None, on_bind=None, on_unbind=None, on_release=None, on_broken=None): """ Open a Bolt connection to a server. :param profile: :class:`.ConnectionProfile` detailing how and where to connect :param user_agent: :param on_bind: :param on_unbind: :param on_release: :param on_broken: :returns: :class:`.Bolt` connection object :raises: :class:`.ConnectionUnavailable` if a connection cannot be opened, or a protocol version cannot be agreed """ try: wire = cls._connect(profile, on_broken=on_broken) protocol_version = cls._handshake(wire) subclass = cls._get_subclass(protocol_version) if subclass is None: raise BoltProtocolError("Unable to agree supported protocol version") bolt = subclass(wire, profile, (user_agent or bolt_user_agent()), on_bind=on_bind, on_unbind=on_unbind, on_release=on_release) bolt.__local_port = wire.local_address.port_number bolt._hello() return bolt except (BoltProtocolError, WireError) as error: raise_from(ConnectionUnavailable("Cannot open connection to %r" % profile), error)
def test_bolt_user_agent(): agent = bolt_user_agent() assert agent.startswith("py2neo")