Artifact 1a6959f1b09594d7342752cdde97ac2cc1a73102:
- File tests/client-tests.fs — part of check-in [ad3b70a512] at 2016-05-01 21:41:59 on branch trunk — Move tests (need to make them run again) (user: bernd size: 6510)
0000: 5c 20 54 65 73 74 20 6c 69 62 20 63 6c 69 65 6e \ Test lib clien 0010: 74 73 0a 0a 72 65 71 75 69 72 65 20 2e 2e 2f 6e ts..require ../n 0020: 65 74 32 6f 2e 66 73 0a 0a 55 56 61 6c 75 65 20 et2o.fs..UValue 0030: 74 65 73 74 23 20 20 30 20 74 6f 20 74 65 73 74 test# 0 to test 0040: 23 0a 31 20 56 61 6c 75 65 20 74 6f 74 61 6c 2d #.1 Value total- 0050: 74 65 73 74 73 0a 0a 3a 20 2e 74 65 73 74 23 20 tests..: .test# 0060: 28 20 2d 2d 20 29 20 74 65 73 74 23 20 30 3e 3d ( -- ) test# 0>= 0070: 20 49 46 20 20 74 65 73 74 23 20 30 20 2e 72 20 IF test# 0 .r 0080: 20 54 48 45 4e 20 3b 0a 0a 3a 20 3e 74 69 6d 69 THEN ;..: >timi 0090: 6e 67 20 28 20 2d 2d 20 29 0a 20 20 20 20 5b 3a ng ( -- ). [: 00a0: 20 2e 22 20 74 69 6d 69 6e 67 22 20 2e 74 65 73 ." timing" .tes 00b0: 74 23 20 3b 5d 20 24 74 6d 70 20 77 2f 6f 20 63 t# ;] $tmp w/o c 00c0: 72 65 61 74 65 2d 66 69 6c 65 20 74 68 72 6f 77 reate-file throw 00d0: 20 3e 72 0a 20 20 20 20 5b 27 5d 20 2e 72 65 63 >r. ['] .rec 00e0: 2d 74 69 6d 69 6e 67 20 72 40 20 6f 75 74 66 69 -timing r@ outfi 00f0: 6c 65 2d 65 78 65 63 75 74 65 0a 20 20 20 20 72 le-execute. r 0100: 3e 20 63 6c 6f 73 65 2d 66 69 6c 65 20 74 68 72 > close-file thr 0110: 6f 77 20 3b 0a 0a 3a 20 3e 63 61 63 68 65 20 28 ow ;..: >cache ( 0120: 20 61 64 64 72 20 75 20 2d 2d 20 61 64 64 72 27 addr u -- addr' 0130: 20 75 27 20 29 20 5b 3a 20 2e 22 20 2e 63 61 63 u' ) [: ." .cac 0140: 68 65 22 20 2e 74 65 73 74 23 20 2e 22 20 2f 22 he" .test# ." /" 0150: 20 74 79 70 65 20 3b 5d 20 24 74 6d 70 20 3b 0a type ;] $tmp ;. 0160: 0a 3a 20 69 6e 69 74 2d 63 61 63 68 65 27 20 28 .: init-cache' ( 0170: 20 2d 2d 20 29 0a 20 20 20 20 22 22 20 3e 63 61 -- ). "" >ca 0180: 63 68 65 20 31 2d 20 66 69 6c 65 2d 73 74 61 74 che 1- file-stat 0190: 75 73 20 6e 69 70 20 6e 6f 2d 66 69 6c 65 23 20 us nip no-file# 01a0: 3d 20 49 46 0a 09 22 22 20 3e 63 61 63 68 65 20 = IF.."" >cache 01b0: 31 2d 20 24 31 46 46 20 3d 6d 6b 64 69 72 20 74 1- $1FF =mkdir t 01c0: 68 72 6f 77 0a 20 20 20 20 54 48 45 4e 20 3b 0a hrow. THEN ;. 01d0: 0a 3a 20 63 3a 61 64 64 2d 6d 65 20 28 20 2d 2d .: c:add-me ( -- 01e0: 20 29 20 20 2b 61 64 64 6d 65 0a 20 20 20 20 6e ) +addme. n 01f0: 65 74 32 6f 2d 63 6f 64 65 20 20 20 65 78 70 65 et2o-code expe 0200: 63 74 2d 72 65 70 6c 79 20 67 65 74 2d 69 70 20 ct-reply get-ip 0210: 63 6f 6f 6b 69 65 2b 72 65 71 75 65 73 74 20 20 cookie+request 0220: 65 6e 64 2d 63 6f 64 65 7c 20 2d 73 65 74 69 70 end-code| -setip 0230: 20 3b 0a 0a 3a 20 63 3a 61 64 64 2d 74 61 67 20 ;..: c:add-tag 0240: 28 20 2d 2d 20 29 20 2b 61 64 64 6d 65 0a 20 20 ( -- ) +addme. 0250: 20 20 6e 65 74 32 6f 2d 63 6f 64 65 0a 20 20 20 net2o-code. 0260: 20 20 20 65 78 70 65 63 74 2d 72 65 70 6c 79 0a expect-reply. 0270: 20 20 20 20 20 20 6c 6f 67 20 73 22 20 44 48 54 log s" DHT 0280: 20 74 65 73 74 22 20 24 2c 20 74 79 70 65 20 63 test" $, type c 0290: 72 20 65 6e 64 77 69 74 68 20 67 65 74 2d 69 70 r endwith get-ip 02a0: 0a 20 20 20 20 20 20 70 6b 63 20 6b 65 79 73 69 . pkc keysi 02b0: 7a 65 20 32 2a 20 24 2c 20 64 68 74 2d 69 64 0a ze 2* $, dht-id. 02c0: 20 20 20 20 20 20 66 6f 72 65 76 65 72 20 22 74 forever "t 02d0: 65 73 74 3a 74 61 67 22 20 70 6b 63 20 6b 65 79 est:tag" pkc key 02e0: 73 69 7a 65 20 32 2a 20 67 65 6e 2d 74 61 67 2d size 2* gen-tag- 02f0: 64 65 6c 20 24 2c 20 64 68 74 2d 74 61 67 73 2d del $, dht-tags- 0300: 0a 20 20 20 20 20 20 66 6f 72 65 76 65 72 20 22 . forever " 0310: 74 65 73 74 3a 74 61 67 22 20 70 6b 63 20 6b 65 test:tag" pkc ke 0320: 79 73 69 7a 65 20 32 2a 20 67 65 6e 2d 74 61 67 ysize 2* gen-tag 0330: 20 24 2c 20 64 68 74 2d 74 61 67 73 2b 0a 20 20 $, dht-tags+. 0340: 20 20 20 20 65 6e 64 77 69 74 68 20 65 6e 64 2d endwith end- 0350: 63 6f 64 65 7c 20 2d 73 65 74 69 70 20 3b 0a 0a code| -setip ;.. 0360: 3a 20 63 3a 66 65 74 63 68 2d 74 61 67 20 28 20 : c:fetch-tag ( 0370: 6e 69 63 6b 20 75 20 2d 2d 20 29 0a 20 20 20 20 nick u -- ). 0380: 6e 65 74 32 6f 2d 63 6f 64 65 0a 20 20 20 20 20 net2o-code. 0390: 20 65 78 70 65 63 74 2d 72 65 70 6c 79 0a 20 20 expect-reply. 03a0: 20 20 20 20 6e 69 63 6b 2d 6b 65 79 20 2e 6b 65 nick-key .ke 03b0: 2d 70 6b 20 24 40 20 24 2c 20 64 68 74 2d 69 64 -pk $@ $, dht-id 03c0: 20 64 68 74 2d 68 6f 73 74 3f 20 64 68 74 2d 74 dht-host? dht-t 03d0: 61 67 73 3f 0a 20 20 20 20 20 20 65 6e 64 77 69 ags?. endwi 03e0: 74 68 20 63 6f 6f 6b 69 65 2b 72 65 71 75 65 73 th cookie+reques 03f0: 74 0a 20 20 20 20 65 6e 64 2d 63 6f 64 65 7c 20 t. end-code| 0400: 3b 0a 0a 3a 20 63 3a 66 65 74 63 68 2d 68 6f 73 ;..: c:fetch-hos 0410: 74 20 28 20 6e 69 63 6b 20 75 20 2d 2d 20 29 0a t ( nick u -- ). 0420: 20 20 20 20 6e 65 74 32 6f 2d 63 6f 64 65 0a 20 net2o-code. 0430: 20 20 20 20 20 65 78 70 65 63 74 2d 72 65 70 6c expect-repl 0440: 79 20 20 66 65 74 63 68 2d 68 6f 73 74 2c 0a 20 y fetch-host,. 0450: 20 20 20 20 20 63 6f 6f 6b 69 65 2b 72 65 71 75 cookie+requ 0460: 65 73 74 0a 20 20 20 20 65 6e 64 2d 63 6f 64 65 est. end-code 0470: 7c 20 3b 0a 0a 5c 20 3a 20 63 3a 66 65 74 63 68 | ;..\ : c:fetch 0480: 2d 74 61 67 73 20 28 20 2d 2d 20 29 0a 5c 20 20 -tags ( -- ).\ 0490: 20 20 20 6e 65 74 32 6f 2d 63 6f 64 65 0a 5c 20 net2o-code.\ 04a0: 20 20 20 20 20 20 65 78 70 65 63 74 2d 72 65 70 expect-rep 04b0: 6c 79 0a 5c 20 20 20 20 20 20 20 30 20 75 6c 69 ly.\ 0 uli 04c0: 74 2c 20 64 68 74 2d 6f 70 65 6e 20 20 70 6b 63 t, dht-open pkc 04d0: 20 6b 65 79 73 69 7a 65 20 32 2a 20 24 2c 20 24 keysize 2* $, $ 04e0: 46 45 20 75 6c 69 74 2c 20 30 20 75 6c 69 74 2c FE ulit, 0 ulit, 04f0: 20 64 68 74 2d 71 75 65 72 79 0a 5c 20 20 20 20 dht-query.\ 0500: 20 20 20 6e 32 6f 3a 64 6f 6e 65 0a 5c 20 20 20 n2o:done.\ 0510: 20 20 65 6e 64 2d 63 6f 64 65 7c 20 3b 0a 0a 56 end-code| ;..V 0520: 61 72 69 61 62 6c 65 20 63 6f 6e 6e 65 63 74 2d ariable connect- 0530: 6e 69 63 6b 20 20 22 74 65 73 74 22 20 63 6f 6e nick "test" con 0540: 6e 65 63 74 2d 6e 69 63 6b 20 24 21 0a 0a 3a 20 nect-nick $!..: 0550: 63 3a 64 68 74 20 28 20 6e 20 2d 2d 20 29 20 20 c:dht ( n -- ) 0560: 24 38 20 24 38 20 63 6f 6e 6e 65 63 74 2d 6e 69 $8 $8 connect-ni 0570: 63 6b 20 24 40 20 6e 69 63 6b 3e 70 6b 20 69 6e ck $@ nick>pk in 0580: 73 2d 69 70 20 70 6b 3a 63 6f 6e 6e 65 63 74 20 s-ip pk:connect 0590: 30 20 3f 44 4f 0a 09 63 3a 61 64 64 2d 74 61 67 0 ?DO..c:add-tag 05a0: 20 22 61 6e 6f 6e 79 6d 6f 75 73 22 20 63 3a 66 "anonymous" c:f 05b0: 65 74 63 68 2d 74 61 67 20 5c 20 63 3a 66 65 74 etch-tag \ c:fet 05c0: 63 68 2d 74 61 67 73 0a 20 20 20 20 4c 4f 4f 50 ch-tags. LOOP 05d0: 20 20 64 69 73 63 6f 6e 6e 65 63 74 2d 6d 65 20 disconnect-me 05e0: 3b 0a 0a 3a 20 73 74 64 2d 62 6c 6f 63 6b 20 28 ;..: std-block ( 05f0: 20 2d 2d 20 29 20 24 31 30 20 62 6c 6f 63 6b 73 -- ) $10 blocks 0600: 69 7a 65 21 20 24 41 20 62 6c 6f 63 6b 61 6c 69 ize! $A blockali 0610: 67 6e 21 20 3b 0a 0a 3a 20 63 3a 64 6f 77 6e 6c gn! ;..: c:downl 0620: 6f 61 64 31 20 28 20 2d 2d 20 29 0a 20 20 20 20 oad1 ( -- ). 0630: 5b 3a 20 2e 74 69 6d 65 20 2e 22 20 44 6f 77 6e [: .time ." Down 0640: 6c 6f 61 64 20 74 65 73 74 3a 20 31 20 74 65 78 load test: 1 tex 0650: 74 20 66 69 6c 65 20 61 6e 64 20 32 20 70 68 6f t file and 2 pho 0660: 74 6f 73 22 20 63 72 20 3b 5d 20 24 65 72 72 0a tos" cr ;] $err. 0670: 20 20 20 20 6e 65 74 32 6f 2d 63 6f 64 65 0a 20 net2o-code. 0680: 20 20 20 20 20 65 78 70 65 63 74 2d 72 65 70 6c expect-repl 0690: 79 0a 20 20 20 20 20 20 6c 6f 67 20 21 74 69 6d y. log !tim 06a0: 65 20 2e 74 69 6d 65 20 73 22 20 44 6f 77 6e 6c e .time s" Downl 06b0: 6f 61 64 20 74 65 73 74 20 22 20 24 2c 20 74 79 oad test " $, ty 06c0: 70 65 20 31 20 75 6c 69 74 2c 20 2e 20 70 69 20 pe 1 ulit, . pi 06d0: 66 6c 6f 61 74 2c 20 66 2e 20 63 72 20 65 6e 64 float, f. cr end 06e0: 77 69 74 68 0a 20 20 20 20 20 20 67 65 74 2d 69 with. get-i 06f0: 70 0a 20 20 20 20 20 20 73 74 64 2d 62 6c 6f 63 p. std-bloc 0700: 6b 20 73 74 61 74 28 20 72 65 71 75 65 73 74 2d k stat( request- 0710: 73 74 61 74 73 20 29 0a 20 20 20 20 20 20 22 6e stats ). "n 0720: 65 74 32 6f 2e 66 73 22 20 22 6e 65 74 32 6f 2e et2o.fs" "net2o. 0730: 66 73 22 20 3e 63 61 63 68 65 20 6e 32 6f 3a 63 fs" >cache n2o:c 0740: 6f 70 79 0a 20 20 20 20 20 20 22 64 61 74 61 2f opy. "data/ 0750: 32 30 31 31 2d 30 35 2d 31 33 5f 31 31 2d 32 36 2011-05-13_11-26 0760: 2d 35 37 2d 73 6d 61 6c 6c 2e 6a 70 67 22 20 22 -57-small.jpg" " 0770: 70 68 6f 74 6f 30 30 30 73 2e 6a 70 67 22 20 3e photo000s.jpg" > 0780: 63 61 63 68 65 20 6e 32 6f 3a 63 6f 70 79 0a 20 cache n2o:copy. 0790: 20 20 20 20 20 22 64 61 74 61 2f 32 30 31 31 2d "data/2011- 07a0: 30 35 2d 32 30 5f 31 37 2d 30 31 2d 31 32 2d 73 05-20_17-01-12-s 07b0: 6d 61 6c 6c 2e 6a 70 67 22 20 22 70 68 6f 74 6f mall.jpg" "photo 07c0: 30 30 31 73 2e 6a 70 67 22 20 3e 63 61 63 68 65 001s.jpg" >cache 07d0: 20 6e 32 6f 3a 63 6f 70 79 0a 20 20 20 20 20 20 n2o:copy. 07e0: 6e 32 6f 3a 64 6f 6e 65 20 70 75 73 68 27 20 6c n2o:done push' l 07f0: 6f 67 20 30 20 75 6c 69 74 2c 20 77 6f 72 64 73 og 0 ulit, words 0800: 20 70 75 73 68 27 20 63 72 20 70 75 73 68 27 20 push' cr push' 0810: 65 6e 64 77 69 74 68 0a 20 20 20 20 65 6e 64 2d endwith. end- 0820: 63 6f 64 65 7c 20 6e 32 6f 3a 63 6c 6f 73 65 2d code| n2o:close- 0830: 61 6c 6c 20 5b 27 5d 20 2e 74 69 6d 65 20 24 65 all ['] .time $e 0840: 72 72 20 3b 0a 0a 3a 20 63 3a 64 6f 77 6e 6c 6f rr ;..: c:downlo 0850: 61 64 32 20 28 20 2d 2d 20 29 0a 20 20 20 20 5b ad2 ( -- ). [ 0860: 3a 20 2e 22 20 44 6f 77 6e 6c 6f 61 64 20 74 65 : ." Download te 0870: 73 74 20 32 3a 20 37 20 6d 65 64 69 75 6d 20 70 st 2: 7 medium p 0880: 68 6f 74 6f 73 22 20 63 72 20 3b 5d 20 24 65 72 hotos" cr ;] $er 0890: 72 0a 20 20 20 20 6e 65 74 32 6f 2d 63 6f 64 65 r. net2o-code 08a0: 0a 20 20 20 20 20 20 65 78 70 65 63 74 2d 72 65 . expect-re 08b0: 70 6c 79 20 63 6c 6f 73 65 2d 61 6c 6c 20 5c 20 ply close-all \ 08c0: 72 65 77 69 6e 64 2d 74 6f 74 61 6c 0a 20 20 20 rewind-total. 08d0: 20 20 20 6c 6f 67 20 2e 74 69 6d 65 20 73 22 20 log .time s" 08e0: 44 6f 77 6e 6c 6f 61 64 20 74 65 73 74 20 32 22 Download test 2" 08f0: 20 24 2c 20 74 79 70 65 20 63 72 20 65 6e 64 77 $, type cr endw 0900: 69 74 68 0a 20 20 20 20 20 20 73 74 64 2d 62 6c ith. std-bl 0910: 6f 63 6b 20 73 74 61 74 28 20 72 65 71 75 65 73 ock stat( reques 0920: 74 2d 73 74 61 74 73 20 29 0a 20 20 20 20 20 20 t-stats ). 0930: 22 64 61 74 61 2f 32 30 31 31 2d 30 36 2d 30 32 "data/2011-06-02 0940: 5f 31 35 2d 30 32 2d 33 38 2d 73 6d 61 6c 6c 2e _15-02-38-small. 0950: 6a 70 67 22 20 22 70 68 6f 74 6f 30 30 32 73 2e jpg" "photo002s. 0960: 6a 70 67 22 20 3e 63 61 63 68 65 20 6e 32 6f 3a jpg" >cache n2o: 0970: 63 6f 70 79 0a 20 20 20 20 20 20 22 64 61 74 61 copy. "data 0980: 2f 32 30 31 31 2d 30 36 2d 30 33 5f 31 30 2d 32 /2011-06-03_10-2 0990: 36 2d 34 39 2d 73 6d 61 6c 6c 2e 6a 70 67 22 20 6-49-small.jpg" 09a0: 22 70 68 6f 74 6f 30 30 33 73 2e 6a 70 67 22 20 "photo003s.jpg" 09b0: 3e 63 61 63 68 65 20 6e 32 6f 3a 63 6f 70 79 0a >cache n2o:copy. 09c0: 20 20 20 20 20 20 22 64 61 74 61 2f 32 30 31 31 "data/2011 09d0: 2d 30 36 2d 31 35 5f 31 32 2d 32 37 2d 30 33 2d -06-15_12-27-03- 09e0: 73 6d 61 6c 6c 2e 6a 70 67 22 20 22 70 68 6f 74 small.jpg" "phot 09f0: 6f 30 30 34 73 2e 6a 70 67 22 20 3e 63 61 63 68 o004s.jpg" >cach 0a00: 65 20 6e 32 6f 3a 63 6f 70 79 0a 20 20 20 20 20 e n2o:copy. 0a10: 20 22 64 61 74 61 2f 32 30 31 31 2d 30 36 2d 32 "data/2011-06-2 0a20: 34 5f 31 31 2d 32 36 2d 33 36 2d 73 6d 61 6c 6c 4_11-26-36-small 0a30: 2e 6a 70 67 22 20 22 70 68 6f 74 6f 30 30 35 73 .jpg" "photo005s 0a40: 2e 6a 70 67 22 20 3e 63 61 63 68 65 20 6e 32 6f .jpg" >cache n2o 0a50: 3a 63 6f 70 79 0a 20 20 20 20 20 20 22 64 61 74 :copy. "dat 0a60: 61 2f 32 30 31 31 2d 30 36 2d 32 37 5f 31 39 2d a/2011-06-27_19- 0a70: 33 33 2d 30 34 2d 73 6d 61 6c 6c 2e 6a 70 67 22 33-04-small.jpg" 0a80: 20 22 70 68 6f 74 6f 30 30 36 73 2e 6a 70 67 22 "photo006s.jpg" 0a90: 20 3e 63 61 63 68 65 20 6e 32 6f 3a 63 6f 70 79 >cache n2o:copy 0aa0: 0a 20 20 20 20 20 20 22 64 61 74 61 2f 32 30 31 . "data/201 0ab0: 31 2d 30 36 2d 32 37 5f 31 39 2d 35 35 2d 34 38 1-06-27_19-55-48 0ac0: 2d 73 6d 61 6c 6c 2e 6a 70 67 22 20 22 70 68 6f -small.jpg" "pho 0ad0: 74 6f 30 30 37 73 2e 6a 70 67 22 20 3e 63 61 63 to007s.jpg" >cac 0ae0: 68 65 20 6e 32 6f 3a 63 6f 70 79 0a 20 20 20 20 he n2o:copy. 0af0: 20 20 22 64 61 74 61 2f 32 30 31 31 2d 30 36 2d "data/2011-06- 0b00: 32 38 5f 30 36 2d 35 34 2d 30 39 2d 73 6d 61 6c 28_06-54-09-smal 0b10: 6c 2e 6a 70 67 22 20 22 70 68 6f 74 6f 30 30 38 l.jpg" "photo008 0b20: 73 2e 6a 70 67 22 20 3e 63 61 63 68 65 20 6e 32 s.jpg" >cache n2 0b30: 6f 3a 63 6f 70 79 0a 20 20 20 20 20 20 6e 32 6f o:copy. n2o 0b40: 3a 64 6f 6e 65 20 70 75 73 68 27 20 6c 6f 67 20 :done push' log 0b50: 6c 6f 67 20 24 32 30 20 75 6c 69 74 2c 20 77 6f log $20 ulit, wo 0b60: 72 64 73 20 70 75 73 68 27 20 63 72 20 65 6e 64 rds push' cr end 0b70: 77 69 74 68 0a 20 20 20 20 65 6e 64 2d 63 6f 64 with. end-cod 0b80: 65 7c 20 6e 32 6f 3a 63 6c 6f 73 65 2d 61 6c 6c e| n2o:close-all 0b90: 20 5b 27 5d 20 2e 74 69 6d 65 20 24 65 72 72 20 ['] .time $err 0ba0: 3b 0a 0a 3a 20 63 3a 64 6f 77 6e 6c 6f 61 64 33 ;..: c:download3 0bb0: 20 28 20 2d 2d 20 29 0a 20 20 20 20 5b 3a 20 2e ( -- ). [: . 0bc0: 22 20 44 6f 77 6e 6c 6f 61 64 20 74 65 73 74 20 " Download test 0bd0: 33 3a 20 32 20 62 69 67 20 70 68 6f 74 6f 73 22 3: 2 big photos" 0be0: 20 63 72 20 3b 5d 20 24 65 72 72 0a 20 20 20 20 cr ;] $err. 0bf0: 6e 65 74 32 6f 2d 63 6f 64 65 0a 20 20 20 20 20 net2o-code. 0c00: 20 65 78 70 65 63 74 2d 72 65 70 6c 79 20 63 6c expect-reply cl 0c10: 6f 73 65 2d 61 6c 6c 20 5c 20 72 65 77 69 6e 64 ose-all \ rewind 0c20: 2d 74 6f 74 61 6c 0a 20 20 20 20 20 20 6c 6f 67 -total. log 0c30: 20 2e 74 69 6d 65 20 73 22 20 44 6f 77 6e 6c 6f .time s" Downlo 0c40: 61 64 20 74 65 73 74 20 33 22 20 24 2c 20 74 79 ad test 3" $, ty 0c50: 70 65 20 63 72 20 65 6e 64 77 69 74 68 0a 20 20 pe cr endwith. 0c60: 20 20 20 20 73 74 64 2d 62 6c 6f 63 6b 20 73 74 std-block st 0c70: 61 74 28 20 72 65 71 75 65 73 74 2d 73 74 61 74 at( request-stat 0c80: 73 20 29 0a 20 20 20 20 20 20 22 64 61 74 61 2f s ). "data/ 0c90: 32 30 31 31 2d 30 35 2d 31 33 5f 31 31 2d 32 36 2011-05-13_11-26 0ca0: 2d 35 37 2e 6a 70 67 22 20 22 70 68 6f 74 6f 30 -57.jpg" "photo0 0cb0: 30 30 2e 6a 70 67 22 20 3e 63 61 63 68 65 20 6e 00.jpg" >cache n 0cc0: 32 6f 3a 63 6f 70 79 0a 20 20 20 20 20 20 22 64 2o:copy. "d 0cd0: 61 74 61 2f 32 30 31 31 2d 30 35 2d 32 30 5f 31 ata/2011-05-20_1 0ce0: 37 2d 30 31 2d 31 32 2e 6a 70 67 22 20 22 70 68 7-01-12.jpg" "ph 0cf0: 6f 74 6f 30 30 31 2e 6a 70 67 22 20 3e 63 61 63 oto001.jpg" >cac 0d00: 68 65 20 6e 32 6f 3a 63 6f 70 79 0a 20 20 20 20 he n2o:copy. 0d10: 20 20 6e 32 6f 3a 64 6f 6e 65 20 30 20 75 6c 69 n2o:done 0 uli 0d20: 74 2c 20 66 69 6c 65 2d 69 64 0a 20 20 20 20 20 t, file-id. 0d30: 20 70 75 73 68 27 20 65 6e 64 77 69 74 68 20 70 push' endwith p 0d40: 75 73 68 27 20 6c 6f 67 20 24 32 30 20 75 6c 69 ush' log $20 uli 0d50: 74 2c 20 77 6f 72 64 73 20 70 75 73 68 27 20 63 t, words push' c 0d60: 72 20 65 6e 64 77 69 74 68 0a 20 20 20 20 65 6e r endwith. en 0d70: 64 2d 63 6f 64 65 7c 20 6e 32 6f 3a 63 6c 6f 73 d-code| n2o:clos 0d80: 65 2d 61 6c 6c 20 5b 27 5d 20 2e 74 69 6d 65 20 e-all ['] .time 0d90: 24 65 72 72 20 3b 0a 0a 3a 20 63 3a 64 6f 77 6e $err ;..: c:down 0da0: 6c 6f 61 64 34 20 28 20 2d 2d 20 29 0a 20 20 20 load4 ( -- ). 0db0: 20 5b 3a 20 2e 22 20 44 6f 77 6e 6c 6f 61 64 20 [: ." Download 0dc0: 74 65 73 74 20 34 3a 20 37 20 62 69 67 20 70 68 test 4: 7 big ph 0dd0: 6f 74 6f 73 2c 20 70 61 72 74 69 61 6c 20 66 69 otos, partial fi 0de0: 6c 65 73 22 20 63 72 20 3b 5d 20 24 65 72 72 0a les" cr ;] $err. 0df0: 20 20 20 20 6e 65 74 32 6f 2d 63 6f 64 65 0a 20 net2o-code. 0e00: 20 20 20 20 20 65 78 70 65 63 74 2d 72 65 70 6c expect-repl 0e10: 79 20 63 6c 6f 73 65 2d 61 6c 6c 20 5c 20 72 65 y close-all \ re 0e20: 77 69 6e 64 2d 74 6f 74 61 6c 0a 20 20 20 20 20 wind-total. 0e30: 20 6c 6f 67 20 2e 74 69 6d 65 20 73 22 20 44 6f log .time s" Do 0e40: 77 6e 6c 6f 61 64 20 74 65 73 74 20 34 22 20 24 wnload test 4" $ 0e50: 2c 20 74 79 70 65 20 63 72 20 65 6e 64 77 69 74 , type cr endwit 0e60: 68 0a 20 20 20 20 20 20 73 74 64 2d 62 6c 6f 63 h. std-bloc 0e70: 6b 20 73 74 61 74 28 20 72 65 71 75 65 73 74 2d k stat( request- 0e80: 73 74 61 74 73 20 29 0a 20 20 20 20 20 20 22 64 stats ). "d 0e90: 61 74 61 2f 32 30 31 31 2d 30 36 2d 30 32 5f 31 ata/2011-06-02_1 0ea0: 35 2d 30 32 2d 33 38 2e 6a 70 67 22 20 22 70 68 5-02-38.jpg" "ph 0eb0: 6f 74 6f 30 30 32 2e 6a 70 67 22 20 3e 63 61 63 oto002.jpg" >cac 0ec0: 68 65 20 6e 32 6f 3a 63 6f 70 79 0a 20 20 20 20 he n2o:copy. 0ed0: 20 20 22 64 61 74 61 2f 32 30 31 31 2d 30 36 2d "data/2011-06- 0ee0: 30 33 5f 31 30 2d 32 36 2d 34 39 2e 6a 70 67 22 03_10-26-49.jpg" 0ef0: 20 22 70 68 6f 74 6f 30 30 33 2e 6a 70 67 22 20 "photo003.jpg" 0f00: 3e 63 61 63 68 65 20 6e 32 6f 3a 63 6f 70 79 0a >cache n2o:copy. 0f10: 20 20 20 20 20 20 22 64 61 74 61 2f 32 30 31 31 "data/2011 0f20: 2d 30 36 2d 31 35 5f 31 32 2d 32 37 2d 30 33 2e -06-15_12-27-03. 0f30: 6a 70 67 22 20 22 70 68 6f 74 6f 30 30 34 2e 6a jpg" "photo004.j 0f40: 70 67 22 20 3e 63 61 63 68 65 20 6e 32 6f 3a 63 pg" >cache n2o:c 0f50: 6f 70 79 0a 20 20 20 20 20 20 22 64 61 74 61 2f opy. "data/ 0f60: 32 30 31 31 2d 30 36 2d 32 34 5f 31 31 2d 32 36 2011-06-24_11-26 0f70: 2d 33 36 2e 6a 70 67 22 20 22 70 68 6f 74 6f 30 -36.jpg" "photo0 0f80: 30 35 2e 6a 70 67 22 20 3e 63 61 63 68 65 20 6e 05.jpg" >cache n 0f90: 32 6f 3a 63 6f 70 79 0a 20 20 20 20 20 20 22 64 2o:copy. "d 0fa0: 61 74 61 2f 32 30 31 31 2d 30 36 2d 32 37 5f 31 ata/2011-06-27_1 0fb0: 39 2d 33 33 2d 30 34 2e 6a 70 67 22 20 22 70 68 9-33-04.jpg" "ph 0fc0: 6f 74 6f 30 30 36 2e 6a 70 67 22 20 3e 63 61 63 oto006.jpg" >cac 0fd0: 68 65 20 6e 32 6f 3a 63 6f 70 79 0a 20 20 20 20 he n2o:copy. 0fe0: 20 20 22 64 61 74 61 2f 32 30 31 31 2d 30 36 2d "data/2011-06- 0ff0: 32 37 5f 31 39 2d 35 35 2d 34 38 2e 6a 70 67 22 27_19-55-48.jpg" 1000: 20 22 70 68 6f 74 6f 30 30 37 2e 6a 70 67 22 20 "photo007.jpg" 1010: 3e 63 61 63 68 65 20 6e 32 6f 3a 63 6f 70 79 0a >cache n2o:copy. 1020: 20 20 20 20 20 20 22 64 61 74 61 2f 32 30 31 31 "data/2011 1030: 2d 30 36 2d 32 38 5f 30 36 2d 35 34 2d 30 39 2e -06-28_06-54-09. 1040: 6a 70 67 22 20 22 70 68 6f 74 6f 30 30 38 2e 6a jpg" "photo008.j 1050: 70 67 22 20 3e 63 61 63 68 65 20 6e 32 6f 3a 63 pg" >cache n2o:c 1060: 6f 70 79 0a 20 20 20 20 20 20 24 31 30 30 30 30 opy. $10000 1070: 2e 20 30 20 6c 69 6d 69 74 21 0a 20 20 20 20 20 . 0 limit!. 1080: 20 24 32 30 30 30 30 2e 20 31 20 6c 69 6d 69 74 $20000. 1 limit 1090: 21 0a 20 20 20 20 20 20 24 33 30 30 30 30 2e 20 !. $30000. 10a0: 32 20 6c 69 6d 69 74 21 0a 20 20 20 20 20 20 24 2 limit!. $ 10b0: 34 30 30 30 30 2e 20 33 20 6c 69 6d 69 74 21 0a 40000. 3 limit!. 10c0: 20 20 20 20 20 20 24 35 30 30 30 30 2e 20 34 20 $50000. 4 10d0: 6c 69 6d 69 74 21 0a 20 20 20 20 20 20 24 36 30 limit!. $60 10e0: 30 30 30 2e 20 35 20 6c 69 6d 69 74 21 0a 20 20 000. 5 limit!. 10f0: 20 20 20 20 24 37 30 30 30 30 2e 20 36 20 6c 69 $70000. 6 li 1100: 6d 69 74 21 0a 20 20 20 20 20 20 6e 32 6f 3a 64 mit!. n2o:d 1110: 6f 6e 65 20 22 78 78 78 78 78 78 78 78 78 78 78 one "xxxxxxxxxxx 1120: 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 xxxxxxxxxxxxxxxx 1130: 78 78 78 78 78 22 20 24 2c 20 64 68 74 2d 69 64 xxxxx" $, dht-id 1140: 0a 20 20 20 20 20 20 70 75 73 68 27 20 65 6e 64 . push' end 1150: 77 69 74 68 20 70 75 73 68 27 20 6c 6f 67 20 24 with push' log $ 1160: 32 30 20 75 6c 69 74 2c 20 77 6f 72 64 73 20 70 20 ulit, words p 1170: 75 73 68 27 20 63 72 20 65 6e 64 77 69 74 68 0a ush' cr endwith. 1180: 20 20 20 20 65 6e 64 2d 63 6f 64 65 7c 20 5b 27 end-code| [' 1190: 5d 20 2e 74 69 6d 65 20 24 65 72 72 20 3b 0a 0a ] .time $err ;.. 11a0: 3a 20 63 3a 64 6f 77 6e 6c 6f 61 64 34 61 20 28 : c:download4a ( 11b0: 20 2d 2d 20 29 0a 20 20 20 20 5b 3a 20 2e 22 20 -- ). [: ." 11c0: 44 6f 77 6e 6c 6f 61 64 20 74 65 73 74 20 34 61 Download test 4a 11d0: 3a 20 37 20 62 69 67 20 70 68 6f 74 6f 73 2c 20 : 7 big photos, 11e0: 72 65 73 74 22 20 63 72 20 3b 5d 20 24 65 72 72 rest" cr ;] $err 11f0: 0a 20 20 20 20 6e 65 74 32 6f 2d 63 6f 64 65 0a . net2o-code. 1200: 20 20 20 20 20 20 65 78 70 65 63 74 2d 72 65 70 expect-rep 1210: 6c 79 0a 20 20 20 20 20 20 6c 6f 67 20 2e 74 69 ly. log .ti 1220: 6d 65 20 73 22 20 44 6f 77 6e 6c 6f 61 64 20 74 me s" Download t 1230: 65 73 74 20 34 61 22 20 24 2c 20 74 79 70 65 20 est 4a" $, type 1240: 63 72 20 65 6e 64 77 69 74 68 0a 20 20 20 20 20 cr endwith. 1250: 20 37 20 30 20 44 4f 20 20 2d 31 2e 20 49 20 6c 7 0 DO -1. I l 1260: 69 6d 69 74 21 20 20 4c 4f 4f 50 0a 20 20 20 20 imit! LOOP. 1270: 20 20 6e 32 6f 3a 64 6f 6e 65 0a 20 20 20 20 65 n2o:done. e 1280: 6e 64 2d 63 6f 64 65 7c 20 5b 27 5d 20 2e 74 69 nd-code| ['] .ti 1290: 6d 65 20 24 65 72 72 20 6e 32 6f 3a 63 6c 6f 73 me $err n2o:clos 12a0: 65 2d 61 6c 6c 20 3b 0a 0a 3a 20 63 3a 74 65 73 e-all ;..: c:tes 12b0: 74 2d 72 65 73 74 20 28 20 2d 2d 20 29 0a 20 20 t-rest ( -- ). 12c0: 20 20 63 3a 64 6f 77 6e 6c 6f 61 64 31 0a 20 20 c:download1. 12d0: 20 20 37 65 20 40 74 69 6d 65 20 66 3e 20 49 46 7e @time f> IF 12e0: 20 63 3a 64 6f 77 6e 6c 6f 61 64 32 0a 09 77 61 c:download2..wa 12f0: 69 74 6b 65 79 28 20 38 65 20 29 65 6c 73 65 28 itkey( 8e )else( 1300: 20 31 35 65 20 29 20 40 74 69 6d 65 20 66 3e 20 15e ) @time f> 1310: 49 46 20 20 63 3a 64 6f 77 6e 6c 6f 61 64 33 0a IF c:download3. 1320: 09 20 20 20 20 77 61 69 74 6b 65 79 28 20 31 36 . waitkey( 16 1330: 65 20 29 65 6c 73 65 28 20 32 30 65 20 29 20 40 e )else( 20e ) @ 1340: 74 69 6d 65 20 66 3e 20 49 46 0a 09 09 77 61 69 time f> IF...wai 1350: 74 6b 65 79 28 20 2e 22 20 50 72 65 73 73 20 6b tkey( ." Press k 1360: 65 79 20 74 6f 20 63 6f 6e 74 69 6e 75 65 22 20 ey to continue" 1370: 6b 65 79 20 64 72 6f 70 20 63 72 20 29 0a 09 09 key drop cr )... 1380: 63 3a 64 6f 77 6e 6c 6f 61 64 34 0a 09 09 63 3a c:download4...c: 1390: 64 6f 77 6e 6c 6f 61 64 34 61 0a 09 20 20 20 20 download4a.. 13a0: 54 48 45 4e 0a 09 54 48 45 4e 0a 20 20 20 20 54 THEN..THEN. T 13b0: 48 45 4e 0a 20 20 20 20 3e 74 69 6d 69 6e 67 20 HEN. >timing 13c0: 63 3a 64 69 73 63 6f 6e 6e 65 63 74 20 3b 0a 0a c:disconnect ;.. 13d0: 3a 20 63 3a 74 65 73 74 20 28 20 2d 2d 20 29 0a : c:test ( -- ). 13e0: 20 20 20 20 69 6e 69 74 2d 63 61 63 68 65 27 0a init-cache'. 13f0: 20 20 20 20 24 61 20 24 65 20 63 6f 6e 6e 65 63 $a $e connec 1400: 74 2d 6e 69 63 6b 20 24 40 20 6e 69 63 6b 3e 70 t-nick $@ nick>p 1410: 6b 20 69 6e 73 2d 69 70 20 70 6b 3a 63 6f 6e 6e k ins-ip pk:conn 1420: 65 63 74 20 63 3a 74 65 73 74 2d 72 65 73 74 20 ect c:test-rest 1430: 3b 0a 0a 56 61 72 69 61 62 6c 65 20 72 65 71 64 ;..Variable reqd 1440: 6f 6e 65 23 0a 65 76 65 6e 74 3a 20 2d 3e 72 65 one#.event: ->re 1450: 71 64 6f 6e 65 20 2d 31 20 72 65 71 64 6f 6e 65 qdone -1 reqdone 1460: 23 20 2b 21 20 3b 0a 0a 3a 20 63 3a 74 65 73 74 # +! ;..: c:test 1470: 26 20 28 20 6e 20 2d 2d 20 29 20 5c 20 69 6e 20 & ( n -- ) \ in 1480: 62 61 63 6b 67 72 6f 75 6e 64 0a 20 20 20 20 75 background. u 1490: 70 40 20 32 20 73 74 61 63 6b 73 69 7a 65 34 20 p@ 2 stacksize4 14a0: 4e 65 77 54 61 73 6b 34 20 70 61 73 73 20 3e 72 NewTask4 pass >r 14b0: 0a 20 20 20 20 61 6c 6c 6f 63 2d 69 6f 20 5b 27 . alloc-io [' 14c0: 5d 20 63 3a 74 65 73 74 20 63 61 74 63 68 20 3f ] c:test catch ? 14d0: 64 75 70 2d 49 46 0a 09 65 6c 69 74 2c 20 2d 3e dup-IF..elit, -> 14e0: 74 68 72 6f 77 20 64 72 6f 70 0a 20 20 20 20 45 throw drop. E 14f0: 4c 53 45 20 20 64 72 6f 70 20 2d 3e 72 65 71 64 LSE drop ->reqd 1500: 6f 6e 65 20 20 54 48 45 4e 20 20 72 3e 20 65 76 one THEN r> ev 1510: 65 6e 74 3e 20 3b 0a 0a 23 31 30 30 20 56 61 6c ent> ;..#100 Val 1520: 75 65 20 72 65 71 2d 6d 73 23 0a 0a 3a 20 63 3a ue req-ms#..: c: 1530: 74 65 73 74 73 20 28 20 6e 20 2d 2d 20 29 20 20 tests ( n -- ) 1540: 64 75 70 20 30 3c 20 49 46 20 20 61 62 73 20 74 dup 0< IF abs t 1550: 6f 20 74 65 73 74 23 20 20 31 20 20 54 48 45 4e o test# 1 THEN 1560: 0a 20 20 20 20 64 75 70 20 74 6f 20 74 6f 74 61 . dup to tota 1570: 6c 2d 74 65 73 74 73 20 20 64 75 70 20 72 65 71 l-tests dup req 1580: 64 6f 6e 65 23 20 21 0a 20 20 20 20 30 20 3f 44 done# !. 0 ?D 1590: 4f 20 20 49 20 63 3a 74 65 73 74 26 20 72 65 71 O I c:test& req 15a0: 2d 6d 73 23 20 6d 73 20 74 65 73 74 23 20 31 2b -ms# ms test# 1+ 15b0: 20 74 6f 20 74 65 73 74 23 20 20 4c 4f 4f 50 0a to test# LOOP. 15c0: 20 20 20 20 42 45 47 49 4e 20 20 73 74 6f 70 20 BEGIN stop 15d0: 72 65 71 64 6f 6e 65 23 20 40 20 30 3d 20 55 4e reqdone# @ 0= UN 15e0: 54 49 4c 20 3b 0a 0a 5c 20 6c 6f 6f 6b 75 70 20 TIL ;..\ lookup 15f0: 66 6f 72 20 6f 74 68 65 72 20 75 73 65 72 73 0a for other users. 1600: 0a 3a 20 6e 61 74 3a 63 6f 6e 6e 65 63 74 20 28 .: nat:connect ( 1610: 20 61 64 64 72 20 75 20 2d 2d 20 29 20 20 24 41 addr u -- ) $A 1620: 20 24 45 20 6e 69 63 6b 2d 63 6f 6e 6e 65 63 74 $E nick-connect 1630: 0a 20 20 20 20 2e 22 20 43 6f 6e 6e 65 63 74 65 . ." Connecte 1640: 64 21 22 20 63 72 20 3b 0a 0a 5c 20 73 6f 6d 65 d!" cr ;..\ some 1650: 20 6d 6f 72 65 20 68 65 6c 70 65 72 73 0a 0a 3a more helpers..: 1660: 20 73 68 61 2d 33 20 28 20 61 64 64 72 20 75 20 sha-3 ( addr u 1670: 2d 2d 20 29 20 63 3a 30 6b 65 79 0a 20 20 20 20 -- ) c:0key. 1680: 73 6c 75 72 70 2d 66 69 6c 65 20 32 64 75 70 20 slurp-file 2dup 1690: 63 3a 68 61 73 68 20 64 72 6f 70 20 66 72 65 65 c:hash drop free 16a0: 20 74 68 72 6f 77 20 70 61 64 20 63 3a 6b 65 79 throw pad c:key 16b0: 3e 20 3b 0a 0a 3a 20 73 68 61 2d 33 2d 32 35 36 > ;..: sha-3-256 16c0: 20 28 20 61 64 64 72 20 75 20 2d 2d 20 29 20 20 ( addr u -- ) 16d0: 73 68 61 2d 33 20 70 61 64 20 24 32 30 20 38 35 sha-3 pad $20 85 16e0: 74 79 70 65 20 3b 0a 3a 20 73 68 61 2d 33 2d 35 type ;.: sha-3-5 16f0: 31 32 20 28 20 61 64 64 72 20 75 20 2d 2d 20 29 12 ( addr u -- ) 1700: 20 20 73 68 61 2d 33 20 70 61 64 20 24 34 30 20 sha-3 pad $40 1710: 38 35 74 79 70 65 20 3b 0a 0a 3a 20 73 68 61 2d 85type ;..: sha- 1720: 33 2d 32 35 36 73 20 28 20 2d 2d 20 29 0a 20 20 3-256s ( -- ). 1730: 20 20 5b 3a 20 32 64 75 70 20 73 68 61 2d 33 2d [: 2dup sha-3- 1740: 32 35 36 20 73 70 61 63 65 20 74 79 70 65 20 63 256 space type c 1750: 72 20 3b 5d 20 61 72 67 2d 6c 6f 6f 70 20 3b 0a r ;] arg-loop ;. 1760: 0a 3a 20 73 68 61 2d 33 2d 35 31 32 73 20 28 20 .: sha-3-512s ( 1770: 2d 2d 20 29 0a 20 20 20 20 5b 3a 20 32 64 75 70 -- ). [: 2dup 1780: 20 73 68 61 2d 33 2d 35 31 32 20 73 70 61 63 65 sha-3-512 space 1790: 20 74 79 70 65 20 63 72 20 3b 5d 20 61 72 67 2d type cr ;] arg- 17a0: 6c 6f 6f 70 20 3b 0a 0a 5c 20 74 65 72 6d 69 6e loop ;..\ termin 17b0: 61 6c 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 0a 3a al connection..: 17c0: 20 63 3a 74 65 72 6d 69 6e 61 6c 20 28 20 2d 2d c:terminal ( -- 17d0: 20 29 0a 20 20 20 20 24 61 20 24 65 20 63 6f 6e ). $a $e con 17e0: 6e 65 63 74 2d 6e 69 63 6b 20 24 40 20 6e 69 63 nect-nick $@ nic 17f0: 6b 3e 70 6b 20 69 6e 73 2d 69 70 20 70 6b 3a 63 k>pk ins-ip pk:c 1800: 6f 6e 6e 65 63 74 0a 20 20 20 20 5b 3a 20 2e 74 onnect. [: .t 1810: 69 6d 65 20 2e 22 20 54 65 72 6d 69 6e 61 6c 20 ime ." Terminal 1820: 74 65 73 74 3a 20 63 6f 6e 6e 65 63 74 20 74 6f test: connect to 1830: 20 73 65 72 76 65 72 22 20 63 72 20 3b 5d 20 24 server" cr ;] $ 1840: 65 72 72 0a 20 20 20 20 74 63 2d 70 65 72 6d 69 err. tc-permi 1850: 74 23 20 66 73 2d 63 6c 61 73 73 2d 70 65 72 6d t# fs-class-perm 1860: 69 74 20 6f 72 20 74 6f 20 66 73 2d 63 6c 61 73 it or to fs-clas 1870: 73 2d 70 65 72 6d 69 74 0a 20 20 20 20 6e 65 74 s-permit. net 1880: 32 6f 2d 63 6f 64 65 0a 20 20 20 20 65 78 70 65 2o-code. expe 1890: 63 74 2d 72 65 70 6c 79 0a 20 20 20 20 20 20 6c ct-reply. l 18a0: 6f 67 20 2e 74 69 6d 65 20 22 54 65 72 6d 69 6e og .time "Termin 18b0: 61 6c 20 74 65 73 74 22 20 24 2c 20 74 79 70 65 al test" $, type 18c0: 20 63 72 20 65 6e 64 77 69 74 68 0a 20 20 20 20 cr endwith. 18d0: 20 20 73 74 64 2d 62 6c 6f 63 6b 20 73 74 61 74 std-block stat 18e0: 28 20 72 65 71 75 65 73 74 2d 73 74 61 74 73 20 ( request-stats 18f0: 29 0a 20 20 20 20 20 20 5b 3a 20 33 20 75 6c 69 ). [: 3 uli 1900: 74 2c 20 66 69 6c 65 2d 74 79 70 65 20 20 22 22 t, file-type "" 1910: 20 24 2c 20 30 20 75 6c 69 74 2c 20 6f 70 65 6e $, 0 ulit, open 1920: 2d 66 69 6c 65 0a 09 73 74 61 74 65 2d 61 64 64 -file..state-add 1930: 72 20 3e 6f 20 32 20 66 73 2d 63 6c 61 73 73 21 r >o 2 fs-class! 1940: 20 6f 3e 20 3b 5d 20 6e 32 6f 3e 66 69 6c 65 0a o> ;] n2o>file. 1950: 20 20 20 20 65 6e 64 2d 63 6f 64 65 7c 20 5b 27 end-code| [' 1960: 5d 20 2e 74 69 6d 65 20 24 65 72 72 20 3b ] .time $err ;