2024-04-25 08:25:12 +00:00
|
|
|
|
using CodexPlugin;
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using Utils;
|
|
|
|
|
|
|
|
|
|
namespace CodexTests.BasicTests
|
|
|
|
|
{
|
|
|
|
|
[TestFixture]
|
2024-04-25 08:57:19 +00:00
|
|
|
|
public class LogHelperTests : AutoBootstrapDistTest
|
2024-04-25 08:25:12 +00:00
|
|
|
|
{
|
|
|
|
|
[Test]
|
|
|
|
|
public void FindMostCommonLogMessages()
|
|
|
|
|
{
|
2024-04-25 08:57:19 +00:00
|
|
|
|
var uploader = AddCodex(s => s.WithLogLevel(CodexLogLevel.Trace));
|
|
|
|
|
var downloader = AddCodex(s => s.WithLogLevel(CodexLogLevel.Trace));
|
2024-04-25 08:25:12 +00:00
|
|
|
|
|
|
|
|
|
|
2024-04-25 08:57:19 +00:00
|
|
|
|
var cid = uploader.UploadFile(GenerateTestFile(1.MB()));
|
2024-04-25 08:25:12 +00:00
|
|
|
|
|
2024-04-25 08:57:19 +00:00
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
|
var logStartUtc = DateTime.UtcNow;
|
|
|
|
|
Thread.Sleep(1000);
|
2024-04-25 08:25:12 +00:00
|
|
|
|
|
2024-04-25 08:57:19 +00:00
|
|
|
|
downloader.DownloadContent(cid);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var map = GetLogMap(uploader, logStartUtc).OrderByDescending(p => p.Value);
|
2024-04-25 08:25:12 +00:00
|
|
|
|
foreach (var entry in map)
|
|
|
|
|
{
|
|
|
|
|
Log($"'{entry.Key}' = {entry.Value}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-04-25 08:57:19 +00:00
|
|
|
|
private Dictionary<string, int> GetLogMap(ICodexNode node, DateTime? startUtc = null)
|
2024-04-25 08:25:12 +00:00
|
|
|
|
{
|
|
|
|
|
var log = Ci.DownloadLog(node);
|
|
|
|
|
var map = new Dictionary<string, int>();
|
|
|
|
|
log.IterateLines(line =>
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(line) ||
|
|
|
|
|
!line.Contains(" ") ||
|
|
|
|
|
!line.Contains("=") ||
|
|
|
|
|
line.Length < 34 ||
|
|
|
|
|
line[33] != ' '
|
|
|
|
|
) return;
|
2024-04-25 08:57:19 +00:00
|
|
|
|
|
|
|
|
|
if (startUtc.HasValue)
|
|
|
|
|
{
|
|
|
|
|
var timestampLine = line.Substring(4, 23);
|
|
|
|
|
var timestamp = DateTime.Parse(timestampLine);
|
|
|
|
|
if (timestamp < startUtc) return;
|
|
|
|
|
}
|
2024-04-25 08:25:12 +00:00
|
|
|
|
|
|
|
|
|
// "INF 2024-04-14 10:40:50.042+00:00 Creating a private key and saving it tid=1 count=2"
|
|
|
|
|
var start = 34;
|
|
|
|
|
var msg = line.Substring(start);
|
|
|
|
|
|
|
|
|
|
// "Creating a private key and saving it tid=1 count=2"
|
|
|
|
|
var firstEqualSign = msg.IndexOf("=");
|
|
|
|
|
msg = msg.Substring(0, firstEqualSign);
|
|
|
|
|
|
|
|
|
|
// "Creating a private key and saving it tid"
|
|
|
|
|
var lastSpace = msg.LastIndexOf(" ");
|
|
|
|
|
msg = msg.Substring(0, lastSpace);
|
|
|
|
|
|
|
|
|
|
// "Creating a private key and saving it "
|
|
|
|
|
msg = msg.Trim();
|
|
|
|
|
|
|
|
|
|
// "Creating a private key and saving it"
|
|
|
|
|
if (map.ContainsKey(msg)) map[msg] += 1;
|
|
|
|
|
else map.Add(msg, 1);
|
|
|
|
|
});
|
|
|
|
|
return map;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|