public void RegexFilterCorrectlyFormed() { var filter = ".*abc"; InitRuntime(); foreach (var device in kDevices) { foreach (var isRegexEnabled in new[] { true, false }) { var logcat = new AndroidLogcat(m_Runtime, null, device, -1, Priority.Verbose, ".*abc", isRegexEnabled, new string[] { }); var message = string.Format("Failure with {0} device, regex enabled: {1}", device.GetType().FullName, isRegexEnabled.ToString()); if (device.SupportsFilteringByRegex) { if (isRegexEnabled) { Assert.IsTrue(logcat.Filter.Equals(filter), message); } else { Assert.IsTrue(logcat.Filter.Equals(Regex.Escape(filter)), message); } } else { Assert.IsTrue(logcat.Filter.Equals(filter), message); } } } ShutdownRuntime(); }
public void ManualRegexFilteringWorksAndroid60Devices() { var messages = new[] { @"10-25 14:27:56.862 2255 2255 I chromium: Help", @"10-25 14:27:56.863 2255 2255 I chromium: .abc" }; InitRuntime(); foreach (var regexIsEnabled in new[] { true, false }) { foreach (var filter in new[] { "", ".abc", "...." }) { var entries = new List <string>(); var logcat = new AndroidLogcat(m_Runtime, null, new AndroidLogcatFakeDevice60("Fake60"), -1, AndroidLogcat.Priority.Verbose, filter, regexIsEnabled, new string[] {}); logcat.LogEntriesAdded += (List <AndroidLogcat.LogEntry> e) => { entries.AddRange(e.Select(m => m.message)); }; logcat.Start(); var provider = (AndroidLogcatFakeMessageProvider)logcat.MessageProvider; foreach (var m in messages) { provider.SupplyFakeMessage(m); } m_Runtime.OnUpdate(); if (filter == "") { Assert.IsTrue(entries.Contains(".abc")); Assert.IsTrue(entries.Contains("Help")); } else if (filter == ".abc") { Assert.IsTrue(entries.Contains(".abc")); Assert.IsTrue(!entries.Contains("Help")); } else if (filter == "....") { if (regexIsEnabled) { Assert.IsTrue(entries.Contains(".abc")); Assert.IsTrue(entries.Contains("Help")); } else { Assert.IsFalse(entries.Contains(".abc")); Assert.IsFalse(entries.Contains("Help")); } } logcat.Stop(); } } ShutdownRuntime(); }
public void ManualPidFilteringWorks() { var messages = new[] { @"10-25 14:27:56.862 1 2255 I chromium: Help", @"10-25 14:27:56.863 2 2255 I chromium: .abc", @"10-25 14:27:56.863 3 2255 I chromium: " }; InitRuntime(); foreach (var device in kDevices) { foreach (var pid in new[] { -1, 0, 1 }) { var processIds = new List <int>(); var logcat = new AndroidLogcat(m_Runtime, null, device, pid, Priority.Verbose, "", false, new string[] { }); logcat.LogEntriesAdded += (List <LogcatEntry> e) => { processIds.AddRange(e.Select(m => m.processId)); }; logcat.Start(); SupplyFakeMessages((AndroidLogcatFakeMessageProvider)logcat.MessageProvider, device, messages); m_Runtime.OnUpdate(); switch (pid) { // Should accept messages from any process id case -1: Assert.IsTrue(processIds.Contains(1)); Assert.IsTrue(processIds.Contains(2)); Assert.IsTrue(processIds.Contains(3)); break; // Should accept messages from any process id case 0: Assert.IsTrue(processIds.Contains(1)); Assert.IsTrue(processIds.Contains(2)); Assert.IsTrue(processIds.Contains(3)); break; // Should accept messages from process id which equals 1 case 1: Assert.IsTrue(processIds.Contains(1)); Assert.IsFalse(processIds.Contains(2)); Assert.IsFalse(processIds.Contains(3)); break; } logcat.Stop(); } } ShutdownRuntime(); }
public void ManualRegexFilteringWorks() { var messages = new[] { @"10-25 14:27:56.862 2255 2255 I chromium: Help", @"10-25 14:27:56.863 2255 2255 I chromium: .abc", // Empty lines were reported by devices like LG with Android 5 @"", null }; InitRuntime(); foreach (var device in kDevices) { foreach (var regexIsEnabled in new[] { true, false }) { foreach (var filter in new[] { "", ".abc", "...." }) { var entries = new List <string>(); var logcat = new AndroidLogcat(m_Runtime, null, device, -1, Priority.Verbose, filter, regexIsEnabled, new string[] { }); logcat.LogEntriesAdded += (List <LogcatEntry> e) => { entries.AddRange(e.Select(m => m.message)); }; logcat.Start(); SupplyFakeMessages((AndroidLogcatFakeMessageProvider)logcat.MessageProvider, device, messages); m_Runtime.OnUpdate(); // We always ignore empty lines Assert.IsFalse(entries.Contains("")); Assert.IsFalse(entries.Contains(null)); if (filter == "") { Assert.IsTrue(entries.Contains(".abc")); Assert.IsTrue(entries.Contains("Help")); } else if (filter == ".abc") { Assert.IsTrue(entries.Contains(".abc")); Assert.IsTrue(!entries.Contains("Help")); } else if (filter == "....") { if (regexIsEnabled) { Assert.IsTrue(entries.Contains(".abc")); Assert.IsTrue(entries.Contains("Help")); } else { Assert.IsFalse(entries.Contains(".abc")); Assert.IsFalse(entries.Contains("Help")); } } logcat.Stop(); } } } ShutdownRuntime(); }