示例#1
0
def test_transient_error_is_retriable_case_2():
    error = Neo4jError.hydrate(
        message="Test error message",
        code="Neo.TransientError.Transaction.LockClientStopped")

    assert isinstance(error, TransientError)
    assert error.is_retriable() is False
示例#2
0
def test_neo4jerror_hydrate_with_message_and_code_rubish():
    error = Neo4jError.hydrate(message="Test error message", code="ASDF_asdf")

    assert isinstance(error, DatabaseError)
    assert error.classification == CLASSIFICATION_DATABASE
    assert error.category == "General"
    assert error.title == "UnknownError"
    assert error.metadata == {}
    assert error.message == "Test error message"
    assert error.code == "ASDF_asdf"
示例#3
0
def test_neo4jerror_hydrate_with_no_args():
    error = Neo4jError.hydrate()

    assert isinstance(error, DatabaseError)
    assert error.classification == CLASSIFICATION_DATABASE
    assert error.category == "General"
    assert error.title == "UnknownError"
    assert error.metadata == {}
    assert error.message == "An unknown error occurred"
    assert error.code == "Neo.DatabaseError.General.UnknownError"
示例#4
0
 def on_failure(self, metadata):
     """ Called when a FAILURE message has been received.
     """
     self.connection.reset()
     handler = self.handlers.get("on_failure")
     if callable(handler):
         handler(metadata)
     handler = self.handlers.get("on_summary")
     if callable(handler):
         handler()
     raise Neo4jError.hydrate(**metadata)
示例#5
0
def test_neo4jerror_hydrate_with_message_and_code_client():
    error = Neo4jError.hydrate(
        message="Test error message",
        code="Neo.{}.General.TestError".format(CLASSIFICATION_CLIENT))

    assert isinstance(error, ClientError)
    assert error.classification == CLASSIFICATION_CLIENT
    assert error.category == "General"
    assert error.title == "TestError"
    assert error.metadata == {}
    assert error.message == "Test error message"
    assert error.code == "Neo.{}.General.TestError".format(
        CLASSIFICATION_CLIENT)
    def get_one(tx):
        result = tx.run("UNWIND [1,2,3,4] AS x RETURN x")
        records = list(result)
        pytest.global_counter += 1

        if pytest.global_counter < 3:
            database_unavailable = Neo4jError.hydrate(
                message=
                "The database is not currently available to serve your request, refer to the database logs for more details. Retrying your request at a later time may succeed.",
                code="Neo.TransientError.Database.DatabaseUnavailable")
            raise database_unavailable

        return records
示例#7
0
 def on_failure(self, metadata):
     """ Called when a FAILURE message has been received.
     """
     try:
         self.connection.reset()
     except (SessionExpired, ServiceUnavailable):
         pass
     handler = self.handlers.get("on_failure")
     if callable(handler):
         handler(metadata)
     handler = self.handlers.get("on_summary")
     if callable(handler):
         handler()
     raise Neo4jError.hydrate(**metadata)
示例#8
0
def test_transient_error_is_retriable_case_3():
    error = Neo4jError.hydrate(message="Test error message",
                               code="Neo.TransientError.General.TestError")

    assert isinstance(error, TransientError)
    assert error.is_retriable() is True