Test coverage: JsonSyncable multi-client file fan-out and malformed-file tolerance
Los mantenedores suelen responder en 4 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 58/100
Línea de trabajo
Empieza localizando las pruebas existentes de JsonSyncable y lee src/SIL.Harmony/JsonSyncable.cs en las secciones indicadas sobre la distribución de archivos, la deserialización y ClientIdForFile. Añade los cuatro casos de prueba sugeridos que cubren varios clientes, el round-tripping del contenido, líneas en blanco o truncadas y un nombre de archivo de cliente que no se puede analizar; después ejecuta la suite de pruebas relevante y verifica que todos los casos pasan.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- C#
- Estrellas
- 14
- Forks
- 4
- Merge medio
- 4 d 19 h
- PR fusionados (30 d)
- 14
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de sillsdev/harmony
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 4 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
Los mantenedores suelen responder en 4 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 4 días
-
ServerCommit no longer enforces required properties on JSON deserialization (regression rc.241 → rc.266)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug Data bug
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
Los mantenedores suelen responder en 4 días
-
enhancement
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
Los mantenedores suelen responder en 4 días
Todos los issues de sillsdev/harmony
Issues similares
-
affected/v17 area/frontend type/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
umbraco/Umbraco-CMS#24323 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
dotnet/roslynator#1859 ·
Los mantenedores suelen responder en 1 día
-
agent-ex documentation medium-priority testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
DigiBanks99/menlo#489 ·
Los mantenedores suelen responder en 1 día
-
area:jobads-cv BE P3
Dificultad 1/5 1-3 horas Aptitud para principiantes 74/100
klasolsson81/jobbliggaren#2240 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
k2-fsa/sherpa-onnx#4100 ·
Los mantenedores suelen responder en 2 días