use of org.neo4j.logging.AssertableLogProvider in project neo4j by neo4j.
the class SingleInstanceGetRoutingTableProcedureTest method shouldThrowWhenHostCtxIsInvalid.
@ParameterizedTest
@EnumSource(value = RoutingMode.class)
void shouldThrowWhenHostCtxIsInvalid(RoutingMode routingMode) {
// given
var ctxContents = new MapValueBuilder();
ctxContents.add(ADDRESS_CONTEXT_KEY, Values.stringValue("not a socket address"));
var ctx = ctxContents.build();
var config = newConfig(Config.defaults(SERVER_DEFAULTS), Duration.ofSeconds(100), new SocketAddress("neo4j.com", 7687));
config.set(routing_default_router, routingMode);
var portRegister = mock(ConnectorPortRegister.class);
var databaseManager = databaseManagerMock(config, true);
var logProvider = new AssertableLogProvider();
var procedure = newProcedure(databaseManager, portRegister, config, logProvider);
var expectedMessage = "An address key is included in the query string provided to the GetRoutingTableProcedure, but its value could not be parsed.";
// when/then
assertThrows(ProcedureException.class, () -> invoke(procedure, ID, ctx), expectedMessage);
}
use of org.neo4j.logging.AssertableLogProvider in project neo4j by neo4j.
the class SingleInstanceGetRoutingTableProcedureTest method shouldThrowIfClientProvidedPortIsNotANumber.
@ParameterizedTest
@EnumSource(value = RoutingMode.class)
void shouldThrowIfClientProvidedPortIsNotANumber(RoutingMode routingMode) {
// given
var advertisedBoldPort = 8776;
var clientProvidedPort = "bolt";
var advertisedBoltAddress = new SocketAddress("neo4j.com", advertisedBoldPort);
var clientProvidedHostPortStr = String.format("%s:%s", "my.neo4j-service.com", clientProvidedPort);
var ctxContents = new MapValueBuilder();
ctxContents.add(ADDRESS_CONTEXT_KEY, Values.stringValue(clientProvidedHostPortStr));
var ctx = ctxContents.build();
var portRegister = mock(ConnectorPortRegister.class);
when(portRegister.getLocalAddress(BoltConnector.NAME)).thenReturn(new HostnamePort("neo4j.com", advertisedBoldPort));
var config = newConfig(Config.defaults(SERVER_DEFAULTS), Duration.ofSeconds(100), advertisedBoltAddress);
config.set(routing_default_router, routingMode);
var databaseManager = databaseManagerMock(config, true);
var logProvider = new AssertableLogProvider();
var procedure = newProcedure(databaseManager, portRegister, config, logProvider);
var expectedMessage = "An address key is included in the query string provided to the GetRoutingTableProcedure, but its value could not be parsed.";
// when
assertThrows(ProcedureException.class, () -> invoke(procedure, ID, ctx), expectedMessage);
}
use of org.neo4j.logging.AssertableLogProvider in project neo4j by neo4j.
the class TransactionHandleRegistryTest method shouldGenerateTransactionId.
@Test
void shouldGenerateTransactionId() {
// given
AssertableLogProvider logProvider = new AssertableLogProvider();
var memoryPool = mock(MemoryPool.class);
TransactionHandleRegistry registry = new TransactionHandleRegistry(Clocks.fakeClock(), Duration.ofMillis(0), logProvider, memoryPool);
TransactionHandle handle = mock(TransactionHandle.class);
// when
long id1 = registry.begin(handle);
long id2 = registry.begin(handle);
// then
assertNotEquals(id1, id2);
assertThat(logProvider).doesNotHaveAnyLogs();
verify(memoryPool, times(2)).reserveHeap(TransactionHandleRegistry.ACTIVE_TRANSACTION_SHALLOW_SIZE);
verifyNoMoreInteractions(memoryPool);
}
use of org.neo4j.logging.AssertableLogProvider in project neo4j by neo4j.
the class TransactionHandleRegistryTest method shouldStoreSuspendedTransaction.
@Test
void shouldStoreSuspendedTransaction() throws Exception {
// Given
AssertableLogProvider logProvider = new AssertableLogProvider();
var memoryPool = mock(MemoryPool.class);
TransactionHandleRegistry registry = new TransactionHandleRegistry(Clocks.fakeClock(), Duration.ofMillis(0), logProvider, memoryPool);
TransactionHandle handle = mock(TransactionHandle.class);
long id = registry.begin(handle);
// When
registry.release(id, handle);
TransactionHandle acquiredHandle = registry.acquire(id);
// Then
assertSame(handle, acquiredHandle);
assertThat(logProvider).doesNotHaveAnyLogs();
var inOrder = inOrder(memoryPool);
inOrder.verify(memoryPool).reserveHeap(TransactionHandleRegistry.ACTIVE_TRANSACTION_SHALLOW_SIZE);
inOrder.verify(memoryPool).reserveHeap(TransactionHandleRegistry.SUSPENDED_TRANSACTION_SHALLOW_SIZE);
inOrder.verify(memoryPool).releaseHeap(TransactionHandleRegistry.SUSPENDED_TRANSACTION_SHALLOW_SIZE);
verifyNoMoreInteractions(memoryPool);
}
use of org.neo4j.logging.AssertableLogProvider in project neo4j by neo4j.
the class TransactionHandleRegistryTest method expiryTimeShouldBeSetToCurrentTimePlusTimeout.
@Test
void expiryTimeShouldBeSetToCurrentTimePlusTimeout() throws Exception {
// Given
AssertableLogProvider logProvider = new AssertableLogProvider();
FakeClock clock = Clocks.fakeClock();
var memoryPool = mock(MemoryPool.class);
int timeoutLength = 123;
TransactionHandleRegistry registry = new TransactionHandleRegistry(clock, Duration.ofMillis(timeoutLength), logProvider, memoryPool);
TransactionHandle handle = mock(TransactionHandle.class);
long id = registry.begin(handle);
// When
long timesOutAt = registry.release(id, handle);
// Then
assertThat(timesOutAt).isEqualTo(clock.millis() + timeoutLength);
// And when
clock.forward(1337, TimeUnit.MILLISECONDS);
registry.acquire(id);
timesOutAt = registry.release(id, handle);
// Then
assertThat(timesOutAt).isEqualTo(clock.millis() + timeoutLength);
}
Aggregations