Skip to content

Commit cc91df4

Browse files
committed
Address feedback
1 parent a30e5fb commit cc91df4

3 files changed

Lines changed: 31 additions & 20 deletions

File tree

api/src/main/java/org/openmrs/logging/MemoryAppender.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ private static synchronized ThreadSafeCircularFifoQueue<LogEvent> getBuffer(Stri
177177
BUFFERS.put(name, new SoftReference<>(buffer));
178178
} else if (buffer.capacity() != bufferSize) {
179179
ThreadSafeCircularFifoQueue<LogEvent> newBuffer = new ThreadSafeCircularFifoQueue<>(bufferSize);
180-
int messagesToMove = Math.min(buffer.size(), bufferSize);
181180
LogEvent[] snapshot = buffer.toArray(new LogEvent[0]);
181+
int messagesToMove = Math.min(snapshot.length, bufferSize);
182182
int start = Math.max(0, snapshot.length - messagesToMove);
183183
for (int i = start; i < snapshot.length; i++) {
184184
newBuffer.add(snapshot[i]);

api/src/test/java/org/openmrs/logging/MemoryAppenderTest.java

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -298,16 +298,21 @@ void getBuffer_shouldMigrateEventsWhenBufferSizeDecreases() {
298298
// Create new appender with same name but smaller buffer size
299299
MemoryAppender appender2 = MemoryAppender.newBuilder().setName(appenderName)
300300
.setLayout(PatternLayout.newBuilder().withPattern("%m").build()).setBufferSize(3).build();
301-
appender2.start();
302-
303-
// The new appender should have migrated the 3 most recent events
304-
List<String> logLines = appender2.getLogLines();
305-
assertThat(logLines, contains("C", "D", "E"));
306-
assertThat(appender2.getBufferSize(), equalTo(3));
301+
try {
302+
appender2.start();
303+
304+
// The new appender should have migrated the 3 most recent events
305+
List<String> logLines = appender2.getLogLines();
306+
assertThat(logLines, contains("C", "D", "E"));
307+
assertThat(appender2.getBufferSize(), equalTo(3));
308+
} finally {
309+
appender2.stop();
310+
}
307311
} finally {
308312
migrationLogger.removeAppender(appender1);
309313
migrationLogger.setLevel(null);
310314
((Logger) LogManager.getRootLogger()).getContext().updateLoggers();
315+
appender1.stop();
311316
}
312317
}
313318

@@ -333,16 +338,21 @@ void getBuffer_shouldPreserveAllEventsWhenBufferSizeIncreases() {
333338
// Create new appender with same name but larger buffer size
334339
MemoryAppender appender2 = MemoryAppender.newBuilder().setName(appenderName)
335340
.setLayout(PatternLayout.newBuilder().withPattern("%m").build()).setBufferSize(10).build();
336-
appender2.start();
337-
338-
// All events should be preserved
339-
List<String> logLines = appender2.getLogLines();
340-
assertThat(logLines, contains("A", "B", "C"));
341-
assertThat(appender2.getBufferSize(), equalTo(10));
341+
try {
342+
appender2.start();
343+
344+
// All events should be preserved
345+
List<String> logLines = appender2.getLogLines();
346+
assertThat(logLines, contains("A", "B", "C"));
347+
assertThat(appender2.getBufferSize(), equalTo(10));
348+
} finally {
349+
appender2.stop();
350+
}
342351
} finally {
343352
migrationLogger.removeAppender(appender1);
344353
migrationLogger.setLevel(null);
345354
((Logger) LogManager.getRootLogger()).getContext().updateLoggers();
355+
appender1.stop();
346356
}
347357
}
348358

api/src/test/java/org/openmrs/logging/OpenmrsConfigurationFactoryTest.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.nio.file.Path;
1515

1616
import org.junit.jupiter.api.AfterEach;
17+
import org.junit.jupiter.api.Assumptions;
1718
import org.junit.jupiter.api.BeforeEach;
1819
import org.junit.jupiter.api.Test;
1920
import org.junit.jupiter.api.io.TempDir;
@@ -145,15 +146,15 @@ void getConfigurationFiles_shouldIgnoreUnreadableFiles() throws IOException {
145146
Files.createDirectories(configDir);
146147
Path unreadable = configDir.resolve("log4j2.xml");
147148
Files.writeString(unreadable, "<Configuration/>");
148-
unreadable.toFile().setReadable(false);
149-
150-
openmrsUtilMock.when(OpenmrsUtil::getApplicationDataDirectoryAsFile).thenReturn(tempDir.toFile());
151-
openmrsUtilMock.when(() -> OpenmrsUtil.getDirectoryInApplicationDataDirectory("configuration"))
152-
.thenReturn(configDir.toFile());
153-
154-
OpenmrsConfigurationFactory factory = new OpenmrsConfigurationFactory();
149+
Assumptions.assumeTrue(unreadable.toFile().setReadable(false),
150+
"Cannot make file unreadable on this platform; skipping test");
155151

156152
try {
153+
openmrsUtilMock.when(OpenmrsUtil::getApplicationDataDirectoryAsFile).thenReturn(tempDir.toFile());
154+
openmrsUtilMock.when(() -> OpenmrsUtil.getDirectoryInApplicationDataDirectory("configuration"))
155+
.thenReturn(configDir.toFile());
156+
157+
OpenmrsConfigurationFactory factory = new OpenmrsConfigurationFactory();
157158
assertThat(factory.getConfigurationFiles(), empty());
158159
} finally {
159160
unreadable.toFile().setReadable(true);

0 commit comments

Comments
 (0)