use of org.neo4j.logging.Log in project neo4j by neo4j.
the class ConfigTest method shouldLogIfConfigFileCouldNotBeFound.
@Test
void shouldLogIfConfigFileCouldNotBeFound() {
Log log = mock(Log.class);
// Note: we don't create the file.
Path confFile = testDirectory.file("test.conf");
Config config = Config.emptyBuilder().fromFileNoThrow(confFile).build();
config.setLogger(log);
verify(log).warn("Config file [%s] does not exist.", confFile);
}
use of org.neo4j.logging.Log in project neo4j by neo4j.
the class SettingMigratorsTest method testDefaultDatabaseMigrator.
@Test
void testDefaultDatabaseMigrator() throws IOException {
Path confFile = testDirectory.createFile("test.conf");
Files.write(confFile, List.of("dbms.active_database=foo"));
{
Config config = Config.newBuilder().fromFile(confFile).build();
Log log = mock(Log.class);
config.setLogger(log);
assertEquals("foo", config.get(GraphDatabaseSettings.default_database));
verify(log).warn("Use of deprecated setting %s. It is replaced by %s", "dbms.active_database", GraphDatabaseSettings.default_database.name());
}
{
Config config = Config.newBuilder().fromFile(confFile).set(GraphDatabaseSettings.default_database, "bar").build();
Log log = mock(Log.class);
config.setLogger(log);
assertEquals("bar", config.get(GraphDatabaseSettings.default_database));
verify(log).warn("Use of deprecated setting %s. It is replaced by %s", "dbms.active_database", GraphDatabaseSettings.default_database.name());
}
}
use of org.neo4j.logging.Log in project neo4j by neo4j.
the class BuiltInProceduresTest method setup.
@BeforeEach
void setup() throws Exception {
procs.registerComponent(KernelTransaction.class, ctx -> ctx.internalTransaction().kernelTransaction(), false);
procs.registerComponent(DependencyResolver.class, Context::dependencyResolver, false);
procs.registerComponent(GraphDatabaseAPI.class, Context::graphDatabaseAPI, false);
procs.registerComponent(Transaction.class, Context::internalTransaction, true);
procs.registerComponent(SecurityContext.class, Context::securityContext, true);
procs.registerComponent(ProcedureCallContext.class, Context::procedureCallContext, true);
procs.registerComponent(SystemGraphComponents.class, ctx -> systemGraphComponents, false);
procs.registerComponent(Log.class, ctx -> log, false);
procs.registerType(Node.class, NTNode);
procs.registerType(Relationship.class, NTRelationship);
procs.registerType(Path.class, NTPath);
new SpecialBuiltInProcedures("1.3.37", Edition.COMMUNITY.toString()).accept(procs);
procs.registerProcedure(BuiltInProcedures.class);
procs.registerProcedure(BuiltInDbmsProcedures.class);
when(transaction.kernelTransaction()).thenReturn(tx);
when(tx.tokenRead()).thenReturn(tokens);
when(tx.dataRead()).thenReturn(read);
when(tx.schemaRead()).thenReturn(schemaRead);
when(tx.securityContext()).thenReturn(SecurityContext.AUTH_DISABLED);
when(callContext.isCalledFromCypher()).thenReturn(false);
when(schemaRead.snapshot()).thenReturn(schemaReadCore);
when(tokens.propertyKeyGetAllTokens()).thenAnswer(asTokens(propKeys));
when(tokens.labelsGetAllTokens()).thenAnswer(asTokens(labels));
when(tokens.relationshipTypesGetAllTokens()).thenAnswer(asTokens(relTypes));
when(schemaReadCore.indexesGetAll()).thenAnswer(i -> Iterators.concat(indexes.iterator(), uniqueIndexes.iterator()));
when(schemaReadCore.index(any(SchemaDescriptor.class))).thenAnswer((Answer<IndexDescriptor>) invocationOnMock -> {
SchemaDescriptor schema = invocationOnMock.getArgument(0);
return getIndexReference(schema);
});
when(schemaReadCore.constraintsGetAll()).thenAnswer(i -> constraints.iterator());
when(tokens.propertyKeyName(anyInt())).thenAnswer(invocation -> propKeys.get(invocation.getArgument(0)));
when(tokens.nodeLabelName(anyInt())).thenAnswer(invocation -> labels.get(invocation.getArgument(0)));
when(tokens.relationshipTypeName(anyInt())).thenAnswer(invocation -> relTypes.get(invocation.getArgument(0)));
when(tokens.propertyKeyGetName(anyInt())).thenAnswer(invocation -> propKeys.get(invocation.getArgument(0)));
when(tokens.labelGetName(anyInt())).thenAnswer(invocation -> labels.get(invocation.getArgument(0)));
when(tokens.relationshipTypeGetName(anyInt())).thenAnswer(invocation -> relTypes.get(invocation.getArgument(0)));
when(tokens.entityTokensGetNames(any(), any())).then(invocation -> {
EntityType type = invocation.getArgument(0);
int[] ids = invocation.getArgument(1);
Map<Integer, String> mapping = type == EntityType.NODE ? labels : relTypes;
return Arrays.stream(ids).mapToObj(mapping::get).toArray(String[]::new);
});
when(schemaReadCore.constraintsGetForRelationshipType(anyInt())).thenReturn(emptyIterator());
when(schemaReadCore.indexesGetForLabel(anyInt())).thenReturn(emptyIterator());
when(schemaReadCore.indexesGetForRelationshipType(anyInt())).thenReturn(emptyIterator());
when(schemaReadCore.constraintsGetForLabel(anyInt())).thenReturn(emptyIterator());
when(read.countsForNode(anyInt())).thenReturn(1L);
when(read.countsForRelationship(anyInt(), anyInt(), anyInt())).thenReturn(1L);
when(schemaReadCore.indexGetState(any(IndexDescriptor.class))).thenReturn(InternalIndexState.ONLINE);
}
use of org.neo4j.logging.Log in project neo4j by neo4j.
the class UserAggregationFunctionTest method shouldInjectLogging.
@Test
void shouldInjectLogging() throws KernelException {
// Given
Log log = spy(Log.class);
components.register(Log.class, ctx -> log);
CallableUserAggregationFunction function = procedureCompiler.compileAggregationFunction(LoggingFunction.class).get(0);
// When
UserAggregator aggregator = function.create(prepareContext());
aggregator.update(new AnyValue[] {});
aggregator.result();
// Then
verify(log).debug("1");
verify(log).info("2");
verify(log).warn("3");
verify(log).error("4");
}
use of org.neo4j.logging.Log in project neo4j by neo4j.
the class UserAggregationFunctionTest method shouldSupportFunctionDeprecation.
@Test
void shouldSupportFunctionDeprecation() throws Throwable {
// Given
Log log = mock(Log.class);
ProcedureCompiler procedureCompiler = new ProcedureCompiler(new TypeCheckers(), components, new ComponentRegistry(), log, ProcedureConfig.DEFAULT);
// When
List<CallableUserAggregationFunction> funcs = procedureCompiler.compileAggregationFunction(FunctionWithDeprecation.class);
// Then
verify(log).warn("Use of @UserAggregationFunction(deprecatedBy) without @Deprecated in org.neo4j.procedure.impl.badFunc");
verifyNoMoreInteractions(log);
for (CallableUserAggregationFunction func : funcs) {
String name = func.signature().name().name();
func.create(prepareContext());
switch(name) {
case "newFunc":
assertFalse(func.signature().deprecated().isPresent(), "Should not be deprecated");
break;
case "oldFunc":
case "badFunc":
assertTrue(func.signature().deprecated().isPresent(), "Should be deprecated");
assertThat(func.signature().deprecated().get()).isEqualTo("newFunc");
break;
default:
fail("Unexpected function: " + name);
}
}
}
Aggregations