protected void InitInternal(Config config) { if (config == null) { throw new ArgumentNullException("config"); } Config = config; InternalLog = new InternalLog(this); PrepareDataHelper = new PrepareDataHelper(this); var programName = Tools.GetProgramName(); AccessToken = new AccessToken() { SecretKey = config.Access.SecretKey, Program = programName }; GetFolderComponentTypeControl(); // чтобы заполнить кэш WebLogManager = new WebLogManager(this); EventManager = new EventManager(this); Start(); }
protected virtual void PrepareBufferEventData(BufferEventData bufferEvent) { // обрежим длинные свойства события PrepareDataHelper.PrepareEvent(bufferEvent.SendEventBase); // установим GlobalJoinKey bufferEvent.GlobalJoinKey = GetGlobalJoinKey( bufferEvent.ComponentControl, bufferEvent.SendEventBase); }
public EventManager(Client client) { if (client == null) { throw new ArgumentNullException("client"); } Client = client; Queue = new EventQueue(client); TaskQueue = new ThreadTaskQueue(client.Config.Events.EventManager.Threads); PrepareDataHelper = new PrepareDataHelper(client); }
public void Test() { Assert.Null(PrepareDataHelper.FixVersion("999999999999")); Assert.Null(PrepareDataHelper.FixVersion("1.a")); Assert.Null(PrepareDataHelper.FixVersion("a.b.c.d")); Assert.Null(PrepareDataHelper.FixVersion("abcd")); Assert.Equal("0.0", PrepareDataHelper.FixVersion("0")); Assert.Equal("1.0", PrepareDataHelper.FixVersion("1")); Assert.Equal("15.0", PrepareDataHelper.FixVersion("15")); Assert.Equal("5.60", PrepareDataHelper.FixVersion("5.60")); Assert.Equal("5.60.774", PrepareDataHelper.FixVersion("5.60.774")); Assert.Equal("10.10.10.10", PrepareDataHelper.FixVersion("10.10.10.10")); Assert.Equal("100.100.100.100", PrepareDataHelper.FixVersion("100.100.100.100")); }
public void PrepareDataHelperTest() { var client = new Client(); var root = client.GetRootComponentControl(); var helper = new PrepareDataHelper(client); string typeSystemName = new String('s', 1000); var eventData = root.CreateApplicationError(typeSystemName); eventData.Count = -10; eventData.Importance = null; eventData.JoinInterval = null; eventData.JoinKey = null; eventData.Message = new String('m', 1000 * 1000 * 10); eventData.StartDate = null; eventData.TypeDisplayName = new string('d', 1000); eventData.Version = "1"; for (int i = 0; i < 10; i++) { eventData.Properties["text_" + Guid.NewGuid()] = new String('t', 1000 * 1000 + i); } eventData.Properties["veryLongKey_" + new string('l', 1000)] = new DateTime(2015, 05, 09, 10, 00, 00); eventData.Properties["Stack"] = "stack value"; client.Config.Events.DefaultValues.ApplicationError.JoinInterval = TimeSpan.FromMinutes(8); helper.PrepareEvent(eventData); // < 1 заменяется на 1 Assert.Equal(1, eventData.Count); // EndDate может быть пустым //Assert.Null(eventData.EndDate); // если не установлено, берем из конфига Assert.Null(eventData.Importance); // если не установлен, берем из конфига Assert.Equal(eventData.JoinInterval, TimeSpan.FromMinutes(8)); // если JoinKey не установлен, то вычисляется автоматически var joinKey = eventData.TypeCode + eventData.Message; foreach (var prop in eventData.Properties) { joinKey += prop.Name + prop.Value.Value; } Assert.Equal(eventData.JoinKey, HashHelper.GetInt64(joinKey)); // обрезаем Message до 4000 символов Assert.Equal(eventData.Message, new string('m', 4000)); // StartDate устанавливатся в текущую дату Assert.Equal(eventData.StartDate.Value.Date, DateTime.Now.Date); // TypeDisplayName обрезаем до 255 символов Assert.Equal(eventData.TypeDisplayName, new string('d', 255)); // TypeSystemName обрезаем до 255 символов Assert.Equal(eventData.TypeSystemName, new string('s', 255)); // должна быть хотя бы одна точка (добавили ".0") Assert.Equal(eventData.Version, "1.0"); // остались 5 text_ + стек + veryLongKey_ Assert.Equal(eventData.Properties.Count, 7); int sum = eventData.Properties.Sum(x => x.Value.ToString().Length); Assert.True(sum > 5000 * 1000); // длинное имя свойства обрезалось var veryLongProperty = eventData.Properties.Single(x => x.Name.StartsWith("veryLongKey_")); Assert.Equal(veryLongProperty.Name.Length, 100); }