Example #1
0
    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();
    }
Example #3
0
    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();
    }
Example #4
0
    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();
    }