package org.lttng.ust.agent.integration.filter;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.IOException;
import java.util.Collections;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import org.junit.After;
-import org.junit.Before;
-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.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.lttng.tools.ILttngSession;
import org.lttng.ust.agent.ILttngHandler;
import org.lttng.ust.agent.filter.FilterChangeNotifier;
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;
/**
* Base test class for {@link IFilterChangeListener} tests.
*
* @author Alexandre Montplaisir
*/
-@RunWith(TestPrintRunner.class)
+@ExtendWith(TestPrintExtension.class)
public abstract class FilterListenerITBase {
private static final String EVENT_NAME_A = "eventA";
private TestFilterListener listener;
private ILttngHandler handler;
+ protected EventRuleFactory eventRuleFactory;
+
protected abstract ILttngSession.Domain getSessionDomain();
protected abstract ILttngHandler getLogHandler() throws SecurityException, IOException;
protected abstract ILogLevelStrings getLogLevelStrings();
+ protected EventRuleFactory getEventRuleFactory() {
+ if (eventRuleFactory == null) {
+ eventRuleFactory = new EventRuleFactory(getSessionDomain());
+ }
+ return eventRuleFactory;
+ }
+
/**
* Test setup
*
* @throws SecurityException
* @throws IOException
*/
- @Before
+ @BeforeEach
public void setup() throws SecurityException, IOException {
handler = getLogHandler();
listener = new TestFilterListener();
FilterChangeNotifier.getInstance().registerListener(listener);
session = ILttngSession.createSession(null, getSessionDomain());
+
+ assertEquals(0, listener.getNbNotifications());
}
/**
* Test teardown
*/
- @After
+ @AfterEach
public void teardown() {
session.close();
FilterChangeNotifier.getInstance().unregisterListener(listener);
+ listener = null;
handler.close();
}
@Test
public void testOneRule() {
Set<EventRule> rules = Collections.singleton(
- EventRuleFactory.createRule(EVENT_NAME_A));
+ getEventRuleFactory().createRule(EVENT_NAME_A));
session.enableEvent(EVENT_NAME_A, null, false, null);
@Test
public void testManyRules() {
Set<EventRule> rules = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A),
- EventRuleFactory.createRule(EVENT_NAME_B),
- EventRuleFactory.createRule(EVENT_NAME_C))
+ getEventRuleFactory().createRule(EVENT_NAME_A),
+ getEventRuleFactory().createRule(EVENT_NAME_B),
+ getEventRuleFactory().createRule(EVENT_NAME_C))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@Test
public void testManyRulesDisableSome() {
Set<EventRule> rules = Collections.singleton(
- EventRuleFactory.createRule(EVENT_NAME_A));
+ getEventRuleFactory().createRule(EVENT_NAME_A));
session.enableEvent(EVENT_NAME_A, null, false, null);
session.enableEvent(EVENT_NAME_B, null, false, null);
LogLevelSelector lls3 = new LogLevelSelector(getLogLevelStrings().infoInt(), LogLevelType.LTTNG_EVENT_LOGLEVEL_RANGE);
Set<EventRule> rules = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A, lls1),
- EventRuleFactory.createRule(EVENT_NAME_A, lls2),
- EventRuleFactory.createRule(EVENT_NAME_A, lls3))
+ getEventRuleFactory().createRule(EVENT_NAME_A, lls1),
+ getEventRuleFactory().createRule(EVENT_NAME_A, lls2),
+ getEventRuleFactory().createRule(EVENT_NAME_A, lls3))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), false, null);
String filterB = "filterB";
Set<EventRule> rules = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A),
- EventRuleFactory.createRule(EVENT_NAME_B, EventRuleFactory.LOG_LEVEL_UNSPECIFIED, filterA),
- EventRuleFactory.createRule(EVENT_NAME_C, EventRuleFactory.LOG_LEVEL_UNSPECIFIED, filterB))
+ getEventRuleFactory().createRule(EVENT_NAME_A),
+ getEventRuleFactory().createRule(EVENT_NAME_B, getEventRuleFactory().LOG_LEVEL_UNSPECIFIED, filterA),
+ getEventRuleFactory().createRule(EVENT_NAME_C, getEventRuleFactory().LOG_LEVEL_UNSPECIFIED, filterB))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@Test
public void testDetachingListener() {
Set<EventRule> rules = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A),
- EventRuleFactory.createRule(EVENT_NAME_B))
+ getEventRuleFactory().createRule(EVENT_NAME_A),
+ getEventRuleFactory().createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
fcn.registerListener(listener3);
Set<EventRule> rules = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A),
- EventRuleFactory.createRule(EVENT_NAME_B))
+ getEventRuleFactory().createRule(EVENT_NAME_A),
+ getEventRuleFactory().createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
fcn.unregisterListener(listener2);
Set<EventRule> rules = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A),
- EventRuleFactory.createRule(EVENT_NAME_B))
+ getEventRuleFactory().createRule(EVENT_NAME_A),
+ getEventRuleFactory().createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
TestFilterListener listener2 = new TestFilterListener();
Set<EventRule> rules1 = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A),
- EventRuleFactory.createRule(EVENT_NAME_B))
+ getEventRuleFactory().createRule(EVENT_NAME_A),
+ getEventRuleFactory().createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
Set<EventRule> rules2 = Stream.of(
- EventRuleFactory.createRule(EVENT_NAME_A),
- EventRuleFactory.createRule(EVENT_NAME_C))
+ getEventRuleFactory().createRule(EVENT_NAME_A),
+ getEventRuleFactory().createRule(EVENT_NAME_C))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
/**
* The filter listener used for tests.
*/
- private static class TestFilterListener implements IFilterChangeListener {
+ static class TestFilterListener implements IFilterChangeListener {
private final Set<EventRule> currentRules = new HashSet<>();
private volatile int currentNotifications = 0;