Skip to content

Commit b5c4f46

Browse files
committed
HHH-18692 Add test for issue
1 parent a38a300 commit b5c4f46

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.batch;
6+
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.Id;
9+
import org.hibernate.cfg.AvailableSettings;
10+
import org.hibernate.engine.jdbc.batch.JdbcBatchLogging;
11+
import org.hibernate.testing.logger.LogInspectionHelper;
12+
import org.hibernate.testing.logger.LogListener;
13+
import org.hibernate.testing.logger.Triggerable;
14+
import org.hibernate.testing.orm.junit.DomainModel;
15+
import org.hibernate.testing.orm.junit.JiraKey;
16+
import org.hibernate.testing.orm.junit.ServiceRegistry;
17+
import org.hibernate.testing.orm.junit.SessionFactory;
18+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
19+
import org.hibernate.testing.orm.junit.Setting;
20+
import org.jboss.logging.Logger;
21+
import org.junit.jupiter.api.BeforeAll;
22+
import org.junit.jupiter.api.Test;
23+
24+
import java.util.List;
25+
import java.util.Locale;
26+
import java.util.concurrent.CopyOnWriteArrayList;
27+
28+
import static org.assertj.core.api.Assertions.assertThat;
29+
30+
@SessionFactory
31+
@DomainModel(annotatedClasses = {
32+
BatchReleaseStatementDebugMessageTest.TestEntity.class
33+
})
34+
@ServiceRegistry(settings = @Setting(name = AvailableSettings.STATEMENT_BATCH_SIZE, value = "3"))
35+
@JiraKey("HHH-13615")
36+
public class BatchReleaseStatementDebugMessageTest {
37+
private TriggerOnDebugMessageListener trigger;
38+
39+
@BeforeAll
40+
public void setUp(SessionFactoryScope scope) {
41+
trigger = new TriggerOnDebugMessageListener();
42+
LogInspectionHelper.registerListener( trigger, JdbcBatchLogging.BATCH_LOGGER );
43+
}
44+
45+
@Test
46+
public void testLogIsNotGenerated(SessionFactoryScope scope) {
47+
48+
scope.inTransaction(
49+
session -> {
50+
session.persist( new TestEntity( 1L ) );
51+
}
52+
);
53+
assertThat( trigger.wasTriggered() ).as( "Debug message was triggered" ).isFalse();
54+
55+
}
56+
57+
private static class TriggerOnDebugMessageListener implements LogListener, Triggerable {
58+
private final List<String> triggerMessages = new CopyOnWriteArrayList<>();
59+
60+
@Override
61+
public void loggedEvent(Logger.Level level, String renderedMessage, Throwable thrown) {
62+
if ( renderedMessage.toLowerCase( Locale.ROOT )
63+
.contains( "preparedstatementdetails did not contain preparedstatement" ) ) {
64+
triggerMessages.add( renderedMessage );
65+
}
66+
}
67+
68+
@Override
69+
public String triggerMessage() {
70+
return !triggerMessages.isEmpty() ? triggerMessages.get( 0 ) : null;
71+
}
72+
73+
@Override
74+
public List<String> triggerMessages() {
75+
return triggerMessages;
76+
}
77+
78+
@Override
79+
public boolean wasTriggered() {
80+
return !triggerMessages.isEmpty();
81+
}
82+
83+
@Override
84+
public void reset() {
85+
triggerMessages.clear();
86+
}
87+
88+
}
89+
90+
@Entity(name = "TestEntity")
91+
public static class TestEntity {
92+
@Id
93+
private Long id;
94+
95+
private String name;
96+
97+
public TestEntity() {
98+
}
99+
100+
public TestEntity(Long id) {
101+
this.id = id;
102+
}
103+
}
104+
}

0 commit comments

Comments
 (0)