[so] tema4-citire 0 octeti

Palii Ovidiu Gabriel ovidiu_palii at yahoo.co.uk
Mon Dec 18 00:04:20 EET 2006


> Hello. Facand un beyond compare cu ce ai scris tu si
> testul 1, nu vad
> absolut nici o modificare in prima parte :). Ce ai
> schimbat mai exact?
> Oricum, ar trebui sa mai fie un 'do_exit 0' la
> sfarsit daca asta e tot
> scriptul.
> 
> Testele 1-3 sunt mai mult 'din oficiu', ar trebui sa
> le treaca orice program
> cat de incomplet e. Cand ai de citit 0 bytes trebuie
> sa nu se produca
> absolut nimic la iesire si sa se iasa cu succes.
> Problema care apare la tine
> ar putea fi de la faptul ca poate mai scrii ceva la
> stdout...Scoate -q de la
> diff si vezi ce se intampla. Ce pot sa zic mai mult?


La testul 01 nu am facut decat sa comentez restul
liniilor. Fisierul test01.sh complet arata astfel:
#!/bin/bash
#Tema 4 SO - Test 01 - din oficiu :)
#testeaza daca serverul asculta pe portul 8192
#citire 0 bytes dintr-un fisier
#scriere 0 bytes intr-un fisier
#citire dupa EOF, trebuie sa reuseasca si sa citeasca
0 bytes

source f.sh

listenBefore=`netstat -talp --inet | grep ":8192" |
grep -v "TIME_WAIT" | wc -l`

startTest 01

sleep 2
listenAfter=`netstat -talp --inet | grep ":8192" |
grep -v "TIME_WAIT" | wc -l`

if [ $[$listenAfter - $listenBefore] -ne 1 ]
	then do_exit 1
fi

#citire 0 bytes
rm -f input output
./generate 0 >input 2>/dev/null
../client 127.0.0.1 rd input 0 0 >output 2>/dev/null

result=$?

diff -q input output

if [ $result -ne 0 -o $? -ne 0 ]
	then do_exit 1
fi

#scriere 0 bytes
#rm -f input output
#./generate 0 >input 2>/dev/null
#echo "zzz" >output
#cp output output2
#../client 127.0.0.1 wr output 0 0 <input 2>/dev/null

#result=$?

#diff -q output output2

#if [ $result -ne 0 -o $? -ne 0 ]
#	then do_exit 1
#fi

#citire de dupa EOF
#rm -f input output output2
#./generate 10 >input 2>/dev/null
#touch output2

#../client 127.0.0.1 rd input 20 10 >>output
2>/dev/null
#result1=$?
#diff -q output output2
#result2=$?

#if [ $result1 -ne 0 -o $result2 -ne 0 ]
#	then do_exit 1
#	else do_exit 0
#fi


Iar clientul incepe asa:
int main(int argc,char **argv){
	if(argc==6 && atoi(argv[5])==0){//daca am de citit 0
		return 0;
	}
.................
in cazul testului conditia e indeplinita si deci dau
return 0 fara sa mai scriu nimic.Daca nu era
indeplinita urma sa fac conexiunea la server si asa
mai departe.
Mai simplu de atat nu vad cum, si nici nu-mi dau seama
ce e gresit.

Am incercat si fara -q la diff,dar testul tot
pica.Serverul scria la stdout cate ceva,dar am scos
mesajele respective.Tot nu merge.
Rezultatul rularii este :
Started test 01...
-- FAILED --

Altceva ce mai pot face?


	
	
		
___________________________________________________________ 
All new Yahoo! Mail "The new Interface is stunning in its simplicity and ease of use." - PC Magazine 
http://uk.docs.yahoo.com/nowyoucan.html


More information about the so mailing list