mirror of
https://github.com/logos-storage/logos-storage-nim-cs-dist-tests.git
synced 2026-02-26 15:53:06 +00:00
wip
This commit is contained in:
parent
89193fdfde
commit
e0647446f8
@ -17,11 +17,6 @@ namespace SeeTimeline
|
||||
Dt = dt;
|
||||
}
|
||||
|
||||
public void Move(TimeSpan timeSpan)
|
||||
{
|
||||
Dt = Dt + timeSpan;
|
||||
}
|
||||
|
||||
public void Scale(DateTime from, double factor)
|
||||
{
|
||||
var span = Dt - from;
|
||||
@ -50,17 +45,27 @@ namespace SeeTimeline
|
||||
if (e.Dt < Earliest) Earliest = e.Dt;
|
||||
}
|
||||
|
||||
public string[] Addresses => events.Keys.ToArray();
|
||||
public DateTime Earliest { get; private set; } = DateTime.MaxValue;
|
||||
public DateTime Latest { get; private set; } = DateTime.MinValue;
|
||||
|
||||
public void Iterate(int max, Action<string, CodexEvent[]> action)
|
||||
public void KeepOnly(string[] addresses)
|
||||
{
|
||||
var keys = events.Keys.ToArray();
|
||||
foreach (var key in keys)
|
||||
{
|
||||
if (!addresses.Contains(key))
|
||||
{
|
||||
events.Remove(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Iterate(Action<string, CodexEvent[]> action)
|
||||
{
|
||||
var i = 0;
|
||||
foreach (var pair in events)
|
||||
{
|
||||
action(pair.Key, pair.Value.ToArray());
|
||||
i++;
|
||||
if (i >= max) return;
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,14 +89,6 @@ namespace SeeTimeline
|
||||
foreach (var e in pair.Value) e.Scale(from, factor);
|
||||
}
|
||||
}
|
||||
|
||||
public void Move(TimeSpan timeSpan)
|
||||
{
|
||||
foreach (var pair in events)
|
||||
{
|
||||
foreach (var e in pair.Value) e.Move(timeSpan);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class LogLineAdder
|
||||
@ -154,7 +151,19 @@ namespace SeeTimeline
|
||||
// isCancel = $e.cancel
|
||||
//trace "Received wantHave".
|
||||
//AddJobs(result, "WantHaveRecv", Colors.Red, req.WantHaveRecv);
|
||||
else if (line.Message == "Received wantHave") AddEvent(line.Attributes["address"], "WantHaveRecv", Colors.Red);
|
||||
else if (line.Message == "Received wantHave")
|
||||
{
|
||||
var isCancel = line.Attributes["isCancel"];
|
||||
|
||||
if (isCancel.ToLowerInvariant() == "true")
|
||||
{
|
||||
AddEvent(line.Attributes["address"], "CancelRecv", Colors.Red);
|
||||
}
|
||||
else
|
||||
{
|
||||
AddEvent(line.Attributes["address"], "WantHaveRecv", Colors.Red);
|
||||
}
|
||||
}
|
||||
|
||||
//trace "Received wantBlock"
|
||||
//AddJobs(result, "WantBlkRecv", Colors.Yellow, req.WantBlkRecv);
|
||||
|
||||
@ -9,21 +9,34 @@
|
||||
Title="SeeTimeline" Height="450" Width="800">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.LayoutTransform>
|
||||
<ScaleTransform
|
||||
ScaleX="1.5"
|
||||
ScaleY="1.5"/>
|
||||
</Grid.LayoutTransform>
|
||||
<Button Grid.Row="0" Content="Load Logs" Click="Button_Click"/>
|
||||
<TextBlock Grid.Row="1" Name="Line1Name" HorizontalAlignment="Center"/>
|
||||
<tl:Timeliner Name="Timeliner1" Grid.Row="2"/>
|
||||
<TextBlock Grid.Row="3" Name="Line2Name" HorizontalAlignment="Center"/>
|
||||
<tl:Timeliner Name="Timeliner2" Grid.Row="4"/>
|
||||
<Grid Grid.Row="1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.LayoutTransform>
|
||||
<ScaleTransform
|
||||
ScaleX="1.0"
|
||||
ScaleY="1.0"/>
|
||||
</Grid.LayoutTransform>
|
||||
<TextBlock Grid.Row="0" Name="Line1Name" HorizontalAlignment="Center"/>
|
||||
<tl:Timeliner Name="Timeliner1" Grid.Row="1"/>
|
||||
<TextBlock Grid.Row="2" Name="Line2Name" HorizontalAlignment="Center"/>
|
||||
<tl:Timeliner Name="Timeliner2" Grid.Row="3"/>
|
||||
<TextBlock Grid.Row="4" Name="Line3Name" HorizontalAlignment="Center"/>
|
||||
<tl:Timeliner Name="Timeliner3" Grid.Row="5"/>
|
||||
<TextBlock Grid.Row="6" Name="Line4Name" HorizontalAlignment="Center"/>
|
||||
<tl:Timeliner Name="Timeliner4" Grid.Row="7"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Window>
|
||||
|
||||
@ -12,6 +12,13 @@ namespace SeeTimeline
|
||||
InitializeComponent();
|
||||
|
||||
Timeliner1.PropertyChanged += Timeliner1_PropertyChanged;
|
||||
Timeliner3.PropertyChanged += Timeliner3_PropertyChanged;
|
||||
}
|
||||
|
||||
private void Timeliner3_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
{
|
||||
Timeliner4.LeftEdge = Timeliner3.LeftEdge;
|
||||
Timeliner4.RightEdge = Timeliner3.RightEdge;
|
||||
}
|
||||
|
||||
private void Timeliner1_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
@ -22,74 +29,99 @@ namespace SeeTimeline
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Post-holiday todo:
|
||||
// TODO: way to line up upload and download events for same blockaddress
|
||||
// currently: group by address => mixed together = not very handy.
|
||||
// also: check resolution for log lines is correctly preserved, some events appear at exact same moment.
|
||||
//var path = "d:\\Projects\\cs-codex-dist-tests\\Tests\\CodexReleaseTests\\bin\\Debug\\net8.0\\CodexTestLogs\\2024-12\\20\\09-57-01Z_TwoClientTests\\";
|
||||
var path = "C:\\Projects\\cs-codex-dist-tests\\Tests\\CodexReleaseTests\\bin\\Debug\\net8.0\\CodexTestLogs\\2025-01\\06\\09-45-03Z_TwoClientTests\\";
|
||||
var file1 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-14]_000001_Downloader1.log");
|
||||
var file2 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-14]_000000_Uploader0.log");
|
||||
var file3 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-15]_000001_Downloader1.log");
|
||||
var file4 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-15]_000000_Uploader0.log");
|
||||
|
||||
//var dlg = new OpenFileDialog();
|
||||
var path = "d:\\Projects\\cs-codex-dist-tests\\Tests\\CodexReleaseTests\\bin\\Debug\\net8.0\\CodexTestLogs\\2024-12\\20\\09-57-01Z_TwoClientTests\\";
|
||||
var file1 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-14]_FAST_Downloader1.log");
|
||||
var file2 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-14]_FAST_Uploader0.log");
|
||||
var file3 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-15]_000000_Uploader0.log");
|
||||
var file4 = Path.Combine(path, "TwoClientTest[thatbenbierens_nim-codex_blkex-cancelpresence-15]_000001_Downloader1.log");
|
||||
|
||||
//MessageBox.Show("Select fast-run upload and download logs.");
|
||||
//if (dlg.ShowDialog() != true) return;
|
||||
//var file1 = dlg.FileName;
|
||||
//if (dlg.ShowDialog() != true) return;
|
||||
//var file2 = dlg.FileName;
|
||||
Line1Name.Text = file1 + " / " + file2;
|
||||
|
||||
//MessageBox.Show("Select slow-run upload and download logs.");
|
||||
//if (dlg.ShowDialog() != true) return;
|
||||
//var file3 = dlg.FileName;
|
||||
//if (dlg.ShowDialog() != true) return;
|
||||
//var file4 = dlg.FileName;
|
||||
Line2Name.Text = file3 + " / " + file4;
|
||||
Line1Name.Text = file1;
|
||||
Line2Name.Text = file2;
|
||||
Line3Name.Text = file3;
|
||||
Line4Name.Text = file4;
|
||||
|
||||
var set1 = new EventSet();
|
||||
set1.AddFile(file1);
|
||||
set1.AddFile(file2);
|
||||
|
||||
var addrs1 = set1.Addresses.Take(5).ToArray();
|
||||
set1.KeepOnly(addrs1);
|
||||
|
||||
var set2 = new EventSet();
|
||||
set2.AddFile(file3);
|
||||
set2.AddFile(file4);
|
||||
set2.AddFile(file2);
|
||||
|
||||
set2.Move(-(set2.Earliest - set1.Earliest));
|
||||
set2.KeepOnly(addrs1);
|
||||
|
||||
var now = set1.Earliest;
|
||||
set1.Scale(from: now, factor: 5000.0);
|
||||
set2.Scale(from: now, factor: 5000.0);
|
||||
var set3 = new EventSet();
|
||||
set3.AddFile(file3);
|
||||
|
||||
DisplaySet(set1, Timeliner1, max: 5);
|
||||
DisplaySet(set2, Timeliner2, max: 5);
|
||||
|
||||
var end = set2.Latest;
|
||||
Timeliner1.Now = now;
|
||||
Timeliner2.Now = now;
|
||||
var addrs2 = set3.Addresses.Take(5).ToArray();
|
||||
set3.KeepOnly(addrs2);
|
||||
|
||||
Timeliner1.LeftEdge = now;
|
||||
Timeliner1.RightEdge = end;
|
||||
Timeliner2.LeftEdge = now;
|
||||
Timeliner2.RightEdge = end;
|
||||
var set4 = new EventSet();
|
||||
set4.AddFile(file4);
|
||||
|
||||
set4.KeepOnly(addrs2);
|
||||
|
||||
var factor = 3600.0 * 24.0;
|
||||
var now1 = set1.Earliest;
|
||||
set1.Scale(from: now1, factor);
|
||||
set2.Scale(from: now1, factor);
|
||||
|
||||
var now2 = set3.Earliest;
|
||||
set3.Scale(from: now2, factor);
|
||||
set4.Scale(from: now2, factor);
|
||||
|
||||
DisplaySet(set1, Timeliner1);
|
||||
DisplaySet(set2, Timeliner2);
|
||||
DisplaySet(set3, Timeliner3);
|
||||
DisplaySet(set4, Timeliner4);
|
||||
|
||||
//var end1 = set2.Latest;
|
||||
Timeliner1.Now = now1;
|
||||
Timeliner2.Now = now1;
|
||||
|
||||
Timeliner1.LeftEdge = now1;
|
||||
//Timeliner1.RightEdge = end1;
|
||||
Timeliner2.LeftEdge = now1;
|
||||
//Timeliner2.RightEdge = end1;
|
||||
|
||||
//var end2 = set3.Latest;
|
||||
Timeliner3.Now = now2;
|
||||
Timeliner4.Now = now2;
|
||||
|
||||
Timeliner3.LeftEdge = now2;
|
||||
//Timeliner3.RightEdge = end2;
|
||||
Timeliner4.LeftEdge = now2;
|
||||
//Timeliner4.RightEdge = end2;
|
||||
}
|
||||
|
||||
private void DisplaySet(EventSet set, Timeliner timeliner, int max)
|
||||
private void DisplaySet(EventSet set, Timeliner timeliner)
|
||||
{
|
||||
timeliner.Data = new TimelinerData()
|
||||
{
|
||||
Items = CreateItems(set, max)
|
||||
Items = CreateItems(set)
|
||||
};
|
||||
}
|
||||
|
||||
private List<TimelinerItem> CreateItems(EventSet set, int max)
|
||||
private List<TimelinerItem> CreateItems(EventSet set)
|
||||
{
|
||||
var result = new List<TimelinerItem>();
|
||||
|
||||
set.Iterate(max, (addr, events) =>
|
||||
set.Iterate((addr, events) =>
|
||||
{
|
||||
result.Add(CreateItem(addr, events));
|
||||
//result.Add(CreateItem(addr, events));
|
||||
foreach (var e in events)
|
||||
{
|
||||
result.Add(new TimelinerItem()
|
||||
{
|
||||
Name = addr + " " + e.Name,
|
||||
Jobs = new List<TimelinerJob>
|
||||
{
|
||||
CreateJob(e)
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user