Stufe 4c (#764): Bezeichner auf Englisch - Typen, Methoden, Felder, Parameter, Locals, Testnamen

Mit Roslyn umbenannt (Verweise folgen, Zeichenketten bleiben unberuehrt).
Nicht umbenannt, weil gespeichert oder ueber die API gebunden (Stufe 4e):
Properties, Record-Parameter, Enum-Member sowie die Parameter der
Endpunkt-Handler (Routen-/Query-Bindung ueber den Namen). Die JSON-Felder
anonymer Objekte bleiben ausdruecklich benannt (JsonFilter: pfad).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-10-04 13:18:43 +02:00
co-authored by Claude Opus 5.5
parent 837a634a22
commit 77062facc9
190 changed files with 4813 additions and 4813 deletions
@@ -16,15 +16,15 @@ namespace ClawdDotNet.Core.Tests.Instances;
/// </summary>
public sealed class ManagerHandshakeTests
{
private const string Instanz = "/daten/Instances/Alpha";
private const string Andere = "/daten/Instances/Beta";
private const string InstanceDir = "/daten/Instances/Alpha";
private const string OtherDir = "/daten/Instances/Beta";
[Fact]
public void Eine_frische_Unterschrift_traegt()
public void A_fresh_signature_holds()
{
var token = ManagerHandshake.Sign(Instanz);
var token = ManagerHandshake.Sign(InstanceDir);
ManagerHandshake.Verify(Instanz, token).ShouldBeTrue();
ManagerHandshake.Verify(InstanceDir, token).ShouldBeTrue();
}
/// <summary>
@@ -39,20 +39,20 @@ public sealed class ManagerHandshakeTests
[InlineData("v1.999.")]
[InlineData("v2.99999999999.abcdef")]
[InlineData("v1.keinezahl.abcdef")]
public void Ohne_brauchbare_Unterschrift_gilt_die_Instanz_als_ungefuehrt(string? token)
public void Without_a_usable_signature_the_instance_counts_as_unmanaged(string? token)
{
ManagerHandshake.Verify(Instanz, token).ShouldBeFalse();
ManagerHandshake.Verify(InstanceDir, token).ShouldBeFalse();
}
/// <summary>
/// A made-up signature does not hold — even if the structure is right.
/// </summary>
[Fact]
public void Eine_erfundene_Unterschrift_traegt_nicht()
public void A_forged_signature_does_not_hold()
{
var ablauf = DateTimeOffset.UtcNow.AddMinutes(5).ToUnixTimeSeconds();
var expiry = DateTimeOffset.UtcNow.AddMinutes(5).ToUnixTimeSeconds();
ManagerHandshake.Verify(Instanz, $"v1.{ablauf}.{new string('a', 64)}")
ManagerHandshake.Verify(InstanceDir, $"v1.{expiry}.{new string('a', 64)}")
.ShouldBeFalse();
}
@@ -63,11 +63,11 @@ public sealed class ManagerHandshakeTests
/// Alpha would let Beta start by presenting Alpha during the check.</para>
/// </summary>
[Fact]
public void Eine_Unterschrift_gilt_nur_fuer_ihre_eigene_Instanz()
public void A_signature_is_only_valid_for_its_own_instance()
{
var token = ManagerHandshake.Sign(Instanz);
var token = ManagerHandshake.Sign(InstanceDir);
ManagerHandshake.Verify(Andere, token).ShouldBeFalse();
ManagerHandshake.Verify(OtherDir, token).ShouldBeFalse();
}
/// <summary>
@@ -75,27 +75,27 @@ public sealed class ManagerHandshakeTests
/// an instance without a license with it next week.
/// </summary>
[Fact]
public void Eine_abgelaufene_Unterschrift_traegt_nicht()
public void An_expired_signature_does_not_hold()
{
var vorhin = DateTimeOffset.UtcNow.AddHours(-1);
var token = ManagerHandshake.Sign(Instanz, vorhin);
var earlier = DateTimeOffset.UtcNow.AddHours(-1);
var token = ManagerHandshake.Sign(InstanceDir, earlier);
ManagerHandshake.Verify(Instanz, token, vorhin).ShouldBeTrue("Damals galt sie.");
ManagerHandshake.Verify(Instanz, token).ShouldBeFalse("Jetzt nicht mehr.");
ManagerHandshake.Verify(InstanceDir, token, earlier).ShouldBeTrue("Damals galt sie.");
ManagerHandshake.Verify(InstanceDir, token).ShouldBeFalse("Jetzt nicht mehr.");
}
/// <summary>
/// Fiddling with the expiry time does not help: it goes into the signature.
/// </summary>
[Fact]
public void Ein_verlaengerter_Ablauf_macht_die_Unterschrift_ungueltig()
public void An_extended_expiry_invalidates_the_signature()
{
var token = ManagerHandshake.Sign(Instanz);
var teile = token.Split('.');
var token = ManagerHandshake.Sign(InstanceDir);
var parts = token.Split('.');
var spaeter = DateTimeOffset.UtcNow.AddYears(1).ToUnixTimeSeconds();
var later = DateTimeOffset.UtcNow.AddYears(1).ToUnixTimeSeconds();
ManagerHandshake.Verify(Instanz, $"v1.{spaeter}.{teile[2]}").ShouldBeFalse();
ManagerHandshake.Verify(InstanceDir, $"v1.{later}.{parts[2]}").ShouldBeFalse();
}
/// <summary>
@@ -103,7 +103,7 @@ public sealed class ManagerHandshakeTests
/// the handshake fails because one wrote one slash more.
/// </summary>
[Fact]
public void Schreibweisen_desselben_Pfades_ergeben_dieselbe_Unterschrift()
public void Spellings_of_the_same_path_give_the_same_signature()
{
var basis = Path.Combine(Path.GetTempPath(), "clawd-handschlag");
var token = ManagerHandshake.Sign(basis);
@@ -14,8 +14,8 @@ namespace ClawdDotNet.Core.Tests.Instances;
/// </summary>
public sealed class ShutdownCoordinatorTests
{
private static ShutdownCoordinator Koordinator(TimeSpan? frist = null)
=> new(NullLogger.Instance, frist ?? TimeSpan.FromSeconds(5));
private static ShutdownCoordinator Coordinator(TimeSpan? deadline = null)
=> new(NullLogger.Instance, deadline ?? TimeSpan.FromSeconds(5));
/// <summary>
/// The order is the whole trick: close first, then wait.
@@ -24,55 +24,55 @@ public sealed class ShutdownCoordinatorTests
/// work in the next tick, and the number of open pieces would never reach zero.</para>
/// </summary>
[Fact]
public async Task Erst_wird_die_Tuer_geschlossen_dann_gewartet()
public async Task First_the_door_is_closed_then_it_waits()
{
var geschlossen = false;
var offenBeimSchliessen = -1;
var offen = 3;
var closed = false;
var openAtClose = -1;
var open = 3;
var koordinator = Koordinator();
var coordinator = Coordinator();
koordinator.Register(new WorkSource(
coordinator.Register(new WorkSource(
"Aufgaben",
() => offen,
() => open,
() =>
{
geschlossen = true;
offenBeimSchliessen = offen;
closed = true;
openAtClose = open;
}));
// The pieces of work run out in the background.
_ = Task.Run(async () =>
{
while (offen > 0)
while (open > 0)
{
await Task.Delay(30);
offen--;
open--;
}
});
await koordinator.BeginAsync();
await coordinator.BeginAsync();
geschlossen.ShouldBeTrue();
offenBeimSchliessen.ShouldBe(3, "Geschlossen wird, bevor gewartet wird.");
koordinator.Phase.ShouldBe(ShutdownPhase.Done);
koordinator.Snapshot().TotalOpen.ShouldBe(0);
closed.ShouldBeTrue();
openAtClose.ShouldBe(3, "Geschlossen wird, bevor gewartet wird.");
coordinator.Phase.ShouldBe(ShutdownPhase.Done);
coordinator.Snapshot().TotalOpen.ShouldBe(0);
}
/// <summary>
/// Without open work it ends immediately — no waiting on principle.
/// </summary>
[Fact]
public async Task Ohne_offene_Arbeit_endet_es_sofort()
public async Task Without_open_work_it_ends_immediately()
{
var koordinator = Koordinator(TimeSpan.FromMinutes(10));
koordinator.Register(new WorkSource("Aufgaben", () => 0, () => { }));
var coordinator = Coordinator(TimeSpan.FromMinutes(10));
coordinator.Register(new WorkSource("Aufgaben", () => 0, () => { }));
var begonnen = DateTimeOffset.UtcNow;
await koordinator.BeginAsync();
var started = DateTimeOffset.UtcNow;
await coordinator.BeginAsync();
(DateTimeOffset.UtcNow - begonnen).ShouldBeLessThan(TimeSpan.FromSeconds(2));
koordinator.Phase.ShouldBe(ShutdownPhase.Done);
(DateTimeOffset.UtcNow - started).ShouldBeLessThan(TimeSpan.FromSeconds(2));
coordinator.Phase.ShouldBe(ShutdownPhase.Done);
}
/// <summary>
@@ -82,14 +82,14 @@ public sealed class ShutdownCoordinatorTests
/// does not answer — and nobody would ever come to an end.</para>
/// </summary>
[Fact]
public async Task Nach_der_Frist_endet_es_auch_mit_offener_Arbeit()
public async Task After_the_deadline_it_ends_even_with_open_work()
{
var koordinator = Koordinator(TimeSpan.FromMilliseconds(300));
koordinator.Register(new WorkSource("Agentenläufe", () => 2, () => { }));
var coordinator = Coordinator(TimeSpan.FromMilliseconds(300));
coordinator.Register(new WorkSource("Agentenläufe", () => 2, () => { }));
await koordinator.BeginAsync();
await coordinator.BeginAsync();
koordinator.Phase.ShouldBe(ShutdownPhase.Done);
coordinator.Phase.ShouldBe(ShutdownPhase.Done);
}
/// <summary>
@@ -97,26 +97,26 @@ public sealed class ShutdownCoordinatorTests
/// instance manager recognizes that cleanup is happening here and not hanging.
/// </summary>
[Fact]
public async Task Waehrend_des_Auslaufens_meldet_der_Stand_was_offen_ist()
public async Task While_winding_down_the_status_reports_what_is_open()
{
var offen = 2;
var koordinator = Koordinator(TimeSpan.FromSeconds(5));
koordinator.Register(new WorkSource("Agentenläufe", () => offen, () => { }));
var open = 2;
var coordinator = Coordinator(TimeSpan.FromSeconds(5));
coordinator.Register(new WorkSource("Agentenläufe", () => open, () => { }));
koordinator.Snapshot().Phase.ShouldBe(ShutdownPhase.Running);
coordinator.Snapshot().Phase.ShouldBe(ShutdownPhase.Running);
var lauf = koordinator.BeginAsync();
var run = coordinator.BeginAsync();
// As long as something is open, the state is Draining and names the number.
var stand = koordinator.Snapshot();
var stand = coordinator.Snapshot();
stand.Phase.ShouldBe(ShutdownPhase.Draining);
stand.TotalOpen.ShouldBe(2);
stand.Open.Single().Name.ShouldBe("Agentenläufe");
offen = 0;
await lauf;
open = 0;
await run;
koordinator.Snapshot().Phase.ShouldBe(ShutdownPhase.Done);
coordinator.Snapshot().Phase.ShouldBe(ShutdownPhase.Done);
}
/// <summary>
@@ -127,34 +127,34 @@ public sealed class ShutdownCoordinatorTests
/// would mean closing the door twice and waiting twice.</para>
/// </summary>
[Fact]
public async Task Ein_zweiter_Aufruf_wartet_auf_denselben_Vorgang()
public async Task A_second_call_waits_for_the_same_operation()
{
var schliessungen = 0;
var koordinator = Koordinator(TimeSpan.FromSeconds(5));
koordinator.Register(new WorkSource("Aufgaben", () => 0, () => schliessungen++));
var closings = 0;
var coordinator = Coordinator(TimeSpan.FromSeconds(5));
coordinator.Register(new WorkSource("Aufgaben", () => 0, () => closings++));
await Task.WhenAll(koordinator.BeginAsync(), koordinator.BeginAsync());
await Task.WhenAll(coordinator.BeginAsync(), coordinator.BeginAsync());
schliessungen.ShouldBe(1);
closings.ShouldBe(1);
}
/// <summary>
/// A source that stumbles while counting must not hold up the end.
/// </summary>
[Fact]
public async Task Eine_stolpernde_Quelle_haelt_das_Ende_nicht_auf()
public async Task A_stumbling_source_does_not_hold_up_the_end()
{
var koordinator = Koordinator(TimeSpan.FromSeconds(30));
var coordinator = Coordinator(TimeSpan.FromSeconds(30));
koordinator.Register(new WorkSource(
coordinator.Register(new WorkSource(
"Kaputt",
() => throw new InvalidOperationException("zählt nicht"),
() => throw new InvalidOperationException("schließt nicht")));
var begonnen = DateTimeOffset.UtcNow;
await koordinator.BeginAsync();
var started = DateTimeOffset.UtcNow;
await coordinator.BeginAsync();
(DateTimeOffset.UtcNow - begonnen).ShouldBeLessThan(TimeSpan.FromSeconds(2));
koordinator.Phase.ShouldBe(ShutdownPhase.Done);
(DateTimeOffset.UtcNow - started).ShouldBeLessThan(TimeSpan.FromSeconds(2));
coordinator.Phase.ShouldBe(ShutdownPhase.Done);
}
}