test: review follow-up coverage for --fuzzy
CI / lint (pull_request) Failing after 37s
CI / build-and-test (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
CI / lint (pull_request) Failing after 37s
CI / build-and-test (pull_request) Skipped
CI / sanitizers (address) (pull_request) Skipped
CI / sanitizers (undefined) (pull_request) Skipped
CI / fuzz-build (pull_request) Skipped
CI / coverage (pull_request) Skipped
CI / valgrind (pull_request) Skipped
Unit (CLI): --fuzzy --no-incremental (either order) stays a valid plain-mode config -- no forced handshake, no delta implication; --fuzzy --no-delta stays covered. Integration (TestFuzzy): - worthless basis: a sibling that passes the name+size gates but shares no blocks makes the sender reply STATUS_NEXT; the whole file is consumed inside the delta handshake with byte-exact output (no protocol desync). - non-displacement: an existing exact-path destination file INSIDE the delta size bounds (same size, different content, older mtime) is used as the delta basis instead of a byte-identical similar sibling (whole-file wire cost). - asymmetric bases: basis larger than source (prefix reuse) and basis smaller than source (appended tail as literals) both reconstruct byte-exactly with a small delta. - --no-fuzzy end-to-end equals the no-flag whole-file behavior. CountingProxy closes its listener socket (fd hygiene).
This commit is contained in:
@@ -106,6 +106,7 @@ class CountingProxy:
|
||||
server_sock = socket.create_connection(("127.0.0.1", self.target_port),
|
||||
timeout=10)
|
||||
except OSError:
|
||||
self._listener.close()
|
||||
return
|
||||
c2s, s2c = [0], [0]
|
||||
a = threading.Thread(target=self._pump, args=(client_sock, server_sock, c2s))
|
||||
@@ -116,6 +117,7 @@ class CountingProxy:
|
||||
b.join()
|
||||
self.client_to_server = c2s[0]
|
||||
self.server_to_client = s2c[0]
|
||||
self._listener.close()
|
||||
|
||||
thread = threading.Thread(target=serve)
|
||||
thread.start()
|
||||
|
||||
Reference in New Issue
Block a user