Testing: missing end-to-end integration tests for delta, multiprocessing, and server pipeline #134

Closed
opened 2026-07-21 16:26:50 +02:00 by TapTap · 0 comments
Owner

Several critical features lack end-to-end integration tests:

1. Delta transfer (finding 23)

No integration test exercises the full delta pipeline: client sends file → server computes signature → client computes delta → server applies it. Only unit tests for the delta algorithm exist.

2. Server pipeline (multiprocessing)

multiprocessing.c has only 42% coverage and key functions like write_thread(), receive_chunk_enqueue(), and receive_thread() are completely uncovered. No integration test exercises the multithreaded server path.

3. Full client pipeline stress test

No stress test exercises: scanner → loader → sender (client) or receiver → writer (server) in realistic conditions. test_stress.c only tests the queue data structure.

4. Symlink transfer (finding 24)

No integration test verifies that symlinks are transferred correctly (relative, absolute, broken, within tree, outside tree).

5. Many small files

No test transfers a large number of small files (e.g., node_modules pattern) to catch edge cases in chunking, compression context reuse, and overhead.

6. Interrupted transfer

No test simulates connection drop and verifies --partial behavior.

7. IPv6 (finding 26)

No integration test uses IPv6 (::1) even though TCP transport has IPv6 support.

8. Large files (>2GB)

No test transfers files larger than 2GB to verify 64-bit offset handling, large chunk sizes.

Suggested tests

  • Delta integration: transfer file, modify, transfer with --delta --incremental, verify
  • Multiprocessing: transfer with -m, verify correct data
  • Stress: generate 10K files across deep directories, sync with -m -c -s
  • Symlinks: create various symlink types, sync with -M, verify
  • Interrupt: kill client mid-transfer, restart with --partial, verify
  • IPv6: bind server to ::1, connect client via --server-host ::1

Labels: testing, integration, reliability

Several critical features lack end-to-end integration tests: ## 1. Delta transfer (finding 23) No integration test exercises the full delta pipeline: client sends file → server computes signature → client computes delta → server applies it. Only unit tests for the delta algorithm exist. ## 2. Server pipeline (multiprocessing) `multiprocessing.c` has only 42% coverage and key functions like `write_thread()`, `receive_chunk_enqueue()`, and `receive_thread()` are completely uncovered. No integration test exercises the multithreaded server path. ## 3. Full client pipeline stress test No stress test exercises: scanner → loader → sender (client) or receiver → writer (server) in realistic conditions. `test_stress.c` only tests the queue data structure. ## 4. Symlink transfer (finding 24) No integration test verifies that symlinks are transferred correctly (relative, absolute, broken, within tree, outside tree). ## 5. Many small files No test transfers a large number of small files (e.g., node_modules pattern) to catch edge cases in chunking, compression context reuse, and overhead. ## 6. Interrupted transfer No test simulates connection drop and verifies --partial behavior. ## 7. IPv6 (finding 26) No integration test uses IPv6 (::1) even though TCP transport has IPv6 support. ## 8. Large files (>2GB) No test transfers files larger than 2GB to verify 64-bit offset handling, large chunk sizes. **Suggested tests** - Delta integration: transfer file, modify, transfer with --delta --incremental, verify - Multiprocessing: transfer with -m, verify correct data - Stress: generate 10K files across deep directories, sync with -m -c -s - Symlinks: create various symlink types, sync with -M, verify - Interrupt: kill client mid-transfer, restart with --partial, verify - IPv6: bind server to ::1, connect client via --server-host ::1 **Labels**: testing, integration, reliability
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: TapTap/FastSync#134