nx_torrent_stream_gate.nx source
↩ module page · 59 lines · 2792 B
1// nx_torrent_stream_gate.nx -- verify the stream-while-downloading logic against REAL data, with NO
2// live daemon (importing nx_torrent_daemon strips its main, exposing the pure helpers). exit 0 = pass.
3//
4// T1 d_video_extent on the operator's real 300MIUM download.meta -> the .mp4's exact (offset,length)
5// T2 d_contig_bytes computes the contiguous downloaded prefix (>0)
6// T3 d_parse_range "bytes=100-199" -> start/end exact
7// T4 d_parse_range "bytes=500-" (open-ended) -> start, end=-1
8// T5 NEG-CONTROL: a request with no Range header -> not present (0)
9
10import "nx_torrent_daemon.nx"
11import "nx_assert.nx"
12
13func main() -> i64 {
14 let dir: *u8 = "/mnt/c/Users/elder/Downloads/nishi-torrents/javdb.com_300MIUM-1369" as *u8
15
16 // ---- T1: video extent from the REAL metadata (must match the extractor: .mp4 = 3550168778 @ 175) ----
17 let metap: *u8 = d_path(dir, "/download.meta" as *u8, sys_mmap(640))
18 let meta: *u8 = sys_mmap(1048576); let msize: i64 = d_read_file(metap, meta, 1048576)
19 nx_puts_err("meta_size="); nx_puti_err(msize)
20 if msize <= 0 { return 1 }
21 let ext: *i64 = sys_mmap(16) as *i64; d_video_extent(meta, msize, ext)
22 nx_puts_err("video_offset="); nx_puti_err(ext[0])
23 nx_puts_err("video_length="); nx_puti_err(ext[1])
24 if ext[0] != 175 { return 2 }
25 if ext[1] != 3550168778 { return 3 }
26
27 // ---- T2: contiguous downloaded bytes (the playable prefix) ----
28 let contig: i64 = d_contig_bytes(dir)
29 nx_puts_err("contig_bytes="); nx_puti_err(contig)
30 if contig <= 0 { return 4 }
31
32 // ---- T3: Range parse "bytes=100-199" ----
33 let req: *u8 = "GET /torrent/stream/x HTTP/1.1\r\nRange: bytes=100-199\r\n\r\n" as *u8
34 let rng: *i64 = sys_mmap(16) as *i64
35 let has: i64 = d_parse_range(req, d_strlen(req), rng)
36 nx_puts_err("r1_has="); nx_puti_err(has)
37 nx_puts_err("r1_start="); nx_puti_err(rng[0])
38 nx_puts_err("r1_end="); nx_puti_err(rng[1])
39 if has != 1 { return 5 }
40 if rng[0] != 100 { return 6 }
41 if rng[1] != 199 { return 7 }
42
43 // ---- T4: open-ended "bytes=500-" -> start=500, end=-1 (the common <video> first request) ----
44 let req2: *u8 = "GET /x HTTP/1.1\r\nRange: bytes=500-\r\n\r\n" as *u8
45 d_parse_range(req2, d_strlen(req2), rng)
46 nx_puts_err("r2_start="); nx_puti_err(rng[0])
47 nx_puts_err("r2_end="); nx_puti_err(rng[1])
48 if rng[0] != 500 { return 8 }
49 if rng[1] != (0 - 1) { return 9 }
50
51 // ---- T5 NEG-CONTROL: no Range header -> 0 ----
52 let req3: *u8 = "GET /torrent/stream/x HTTP/1.1\r\nHost: local\r\n\r\n" as *u8
53 let h3: i64 = d_parse_range(req3, d_strlen(req3), rng)
54 nx_puts_err("r3_has="); nx_puti_err(h3)
55 if h3 != 0 { return 10 }
56
57 nx_puts_err("nx_torrent_stream_gate verdict=GREEN pass=10\n" as *u8)
58 return 0
59}