Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Tests that pin today's legacy network sync behavior

Aperta Adatta ai principianti
#364 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
72/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
django, python

Direzione di ricerca

Inizia con il pattern request-spy di #363 e con i test esistenti in tests/testapp/tests/integration/test_network_characterization.py. Esamina morango/utils.py:79, morango/sync/context.py e le operazioni LegacyNetwork* in morango/sync/operations.py, quindi esegui i test di caratterizzazione. Il lavoro è completato quando vengono aggiunti test di legacy push e pull che verificano i requests completi, i campi finali della sessione e l’assenza dei quattro aggiornamenti delle fasi di serializzazione o queueing.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Python
Stelle
15
Fork
23
Merge medio
1g 11h
PR unite (30g)
4

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di learningequality/morango

Tutte le issue di learningequality/morango

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.