private static RawEvent ProcessLogMessage(int lineNumber, Match currentLogEntryMatch, IReadOnlyCollection <string> lines)
        {
            var properties = new Dictionary <string, object>
            {
                { "LineNumber", lineNumber },
                { "PID", currentLogEntryMatch.Groups["PID"].Value },
                { "Thread", currentLogEntryMatch.Groups["Thread"].Value }
            };

            var messageLines = new [] { currentLogEntryMatch.Groups["Message"].Value }.Concat(lines.TakeWhile(line => !ExceptionRegex.Match(line).Success)).ToArray();
            var message         = string.Join(Environment.NewLine, messageLines);
            var messageTemplate = MagicUpTheMessageTemplate(message, properties);

            var rawEvent = new RawEvent
            {
                Timestamp       = DateTimeOffset.Parse(currentLogEntryMatch.Groups["Timestamp"].Value),
                Level           = ConvertLevel(currentLogEntryMatch.Groups["Level"].Value),
                Properties      = properties,
                MessageTemplate = messageTemplate
            };

            var exceptionLines = lines.Except(messageLines).ToArray();

            if (exceptionLines.Any())
            {
                rawEvent.Exception = string.Join(Environment.NewLine, exceptionLines);
            }

            return(rawEvent);
        }
        public void ParseToRaw_ValidRawEvent_ShouldSucceed()
        {
            // Arrange
            const string           eventId       = "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66";
            const string           licensePlate  = "1-TOM-337";
            var                    originalEvent = new NewCarRegistered(eventId, licensePlate);
            var                    rawEventBody  = JsonConvert.SerializeObject(originalEvent.Data, Formatting.Indented);
            var                    rawEvent      = new RawEvent(eventId, originalEvent.EventType, rawEventBody, originalEvent.Subject, originalEvent.DataVersion, originalEvent.EventTime);
            IEnumerable <RawEvent> events        = new List <RawEvent>
            {
                rawEvent
            };

            var serializedRawEvents = JsonConvert.SerializeObject(events);

            // Act
            var eventGridMessage = EventGridParser.Parse <RawEvent>(serializedRawEvents);

            // Assert
            Assert.NotNull(eventGridMessage);
            Assert.NotNull(eventGridMessage.Events);
            Assert.Single(eventGridMessage.Events);
            var eventPayload = eventGridMessage.Events.Single();

            Assert.Equal(eventId, eventPayload.Id);
            Assert.Equal(originalEvent.Subject, eventPayload.Subject);
            Assert.Equal(originalEvent.EventType, eventPayload.EventType);
            Assert.Equal(originalEvent.EventTime, eventPayload.EventTime);
            Assert.Equal(originalEvent.DataVersion, eventPayload.DataVersion);
            Assert.NotNull(eventPayload.Data);
            Assert.Equal(rawEventBody, eventPayload.Data.ToString());
        }
Beispiel #3
0
        private Task On(RawEvent rawEvent, Position?position, DateTime eventCreationTime)
        {
            var @event = _deserializer.Deserialize(rawEvent);

            _log.Debug("Projecting event {event}", rawEvent.Body.ToString());
            try
            {
                // return Measure(() =>// Should be moved to a messenger decorator
                //     {
                var envelopedEvent = new EventEnvelope(
                    new MessageChainInfo(@event.Id.ToString()
                                         , @event.Metadata.CorrelationId
                                         , @event.Metadata.CausationId)
                    , @event.Body);
                _messenger.Dispatch(envelopedEvent);
                return(_checkpointStore.StoreCheckpoint(position));
                // }, rawEvent.EventType
                // , eventCreationTime
                // , _subscriptionName);
            }
            catch (Exception exception)
            {
                _log.Error(exception
                           , "Error occured when projecting the event {event} from {subscriptionName}"
                           , @event
                           , _subscriptionName);
                throw;
            }
        }
Beispiel #4
0
        public async Task PublishSingleTypedRawEventWithDetailedInfo_WithBuilder_ValidParameters_Succeeds()
        {
            // Arrange
            var          topicEndpoint = Configuration.GetValue <string>("Arcus:EventGrid:TopicEndpoint");
            var          endpointKey   = Configuration.GetValue <string>("Arcus:EventGrid:EndpointKey");
            const string eventSubject  = "integration-test";
            const string licensePlate  = "1-TOM-337";
            var          eventId       = Guid.NewGuid().ToString();
            var          @event        = new NewCarRegistered(eventId, eventSubject, licensePlate);
            var          rawEventBody  = JsonConvert.SerializeObject(@event.Data);

            var rawEvent = new RawEvent(@event.Id, @event.EventType, rawEventBody, @event.Subject, @event.DataVersion, @event.EventTime);

            // Act
            await EventGridPublisherBuilder
            .ForTopic(topicEndpoint)
            .UsingAuthenticationKey(endpointKey)
            .Build()
            .PublishRawAsync(rawEvent);

            TracePublishedEvent(eventId, @event);

            // Assert
            var receivedEvent = _serviceBusEventConsumerHost.GetReceivedEvent(eventId);

            AssertReceivedNewCarRegisteredEvent(eventId, @event.EventType, eventSubject, licensePlate, receivedEvent);
        }
        /// <summary>
        ///     Publish a raw JSON payload as event
        /// </summary>
        /// <param name="rawEvent">The event to publish</param>
        public async Task PublishRawAsync(RawEvent rawEvent)
        {
            Guard.NotNull(rawEvent, nameof(rawEvent), "No event was specified");

            IEnumerable <RawEvent> eventList = new[] { rawEvent };

            await PublishEventToTopicAsync(eventList);
        }
 private static string GetEventUniqueName(RawEvent ev)
 {
     if (ev.Type == EventType.Sql)
     {
         return(ev.Key);
     }
     return(null);
 }
Beispiel #7
0
        private RawEvent Create(string[] a_data)
        {
            var re = new RawEvent();

            re.Id       = m_IdSeed++;
            re.RawNode  = (int.Parse(a_data[0]), int.Parse(a_data[1]));
            re.Interval = int.Parse(a_data[2]);
            return(re);
        }
 private static void SaveSqlBodyToFile(RawEvent ev)
 {
     if (ev.Type == EventType.Sql)
     {
         string fileName     = GetEventUniqueName(ev);
         string fullFileName = fileName; // TODO
         using (var writer = File.CreateText(fullFileName)) {
         }
     }
 }
        private static Activity Create(RawEvent a_rawEvent)
        {
            var acv = new Activity();

            acv.Id = a_rawEvent.Id;
            //acv.Duration = a_rawEvent.Interval;
            //acv.IsStart = false;
            //acv.IsEnd = false;
            return(acv);
        }
Beispiel #10
0
        private static string ToJson(IEnumerable <LogEvent> events)
        {
            var data = new RawEvents
            {
                Events = events.Select(e => RawEvent.FromLogEvent(e)).ToArray()
            };

            string json = data.ToJsonString();

            return(json);
        }
Beispiel #11
0
        private static string ToJson(IEnumerable <LogEvent> events)
        {
            var data = new RawEvents
            {
                Events = events.Select(e => RawEvent.FromLogEvent(e)).ToArray()
            };

            throw new NotImplementedException();
            //string json = data.ToJsonString();
            //return json;
        }
        /// <summary>
        ///     Publish a raw JSON payload as event
        /// </summary>
        /// <param name="eventId">Id of the event</param>
        /// <param name="eventType">Type of the event</param>
        /// <param name="eventBody">Body of the event</param>
        /// <param name="eventSubject">Subject of the event</param>
        /// <param name="dataVersion">Data version of the event body</param>
        /// <param name="eventTime">Time when the event occured</param>
        public async Task PublishRawAsync(string eventId, string eventType, string eventBody, string eventSubject, string dataVersion, DateTimeOffset eventTime)
        {
            Guard.NotNullOrWhitespace(eventId, nameof(eventId), "No event id was specified");
            Guard.NotNullOrWhitespace(eventType, nameof(eventType), "No event type was specified");
            Guard.NotNullOrWhitespace(eventBody, nameof(eventBody), "No event body was specified");
            Guard.NotNullOrWhitespace(dataVersion, nameof(dataVersion), "No data version body was specified");
            Guard.For <ArgumentException>(() => eventBody.IsValidJson() == false, "The event body is not a valid JSON payload");

            var rawEvent = new RawEvent(eventId, eventType, eventBody, eventSubject, dataVersion, eventTime);

            await PublishRawAsync(rawEvent);
        }
Beispiel #13
0
        public void creation()
        {
            var bytes = new byte[8 * 512];

            for (var i = 0; i < bytes.Length; ++i)
            {
                bytes[i] = (byte)(i * 37);
            }

            var ev = new RawEvent(1337, bytes);

            Assert.AreEqual((uint)1337, (uint)ev.Sequence);
            CollectionAssert.AreEqual(bytes, ev.Contents);
        }
 public EventCategory(RawEvent rawEvent, CategoryOverride categoryOverride, IList <EventCategory> masters) : base(EventType.Category)
 {
     if (categoryOverride == null)
     {
         Logger.WarnFormat("unable to find JSON object for event ID: {0}", rawEvent.eventId);
     }
     _rawEvent          = rawEvent;
     _categoryOverride  = categoryOverride;
     _aggregationMaster = null;
     if (_categoryOverride != null && masters != null)
     {
         _aggregationMaster = masters.FirstOrDefault(m => m.Name == _categoryOverride.Name);
     }
 }
Beispiel #15
0
         public static RawEvent FromLogEvent(LogEvent e)
         {
            var re = new RawEvent
            {
               Timestamp = new DateTimeOffset(e.EventTime),
               Level = e.Severity.ToString(),
               MessageTemplate = e.FormattedMessage,
               Exception = e.GetProperty(LogEvent.ErrorPropertyName)?.ToString(),
            };

            re.Properties = new Dictionary<string, object>(e.Properties);
            re.Properties.Add("source", e.SourceName);

            return re;
         }
Beispiel #16
0
            public static RawEvent FromLogEvent(LogEvent e)
            {
                var re = new RawEvent
                {
                    Timestamp       = new DateTimeOffset(e.EventTime),
                    Level           = "info",
                    MessageTemplate = e.Message.Template,
                    Exception       = e.GetProperty(KnownProperty.Error)?.ToString(),
                };

                re.Properties = new Dictionary <string, object>(e.Properties);
                re.Properties.Add("source", e.SourceName);

                return(re);
            }
Beispiel #17
0
        private Task EventAppeared(EventStoreCatchUpSubscription _
                                   , ResolvedEvent resolvedEvent)
        {
            if (resolvedEvent.Event.EventType.StartsWith("$"))
            {
                return(Task.CompletedTask);
            }

            var @event = new RawEvent(resolvedEvent.Event.EventType
                                      , resolvedEvent.Event.EventId
                                      , resolvedEvent.Event.Metadata
                                      , resolvedEvent.Event.Data);

            return(On(@event, resolvedEvent.OriginalPosition, resolvedEvent.Event.Created));
        }
Beispiel #18
0
        public void Parse_ValidRawEvent_ShouldSucceed()
        {
            // Arrange
            const string eventId       = "2d1781af-3a4c-4d7c-bd0c-e34b19da4e66";
            const string licensePlate  = "1-TOM-337";
            var          originalEvent = new NewCarRegistered(eventId, licensePlate);
            var          rawEventBody  = JsonConvert.SerializeObject(originalEvent.Data);
            var          rawEvent      = new RawEvent(eventId, originalEvent.EventType, rawEventBody, originalEvent.Subject, originalEvent.DataVersion, originalEvent.EventTime);

            // Act
            var serializedOriginalEvent = JsonConvert.SerializeObject(originalEvent);
            var serializedRawEvent      = JsonConvert.SerializeObject(rawEvent);

            // Assert
            Assert.Equal(serializedRawEvent, serializedOriginalEvent);
        }
        public IEnumerable <RawEvent> Read(IEnumerable <string> lines)
        {
            RawEvent currentEvent = null;
            var      inException  = false;
            var      lineNumber   = 0;

            foreach (var line in lines)
            {
                lineNumber++;
                var match = LineRegex.Match(line);
                if (match.Success)
                {
                    inException = false;
                    if (currentEvent != null)
                    {
                        yield return(currentEvent);
                    }

                    currentEvent = CreateEventFromMatch(lineNumber, match);
                }
                else if (currentEvent != null)
                {
                    if (inException || ExceptionRegex.IsMatch(line))
                    {
                        currentEvent.Exception += line;
                        inException             = true;
                    }
                    else
                    {
                        currentEvent.MessageTemplate += "\r\n" + line;
                    }
                }
                else
                {
                    yield return(UnexpectedLine(lineNumber, line));
                }
            }
            if (currentEvent != null)
            {
                yield return(currentEvent);
            }
        }
Beispiel #20
0
        public static void InitReceiveEvents()
        {
            UdpClient  listener = new UdpClient(_portToListen);
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, _portToListen);

            try
            {
                while (true)
                {
                    Byte[]   eventBytes = listener.Receive(ref endPoint);
                    RawEvent rawEvent   = JsonConvert.DeserializeObject <RawEvent>(Encoding.ASCII.GetString(eventBytes));
                    String[] tagParts   = rawEvent.tag.Split('.');
                    String   pais       = tagParts[0];
                    String   regiao     = tagParts[1];
                    String   nome       = tagParts[2];
                    Int64    aux;
                    Boolean  isNumeric = Int64.TryParse(rawEvent.valor, out aux);
                    EventData.InsertEvent(_connString, rawEvent, pais, regiao, nome, isNumeric);

                    MongoEventManager.InsertEvent(new LastEvent()
                    {
                        Pais      = pais,
                        Regiao    = regiao,
                        Evento    = nome,
                        Valor     = rawEvent.valor,
                        Data      = rawEvent.Data,
                        IsNumeric = isNumeric
                    });
                }
            }
            catch (SocketException e)
            {
                Console.WriteLine(e);
            }
            finally
            {
                listener.Close();
            }
        }
Beispiel #21
0
        //Пример. В случае тревоги рисует на ячейки прямоугольник залитый произвольным цветом
        //и выводит на экран произвольное целое значение как строку
        public override void ProcessEvent(Guid chId, RawEvent chEv, bool isAlarm)
        {
            if (isAlarm)
            {
                DrawingContext drawingContext = _drawingVisual.RenderOpen();

                double curWidth  = DrawingPanel.PanelWidth;
                double curHeight = DrawingPanel.PanelHeight;

                var sampleRect = new Rect(0.3, 0.3, 0.4, 0.4);

                Rect normalRect = new Rect(
                    sampleRect.X * curWidth,
                    sampleRect.Y * curHeight,
                    sampleRect.Width * curWidth,
                    sampleRect.Height * curHeight
                    );

                drawingContext.DrawRectangle(
                    new SolidColorBrush(ConvertGuidToColor(Guid.NewGuid())),
                    new Pen(Brushes.Yellow, 2.0),
                    normalRect
                    );

                var formattedText = new FormattedText(
                    ConvertGuidToMyStringId(Guid.NewGuid()),
                    CultureInfo.GetCultureInfo("ru-RU"),
                    FlowDirection.LeftToRight,
                    new Typeface("Verdana"),
                    20,
                    Brushes.Red);

                drawingContext.DrawText(formattedText, new Point(normalRect.X + normalRect.Width / 2, normalRect.Y));

                drawingContext.Close();
            }
        }
Beispiel #22
0
 public void Write(RawEvent entry)
 {
     _logs.Add(entry);
 }
Beispiel #23
0
        private TraceContent ParseContent()
        {
            var events    = new List <RawEvent>();
            var strings   = new Dictionary <ulong, string>();
            var stackInfo = new Dictionary <ulong, RawEvent>();
            var version   = ParseHeader();
            var frequency = 0L;
            var timers    = new HashSet <ulong>();

            using var progress = _registry?.Start("Load trace", "Read and parse the binary trace data");

            var end = _reader.BaseStream.Length;

            while (Position < end)
            {
                if (!(progress is null))
                {
                    progress.PercentComplete = Position / (float)end;
                }
                var eventStartPosition    = Position;
                var eventTypeAndArgsCount = _reader.ReadByte();
                var type       = (EventType)(eventTypeAndArgsCount & ~(0b11 << 6));
                var argsCount  = (eventTypeAndArgsCount >> 6) + 1;
                var inlineArgs = (byte)4;
                if (version < 1007)
                {
                    argsCount++;
                    inlineArgs++;
                }

                if (type == EventType.None || EventDescription.Of(type).MinVersion > version)
                {
                    throw new InvalidTraceException("unknown type");
                }

                if (type == EventType.String)
                {
                    // String dictionary entry [ID, length, string].
                    var id = ReadVal();
                    if (id == 0)
                    {
                        throw new InvalidTraceException($"{Position} has invalid id 0");
                    }
                    if (strings.ContainsKey(id))
                    {
                        throw new InvalidTraceException($"{Position} has duplicate id {id}");
                    }
                    var value = ReadStr();
                    if (value.Length == 0)
                    {
                        throw new InvalidTraceException($"{Position} has invalid length 0");
                    }
                    strings[id] = value;
                    continue;
                }

                var ev = new RawEvent(type, (int)eventStartPosition);
                if (argsCount < inlineArgs)
                {
                    ev.Args = new ulong[argsCount];
                    for (var i = 0; i < argsCount; i++)
                    {
                        ev.Args[i] = ReadVal();
                    }
                }
                else
                {
                    var evLength = ReadVal();
                    var start    = _reader.BaseStream.Position;
                    var buffer   = new List <ulong>();
                    while (evLength > (ulong)(_reader.BaseStream.Position - start))
                    {
                        var arg = ReadVal();
                        buffer.Add(arg);
                    }

                    if (evLength != (ulong)(Position - start))
                    {
                        throw new InvalidTraceException(
                                  $"event has wrong length at {Position}, want: {evLength}, got: {Position - start}");
                    }
                    ev.Args = buffer.ToArray();
                }

                if (ev.Type == EventType.UserLog)
                {
                    ev.StringArgs = new[] { ReadStr() }
                }
                ;

                switch (ev.Type)
                {
                case EventType.Frequency:
                    frequency = (long)ev.Args[0];
                    if (frequency <= 0)
                    {
                        throw new TimeOrderException();
                    }
                    break;

                case EventType.TimerGoroutine:
                    timers.Add(ev.Args[0]);
                    break;

                case EventType.Stack:
                    if (ev.Args.Length < 2)
                    {
                        throw new InvalidTraceException("Stack event should have at least 2 arguments");
                    }
                    var size = ev.Args[1];
                    if (size > 1000)
                    {
                        throw new InvalidTraceException($"Stack event bad number of frames {size}");
                    }
                    var want = version < 1007 ? 4 + 4 * size : 2 + 4 * size;
                    if (ev.Args.Length != (int)want)
                    {
                        throw new InvalidTraceException(
                                  $"Stack event has wrong number of arguments want {want} got {ev.Args.Length}");
                    }

                    stackInfo[ev.Args[0]] = ev;
                    break;

                default:
                    events.Add(ev);
                    break;
                }
            }

            return(new TraceContent(events, strings, version, frequency, timers, stackInfo));
        }
 public UntypedEventEnvelope Deserialize(RawEvent e)
 {
     return(_serializationInterpreter.Deserialize(_configs, e));
 }
Beispiel #25
0
 /// <summary>
 /// Sends an event to the CEP Server
 /// </summary>
 /// <param name="obj">the event</param>
 public void SendEvent(RawEvent obj)
 {
     Log.DebugFormat("Received Event #{1} at {2}: {0}", obj.ToString(), ++eventsReceivedCount, this.GetHashCode());
     obj.TimeStamp = DateTime.Now.ToString("yyyyMMddHHmmssffff");
     epService.EPRuntime.SendEvent(obj);
 }
Beispiel #26
0
        static void Main(string[] args)
        {
            List <RawEvent> events = new List <RawEvent>();
            List <Guard>    guards = new List <Guard>();
            Guard           guard  = null;
            string          line;
            int             currentGuardID = -1;

            using (System.IO.StreamReader input = new System.IO.StreamReader(@"C:\Users\juric\OneDrive\Desktop\inputDay4.txt"))
            {
                while ((line = input.ReadLine()) != null)
                {
                    DateTime date = DateTime.ParseExact("1518" + line.Substring(5, 12), "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);

                    events.Add(new RawEvent()
                    {
                        Data = line.Substring(19),
                        Time = date
                    });
                }
            }

            List <RawEvent> sorted = events.OrderBy(x => x.Time).ToList();

            for (int i = 0; i < events.Count; i++)
            {
                RawEvent tempRE = sorted[i];

                if (tempRE.Data.EndsWith(" begins shift"))
                {
                    currentGuardID = int.Parse(tempRE.Data.Replace("Guard #", "").Replace(" begins shift", ""));
                    guard          = guards.FirstOrDefault(x => x.ID == currentGuardID);

                    if (guard == null)
                    {
                        guard = new Guard()
                        {
                            ID    = currentGuardID,
                            Month = tempRE.Time.Month,
                            Date  = tempRE.Time.Day
                        };

                        guards.Add(guard);
                    }
                }
                else if (tempRE.Data == "falls asleep")
                {
                    if (i + 1 < sorted.Count && sorted[i + 1].Data == "wakes up")
                    {
                        for (int j = tempRE.Time.Minute; j < sorted[i + 1].Time.Minute; j++)
                        {
                            guard.Status[j]++;
                        }
                    }
                }
            }

            List <Guard> sortedGuards    = guards.OrderBy(x => x.FormatedDate).ToList();
            List <Guard> sortedMinGuards = guards.OrderBy(x => x.MinAsleep).ToList();

            int max       = -1;
            int maxID     = -1;
            int maxMinute = 1;

            //task 1
            Guard firstGuard = sortedMinGuards[sortedMinGuards.Count - 1];

            for (int min = 0; min < 60; min++)
            {
                int minutes = firstGuard.Status[min];
                if (minutes > max)
                {
                    maxID     = firstGuard.ID;
                    max       = minutes;
                    maxMinute = min;
                }
            }

            Console.WriteLine("Prvi odgovor: " + maxID * maxMinute);

            //task 2
            foreach (Guard g in sortedGuards)
            {
                for (int mi = 0; mi < 60; mi++)
                {
                    int minutes = g.Status[mi];
                    if (minutes > max)
                    {
                        maxID     = g.ID;
                        max       = minutes;
                        maxMinute = mi;
                    }
                }
            }

            Console.WriteLine("Drugi odgovor: " + maxID * maxMinute);
        }
 private static void ThrowRawEventParseError(RawEvent rawEvent)
 {
     throw new Exception($"Błąd podczas tworzenia zależności zdarzeń: ID:{rawEvent.Id}"
                         + $"Następstwo zdarzeń: i:{rawEvent.RawNode.i} j:{rawEvent.RawNode.j}");
 }
Beispiel #28
0
        public virtual UntypedEventEnvelope Deserialize(ContextSchemaConfigs configs, RawEvent resolvedEvent)
        {
            var jsonMetadata = Encoding.UTF8.GetString(resolvedEvent.Metadata);
            var metadata     = JsonConvert.DeserializeObject <UntypedEventEnvelope.EventMetadata>(jsonMetadata);

            var jsonData = Encoding.UTF8.GetString(resolvedEvent.Body);
            var dataType = configs.GetType(resolvedEvent.EventType);
            var data     = JsonConvert.DeserializeObject(jsonData, dataType);

            return(new UntypedEventEnvelope(resolvedEvent.EventId
                                            , metadata
                                            , (IDomainEvent)data));
        }
Beispiel #29
0
        /// <summary>
        /// Sends an event to the CEP Server
        /// </summary>
        /// <param name="obj">the event</param>
        public void SendEvent(RawEvent obj)
        {
            Log.DebugFormat("Received Event #{1} at {2}: {0}", obj.ToString(), ++eventsReceivedCount, this.GetHashCode());

            epService.EPRuntime.SendEvent(obj);
        }