This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 796a4c9c600b8939523b6f1e2cb2013fb159028f Author: Andrus Adamchik <[email protected]> AuthorDate: Sat May 16 15:23:29 2026 -0400 tests cleanup --- .../runtime/DefaultDataNodeFactory.java | 6 ++- .../org/apache/cayenne/unit/CayenneTestsEnv.java | 52 ++-------------------- ...ataNode.java => TelemetricDataNodeFactory.java} | 46 +++++++++++-------- .../org/apache/cayenne/unit/TestTelemetry.java | 8 +++- 4 files changed, 42 insertions(+), 70 deletions(-) diff --git a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DefaultDataNodeFactory.java b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DefaultDataNodeFactory.java index 9f43a3f23..afa3aacdb 100644 --- a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DefaultDataNodeFactory.java +++ b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DefaultDataNodeFactory.java @@ -66,7 +66,7 @@ public class DefaultDataNodeFactory implements DataNodeFactory { @Override public DataNode createDataNode(DataNodeDescriptor nodeDescriptor) { - DataNode dataNode = new DataNode(nodeDescriptor.getName()); + DataNode dataNode = doCreateDataNode(nodeDescriptor.getName()); dataNode.setJdbcEventLogger(jdbcEventLogger); dataNode.setRowReaderFactory(rowReaderFactory); @@ -86,4 +86,8 @@ public class DefaultDataNodeFactory implements DataNodeFactory { return dataNode; } + // keeping a protected method for the sake of tests that would override it + protected DataNode doCreateDataNode(String name) { + return new DataNode(name); + } } diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java index 25baf4af7..cc481ea09 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java @@ -21,22 +21,14 @@ package org.apache.cayenne.unit; import org.apache.cayenne.access.DataContext; import org.apache.cayenne.access.DataDomain; import org.apache.cayenne.access.DataNode; -import org.apache.cayenne.access.dbsync.SkipSchemaUpdateStrategy; -import org.apache.cayenne.access.jdbc.SQLTemplateProcessor; -import org.apache.cayenne.access.jdbc.reader.RowReaderFactory; -import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory; -import org.apache.cayenne.access.translator.select.SelectTranslatorFactory; import org.apache.cayenne.configuration.Constants; -import org.apache.cayenne.configuration.DataNodeDescriptor; import org.apache.cayenne.configuration.DataSourceDescriptor; import org.apache.cayenne.configuration.runtime.CoreModule; -import org.apache.cayenne.configuration.runtime.DbAdapterFactory; +import org.apache.cayenne.configuration.runtime.DataNodeFactory; import org.apache.cayenne.datasource.DataSourceBuilder; import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.di.AdhocObjectFactory; -import org.apache.cayenne.di.Injector; import org.apache.cayenne.di.Module; -import org.apache.cayenne.log.JdbcEventLogger; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.map.EntityResolver; import org.apache.cayenne.map.Procedure; @@ -120,8 +112,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { @Override public void beforeEach(ExtensionContext ctx) { this.runtime = buildRuntime(); - synthesizeDataNodes(runtime, COMMON_SCHEMA.dataSource()); - this.context = (DataContext) runtime.newContext(); DbAdapter firstAdapter = runtime.getDataDomain().getDataNodes().iterator().next().getAdapter(); @@ -159,52 +149,16 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { List<Module> modules = new ArrayList<>(); modules.add(b -> CoreModule.extend(b).setProperty(Constants.OBJECT_RETAIN_STRATEGY_PROPERTY, retainStrategy)); + modules.add(b -> b.bind(DataNodeFactory.class).to(TelemetricDataNodeFactory.class)); Collections.addAll(modules, extraModules); return CayenneRuntime.builder() .addConfig(project) .addModules(modules) + .dataSource(COMMON_SCHEMA.dataSource()) .build(); } - private static void synthesizeDataNodes(CayenneRuntime runtime, DataSource dataSource) { - - DataDomain domain = runtime.getDataDomain(); - Injector runtimeInjector = runtime.getInjector(); - - JdbcEventLogger jdbcEventLogger = runtimeInjector.getInstance(JdbcEventLogger.class); - RowReaderFactory rowReaderFactory = runtimeInjector.getInstance(RowReaderFactory.class); - BatchTranslatorFactory batchTranslatorFactory = runtimeInjector.getInstance(BatchTranslatorFactory.class); - SelectTranslatorFactory selectTranslatorFactory = runtimeInjector.getInstance(SelectTranslatorFactory.class); - SQLTemplateProcessor sqlTemplateProcessor = runtimeInjector.getInstance(SQLTemplateProcessor.class); - - for (DataMap dataMap : domain.getDataMaps()) { - - DataNode node = new TestTelemetryDataNode(dataMap.getName()); - - node.setJdbcEventLogger(jdbcEventLogger); - node.setRowReaderFactory(rowReaderFactory); - node.setBatchTranslatorFactory(batchTranslatorFactory); - node.setSelectTranslatorFactory(selectTranslatorFactory); - node.setDataSource(dataSource); - - // this gives us AutoAdapter - DbAdapter adapter = runtimeInjector.getInstance(DbAdapterFactory.class) - .createAdapter(new DataNodeDescriptor(), dataSource); - - node.setAdapter(adapter); - node.setSchemaUpdateStrategy(new SkipSchemaUpdateStrategy()); - node.setSqlTemplateProcessor(sqlTemplateProcessor); - - node.addDataMap(dataMap); - domain.addNode(node); - } - - if (domain.getDataMaps().size() == 1) { - domain.setDefaultNode(domain.getDataNodes().iterator().next()); - } - } - private static void tweakProcedures(CayenneRuntime runtime, TestDbAdapter adapter) { for (DataMap dataMap : runtime.getDataDomain().getDataMaps()) { for (Procedure proc : dataMap.getProcedures()) { diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/TestTelemetryDataNode.java b/cayenne/src/test/java/org/apache/cayenne/unit/TelemetricDataNodeFactory.java similarity index 54% rename from cayenne/src/test/java/org/apache/cayenne/unit/TestTelemetryDataNode.java rename to cayenne/src/test/java/org/apache/cayenne/unit/TelemetricDataNodeFactory.java index 4ad5d5f6d..5ec032c94 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/TestTelemetryDataNode.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/TelemetricDataNodeFactory.java @@ -20,35 +20,45 @@ package org.apache.cayenne.unit; import org.apache.cayenne.access.DataNode; import org.apache.cayenne.access.OperationObserver; +import org.apache.cayenne.configuration.runtime.DefaultDataNodeFactory; import org.apache.cayenne.query.Query; import org.junit.jupiter.api.Assertions; import java.util.Collection; import java.util.concurrent.atomic.AtomicInteger; -class TestTelemetryDataNode extends DataNode { +public class TelemetricDataNodeFactory extends DefaultDataNodeFactory { - private final AtomicInteger queryCounter = new AtomicInteger(); - private volatile boolean blockingQueries; - - public TestTelemetryDataNode(String name) { - super(name); + @Override + protected DataNode doCreateDataNode(String name) { + return new TelemetricDataNode(name); } - @Override - public void performQueries(Collection<? extends Query> queries, OperationObserver callback) { - if (blockingQueries) { - Assertions.fail("Query is unexpected: " + queries); + static class TelemetricDataNode extends DataNode { + + private final AtomicInteger queryCounter = new AtomicInteger(); + private volatile boolean blockingQueries; + + public TelemetricDataNode(String name) { + super(name); } - super.performQueries(queries, callback); - queryCounter.addAndGet(queries.size()); - } - public int getQueriesCount() { - return queryCounter.get(); - } + @Override + public void performQueries(Collection<? extends Query> queries, OperationObserver callback) { + if (blockingQueries) { + Assertions.fail("Query is unexpected: " + queries); + } + super.performQueries(queries, callback); + queryCounter.addAndGet(queries.size()); + } + + public int getQueriesCount() { + return queryCounter.get(); + } - public void setBlockingQueries(boolean blockingQueries) { - this.blockingQueries = blockingQueries; + public void setBlockingQueries(boolean blockingQueries) { + this.blockingQueries = blockingQueries; + } } + } diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/TestTelemetry.java b/cayenne/src/test/java/org/apache/cayenne/unit/TestTelemetry.java index 9f5fced10..500e1705b 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/TestTelemetry.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/TestTelemetry.java @@ -37,7 +37,11 @@ class TestTelemetry { } public static int runWithQueryCounter(CayenneRuntime runtime, Runnable task) { - TestTelemetryDataNode node = (TestTelemetryDataNode) runtime.getDataDomain().getDataNodes().iterator().next(); + TelemetricDataNodeFactory.TelemetricDataNode node = (TelemetricDataNodeFactory.TelemetricDataNode) runtime + .getDataDomain() + .getDataNodes() + .iterator() + .next(); int start = node.getQueriesCount(); int end; @@ -51,7 +55,7 @@ class TestTelemetry { private static void setBlockingQueries(Collection<DataNode> nodes, boolean blocking) { for (DataNode node : nodes) { - ((TestTelemetryDataNode) node).setBlockingQueries(blocking); + ((TelemetricDataNodeFactory.TelemetricDataNode) node).setBlockingQueries(blocking); } } }
