Test coverage: JsonSyncable multi-client file fan-out and malformed-file tolerance
I maintainer di solito rispondono entro 4 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 58/100
Direzione di ricerca
Inizia individuando i test esistenti di JsonSyncable e leggi src/SIL.Harmony/JsonSyncable.cs nelle sezioni indicate relative al fan-out dei file, alla deserializzazione e a ClientIdForFile. Aggiungi i quattro casi di test suggeriti, che coprono più client, il round-tripping del contenuto, righe vuote o troncate e un nome file del client non analizzabile, quindi esegui la suite di test pertinente e verifica che tutti i casi passino.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Follow-up from the test-suite review (batches merged as #92–#96). Existing JsonSyncable tests assert only file existence / line count and use a single client id, so the multi-client format behavior and error tolerance are untested.
Gaps
Per-client file fan-out — commits are grouped by ClientId into separate client_<id>.jsonl files, and GetSyncState aggregates heads across them. Every test uses one ClientId, so this is unexercised.
Malformed / blank / truncated files — empty file yields nothing, blank lines are skipped, null deserialize is skipped. A crash mid-write leaves a truncated trailing line; no test confirms it is tolerated rather than making the whole client file unreadable.
ClientIdForFile on a non-GUID filename — a stray client_*.jsonl with an unparseable id would throw from Guid.Parse inside the parallel loop; behavior is undefined by tests.
Content round-trip — no test reads a commit back and verifies ChangeEntities / HybridDateTime / Metadata survived; a field-drop regression passes today.
Suggested tests
AddRange_MultipleClients_WritesSeparateFilesAndAggregatesSyncStateAddRangeThenGetChanges_RoundTripsCommitContentReadAllCommits_SkipsBlankLinesAndTruncatedTrailingLineGetSyncState_IgnoresOrHandlesUnparseableClientFile
Why it matters
JSONL files are the on-disk sync format. Real projects have many clients (fan-out is load-bearing) and interrupted writes are expected in practice; today a serialization or truncation regression would go undetected.
- Lingua principale
- C#
- Stelle
- 14
- Fork
- 4
- Merge medio
- 5g 15h
- PR unite (30g)
- 10
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di sillsdev/harmony
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
I maintainer di solito rispondono entro 4 giorni
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
I maintainer di solito rispondono entro 4 giorni
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
I maintainer di solito rispondono entro 4 giorni
-
enhancement
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
I maintainer di solito rispondono entro 4 giorni
Tutte le issue di sillsdev/harmony
Issue simili
-
:watch: Not Triaged dotnet-target-version
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
copilot documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 2 giorni
-
untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
dotnet/dotnet-api-docs#13124 ·
I maintainer di solito rispondono entro 1 giorno
-
agentic-workflows
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 1 giorno
-
type:bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
BHoM/MidasCivil_Toolkit#441 ·