This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
The following commit(s) were added to refs/heads/master by this push:
new 7bf2b6247 Fix CAY2723IT random failure
7bf2b6247 is described below
commit 7bf2b62476ba2c9934670b25971790418b7d9a27
Author: Nikita Timofeev <[email protected]>
AuthorDate: Tue Mar 14 16:57:50 2023 +0300
Fix CAY2723IT random failure
---
.../java/org/apache/cayenne/access/CAY2723IT.java | 88 +++-------------------
1 file changed, 12 insertions(+), 76 deletions(-)
diff --git
a/cayenne-server/src/test/java/org/apache/cayenne/access/CAY2723IT.java
b/cayenne-server/src/test/java/org/apache/cayenne/access/CAY2723IT.java
index 5749e5398..b0e1eef06 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/CAY2723IT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/CAY2723IT.java
@@ -18,32 +18,19 @@
****************************************************************/
package org.apache.cayenne.access;
-import org.apache.cayenne.access.translator.ParameterBinding;
-import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.di.Binder;
import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Module;
-import org.apache.cayenne.log.JdbcEventLogger;
-import org.apache.cayenne.log.Slf4jJdbcEventLogger;
import org.apache.cayenne.testdo.testmap.Painting;
import org.apache.cayenne.testdo.testmap.PaintingInfo;
import org.apache.cayenne.unit.di.DataChannelInterceptor;
import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ExtraModules;
import org.apache.cayenne.unit.di.server.ServerCase;
import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.apache.cayenne.util.Util;
import org.junit.Before;
import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.sql.SQLException;
import static org.junit.Assert.assertEquals;
@UseServerRuntime(CayenneProjects.TESTMAP_PROJECT)
-@ExtraModules(CAY2723IT.CustomLogModule.class)
public class CAY2723IT extends ServerCase {
@Inject
private DataContext context;
@@ -56,13 +43,18 @@ public class CAY2723IT extends ServerCase {
*/
@Before
public void warmup() {
- Painting painting = context.newObject(Painting.class);
- painting.setPaintingTitle("test_warmup");
- context.commitChanges();
-
- painting = context.newObject(Painting.class);
- painting.setPaintingTitle("test_warmup");
- context.commitChanges();
+ // try to trigger PK generator. so it wouldn't random fail the actual
test
+ for(int i=0; i<20; i++) {
+ int queryCounter = queryInterceptor.runWithQueryCounter(() -> {
+ Painting painting = context.newObject(Painting.class);
+ painting.setPaintingTitle("test_warmup");
+ context.commitChanges();
+ });
+ // PK generator triggered, we are ready
+ if(queryCounter > 1) {
+ return;
+ }
+ }
}
@Test
@@ -82,60 +74,4 @@ public class CAY2723IT extends ServerCase {
int queryCounter = queryInterceptor.runWithQueryCounter(() ->
context.commitChanges());
assertEquals(1, queryCounter);
}
-
- public static class CustomLogger extends Slf4jJdbcEventLogger {
-
- private static final Logger logger =
LoggerFactory.getLogger(JdbcEventLogger.class);
-
- public CustomLogger(@Inject RuntimeProperties runtimeProperties) {
- super(runtimeProperties);
- }
-
- @Override
- public void log(String message) {
- if (message != null) {
- logger.error("\t>>>>>\t" + message);
- }
- }
-
- @Override
- public void logQuery(String sql, ParameterBinding[] bindings) {
- StringBuilder buffer = new StringBuilder("\t>>>>>\t")
- .append(sql)
- .append(" ");
- appendParameters(buffer, "bind", bindings);
- if (buffer.length() > 0) {
- logger.error(buffer.toString());
- }
- }
-
- @Override
- public void logQueryError(Throwable th) {
- if (th != null) {
- th = Util.unwindException(th);
- }
-
- logger.error("*** error.", th);
-
- if (th instanceof SQLException) {
- SQLException sqlException = ((SQLException)
th).getNextException();
- while (sqlException != null) {
- logger.error("*** nested SQL error.", sqlException);
- sqlException = sqlException.getNextException();
- }
- }
- }
-
- @Override
- public boolean isLoggable() {
- return true;
- }
- }
-
- public static class CustomLogModule implements Module {
- @Override
- public void configure(Binder binder) {
- binder.bind(JdbcEventLogger.class).to(CustomLogger.class);
- }
- }
}