TestStar v1.0 (codename: Kranska Klobasa)
Pripravil: Jure Merčun
*****************************************
ToC:
1. Opis
2. Funkcije
------------------------------------------------------------------------------
1. Opis
=======
Program TestStar je namenjen testiranju programov, kot naprimer program
za IOI ( International Olympics of Informatics ). Programu podaja razlicne testne
podatke in preverja rezultate.
2. Funkcije
===========
o podajanje testnih podatkov podatkov ( INPUT.TXT )
o preverjanje izhodnih podatkov ( OUTPUT.TXT )
o omejevanje casa izvajana ( nastavljivo, privzeto 10s )
o pregledovanje direktorijev za nove naloge
Nacin delovanja
---------------
Programu se rocno vpise ime datoteke.
Program jo prevede, ji poda testne podatke
in jo pozene. Ce po nastavljenem casu
proces se ni koncan ga ubije, sicer preveri
izhodne podatke in jih primerja s pravilnimi.
na koncu izpise rezultat.
- prevajanje
prevajalnik se zazene z ukazom system() .
nato se preveri, ce je prevajanje uspelo in
program obstaja.
- podajanje podatkov
iz nastavljenega direktorija se na
direktorij z nalogo skopira datoteka <nal><XXX>.in
in se preimenujejo v input.txt. po zaganjanju itd.
se nadaljuje z naslednjo datoteko, dokler jih ne zmanjka.
- zaganjanje
program se zazene z ukazom fork() in nato execlp() .
starsevski proces ga v nastavljenem casu ubije s kill -9,
ce program ne konca sam.
- preverjanje izhodnih podatkov
program odpre datoteko output.txt in <nal><XXX>.out in ju
primerja byte po byte.
Specifikacije I/O datotek
-------------------------
S stalisca TestStar-a je cisto vseeno, kaksne so datoteke,
saj se vhodne datoteke samo kopirajo, izhodne pa se primerjajo
byte po byte.
Pretinitev programa - time limit
--------------------------------
Starsevski proces steje cas. Ce sine ni koncal pravi cas ga
oce ubije s "kill -9".
Vodenje evidence o rezultatih
-----------------------------
Zaenkrat se rezultati izpisejo samo na ekran.
Identifikacija uporrabnikov, programov...
-----------------------------------------
Zaenkrat se programe identificira po imenu
datoteke uporabnike pa po direktoriju.
Tezave pri projektu TestStar(IOI)
=================================
Ob programiranju in tudi drugje
se je pojavilo vec velikih tezav,
najhujse pa sta bili dve:
o Segmentation Fault pri branju nastavitev - odpravljena
o Cudno obnasanje v glavni zanki programa - ni odpravljena
Po enem dnevu iskanja napake in
razhrocsevanja sem(smo) ugotovil(i),
da je napaka v uporabi funkcije sizeof()
namesto strlen(). Napacno funkcijo sem
uporabil pri prepisovanju v ravno prav
velik kos spomina, pri cemer je sizeof()
kot dolzino vrnil stirikrat preveliko
stevilo in sem pri tem popisal del spomina,
ki mi ni pripadal.
V glavni zanki je vec pogojev, pri katerih
se lahko izvajanje trenutnega cikla konca,
vendar je pred vsakim return;om izpis napake.
Vendar se dogaja, da ne izpise ne izpisa,
niti ne nadaljuje.