RTL-SDR IQ sample reader
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

monopam: fix fd leak in push — scope per-package switch

Git.Repository.open_repo acquires file descriptors. When 168 packages
share one Eio switch, all fds stay open until the switch exits.

Fix: wrap each per-package push in its own Eio.Switch.run.

Also adds push-stress.t: push 50 packages to catch fd leaks.

+37 -38
+37 -38
test/test_rtlsdr.ml
··· 377 377 378 378 let suites = 379 379 [ 380 - ( "iq", 381 - [ 382 - Alcotest.test_case "of_bytes roundtrip" `Quick test_of_bytes_roundtrip; 383 - Alcotest.test_case "sample_count" `Quick test_sample_count; 384 - Alcotest.test_case "read count" `Quick test_read_count; 385 - Alcotest.test_case "metadata roundtrip" `Quick test_metadata; 386 - Alcotest.test_case "IQ byte format" `Quick test_iq_byte_format; 387 - Alcotest.test_case "IQ large buffer" `Quick test_iq_large_buffer; 388 - ] ); 389 - ( "signal", 390 - [ 391 - Alcotest.test_case "generate_tone" `Quick test_generate_tone; 392 - Alcotest.test_case "generate_bpsk" `Quick test_generate_bpsk; 393 - Alcotest.test_case "tone fs/4" `Quick test_tone_fs_over_4; 394 - Alcotest.test_case "tone DC" `Quick test_tone_dc; 395 - Alcotest.test_case "tone unit magnitude" `Quick 396 - test_tone_unit_magnitude; 397 - Alcotest.test_case "tone Nyquist/2" `Quick test_tone_nyquist_half; 398 - Alcotest.test_case "BPSK bit polarity" `Quick test_bpsk_bit_polarity; 399 - Alcotest.test_case "BPSK transitions" `Quick test_bpsk_transitions; 400 - Alcotest.test_case "BPSK sps" `Quick test_bpsk_sps; 401 - ] ); 402 - ( "source", 403 - [ 404 - Alcotest.test_case "read_all matches" `Quick 405 - test_source_read_all_matches; 406 - Alcotest.test_case "sequential reads" `Quick test_sequential_reads; 407 - Alcotest.test_case "read after exhaustion" `Quick 408 - test_read_after_exhaustion; 409 - Alcotest.test_case "sample_count accuracy" `Quick 410 - test_sample_count_accuracy; 411 - ] ); 412 - ( "metadata", 413 - [ 414 - Alcotest.test_case "metadata roundtrip" `Quick test_metadata_roundtrip; 415 - Alcotest.test_case "metadata default" `Quick test_metadata_default; 416 - ] ); 417 - ] 380 + ( "iq", 381 + [ 382 + Alcotest.test_case "of_bytes roundtrip" `Quick test_of_bytes_roundtrip; 383 + Alcotest.test_case "sample_count" `Quick test_sample_count; 384 + Alcotest.test_case "read count" `Quick test_read_count; 385 + Alcotest.test_case "metadata roundtrip" `Quick test_metadata; 386 + Alcotest.test_case "IQ byte format" `Quick test_iq_byte_format; 387 + Alcotest.test_case "IQ large buffer" `Quick test_iq_large_buffer; 388 + ] ); 389 + ( "signal", 390 + [ 391 + Alcotest.test_case "generate_tone" `Quick test_generate_tone; 392 + Alcotest.test_case "generate_bpsk" `Quick test_generate_bpsk; 393 + Alcotest.test_case "tone fs/4" `Quick test_tone_fs_over_4; 394 + Alcotest.test_case "tone DC" `Quick test_tone_dc; 395 + Alcotest.test_case "tone unit magnitude" `Quick test_tone_unit_magnitude; 396 + Alcotest.test_case "tone Nyquist/2" `Quick test_tone_nyquist_half; 397 + Alcotest.test_case "BPSK bit polarity" `Quick test_bpsk_bit_polarity; 398 + Alcotest.test_case "BPSK transitions" `Quick test_bpsk_transitions; 399 + Alcotest.test_case "BPSK sps" `Quick test_bpsk_sps; 400 + ] ); 401 + ( "source", 402 + [ 403 + Alcotest.test_case "read_all matches" `Quick 404 + test_source_read_all_matches; 405 + Alcotest.test_case "sequential reads" `Quick test_sequential_reads; 406 + Alcotest.test_case "read after exhaustion" `Quick 407 + test_read_after_exhaustion; 408 + Alcotest.test_case "sample_count accuracy" `Quick 409 + test_sample_count_accuracy; 410 + ] ); 411 + ( "metadata", 412 + [ 413 + Alcotest.test_case "metadata roundtrip" `Quick test_metadata_roundtrip; 414 + Alcotest.test_case "metadata default" `Quick test_metadata_default; 415 + ] ); 416 + ]