X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=lttng-ust-java-tests-common%2Fsrc%2Ftest%2Fjava%2Forg%2Flttng%2Fust%2Fagent%2Fintegration%2Fclient%2FTcpClientIT.java;h=0c0af7d68c9aa89ad5f3351440af8256e0992222;hb=7a4f0255e3d52ad76b194fb2e83bcdc6f641549e;hp=a86a273cc3f969d07cba3f0e6830aa1e2b9b5f18;hpb=73fb67850f841baaa164b86a2e739917da4247e2;p=lttng-ust-java-tests.git diff --git a/lttng-ust-java-tests-common/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java b/lttng-ust-java-tests-common/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java index a86a273..0c0af7d 100644 --- a/lttng-ust-java-tests-common/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java +++ b/lttng-ust-java-tests-common/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java @@ -18,21 +18,21 @@ package org.lttng.ust.agent.integration.client; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assume.assumeTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.lttng.tools.ILttngSession; import org.lttng.tools.LttngToolsHelper; import org.lttng.ust.agent.ILttngAgent; @@ -42,7 +42,7 @@ import org.lttng.ust.agent.session.LogLevelSelector; import org.lttng.ust.agent.session.LogLevelSelector.LogLevelType; import org.lttng.ust.agent.utils.EventRuleFactory; import org.lttng.ust.agent.utils.ILogLevelStrings; -import org.lttng.ust.agent.utils.TestPrintRunner; +import org.lttng.ust.agent.utils.TestPrintExtension; /** * Tests for the TCP client only, without using an agent. @@ -53,7 +53,7 @@ import org.lttng.ust.agent.utils.TestPrintRunner; * * @author Alexandre Montplaisir */ -@RunWith(TestPrintRunner.class) +@ExtendWith(TestPrintExtension.class) public class TcpClientIT { // ------------------------------------------------------------------------ @@ -72,7 +72,6 @@ public class TcpClientIT { /* Test configuration */ private static final int DOMAIN_VALUE = ILttngAgent.Domain.JUL.value(); private static final ILttngSession.Domain SESSION_DOMAIN = ILttngSession.Domain.JUL; - private static final boolean ROOT_SESSIOND = true; private static TcpClientDebugListener clientListener; private static LttngTcpSessiondClient client; @@ -87,23 +86,40 @@ public class TcpClientIT { /** * Class setup */ - @BeforeClass + @BeforeAll public static void setupClass() { LttngToolsHelper.destroyAllSessions(); clientListener = new TcpClientDebugListener(); - client = new LttngTcpSessiondClient(clientListener, DOMAIN_VALUE, ROOT_SESSIOND); + /* Try connecting to a root sessiond first */ + client = new LttngTcpSessiondClient(clientListener, DOMAIN_VALUE, true); clientThread = new Thread(client); clientThread.start(); - assumeTrue("Timed out waiting for root sessiond", client.waitForConnection(5)); + if (client.waitForConnection(5)) { + return; + } + + /* Connection was not established, try a user sessiond instead */ + client.close(); + try { + clientThread.join(); + } catch (InterruptedException e) { + fail(e.getMessage()); + } + + client = new LttngTcpSessiondClient(clientListener, DOMAIN_VALUE, false); + clientThread = new Thread(client); + clientThread.start(); + + assertTrue(client.waitForConnection(5), "Timed out waiting for a sessiond"); } /** * Class teardown */ - @AfterClass + @AfterAll public static void teardownClass() { if (client != null) { client.close(); @@ -119,7 +135,7 @@ public class TcpClientIT { /** * Test setup */ - @Before + @BeforeEach public void setup() { session = ILttngSession.createSession(null, SESSION_DOMAIN); clientListener.clearAllCommands(); @@ -128,7 +144,7 @@ public class TcpClientIT { /** * Test teardown */ - @After + @AfterEach public void teardown() { session.close(); } @@ -255,7 +271,7 @@ public class TcpClientIT { List expectedDisabledCommands = Arrays.asList(EVENT_NAME_A, EVENT_NAME_B); assertEquals(expectedEnabledCommands, clientListener.getEnabledEventCommands()); - assertEquals(expectedDisabledCommands, clientListener.getDisabledEventCommands()); + assertTrue(clientListener.getDisabledEventCommands().containsAll(expectedDisabledCommands)); } /** @@ -526,4 +542,49 @@ public class TcpClientIT { assertEquals(expectedDisabledCommands, actualDisabledCommands); } + + // ------------------------------------------------------------------------ + // Application context filtering + // ------------------------------------------------------------------------ + + /** + * Test that enabling an event with a filter string referring to a context + * should send an agent message about this context now being "enabled". + * + * This is because we will pass the context information to UST for the + * filtering step, even if the actual context won't be present in the trace. + */ + @SuppressWarnings("static-method") + @Test + public void testContextInFilterString() { + try (ILttngSession session2 = ILttngSession.createSession(null, SESSION_DOMAIN);) { + session2.enableEvent(EVENT_NAME_A, null, false, "$app." + CONTEXT_RETRIEVER_NAME_A + ':' + CONTEXT_NAME_A + "==\"bozo\""); + + List expectedEnabledCommands = Collections.singletonList(CONTEXT_RETRIEVER_NAME_A + ':' + CONTEXT_NAME_A); + assertEquals(expectedEnabledCommands, clientListener.getEnabledAppContextCommands()); + } // close(), aka destroy the session, sending "disable context" messages + + List expectedDisabledCommands = Collections.singletonList(CONTEXT_RETRIEVER_NAME_A + ':' + CONTEXT_NAME_A); + assertEquals(expectedDisabledCommands, clientListener.getDisabledAppContextCommands()); + } + + /** + * Test that if we the context is both referred to by a filter string *and* + * enabled directly, we receive *2* messages about this context being + * enabled (and disabled on session teardown). + */ + @SuppressWarnings("static-method") + @Test + public void testContextEnabledAndInFilterString() { + try (ILttngSession session2 = ILttngSession.createSession(null, SESSION_DOMAIN);) { + session2.enableEvent(EVENT_NAME_A, null, false, "$app." + CONTEXT_RETRIEVER_NAME_A + ':' + CONTEXT_NAME_A + "==\"bozo\""); + session2.enableAppContext(CONTEXT_RETRIEVER_NAME_A, CONTEXT_NAME_A); + + List expectedEnabledCommands = Collections.nCopies(2, CONTEXT_RETRIEVER_NAME_A + ':' + CONTEXT_NAME_A); + assertEquals(expectedEnabledCommands, clientListener.getEnabledAppContextCommands()); + } // close(), aka destroy the session, sending "disable context" messages + + List expectedDisabledCommands = Collections.nCopies(2, CONTEXT_RETRIEVER_NAME_A + ':' + CONTEXT_NAME_A); + assertEquals(expectedDisabledCommands, clientListener.getDisabledAppContextCommands()); + } }