Tests sul ModuloUno

Ho svolto un po' di test sulle vostre (e mia) implementazioni del ModuloUno.

Metto in attachment la directory zippata dei risultati.

Potete anche vedere i risultati scompattati.

Come interpretare i risultati

Ho testato il vostro codice sia con i vostri test che con i miei (ed il mio codice con i vostri test).

Alcune combinazioni non compilano.

La tabella principale elenca il numero di test PASSED rispetto alla somma di PASSED---+FAILED.

Ciascuna serie di test linka ai messaggi di errore generati dai test.

ATTENZIONE: mi sono dimenticato di zippare i file .diff che mostrano le modifiche, lo farò appena posso.

A proposito dei moduli che non compilano

Per riuscire a far compilare alcuni dei vostri moduli ho dovuto

  • definire una libreria che implementasse versioni vuote delle diverse funzioni (alcuno di voi non hanno implementato tutto)
  • definire la costante NULL (alcuno non hanno incluso stdlib.h
  • includere i file modulo1.h e testModulo1.h (alcuni non l'hanno fatto)

Continuerò a "correggere" per quanto possibile i moduli per vedere come funzionano.

ATTENZIONE: questo non verrà fatto per nessuno dei moduli seguenti, per cui quelli che non compileranno falliranno tutti i test. Vi consiglio quindi di:

  • includere modulo2.h e testModulo2.h
  • includere stdlib.h oppure definire la costante NULL
  • compilare aggiungendo l'opzione -lpcre
  • provare a compilare ed eseguire il programma in linux

Commenti

Inserite qua sotto i vostri suggerimenti e correzioni.

PS: vi prego, che siano commenti sensati smile


problema con log.html & domanda sui test

Molto interessante big grin solo che le anchor nel log.html non mi funzionano... fortuna il search!

comunque non ho capito perché è stato testato BAD_HEADER su primoHeader e BODY_NOT_FOUND su estrai headers o_O in teoria le 2 funzioni non dovrebbero conoscere nulla, né della sintassi dell'header ne se dopo ci sia o no il body...

-- Comment added by MarcelloLagana on 19 Apr 2005


MarcelloLagana

io credo che il problema stia nel fatto che le specifiche del programma non sempre sono state esaustive, ci sono alcuni particolari che abbiamo definito a forfait nel forum e altre delle quali non abbiamo nemmeno parlato... non è mai stata fatta una tabella chiara, stabilendo chi deve controllare cosa, e in quali casi...

in ogni caso suppongo che il test verifichi che un HEADER sia del tipo " :pippo" o anche "vnoifdavnfodian\n" mentre nel caso di BODY_NOT_FOUND, io lo controllo da tokenizza...

-- Comment added by GabrieleTarantino on 19 Apr 2005


Chiarezza delle specifiche

Riguardo alla chiarezza delle specifiche da un lato sono d'accordo con te. Ci sono troppe situazioni da gestire e non sempre basta attenersi al pdf del prof. per essere sicuri di fare bene.

-- Comment added by MassimilianoNatale on 19 Apr 2005


chiarezza delle specifiche

si, mi aggiungo anche io: nei test che mi sono falliti continuo a credere di aver ragione, o almeno: mi sono scervellato per qualche minuto con il search sul file di log e secondo me con quegli input quelle funzioni dovevano dare i miei output, con una sola eccezione: ho capito l'errore che ho commesso nella leggiFile (non avevo letto bene le specifiche, dannata pigrizia! mad! ).
ovviamente prof., date le condizioni in cui ho analizzato il log (blocco note con wordwrap automatico e tasti CTRL---+T consumati dall'uso) potrebbero essermi sfuggiti dei casi in cui aveva ragione lei! smile

-- Comment added by AlbertoLaRocca on 19 Apr 2005


header che inizia con spazio

ecco, per dirne una: se un header inizia con uno spazio, ad esempio se il primo carattere dell'intero contenuto della email è proprio lo spazio, secondo me l'header è valido, purché naturalmente ci sia un tipo valido; ad es., imho questo è valido:
 from: me\n

-- Comment added by AlbertoLaRocca on 19 Apr 2005


header che inizia con spazio

evvivaaaaaa! mai una volta che TWiki mi veda correttamente gli spazi! smile smile smile
la stringa che volevo mettere era:
from: me\n

-- Comment added by AlbertoLaRocca on 19 Apr 2005


eheader che inizia con spazio

VOGLIO IL SANGUE DEI CREATORI DI TWIKI!!!!!!! mad!
vediamo se funziona così, è l'ultimo tentativo:
" from: me\n"

-- Comment added by AlbertoLaRocca on 19 Apr 2005


Considerazioni sui test del prof.: Allocazione della memoria nei test

Professore ho notato che nei suoi test utilizza una chiamata a calloc nel seguente modo: "calloc(1, 10000)" che in poche parole alloca lo spazio per 1 elemento di dimensioni 10000. Ho quindi pensato che le sue intenzioni fossero in realtà quelle di allocare spazio per 10000 elementi di dimensione 1 (poichè la dim passata alla funzione indica il numero di elementi del vettore e non la sua dimensione). E' possibile che si tratti di una sua dimenticanza?

-- Comment added by MassimilianoNatale on 20 Apr 2005


parseHeader()

L'errore prodotto dalla mia parseHeader() è in realtà un errore "voluto", nel senso che, da come si enuncia dalle 2 righe di codice che riscrivo sotto, ho considerato validi (convinto che fossero tali) tutti gli header che pur essendo preceduti da un qualsiasi carattere bianco , o anche più di uno, avessero successivamente un corretto formato (come il suo ' From 10.0.0.1' che naturalmente mi ha fatto fallire il test). Queste le righe di codice incriminate:

while(isblank(header[i])) { // Trova il primo carattere significativo i---++;

-- Comment added by MassimilianoNatale on 20 Apr 2005


Segmentation fault nei test

Mi sono stupito e non poco per alcuni miei segmentation fault dati dalle mie funzioni cosicchè ho lavorato duro per capire da dove venivano fuori (visto che prima di inviare il modulo lo testo come Dio comanda). Finalmente ecco la conclusione: le mie funzioni modificano anche il buffer email[] che viene passato come primo argomento (e fin qui ci siamo). Il problema è però che il professore utilizza questa email non come array email[] bensì come puntatore *email. Modificando infatti *email = "ciao" con email[] = "ciao" la funzione non dà più segmentation fault ma va invece a buon termine. Chiedo dunque: possibile che il mio lavoro vada a cozze per un contesto che non potevo prevedere nella maniera più assoluta? PS: In generale penso che la mia situazione di test sia buona, però...

-- Comment added by MassimilianoNatale on 20 Apr 2005


umanità dei tests

Ho appena scoperto che non ho passato nessuno dei 3 tests. Dopo essermi ripreso dallo shock, sono andato a vedere il perché...beh...semplicissimo. Nel fare le prove non includevo modulo1.h, quindi mi dovevo creare la Struct a_token da solo. Quando ho consegnato, ho incluso modulo1.h...senza togliere la nuova struttura che avevo creato (e che era uguale a quella del professore). Adesso mi sento un idiota, perché ho perso il modulo più semplice di tutti in questa maniera idiotissima, e va bene, ma mi chiedevo, visto che per testare le varie funzioni il professore perdeva tempo cambiando quelle che non funzionano con le proprie, errori così dementi (è chiaro dal messaggio di errore del compilatore quello che è successo) non possono essere modificati? Voglio dire, in questo modo se uno sbaglia 3 funzioni su 6 prende comunque qualche punto. Nel mio caso le 6 funzioni sono perfette, ma al di fuori di esse c'è la ripetizione di una struttura che il professore include successivamente, ed io non passo neanche un tests per questo...mi sembra una cosa un pochino poco equilibrata.

-- Comment added by EnricoMontesi on 20 Apr 2005


correzioni

mi spiace per te Enrico; cmq se ti può essere di qualche consolazione considera che, stando a quanto ne so io:
1) all'orale si dovrebbero fare tutti i dovuti chiarimenti, e questa è una cosa che apprezzo molto perché così tutti possono spiegare quello che hanno da spiegare (me compreso)
2) in teoria sapevo che gli anni passati Sterbini faceva anche delle correzioni manuali, purché fossero appunto delle piccolissime scemenze; probabilmente ieri non ha avuto tempo di farle, ma forse oggi le farà...
ciao

-- Comment added by AlbertoLaRocca on 20 Apr 2005


AGGIORNAMENTO e risposte

  • Ho rieseguito i test ed aggiustato la produzione del log.
  • Ho inoltre aggiunto qualche opzione per riuscire a compilare più programmi.
  • Ho tolto due test che non andavano fatti.
  • Le correzioni manuali le farò, ma solo per questo modulo.
  • La sostituzione delle funzioni fallite con quelle buone ancora non c'e' (comunque avrebbe effetto solo su tokenizzaEmail)

PS: state calmi, nei limiti dell'umano cerco sempre di fare una correzione più giusta possibile.

PPS: a proposito di twiki (e di HTML): ma il tag <pre> o il tag <verbatim> perchè non li usi?

-- Comment added by AndreaSterbini on 20 Apr 2005


segmentation fault

no, qui secondo me la questione è 1 po' diversa: se non erro le funzioni del modulo1, per come sono definite le specifiche, in nessun caso dovevano modificare i buffer di input, come ad esempio il parametro email di non mi ricordo quale funzione; in generale in casi come questo il parametro viene definito non come "char*", ma come "const char*". inoltre se il prog. ti va in segm. fault vuol dire che cmq l'errore di memoria c'è, e se nella seconda maniera non riesci a capirlo è uno dei motivi per cui odio il gcc.
cmq tornando IT: il problema qui secondo me è un problema di fondo, cioè intendo dire che io (e tutti quelli che conosco con cui ne ho parlato sono della mia stessa opinione) il corso di Programmazione 1 l'avrei organizzato in tutt'altra maniera: il caro prof di Prog 1 è fissato con l'ANSI C, lui compila solo con -ansi e -pedantic, e non capisco il motivo! perché dobbiamo studiare un linguaggio castrato di molte importanti innovazioni? stando a quanto dice lui, lo standard C99 è una cosa recentissima che non è stata ancora nemmeno completamente definita, magari una cosa segretissima e pericolosa con un che di arcano, ma non sarà che è rimasto un po' indietro coi tempi? diciamo... al 1999...
se voi studiate l'ANSI C, vecchio di decenni, è chiaro che non saprete mai cosa vuol dire il const che ho citato sopra, e questo era solo un esempio.
PS: Marco, non so se è chiaro, ma non sto biasimando te.

-- Comment added by AlbertoLaRocca on 20 Apr 2005


tags di TWiki

verbatim lo uso, di pre non sapevo...

-- Comment added by AlbertoLaRocca on 20 Apr 2005


tags di TWiki

Guarda meglio il manuale dell'HTML.

AGGIORNAMENTO

  • ora il conteggio tiene conto correttamente dei segfault e timeout

-- Comment added by AndreaSterbini on 20 Apr 2005


segmentation fault (ansi e pedantic)

No, nessun -ansi o -pedantic quest'anno.

Ora provo ad aggiungere -fwritable-strings e vediamo che dicono i tests ...

-- Comment added by AndreaSterbini on 20 Apr 2005


-ansi e -pedantic

guardi prof. che non mi riferivo a lei nel discorso della fissa per l'ANSI C! ho detto Programmazione 1, non Laboratorio di programmazione! smile
cmq qual è la differenza tra pre e verbatim?

-- Comment added by AlbertoLaRocca on 20 Apr 2005


File Mail1.txt nei test

Professore (premetto che per come sono andati i test per me va anche bene così) però quando lei compila il mio programma con i miei test molte volte viene il risultato NOT IMPLEMENTED. La causa di tutto questo sta nel fatto che i miei test aprono in lettura il famoso file "Mail1.txt" e ritornano NOT_IMPLEMENTED soltanto se la lettura di questo file non è andata in buon termine (dunque se non ci sta sto benedetto "Mail1.txt"). Non pretendo che vengano rifatti i test ovviamente, però giusto per precisare

-- Comment added by MassimilianoNatale on 20 Apr 2005


La prova del 9

TEST FALLITO funzione testata: leggiFile() risultato atteso: RESULT_OK risultato ottenuto: FILE_MISSING

SPIEGAZIONE: La funzione ha tentato di aprire un file inesistente

In parecchi test (falliti) il mio programma di test stampa l'errore che ho scritto sopra (in alcuni specifica anche che il file che non si riesce ad aprire e "Mail1.txt")

-- Comment added by MassimilianoNatale on 21 Apr 2005


RE: File Mail1.txt nei test

Il tuo test torna il codice sbagliato.

Copierò email1.txt anche sotto il nome Mail1.txt ... smile

RE: pre e verbatim

pre é html, verbatim è un tag di twiki che non esegue la formattazione twiki (e la racchiude in un pre)

-- Comment added by AndreaSterbini on 21 Apr 2005


Mail1.txt nei test

Grazie professore. Ho utilizzato Mail1.txt poichè nelle sue risposte (date nel forum) nominava il file da assumere esistente sia "email1.txt" che "Mail1.txt".

-- Comment added by MassimilianoNatale on 22 Apr 2005


PRIME CORREZIONI

Ho fatto le prime correzioni ai vostri progs, la tabella ora è molto più verde smile

-- Comment added by AndreaSterbini on 22 Apr 2005


Test Provati / Test Passati

Sia lodata la sua magnanimità. Domanda: Perchè sono l'unico ad avere quel numero esponenziale nella tabella???

-- Comment added by MassimilianoNatale on 22 Apr 2005


RE: Test Provati / Test Passati

Si vede che il timeout non è stato gestito correttamente, farò rigirare i test.

-- Comment added by AndreaSterbini on 23 Apr 2005


AGGIORNAMENTO

Ho aggiornato la pagina, ora i test mostrano le mie modifiche per farli compilare.

I pochi che rimangono sono semivuoti, oppure troppo complicati da correggere o sono illeggibili.

-- Comment added by AndreaSterbini on 08 May 2005


Mancano i .diff

ATTENZIONE: mi sono dimenticato di zippare i file .diff che mostrano le modifiche, lo farò appena posso.

-- Comment added by AndreaSterbini on 08 May 2005


AGGIORNAMENTO

Ho aggiornato i test:
  • qualcosa non funziona ed alcuni test vanno in timeout (quelli che hanno strane serie di numeri nella tabella), vedo che riesco a fare.
  • ho aggiunto l'analisi della deallocazione della mamoria. Dateci un'occhiata che si impara sempre qualcosa di buono.

-- Comment added by AndreaSterbini on 22 May 2005


RE: numero di tests

Ho disattivato alcuni controlli sulla deallocazione ed ora il numero di tests è lo stesso (circa)

-- Comment added by AndreaSterbini on 07 Jun 2005


No such template def TMPL:DEF{PROMPT:thread}
Topic attachments
I Attachment History Action Size DateSorted ascending Who Comment
Unknown file formatbz2 modulo1.tar.bz2 r8 r7 r6 r5 r4 manage 424.4 K 2005-06-07 - 15:23 AndreaSterbini  
Edit | Attach | Watch | Print version | History: r33 < r32 < r31 < r30 < r29 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r33 - 2005-08-21 - AndreaSterbini






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback