Behebt Zaehlfehler: gestartete Instanzen wurden doppelt gezaehlt

$started++ stand an zwei Stellen: nach der Uebersprungsgruendung und nach
dem Dispatch. Im echten Lauf wurde jede Instanz zweimal gezaehlt.

Entfernt die redundante Zaehlung nach dem Dispatch und ergaenzt zwei Tests,
die die Zahlenwerte in der Abschlusszusammenfassung pruefen — diese Tests
haetten den Fehler gefangen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
feat/versandtakt
nexxo 2026-08-03 20:39:14 +02:00
parent d7d116e9a5
commit 6513ccdb00
2 changed files with 30 additions and 1 deletions

View File

@ -76,7 +76,6 @@ class ConfigureInstanceMail extends Command
AdvanceRunJob::dispatch($run->uuid);
$this->info("{$instance->uuid}: Lauf {$run->id} gestartet");
$started++;
}
foreach ($skipped as $reason => $count) {

View File

@ -104,3 +104,33 @@ it('ueberspringt eine Instanz mit laufendem Lauf und sagt es', function () {
// Kein neuer Lauf angelegt
expect(ProvisioningRun::where('pipeline', 'instance-mail')->count())->toBe(0);
});
it('zaehlt die Laeufe korrekt in der Abschlusszusammenfassung', function () {
aktiveInstanzMitHost();
aktiveInstanzMitHost(['vmid' => 102]);
aktiveInstanzMitHost(['vmid' => 103]);
// Eine Instanz ohne Host (wird uebergangen)
Instance::factory()->create(['status' => 'active', 'host_id' => null, 'vmid' => 104]);
$this->artisan('clupilot:configure-instance-mail')
// Genau 3 Laeufe, nicht 6 wegen Doppelzaehlung
->expectsOutputToContain('3 Lauf/Läufe gestartet')
->expectsOutputToContain('übersprungen (kein Host): 1')
->assertSuccessful();
});
it('zaehlt unter --dry-run richtig', function () {
aktiveInstanzMitHost();
aktiveInstanzMitHost(['vmid' => 102]);
// Eine Instanz ohne VMID (wird uebergangen)
$host = Host::factory()->active()->create(['datacenter' => 'fsn', 'node' => 'pve']);
Instance::factory()->create(['status' => 'active', 'host_id' => $host->id, 'vmid' => null]);
$this->artisan('clupilot:configure-instance-mail', ['--dry-run' => true])
// Genau 2 Instanzen im Probelauf
->expectsOutputToContain('Probelauf: 2 Instanz(en) bekämen')
->expectsOutputToContain('übersprungen (keine VMID): 1')
->assertSuccessful();
});