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.