コード例 #1
0
ファイル: Client.cs プロジェクト: crazyants/ZidiumServer
        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();
        }
コード例 #2
0
        protected virtual void PrepareBufferEventData(BufferEventData bufferEvent)
        {
            // обрежим длинные свойства события
            PrepareDataHelper.PrepareEvent(bufferEvent.SendEventBase);

            // установим GlobalJoinKey
            bufferEvent.GlobalJoinKey = GetGlobalJoinKey(
                bufferEvent.ComponentControl,
                bufferEvent.SendEventBase);
        }
コード例 #3
0
 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);
 }
コード例 #4
0
        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"));
        }
コード例 #5
0
        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);
        }