Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Tests that pin today's legacy network sync behavior

Abierto Apto para principiantes
#364 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Refactorización
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
django, python

Línea de trabajo

Empieza con el patrón request-spy de #363 y las pruebas existentes en tests/testapp/tests/integration/test_network_characterization.py. Revisa morango/utils.py:79, morango/sync/context.py y las operaciones LegacyNetwork* en morango/sync/operations.py, y luego ejecuta las pruebas de caracterización. Se considera terminado cuando se hayan añadido pruebas de legacy push y pull que verifiquen los requests completos, los campos finales de la sesión y la ausencia de las cuatro actualizaciones de las etapas de serialización o queueing.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

DEV: backend P0 - critical TAG: tech update / debt TAG: unit tests

Overview

This task (milestone M1) extends the characterization suite to the legacy network flow. In the legacy flow, the client does not have ASYNC_OPERATIONS, and the server serializes and queues when the client creates the transfer session.

Background & Motivation

The refactors in milestones M2 to M4 move the LegacyNetwork* operations under a new base class. Older Kolibri servers still use the legacy flow. A change in this flow breaks syncs with those servers, and the async tests from #363 do not show it.

Design: spec. Plan: implementation plan, Task 3.

Description & Expected Outcomes

The tests run a push and a pull with the client capabilities reduced so that ASYNC_OPERATIONS is absent. The reduced set applies to the capabilities header and to the session context.

The tests record the HTTP requests as in #363. The expected lists show that the client creates the transfer session and sends no stage updates for serializing, queuing, dequeuing, or deserializing. The tests assert the same final state as #363.

Deliverables & Contracts

The task delivers:

  • A legacy push test and a legacy pull test in tests/testapp/tests/integration/test_network_characterization.py.
Acceptance Criteria
  • The legacy push test asserts the full request list.
  • The legacy pull test asserts the full request list.
  • Neither list contains a stage update for serializing, queuing, dequeuing, or deserializing.
  • Both tests assert the same final transfer session fields as the tests in #363.
  • Both tests pass against the current code, with no changes to production code.

Technical Pointers & Architecture

  • Target Components: morango/utils.py:79 (capabilities header), morango/sync/context.py (capabilities of the session context), morango/sync/operations.py (LegacyNetwork* operations).
  • Related Patterns: The request spy from #363.
  • Data Model & Schema Considerations: None.
  • Resilience & Failure Modes: None.

Notes & Tradeoffs

  • Dependencies: Blocked by: #363 (Tests that pin today's async network push and pull behavior). Blocks: #365, #369.
  • Testing Requirements: This task completes the characterization suite. The refactor tasks in milestones M2 to M4 must pass the suite without edits.
  • Tradeoffs & Alternatives Considered: The tests reduce the client capabilities, and the server keeps its full set. This matches a new client that has async operations turned off with MORANGO_DISALLOW_ASYNC_OPERATIONS.

Metadata

  • Complexity: Low
  • Target Branch: release-v0.9.x

AI Usage

Drafted with Claude (Claude Code) from the approved design spec and implementation plan. The author reviewed the requirements, and the code references were checked against the release-v0.9.x codebase.

Lenguaje dominante
Python
Estrellas
15
Forks
23
Merge medio
1 d 11 h
PR fusionados (30 d)
4

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de learningequality/morango

Todos los issues de learningequality/morango

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.