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); }
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"))); }
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); } }
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); }