Example #1
0
        public void GetSQLQueryHashTest()
        {
            string logArchive  = Path.Combine(_unitTestDirectory, "TestData", "TestData_CheckHash.zip");
            string logDataPath = Path.Combine(_unitTestDirectory, "TestData", "TestData_CheckHash");

            if (Directory.Exists(logDataPath))
            {
                Directory.Delete(logDataPath, true);
            }
            ZipFile.ExtractToDirectory(logArchive, logDataPath);

            int       eventNumber = 0;
            EventData firstRow    = null;

            TechJournalManager tjManager = new TechJournalManager(logDataPath);

            foreach (var tjDirectory in tjManager.Directories)
            {
                TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName);
                if (tjReader.Read())
                {
                    eventNumber += 1;
                    firstRow     = tjReader.CurrentRow;
                }
            }

            Assert.NotNull(firstRow);
            Assert.NotEqual(0, eventNumber);
            Assert.Equal("DBMSSQL", firstRow.EventName);
            Assert.Equal("DDD994FB27A2A4DFCE2C642167DA6A66", firstRow.SQLQueryHash);
        }
Example #2
0
        public void ReadSpecialCasesTest()
        {
            string logArchive  = Path.Combine(_unitTestDirectory, "TestData", "TestData_SpecialCases.zip");
            string logDataPath = Path.Combine(_unitTestDirectory, "TestData", "TestData_SpecialCases");

            if (Directory.Exists(logDataPath))
            {
                Directory.Delete(logDataPath, true);
            }
            ZipFile.ExtractToDirectory(logArchive, logDataPath);

            int       eventNumber = 0;
            EventData firstRow    = null;

            TechJournalManager tjManager = new TechJournalManager(logDataPath);

            foreach (var tjDirectory in tjManager.Directories)
            {
                TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName);
                if (tjReader.Read())
                {
                    eventNumber += 1;
                    firstRow     = tjReader.CurrentRow;
                }
            }

            Assert.NotNull(firstRow);
            Assert.NotEqual(0, eventNumber);
            Assert.Equal(4, firstRow.Properties.Count(e => e.Key.StartsWith("T:CLIENTID")));
        }
Example #3
0
        public void CheckReadDurationNewFormat83()
        {
            string logArchive  = Path.Combine(_unitTestDirectory, "TestData", "TestData_CheckDuration83.zip");
            string logDataPath = Path.Combine(_unitTestDirectory, "TestData", "TestData_CheckDuration83");

            if (Directory.Exists(logDataPath))
            {
                Directory.Delete(logDataPath, true);
            }
            ZipFile.ExtractToDirectory(logArchive, logDataPath);

            int       eventNumber = 0;
            EventData firstRow    = null;

            TechJournalManager tjManager = new TechJournalManager(logDataPath);

            foreach (var tjDirectory in tjManager.Directories)
            {
                TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName);
                if (tjReader.Read())
                {
                    eventNumber += 1;
                    firstRow     = tjReader.CurrentRow;
                }
            }

            Assert.NotNull(firstRow);
            Assert.NotEqual(0, eventNumber);
            Assert.Equal("DBMSSQL", firstRow.EventName);
            Assert.Equal(46995, firstRow.Duration);
            Assert.Equal(46995, firstRow.DurationMks);
            Assert.Equal(47, firstRow.DurationMs);
            Assert.Equal(0, firstRow.DurationSec);
            Assert.Equal(1, firstRow.Properties.Count(e => e.Key.StartsWith("T:CLIENTID")));
        }
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                return;
            }

            string dataDirectoryPath = args[0];

            Console.WriteLine($"{DateTime.Now}: Инициализация чтения логов \"{dataDirectoryPath}\"...");
            Console.WriteLine();

            while (true)
            {
                TechJournalManager tjManager = new TechJournalManager(dataDirectoryPath);
                foreach (var tjDirectory in tjManager.Directories)
                {
                    if (!tjDirectory.DirectoryData.Exists)
                    {
                        continue;
                    }

                    _lastLogDirectory = tjDirectory;
                    TechJournalPosition lastPosition = null;
                    if (_lastPositions.ContainsKey(tjDirectory.DirectoryData.Name))
                    {
                        lastPosition = _lastPositions[tjDirectory.DirectoryData.Name];
                    }

                    using (TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName))
                    {
                        tjReader.AfterReadEvent  += Reader_AfterReadEvent;
                        tjReader.AfterReadFile   += Reader_AfterReadFile;
                        tjReader.BeforeReadEvent += Reader_BeforeReadEvent;
                        tjReader.BeforeReadFile  += Reader_BeforeReadFile;
                        tjReader.OnErrorEvent    += Reader_OnErrorEvent;
                        tjReader.SetCurrentPosition(lastPosition);

                        _eventNumber = 0;
                        while (tjReader.Read())
                        {
                            // tjReader.CurrentRow - данные текущего события
                            // tjReader.CurrentRow.Properties - сырые данные события "как есть" без обработки в виде словаря Dictionary<string, string>
                            _eventNumber      += 1;
                            _totalEventNumber += 1;
                        }
                        Console.WriteLine($"{DateTime.Now}: [{_lastLogDirectory}] Всего событий прочитано: ({_eventNumber})...");
                    }
                }

                Console.WriteLine();
                Console.WriteLine($"{DateTime.Now}: Всего событий прочитано {_totalEventNumber}.");
                Console.WriteLine($"{DateTime.Now}: Ожидание новых событий...");
                Thread.Sleep(5000);
            }
        }
Example #5
0
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                return;
            }

            string dataDirectoryPath = args[0];

            Console.WriteLine($"{DateTime.Now}: Инициализация чтения логов \"{dataDirectoryPath}\"...");
            Console.WriteLine();

            TechJournalManager tjManager = new TechJournalManager(dataDirectoryPath);

            foreach (var tjDirectory in tjManager.Directories)
            {
                _lastLogDirectory = tjDirectory;

                using (TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName))
                {
                    tjReader.AfterReadEvent  += Reader_AfterReadEvent;
                    tjReader.AfterReadFile   += Reader_AfterReadFile;
                    tjReader.BeforeReadEvent += Reader_BeforeReadEvent;
                    tjReader.BeforeReadFile  += Reader_BeforeReadFile;
                    tjReader.OnErrorEvent    += Reader_OnErrorEvent;

                    Console.WriteLine($"{DateTime.Now}: [{_lastLogDirectory}] Всего событий к обработке: ({tjReader.Count()})...");

                    while (tjReader.Read())
                    {
                        // tjReader.CurrentRow - данные текущего события
                        // tjReader.CurrentRow.Properties - сырые данные события "как есть" без обработки в виде словаря Dictionary<string, string>
                        _eventNumber      += 1;
                        _totalEventNumber += 1;
                    }
                }
            }

            Console.WriteLine($"{DateTime.Now}: Всего событий прочитано: ({_totalEventNumber})...");
            Console.WriteLine($"{DateTime.Now}: Для выхода нажмите любую клавишу...");
            Console.ReadKey();
        }
        public void Test_ReadSampleData()
        {
            string unitTestDirectory = Directory.GetCurrentDirectory();

            string logArchive  = Path.Combine(unitTestDirectory, "TestData", "TestData_ServerAndClusterLogs.zip");
            string logDataPath = Path.Combine(unitTestDirectory, "TestData", "TestData_ServerAndClusterLogs");

            if (Directory.Exists(logDataPath))
            {
                Directory.Delete(logDataPath, true);
            }
            ZipFile.ExtractToDirectory(logArchive, logDataPath);

            int            eventNumber = 0;
            RowData        lastRow     = null;
            List <RowData> allRows     = new List <RowData>();

            TechJournalManager tjManager = new TechJournalManager(logDataPath);

            foreach (var tjDirectory in tjManager.Directories)
            {
                TechJournalReader tjReader = TechJournalReader.CreateReader(tjDirectory.DirectoryData.FullName);
                while (tjReader.Read())
                {
                    eventNumber += 1;
                    lastRow      = tjReader.CurrentRow;
                    allRows.Add(tjReader.CurrentRow);
                }
            }

            DateTime minPeriod = allRows.Min(r => r.Period);
            DateTime maxPeriod = allRows.Max(r => r.Period);

            Assert.NotNull(lastRow);
            Assert.NotEqual(0, eventNumber);
            Assert.Equal(3113, eventNumber);
            Assert.Equal(lastRow.Properties["Txt"], "1C:Enterprise 8.3 (x86-64) (8.3.17.1496) Working Process (debug) terminated.");
            Assert.Equal(new DateTime(2020, 8, 18, 15, 22, 06).AddMilliseconds(356), minPeriod);
            Assert.Equal(new DateTime(2020, 8, 18, 16, 02, 34).AddMilliseconds(817), maxPeriod);
        }