public void IsMatchTest() { Array severities = Enum.GetValues(typeof(SyslogSeverity)); for (int i = 0; i < Enum.GetValues(typeof(SyslogFacility)).Length; i++) { for (int j = 0; j < Enum.GetValues(typeof(SyslogFacility)).Length; j++) { SyslogFacility to_set = (SyslogFacility)Enum.GetValues(typeof(SyslogFacility)).GetValue(i); SyslogFacility to_match = (SyslogFacility)Enum.GetValues(typeof(SyslogFacility)).GetValue(j); FacilityEqualsFilter target = new FacilityEqualsFilter { facility = to_match }; //Random SyslogSeverity SyslogMessage message = new SyslogMessage(null, "logbus.dis.unina.it", to_set, SyslogSeverity.Info, "Hello people!"); bool expected = i == j; bool actual; actual = target.IsMatch(message); Assert.AreEqual(expected, actual); } } }
public void FacilityEqualsFilterConstructorTest() { FacilityEqualsFilter target = new FacilityEqualsFilter { facility = SyslogFacility.Clock2 }; Assert.IsNotNull(target); Assert.IsInstanceOfType(target, typeof(FacilityEqualsFilter)); Assert.AreEqual(target.facility, SyslogFacility.Clock2); }
public void filterTest() { OrFilter target = new OrFilter(); FilterBase f1 = new TrueFilter(), f2 = new NotFilter { filter = new FalseFilter() }, f3 = new MessageRegexMatchFilter { pattern = "FFDA" }, f4 = new FacilityEqualsFilter { facility = SyslogFacility.Security }; target.filter = new FilterBase[] { f1, f2, f3, f4 }; Assert.AreEqual(target.filter[0], f1); Assert.IsInstanceOfType(target.filter[1], typeof(NotFilter)); Assert.IsInstanceOfType(target.filter[3], typeof(FacilityEqualsFilter)); Assert.AreEqual(((FacilityEqualsFilter)target.filter[3]).facility, SyslogFacility.Security); }
public void IsMatchTest() { { FilterBase f1 = new FacilityEqualsFilter { facility = SyslogFacility.Ftp }, f2 = new MessageRegexMatchFilter { pattern = "^FFDA" }; OrFilter target = new OrFilter(); target.filter = new FilterBase[] { f1, f2 }; SyslogMessage message = new SyslogMessage { Facility = SyslogFacility.Internally, Severity = SyslogSeverity.Error, Text = "FFDA WOW!" }; bool expected = true; bool actual; actual = target.IsMatch(message); Assert.AreEqual(expected, actual); } { FilterBase f1 = new FacilityEqualsFilter { facility = SyslogFacility.Ftp }, f2 = new MessageRegexMatchFilter { pattern = "^FFDA" }; OrFilter target = new OrFilter(); target.filter = new FilterBase[] { f1, f2 }; SyslogMessage message = new SyslogMessage { Facility = SyslogFacility.Ftp, Severity = SyslogSeverity.Error, Text = "Nobody!" }; bool expected = true; bool actual; actual = target.IsMatch(message); Assert.AreEqual(expected, actual); } { string msg = @"<34>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 - ’su root’ failed for lonvick on /dev/pts/8"; FilterBase f1 = new FacilityEqualsFilter { facility = SyslogFacility.Security }, f2 = new MessageRegexMatchFilter { //Ok, that should be the real UNIX user pattern but let's assume only letters and numbers here :) pattern = "’su root’ failed for [a-zA-Z0-9]" }, f3 = new SeverityFilter { comparison = ComparisonOperator.neq, severity = SyslogSeverity.Emergency }; OrFilter target = new OrFilter(); target.filter = new FilterBase[] { f1, f2, f3 }; SyslogMessage message = SyslogMessage.Parse(msg); bool expected = true; bool actual; actual = target.IsMatch(message); Assert.AreEqual(expected, actual); } }
public void FFDATest() { FilterBase ffda_filter = new FacilityEqualsFilter() { facility = SyslogFacility.Local0 } & new PropertyFilter() { comparison = ComparisonOperator.eq, propertyName = Property.MessageID, value = "FFDA" }; StringBuilder markup = new StringBuilder(); new XmlSerializer(typeof(FilterBase)).Serialize(XmlTextWriter.Create(markup, new XmlWriterSettings() { Indent = true }), ffda_filter, ffda_filter.xmlns); TestContext.WriteLine("{0}", markup.ToString()); const int SEND_PORT = 5427; //Init Logbus LogbusServerConfiguration core_config = new LogbusServerConfiguration(); core_config.corefilter = ffda_filter; InboundChannelDefinition in_ch = new InboundChannelDefinition(); in_ch.type = "SyslogUdpReceiver"; in_ch.param = new KeyValuePair[] { new KeyValuePair() { name = "port", value = SEND_PORT.ToString() } }; core_config.inchannels = new InboundChannelDefinition[] { in_ch }; using (ILogBus logbus = new LogbusService(core_config)) { logbus.MessageReceived += new EventHandler <SyslogMessageEventArgs>(logbus_MessageReceived); logbus.Start(); //Init FFDA LogbusLoggerConfiguration source_config = new LogbusLoggerConfiguration(); LoggerDefinition udp_def = new LoggerDefinition() { type = "SyslogUdpCollector", param = new KeyValuePair[] { new KeyValuePair() { name = "port", value = SEND_PORT.ToString() }, new KeyValuePair() { name = "ip", value = "127.0.0.1" } } }; source_config.logger = new LoggerDefinition[] { udp_def }; LoggerHelper.Configuration = source_config; //Send what we want: 2 FFDA messages IFieldFailureDataLogger logger = FieldFailureDataHelper.CreateFailureDataLogger("ffda"); logger.LogSST(); logger.LogSEN(); //Send junk ILog junk_log = LoggerHelper.GetLogger(); junk_log.Debug("Hello"); junk_log.Error("Junk error"); Thread.Sleep(1000); logbus.Stop(); } Assert.AreEqual(2, messages); }
private static void Run(int timeout) { _messagesRcvd = new BitArray(_expected, false); _received = 0; string pid = Process.GetCurrentProcess().Id.ToString(CultureInfo.InvariantCulture); ILogCollector server = CollectorHelper.CreateCollector(); string host = Dns.GetHostName(); PropertyFilter hostFilter = new PropertyFilter { comparison = ComparisonOperator.eq, value = host, propertyName = Property.Host }; FacilityEqualsFilter facFilter = new FacilityEqualsFilter { facility = SyslogFacility.Local4 }; PropertyFilter pidFilter = new PropertyFilter { comparison = ComparisonOperator.eq, value = pid, propertyName = Property.ProcessID }; PropertyFilter idFilter = new PropertyFilter { value = "BENCH", comparison = ComparisonOperator.eq, propertyName = Property.MessageID }; SeverityFilter sevFilter = new SeverityFilter { comparison = ComparisonOperator.eq, severity = SyslogSeverity.Notice }; using (ILogClient client = ClientHelper.CreateReliableClient(hostFilter & pidFilter & idFilter & sevFilter & facFilter)) { client.MessageReceived += client_MessageReceived; client.Start(); for (int i = 0; i < _expected; i++) { if (timeout > 0) { Nanosleep(timeout); } SyslogMessage message = new SyslogMessage { Timestamp = DateTime.Now, Facility = SyslogFacility.Local4, Severity = SyslogSeverity.Notice, Host = host, ProcessID = pid, MessageId = "BENCH", Text = i.ToString() }; server.SubmitMessage(message); } silenceTimer = new Timer(state => Stop.Set(), null, 40000, Timeout.Infinite); Console.WriteLine("Waiting up to 30 seconds after last message received..."); Stop.WaitOne(); } if (_expected == _received) { Console.WriteLine("Received all messaged"); } else { Console.WriteLine("Lost {0} messages", _expected - _received); } }