From 1df8e5d7716e0f095b434e2190f4054edb837f42 Mon Sep 17 00:00:00 2001
From: Alexandre Montplaisir
Date: Mon, 14 Sep 2015 16:16:48 -0400
Subject: [PATCH] Handle filter strings being passed by the sessiond
Signed-off-by: Alexandre Montplaisir
---
.../agent/integration/client/TcpClientIT.java | 92 ++++++++----
.../filter/FilterListenerITBase.java | 62 +++-----
.../ust/agent/utils/EventRuleFactory.java | 135 ++++++++++++++++++
3 files changed, 225 insertions(+), 64 deletions(-)
create mode 100644 lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/utils/EventRuleFactory.java
diff --git a/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java b/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java
index ac9c99e..2794dfa 100644
--- a/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java
+++ b/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/client/TcpClientIT.java
@@ -31,8 +31,8 @@ import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
+import org.junit.runner.RunWith;
import org.lttng.tools.ILttngSession;
import org.lttng.tools.LttngToolsHelper;
import org.lttng.ust.agent.ILttngAgent;
@@ -40,7 +40,9 @@ import org.lttng.ust.agent.client.LttngTcpSessiondClient;
import org.lttng.ust.agent.session.EventRule;
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;
/**
* Tests for the TCP client only, without using an agent.
@@ -51,18 +53,16 @@ import org.lttng.ust.agent.utils.ILogLevelStrings;
*
* @author Alexandre Montplaisir
*/
+@RunWith(TestPrintRunner.class)
public class TcpClientIT {
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
- private static final LogLevelSelector LOG_LEVEL_UNSPECIFIED = new LogLevelSelector(Integer.MIN_VALUE, 0);
-
private static final String EVENT_NAME_A = "eventA";
private static final String EVENT_NAME_B = "eventB";
private static final String EVENT_NAME_C = "eventC";
- private static final String EVENT_NAME_ALL = "*";
/* Test configuration */
private static final int DOMAIN_VALUE = ILttngAgent.Domain.JUL.value();
@@ -158,7 +158,7 @@ public class TcpClientIT {
session.enableEvent(EVENT_NAME_A, null, false, null);
List expectedCommands = Collections.singletonList(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null));
+ EventRuleFactory.createRule(EVENT_NAME_A));
List actualCommands = clientListener.getEnabledEventCommands();
assertEquals(expectedCommands, actualCommands);
@@ -172,7 +172,7 @@ public class TcpClientIT {
session.enableAllEvents();
List expectedCommands = Collections.singletonList(
- new EventRule(EVENT_NAME_ALL, LOG_LEVEL_UNSPECIFIED, null));
+ EventRuleFactory.createRuleAllEvents());
List actualCommands = clientListener.getEnabledEventCommands();
assertEquals(expectedCommands, actualCommands);
@@ -187,7 +187,7 @@ public class TcpClientIT {
session.disableEvents(EVENT_NAME_A);
List expectedEnableCommands = Collections.singletonList(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null));
+ EventRuleFactory.createRule(EVENT_NAME_A));
List expectedDisableCommands = Collections.singletonList(EVENT_NAME_A);
assertEquals(expectedEnableCommands, clientListener.getEnabledEventCommands());
@@ -205,9 +205,9 @@ public class TcpClientIT {
session.disableAllEvents();
List expectedEnableCommands = Arrays.asList(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_B, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_C, LOG_LEVEL_UNSPECIFIED, null));
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_B),
+ EventRuleFactory.createRule(EVENT_NAME_C));
/*
* A "disable-event -a" will send one command for each enabled event.
* The order may be different though.
@@ -227,10 +227,8 @@ public class TcpClientIT {
session.enableAllEvents();
session.disableAllEvents();
- List expectedEnableCommands = Arrays.asList(
- new EventRule(EVENT_NAME_ALL, LOG_LEVEL_UNSPECIFIED, null));
- List expectedDisableCommands = Arrays.asList(
- EVENT_NAME_ALL);
+ List expectedEnableCommands = Arrays.asList(EventRuleFactory.createRuleAllEvents());
+ List expectedDisableCommands = Arrays.asList(EventRuleFactory.EVENT_NAME_ALL);
assertEquals(expectedEnableCommands, clientListener.getEnabledEventCommands());
assertTrue(containSameElements(expectedDisableCommands, clientListener.getDisabledEventCommands()));
@@ -246,7 +244,7 @@ public class TcpClientIT {
session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), false, null);
List expectedCommands = Collections.singletonList(
- new EventRule(EVENT_NAME_A, lls, null));
+ EventRuleFactory.createRule(EVENT_NAME_A, lls));
List actualCommands = clientListener.getEnabledEventCommands();
assertEquals(expectedCommands, actualCommands);
@@ -262,7 +260,7 @@ public class TcpClientIT {
session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), true, null);
List expectedCommands = Collections.singletonList(
- new EventRule(EVENT_NAME_A, lls, null));
+ EventRuleFactory.createRule(EVENT_NAME_A, lls));
List actualCommands = clientListener.getEnabledEventCommands();
assertEquals(expectedCommands, actualCommands);
@@ -271,7 +269,6 @@ public class TcpClientIT {
/**
* Test enabling an event twice, for the same loglevel, with --loglevel followed by --loglevel-only.
*/
- @Ignore("See http://bugs.lttng.org/issues/913")
@Test
public void testEnableEventsLogLevelRangeAndSingle() {
LogLevelSelector lls1 = new LogLevelSelector(getLogLevelStrings().warningInt(), LogLevelType.LTTNG_EVENT_LOGLEVEL_RANGE);
@@ -281,8 +278,8 @@ public class TcpClientIT {
session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), true, null);
List expectedCommands = Arrays.asList(
- new EventRule(EVENT_NAME_A, lls1, null),
- new EventRule(EVENT_NAME_A, lls2, null)
+ EventRuleFactory.createRule(EVENT_NAME_A, lls1),
+ EventRuleFactory.createRule(EVENT_NAME_A, lls2)
);
List actualCommands = clientListener.getEnabledEventCommands();
@@ -290,9 +287,8 @@ public class TcpClientIT {
}
/**
- * Test enabling an event twice, for the same loglevel, with --loglevel--only followed by --loglevel.
+ * Test enabling an event twice, for the same loglevel, with --loglevel-only followed by --loglevel.
*/
- @Ignore("See http://bugs.lttng.org/issues/913")
@Test
public void testEnableEventsLogLevelSingleAndRange() {
LogLevelSelector lls1 = new LogLevelSelector(getLogLevelStrings().warningInt(), LogLevelType.LTTNG_EVENT_LOGLEVEL_SINGLE);
@@ -302,8 +298,8 @@ public class TcpClientIT {
session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), false, null);
List expectedCommands = Arrays.asList(
- new EventRule(EVENT_NAME_A, lls1, null),
- new EventRule(EVENT_NAME_A, lls2, null)
+ EventRuleFactory.createRule(EVENT_NAME_A, lls1),
+ EventRuleFactory.createRule(EVENT_NAME_A, lls2)
);
List actualCommands = clientListener.getEnabledEventCommands();
@@ -324,11 +320,57 @@ public class TcpClientIT {
session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), false, null);
session2.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), true, null);
- List expectedCommands = Arrays.asList(new EventRule(EVENT_NAME_A, lls1, null),
- new EventRule(EVENT_NAME_A, lls2, null));
+ List expectedCommands = Arrays.asList(
+ EventRuleFactory.createRule(EVENT_NAME_A, lls1),
+ EventRuleFactory.createRule(EVENT_NAME_A, lls2));
List actualCommands = clientListener.getEnabledEventCommands();
assertEquals(expectedCommands, actualCommands);
}
}
+
+ /**
+ * Enable the same event multiple times with different filter strings.
+ */
+ @Test
+ public void testEnableEventsDiffFilters() {
+ final String filter1 = "filter1";
+ final String filter2 = "filter2";
+
+ session.enableEvent(EVENT_NAME_A, null, false, null);
+ session.enableEvent(EVENT_NAME_A, null, false, filter1);
+ session.enableEvent(EVENT_NAME_A, null, false, filter2);
+
+ List expectedCommands = Arrays.asList(
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_A, EventRuleFactory.LOG_LEVEL_UNSPECIFIED, filter1),
+ EventRuleFactory.createRule(EVENT_NAME_A, EventRuleFactory.LOG_LEVEL_UNSPECIFIED, filter2));
+ List actualCommands = clientListener.getEnabledEventCommands();
+
+ assertEquals(expectedCommands, actualCommands);
+ }
+
+ /**
+ * Enable the same event multiple times with different log levels and
+ * filters.
+ */
+ @Test
+ public void testEnableEventsLogLevelAndFilters() {
+ final LogLevelSelector lls = new LogLevelSelector(getLogLevelStrings().warningInt(), LogLevelType.LTTNG_EVENT_LOGLEVEL_RANGE);
+ final String filter = "filter1";
+
+ session.enableEvent(EVENT_NAME_A, null, false, null);
+ session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), false, null);
+ session.enableEvent(EVENT_NAME_A, null, false, filter);
+ session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), false, filter);
+
+ List expectedCommands = Arrays.asList(
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_A, lls),
+ EventRuleFactory.createRule(EVENT_NAME_A, EventRuleFactory.LOG_LEVEL_UNSPECIFIED, filter),
+ EventRuleFactory.createRule(EVENT_NAME_A, lls, filter));
+ List actualCommands = clientListener.getEnabledEventCommands();
+
+ assertEquals(expectedCommands, actualCommands);
+ }
}
diff --git a/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/filter/FilterListenerITBase.java b/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/filter/FilterListenerITBase.java
index 409ec56..020ad36 100644
--- a/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/filter/FilterListenerITBase.java
+++ b/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/integration/filter/FilterListenerITBase.java
@@ -29,7 +29,6 @@ import java.util.stream.Stream;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.lttng.tools.ILttngSession;
@@ -39,6 +38,7 @@ import org.lttng.ust.agent.filter.IFilterChangeListener;
import org.lttng.ust.agent.session.EventRule;
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;
@@ -50,8 +50,6 @@ import org.lttng.ust.agent.utils.TestPrintRunner;
@RunWith(TestPrintRunner.class)
public abstract class FilterListenerITBase {
- protected static final LogLevelSelector LOG_LEVEL_UNSPECIFIED = new LogLevelSelector(Integer.MIN_VALUE, 0);
-
private static final String EVENT_NAME_A = "eventA";
private static final String EVENT_NAME_B = "eventB";
private static final String EVENT_NAME_C = "eventC";
@@ -103,7 +101,7 @@ public abstract class FilterListenerITBase {
@Test
public void testOneRule() {
Set rules = Collections.singleton(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null));
+ EventRuleFactory.createRule(EVENT_NAME_A));
session.enableEvent(EVENT_NAME_A, null, false, null);
@@ -116,10 +114,10 @@ public abstract class FilterListenerITBase {
*/
@Test
public void testManyRules() {
- Set rules = Stream
- .of(new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_B, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_C, LOG_LEVEL_UNSPECIFIED, null))
+ Set rules = Stream.of(
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_B),
+ EventRuleFactory.createRule(EVENT_NAME_C))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@@ -136,7 +134,7 @@ public abstract class FilterListenerITBase {
@Test
public void testManyRulesDisableSome() {
Set rules = Collections.singleton(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null));
+ EventRuleFactory.createRule(EVENT_NAME_A));
session.enableEvent(EVENT_NAME_A, null, false, null);
session.enableEvent(EVENT_NAME_B, null, false, null);
@@ -171,7 +169,6 @@ public abstract class FilterListenerITBase {
/**
* Test enabling the same event name with various values of loglevels.
*/
- @Ignore("Does not work as expected atm, see http://bugs.lttng.org/issues/913")
@Test
public void testSameEventsDiffLogLevels() {
LogLevelSelector lls1 = new LogLevelSelector(getLogLevelStrings().warningInt(), LogLevelType.LTTNG_EVENT_LOGLEVEL_RANGE);
@@ -179,9 +176,9 @@ public abstract class FilterListenerITBase {
LogLevelSelector lls3 = new LogLevelSelector(getLogLevelStrings().infoInt(), LogLevelType.LTTNG_EVENT_LOGLEVEL_RANGE);
Set rules = Stream.of(
- new EventRule(EVENT_NAME_A, lls1, null),
- new EventRule(EVENT_NAME_A, lls2, null),
- new EventRule(EVENT_NAME_A, lls3, null))
+ EventRuleFactory.createRule(EVENT_NAME_A, lls1),
+ EventRuleFactory.createRule(EVENT_NAME_A, lls2),
+ EventRuleFactory.createRule(EVENT_NAME_A, lls3))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, getLogLevelStrings().warningName(), false, null);
@@ -195,16 +192,15 @@ public abstract class FilterListenerITBase {
/**
* Test enabling the same event name with various filters.
*/
- @Ignore("Filters are not tracked yet")
@Test
public void testSameEventsDiffFilters() {
String filterA = "filterA";
String filterB = "filterB";
Set rules = Stream.of(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, filterA),
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, filterB))
+ 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))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@@ -222,8 +218,8 @@ public abstract class FilterListenerITBase {
@Test
public void testDetachingListener() {
Set rules = Stream.of(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_B, LOG_LEVEL_UNSPECIFIED, null))
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@@ -248,8 +244,8 @@ public abstract class FilterListenerITBase {
fcn.registerListener(listener3);
Set rules = Stream.of(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_B, LOG_LEVEL_UNSPECIFIED, null))
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@@ -285,8 +281,8 @@ public abstract class FilterListenerITBase {
fcn.unregisterListener(listener2);
Set rules = Stream.of(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_B, LOG_LEVEL_UNSPECIFIED, null))
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@@ -312,12 +308,12 @@ public abstract class FilterListenerITBase {
TestFilterListener listener2 = new TestFilterListener();
Set rules1 = Stream.of(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_B, LOG_LEVEL_UNSPECIFIED, null))
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_B))
.collect(Collectors.toSet());
Set rules2 = Stream.of(
- new EventRule(EVENT_NAME_A, LOG_LEVEL_UNSPECIFIED, null),
- new EventRule(EVENT_NAME_C, LOG_LEVEL_UNSPECIFIED, null))
+ EventRuleFactory.createRule(EVENT_NAME_A),
+ EventRuleFactory.createRule(EVENT_NAME_C))
.collect(Collectors.toSet());
session.enableEvent(EVENT_NAME_A, null, false, null);
@@ -340,18 +336,6 @@ public abstract class FilterListenerITBase {
/**
* The filter listener used for tests.
- *
- *
- * Usage:
- *
- * - Specify the expected number of notifications and end rules with
- * {@link #setParameters}.
- * - Send the commands to LTTng (using {@link ILttngSession} for example.
- *
- * - Call {@link #waitForAllNotifications()}.
- * - Verify that {@link #checkRules()} returns true.
- *
- *
*/
private static class TestFilterListener implements IFilterChangeListener {
diff --git a/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/utils/EventRuleFactory.java b/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/utils/EventRuleFactory.java
new file mode 100644
index 0000000..fd1a46b
--- /dev/null
+++ b/lttng-ust-java-tests/src/test/java/org/lttng/ust/agent/utils/EventRuleFactory.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2015, EfficiOS Inc., Alexandre Montplaisir
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+package org.lttng.ust.agent.utils;
+
+import java.util.StringJoiner;
+
+import org.lttng.ust.agent.session.EventRule;
+import org.lttng.ust.agent.session.LogLevelSelector;
+
+/**
+ * Factory class for {@link EventRule} objects, offering convenience methods
+ * that mimic the results of passing the given arguments on the command-line.
+ *
+ * @author Alexandre Montplaisir
+ */
+public final class EventRuleFactory {
+
+ /** Name of the "all" (-a) event */
+ public static final String EVENT_NAME_ALL = "*";
+
+ /** Log level set by default when it is not specified */
+ public static final LogLevelSelector LOG_LEVEL_UNSPECIFIED = new LogLevelSelector(Integer.MIN_VALUE, 0);
+
+ private EventRuleFactory() {}
+
+ /**
+ * Construct an event by only passing the event name on the command-line.
+ *
+ * @param eventName
+ * The event name
+ * @return The corresponding event rule
+ */
+ public static EventRule createRule(String eventName) {
+ return new EventRule(eventName, LOG_LEVEL_UNSPECIFIED, filterStringFromEventName(eventName));
+ }
+
+ /**
+ * Construct and event rule by specifying the event name and log level.
+ *
+ * @param eventName
+ * The event name
+ * @param logLevelSelector
+ * The log level
+ * @return The corresponding event rule
+ */
+ public static EventRule createRule(String eventName, LogLevelSelector logLevelSelector) {
+ StringJoiner sj = new StringJoiner(") && (", "(", ")");
+ String filterStr = sj.add(filterStringFromEventName(eventName))
+ .add(filterStringFromLogLevel(logLevelSelector))
+ .toString();
+ return new EventRule(eventName, logLevelSelector, filterStr);
+ }
+
+ /**
+ * Construct and event rule by specifying the event name, log level, and a
+ * filter string.
+ *
+ * @param eventName
+ * The event name
+ * @param logLevelSelector
+ * The log level
+ * @param extraFilter
+ * The filter string passed on the command-line
+ * @return The corresponding event rule
+ */
+ public static EventRule createRule(String eventName, LogLevelSelector logLevelSelector, String extraFilter) {
+ StringJoiner sj1 = new StringJoiner(") && (", "(", ")");
+ sj1.add(extraFilter);
+ sj1.add(filterStringFromEventName(eventName));
+ String firstPart = sj1.toString();
+
+ if (logLevelSelector.equals(LOG_LEVEL_UNSPECIFIED)) {
+ return new EventRule(eventName, logLevelSelector, firstPart);
+ }
+
+ /*
+ * If there is both a filter and a log level, the filter + event name is
+ * "resolved" first.
+ */
+ StringJoiner sj2 = new StringJoiner(") && (", "(", ")");
+ sj2.add(firstPart);
+ sj2.add(filterStringFromLogLevel(logLevelSelector));
+ return new EventRule(eventName, logLevelSelector, sj2.toString());
+ }
+
+ /**
+ * Construct an event rule corresponding to enabling all (-a) events.
+ *
+ * @return The corresponding event rule
+ */
+ public static EventRule createRuleAllEvents() {
+ return new EventRule(EVENT_NAME_ALL, LOG_LEVEL_UNSPECIFIED, "");
+ }
+
+ private static String filterStringFromEventName(String eventName) {
+ return "logger_name == \"" + eventName + "\"";
+ }
+
+ private static String filterStringFromLogLevel(LogLevelSelector logLevelSelector) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("int_loglevel ");
+
+ switch (logLevelSelector.getLogLevelType()) {
+ case LTTNG_EVENT_LOGLEVEL_RANGE:
+ sb.append(">=");
+ break;
+ case LTTNG_EVENT_LOGLEVEL_SINGLE:
+ sb.append("==");
+ break;
+ case LTTNG_EVENT_LOGLEVEL_ALL:
+ default:
+ throw new IllegalArgumentException();
+ }
+
+ sb.append(" " + logLevelSelector.getLogLevel());
+ return sb.toString();
+ }
+
+}
--
2.39.5