/* ADSL / Cable modem circuit test */ call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysloadFuncs' call SysLoadFuncs /* Variables */ pinghost=LINEIN('circuitest.ini') pinglen=LINEIN('circuitest.ini') ftphost=LINEIN('circuitest.ini') ftpuser=LINEIN('circuitest.ini') ftppass=LINEIN('circuitest.ini') dlay=LINEIN('circuitest.ini') dlay=60 say 'Delay time 'dlay /* PING TEST */ say 'Pinging 'pinghost Qfetch = rxqueue('create') png=pinghost' 'pinglen' 3' say png c=0 /* tmp ping count */ td=0 /* total dropped packets */ td.0=0 td.1=0 td.2=0 td.3=0 tp=0 /* total packets */ tup=0 /* total up packets */ tt=0 /* total time */ mt=0 /* max time */ mn=10000 /* min time */ k=0 /* kilobytes transferred */ tk=0 /* total kilobytes transferred */ mk=0 /* max K transfer */ nk=10000 /* minimum K transfer */ kup=0 /* total up count ftp */ kdp=0 /* total down count ftp */ /* FTP transfer up */ utk=0 /* total kilobytes transferred */ umk=0 /* max K transfer */ unk=10000 /* minimum K transfer */ ukup=0 /* total up count ftp */ ukdp=0 /* total down count ftp */ IF STREAM('cable.dat', 'c', 'query exists') \= '' THEN DO td=LINEIN('cable.dat') td.0=LINEIN('cable.dat') td.1=LINEIN('cable.dat') td.2=LINEIN('cable.dat') td.3=LINEIN('cable.dat') tp=LINEIN('cable.dat') tup=LINEIN('cable.dat') tt=LINEIN('cable.dat') mt=LINEIN('cable.dat') mn=LINEIN('cable.dat') tk=LINEIN('cable.dat') mk=LINEIN('cable.dat') nk=LINEIN('cable.dat') kup=LINEIN('cable.dat') kdp=LINEIN('cable.dat') utk=LINEIN('cable.dat') umk=LINEIN('cable.dat') unk=LINEIN('cable.dat') ukup=LINEIN('cable.dat') ukdp=LINEIN('cable.dat') END DO forever DO s=1 to 25 '@ping 'png'| rxqueue' Qfetch call rxqueue 'set', Qfetch c=0 do while queued() \= 0 pull tmp IF POS('ICMP_SEQ',tmp) > 0 THEN DO c=c+1 PARSE VAR tmp . 'TIME=' t '.' . say 'time='t' c='c tt=tt+t IF t > mt THEN mt=t IF t < mn THEN mn=t tup=tup+1 Call LINEOUT 'cabletest.out', TIME('N')' 't END end tp=tp+3 DO i=1 to (3-c) Call LINEOUT 'cabletest.out', TIME('N')' timeout' END Call LINEOUT 'cabletest.out' r=(3 - c) td=td + r td.r=td.r+1 c=0 say 'MIN/AVG/MAX = 'mn'/'TRUNC(tt/tup)'/'mt' total packets 'tp' total dropped 'td Call LINEOUT 'cable.dat', td,1 Call LINEOUT 'cable.dat', td.0 Call LINEOUT 'cable.dat', td.1 Call LINEOUT 'cable.dat', td.2 Call LINEOUT 'cable.dat', td.3 Call LINEOUT 'cable.dat', tp Call LINEOUT 'cable.dat', tup Call LINEOUT 'cable.dat', tt Call LINEOUT 'cable.dat', mt Call LINEOUT 'cable.dat', mn Call LINEOUT 'cable.dat', tk Call LINEOUT 'cable.dat', mk Call LINEOUT 'cable.dat', nk Call LINEOUT 'cable.dat', kup Call LINEOUT 'cable.dat', kdp Call LINEOUT 'cable.dat', utk Call LINEOUT 'cable.dat', umk Call LINEOUT 'cable.dat', unk Call LINEOUT 'cable.dat', ukup Call LINEOUT 'cable.dat', ukdp Call LINEOUT 'cable.dat' '@ftp disput' call sysSleep dlay END /* FTP PUT */ '@ftp disftp | rxqueue' Qfetch call rxqueue 'set', Qfetch c=0 uk=0 do while queued() \= 0 pull tmp IF POS('KBYTES/S',tmp) > 0 THEN DO PARSE VAR tmp . '(' uk ' KBYTES' . say uk utk=utk+uk IF uk > umk THEN umk=uk IF uk < unk THEN unk=uk ukup=ukup+1 END end IF uk=0 THEN DO ukdp=ukdp+1 utk=utk+uk END Call LINEOUT 'cable.dat', td,1 Call LINEOUT 'cable.dat', td.0 Call LINEOUT 'cable.dat', td.1 Call LINEOUT 'cable.dat', td.2 Call LINEOUT 'cable.dat', td.3 Call LINEOUT 'cable.dat', tp Call LINEOUT 'cable.dat', tup Call LINEOUT 'cable.dat', tt Call LINEOUT 'cable.dat', mt Call LINEOUT 'cable.dat', mn Call LINEOUT 'cable.dat', tk Call LINEOUT 'cable.dat', mk Call LINEOUT 'cable.dat', nk Call LINEOUT 'cable.dat', kup Call LINEOUT 'cable.dat', kdp Call LINEOUT 'cable.dat', utk Call LINEOUT 'cable.dat', umk Call LINEOUT 'cable.dat', unk Call LINEOUT 'cable.dat', ukup Call LINEOUT 'cable.dat', ukdp Call LINEOUT 'cable.dat' Call LINEOUT 'ftpcable.out', TIME('N')' 'uk Call LINEOUT 'ftpcable.out' uk=0 Call LINEOUT 'cable.dat' '@ftp disput' call sysSleep dlay DO s=1 to 25 '@ping 'png'| rxqueue' Qfetch call rxqueue 'set', Qfetch do while queued() \= 0 pull tmp IF POS('ICMP_SEQ',tmp) > 0 THEN DO c=c+1 PARSE VAR tmp . 'TIME=' t '.' . say 'time='t' c='c tt=tt+t IF t > mt THEN mt=t IF t < mn THEN mn=t tup=tup+1 Call LINEOUT 'cabletest.out', TIME('N')' 't END end tp=tp+3 DO i=1 to (3-c) Call LINEOUT 'cabletest.out', TIME('N')' timeout' END Call LINEOUT 'cabletest.out' r=(3 - c) td=td + r td.r=td.r+1 c=0 say 'MIN/AVG/MAX = 'mn'/'TRUNC(tt/tup)'/'mt' total packets 'tp' total dropped 'td Call LINEOUT 'cable.dat', td,1 Call LINEOUT 'cable.dat', td.0 Call LINEOUT 'cable.dat', td.1 Call LINEOUT 'cable.dat', td.2 Call LINEOUT 'cable.dat', td.3 Call LINEOUT 'cable.dat', tp Call LINEOUT 'cable.dat', tup Call LINEOUT 'cable.dat', tt Call LINEOUT 'cable.dat', mt Call LINEOUT 'cable.dat', mn Call LINEOUT 'cable.dat', tk Call LINEOUT 'cable.dat', mk Call LINEOUT 'cable.dat', nk Call LINEOUT 'cable.dat', kup Call LINEOUT 'cable.dat', kdp Call LINEOUT 'cable.dat', utk Call LINEOUT 'cable.dat', umk Call LINEOUT 'cable.dat', unk Call LINEOUT 'cable.dat', ukup Call LINEOUT 'cable.dat', ukdp Call LINEOUT 'cable.dat' '@ftp disput' call sysSleep dlay END /* FTP GET */ '@ftp dis | rxqueue' Qfetch call rxqueue 'set', Qfetch k=0 do while queued() \= 0 pull tmp IF POS('KBYTES/S',tmp) > 0 THEN DO PARSE VAR tmp . '(' k ' KBYTES' . say k tk=tk+k IF k > mk THEN mk=k IF k < nk THEN nk=k kup=kup+1 END end IF k=0 THEN DO kdp=kdp+1 tk=tk+k END Call LINEOUT 'cable.dat', td,1 Call LINEOUT 'cable.dat', td.0 Call LINEOUT 'cable.dat', td.1 Call LINEOUT 'cable.dat', td.2 Call LINEOUT 'cable.dat', td.3 Call LINEOUT 'cable.dat', tp Call LINEOUT 'cable.dat', tup Call LINEOUT 'cable.dat', tt Call LINEOUT 'cable.dat', mt Call LINEOUT 'cable.dat', mn Call LINEOUT 'cable.dat', tk Call LINEOUT 'cable.dat', mk Call LINEOUT 'cable.dat', nk Call LINEOUT 'cable.dat', kup Call LINEOUT 'cable.dat', kdp Call LINEOUT 'cable.dat', utk Call LINEOUT 'cable.dat', umk Call LINEOUT 'cable.dat', unk Call LINEOUT 'cable.dat', ukup Call LINEOUT 'cable.dat', ukdp Call LINEOUT 'cable.dat' Call LINEOUT 'ftpcable.in', TIME('N')' 'k Call LINEOUT 'ftpcable.in' k=0 Call LINEOUT 'cable.dat' '@ftp disput' call sysSleep dlay END call rxqueue 'delete', Qfetch CALL LINEOUT 'cable.dat' EXIT 0