private static final String SCEN_GET_UST_PROVIDER1 = "GetUstProvider1";
private static final String SCEN_GET_UST_PROVIDER2 = "GetUstProvider2";
private static final String SCEN_GET_UST_PROVIDER3 = "GetUstProvider3";
+ private static final String SCEN_LIST_WITH_NO_UST1 = "ListWithNoUst1";
+ private static final String SCEN_LIST_WITH_NO_UST2 = "ListWithNoUst2";
+ private static final String SCEN_LIST_WITH_NO_UST3 = "ListWithNoUst3";
+ private static final String SCEN_LIST_WITH_NO_UST_VERBOSE = "ListWithNoUstVerbose";
private static final String SCEN_CREATE_SESSION1 = "CreateSession1";
private static final String SCEN_CREATE_SESSION_WITH_PROMPT = "CreateSessionWithPrompt";
private static final String SCEN_CREATE_SESSION_VARIANTS = "CreateSessionVariants";
}
}
+
+ @Test
+ public void testGetKernelProviderNoUst1() {
+ try {
+ fShell.setScenario(SCEN_LIST_WITH_NO_UST1);
+ List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
+
+ // Verify Provider info
+ assertNotNull(providerList);
+ assertEquals(0, providerList.size());
+
+ } catch (ExecutionException e) {
+ fail(e.toString());
+ }
+ }
+
+
+ @Test
+ public void testGetKernelProviderNoUst2() {
+ try {
+ // Set version
+ ((LTTngControlService)fService).setVersion("2.1.0");
+
+ fShell.setScenario(SCEN_LIST_WITH_NO_UST2);
+ List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
+
+ // Verify Provider info
+ assertNotNull(providerList);
+ assertEquals(0, providerList.size());
+
+ // Reset version
+ ((LTTngControlService)fService).setVersion("2.0.0");
+
+ } catch (ExecutionException e) {
+ fail(e.toString());
+ }
+ }
+
+ @Test
+ public void testGetKernelProviderNoUst3() {
+ try {
+
+ // Set version
+ ((LTTngControlService)fService).setVersion("2.1.0");
+
+ fShell.setScenario(SCEN_LIST_WITH_NO_UST3);
+ List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
+
+ // Verify provider info
+ assertNotNull(providerList);
+ assertEquals(0, providerList.size());
+
+ // Reset version
+ ((LTTngControlService)fService).setVersion("2.0.0");
+
+ } catch (ExecutionException e) {
+ fail(e.toString());
+ }
+ }
+
+ @Test
+ public void testGetKernelProviderNoUstVerbose() {
+ try {
+ enableVerbose();
+
+ // Set version
+ ((LTTngControlService)fService).setVersion("2.1.0");
+
+ fShell.setScenario(SCEN_LIST_WITH_NO_UST_VERBOSE);
+ List<IUstProviderInfo> providerList = fService.getUstProvider(new NullProgressMonitor());
+
+ // Verify provider info
+ assertNotNull(providerList);
+ assertEquals(0, providerList.size());
+
+ // Reset version
+ ((LTTngControlService)fService).setVersion("2.0.0");
+
+ } catch (ExecutionException e) {
+ fail(e.toString());
+ } finally {
+ disableVerbose();
+ }
+ }
+
+
+
@Test
public void testCreateSession() {
try {
</COMMAND_OUTPUT>
</SCENARIO>
+####################################################################
+# Scenario: Test "lttng list -u" with no UST available (LTTng 2.0.x)
+####################################################################
+<SCENARIO>
+ListWithNoUst1
+<COMMAND_INPUT>
+lttng list -u
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+1
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+UST events:
+-------------
+None
+Segmentation Fault
+</COMMAND_OUTPUT>
+</SCENARIO>
+
+####################################################################
+# Scenario: Test "lttng list -u" with no UST available and no session daemon
+####################################################################
+<SCENARIO>
+ListWithNoUst2
+<COMMAND_INPUT>
+lttng list -u -f
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+1
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+Spawning a session daemon
+Error: Unable to list UST events: Listing UST events failed
+Error: Command Error
+</COMMAND_OUTPUT>
+</SCENARIO>
+
+####################################################################
+# Scenario: Test "lttng list -k" with no kernel and with session daemon
+####################################################################
+<SCENARIO>
+ListWithNoUst3
+<COMMAND_INPUT>
+lttng list -u -f
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+1
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+Error: Unable to list UST events: Listing UST events failed
+Error: Command Error
+</COMMAND_OUTPUT>
+</SCENARIO>
+
+####################################################################
+# Scenario: Test "lttng list -u" with no kernel, with session daemon and verbose
+####################################################################
+<SCENARIO>
+ListWithNoUstVerbose
+<COMMAND_INPUT>
+lttng -vvv list -u -f
+</COMMAND_INPUT>
+<COMMAND_RESULT>
+1
+</COMMAND_RESULT>
+<COMMAND_OUTPUT>
+DEBUG2: Session name: (null) [in cmd_list() at commands/list.c:618]
+DEBUG1: Getting kernel tracing events [in list_kernel_events() at commands/list.c:309]
+Spawning a session daemon
+Error: Unable to list UST events: Listing UST events failed
+Error: Command Error
+DEBUG1: Clean exit [in clean_exit() at lttng.c:165]
+</COMMAND_OUTPUT>
+</SCENARIO>
+
+
####################################################################
# Scenario: Test "lttng list -u -f" with sample output (version 2.1.0)
####################################################################
command.append(LTTngControlServiceConstants.OPTION_FIELDS);
}
- ICommandResult result = executeCommand(command.toString(), monitor);
+ ICommandResult result = executeCommand(command.toString(), monitor, false);
+ List<IUstProviderInfo> allProviders = new ArrayList<IUstProviderInfo>();
+
+ // Workaround for versions 2.0.x which causes a segmentation fault for this command
+ // if LTTng Tools is compiled without UST support.
+ if (!isVersionSupported("2.1.0") && (result.getResult() != 0)) { //$NON-NLS-1$
+ return allProviders;
+ }
+
+ if (result.getOutput() != null) {
+ // Ignore the following 2 cases:
+ // Spawning a session daemon
+ // Error: Unable to list UST events: Listing UST events failed
+ // or:
+ // Error: Unable to list UST events: Listing UST events failed
+ //
+ int index = 0;
+ while (index < result.getOutput().length) {
+ String line = result.getOutput()[index];
+ Matcher matcher = LTTngControlServiceConstants.LIST_UST_NO_UST_PROVIDER_PATTERN.matcher(line);
+ if (matcher.matches()) {
+ return allProviders;
+ }
+ index++;
+ }
+ }
+
+ if (isError(result)) {
+ throw new ExecutionException(Messages.TraceControl_CommandError + " " + command.toString() + "\n" + formatOutput(result)); //$NON-NLS-1$ //$NON-NLS-2$
+ }
// Note that field print-outs exists for version >= 2.1.0
//
// field: floatfield (float)
// field: stringfield (string)
- List<IUstProviderInfo> allProviders = new ArrayList<IUstProviderInfo>();
IUstProviderInfo provider = null;
int index = 0;
} else {
index++;
}
-
}
return allProviders;
}
* Pattern to match error line if no kernel tracer is available or installed.
*/
public final static Pattern LIST_KERNEL_NO_KERNEL_PROVIDER_PATTERN = Pattern.compile("\\s*Error:\\s+Unable\\s+to\\s+list\\s+kernel\\s+events.*"); //$NON-NLS-1$;
-
+ /**
+ * Pattern to match error line if no ust tracer is available or installed.
+ */
+ public final static Pattern LIST_UST_NO_UST_PROVIDER_PATTERN = Pattern.compile(".*Unable\\s*to\\s*list\\s*UST\\s*event.*"); //$NON-NLS-1$;
}