Skip to content

Commit a6bcaec

Browse files
committed
Refactor logging in integration tests to use GeneratedLogCapture
- Updated `McpApplicationIntegrationTest` to replace the in-memory log appender with a new `GeneratedLogCapture` class for improved logging management during tool invocation failure tests. - Adjusted log level settings for the generated logger in the `logback.xml` configuration to ensure proper logging behavior during tests.
1 parent ab9a152 commit a6bcaec

2 files changed

Lines changed: 26 additions & 13 deletions

File tree

src/test/java/com/github/thought2code/mcp/annotated/integration/McpApplicationIntegrationTest.java

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static org.junit.jupiter.api.Assertions.assertThrows;
88
import static org.junit.jupiter.api.Assertions.assertTrue;
99

10+
import ch.qos.logback.classic.Level;
1011
import ch.qos.logback.classic.spi.ILoggingEvent;
1112
import ch.qos.logback.core.read.ListAppender;
1213
import com.github.thought2code.mcp.annotated.McpApplicationContext;
@@ -148,7 +149,7 @@ void streamableTransport_shouldServeAllFixtureComponents() {
148149
@Test
149150
void toolInvocationFailure_shouldKeepClientContractAndEmitSourceMethodLog() {
150151
int port = new Random().nextInt(8000, 9000);
151-
ListAppender<ILoggingEvent> appender = attachInMemoryLogAppender();
152+
GeneratedLogCapture capture = attachGeneratedInvocationLogAppender();
152153
AnnotatedMcpServer server =
153154
TestMcpServerLifecycle.start(context, TestMcpConfigurations.streamable(port));
154155
try {
@@ -170,12 +171,12 @@ void toolInvocationFailure_shouldKeepClientContractAndEmitSourceMethodLog() {
170171
}
171172

172173
assertTrue(
173-
hasInvocationFailureLog(appender.list),
174+
hasInvocationFailureLog(capture.appender().list),
174175
"Expected invocation failure log with sourceMethod and exception detail");
175176
} finally {
176177
assert server != null;
177178
server.stop();
178-
detachInMemoryLogAppender(appender);
179+
detachGeneratedInvocationLogAppender(capture);
179180
}
180181
}
181182

@@ -241,20 +242,25 @@ private static boolean hasCause(Throwable error, Predicate<Throwable> matcher) {
241242
return false;
242243
}
243244

244-
private static ListAppender<ILoggingEvent> attachInMemoryLogAppender() {
245-
ch.qos.logback.classic.Logger rootLogger =
246-
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
245+
private static GeneratedLogCapture attachGeneratedInvocationLogAppender() {
246+
ch.qos.logback.classic.Logger generatedLogger =
247+
(ch.qos.logback.classic.Logger)
248+
LoggerFactory.getLogger("com.github.thought2code.mcp.annotated.generated");
249+
Level previousLevel = generatedLogger.getLevel();
250+
boolean previousAdditivity = generatedLogger.isAdditive();
247251
ListAppender<ILoggingEvent> appender = new ListAppender<>();
248252
appender.start();
249-
rootLogger.addAppender(appender);
250-
return appender;
253+
generatedLogger.setLevel(Level.ERROR);
254+
generatedLogger.setAdditive(false);
255+
generatedLogger.addAppender(appender);
256+
return new GeneratedLogCapture(generatedLogger, appender, previousLevel, previousAdditivity);
251257
}
252258

253-
private static void detachInMemoryLogAppender(ListAppender<ILoggingEvent> appender) {
254-
ch.qos.logback.classic.Logger rootLogger =
255-
(ch.qos.logback.classic.Logger) LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
256-
rootLogger.detachAppender(appender);
257-
appender.stop();
259+
private static void detachGeneratedInvocationLogAppender(GeneratedLogCapture capture) {
260+
capture.logger().detachAppender(capture.appender());
261+
capture.logger().setLevel(capture.previousLevel());
262+
capture.logger().setAdditive(capture.previousAdditivity());
263+
capture.appender().stop();
258264
}
259265

260266
private static boolean hasInvocationFailureLog(List<ILoggingEvent> events) {
@@ -272,4 +278,10 @@ private static boolean hasInvocationFailureLog(List<ILoggingEvent> events) {
272278
}
273279
return false;
274280
}
281+
282+
private record GeneratedLogCapture(
283+
ch.qos.logback.classic.Logger logger,
284+
ListAppender<ILoggingEvent> appender,
285+
Level previousLevel,
286+
boolean previousAdditivity) {}
275287
}

src/test/resources/logback.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<!-- Expected failure paths in unit/integration tests intentionally emit ERROR logs. -->
1919
<logger name="com.github.thought2code.mcp.annotated.util.JacksonHelper" level="OFF"/>
2020
<logger name="com.github.thought2code.mcp.annotated.server.JettyHttpServer" level="OFF"/>
21+
<logger name="com.github.thought2code.mcp.annotated.generated" level="OFF"/>
2122

2223
<root level="WARN">
2324
<appender-ref ref="CONSOLE"/>

0 commit comments

Comments
 (0)