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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.chas only 42% coverage and key functions likewrite_thread(),receive_chunk_enqueue(), andreceive_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.conly 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
Labels: testing, integration, reliability