View Full Version : [C]Makefile:Test automatici con parametri a runtime...
santaclause83
27-09-2007, 14:51
nel caso voglia implementare un etichetta di test nel mio makefile so come fare per chiamare gli eseguibili+parametri eventuali(alla chiamata dell'eseguibile),fin qui ok
nel caso però in cui il mio eseguibile richieda un interazione da tastiera con l'utente(quindi richieda mano a mano parametri a runtime),come faccio a stabilire una serie di stringhe da dare in pasto all'eseguibile tramite il makefile stesso?
cioè,sarebbe utile scrivere "make test" e il makefile pensa a lanciare l'eseguibile e ad interagirci secondo una serie di stringhe di input prestabilite per poi ritornare su schermo una cosa tipo "Test eseguito con successo!!"
non è che ci sono dei comandi apposta? sennò come potrei fare?..
grazie!
trallallero
27-09-2007, 15:04
il makefile che interagisce con l´eseguibile ??? :eek:
questa e´ roba da Microsoft :asd:
scherzi a parte non ho capito. Se vuoi puoi passare al makefile dei valori:
make VARIABILE=xxx
poi nel make usi
gcc -Dxxx -Dyyy
per definire qualcosa che nell´eseguibile controlli con
#ifdef xxx
ma temo che di piu´ tu non possa fare.
O non ho capito bene le tue esigenze
santaclause83
27-09-2007, 15:45
ho un client che manda richieste al server, e ci sono diversi comandi che può mandare da tastiera durante la sua esecuzione
mi piacerebbe ci fosse un modo tramite makefile non solo per lanciare i due eseguibili(server che riceve le richieste e client che mano a mano gliele inoltra e stampa su stdout i servizi),ma anche per collaudarlo una volta avviato SIMULANDO l'interazione dell'utente con una serie di comandi che altrimenti dovrei inserire da tastiera io stesso
forse dovrei lanciare server,client, e un terzo programma che scrive una serie di comandi prestabiliti su stdin al momendo in cui è attivo il client...possibile o c***ata?
spero di aver chiarito, thanxalot!
trallallero
27-09-2007, 16:07
ho un client che manda richieste al server, e ci sono diversi comandi che può mandare da tastiera durante la sua esecuzione
mi piacerebbe ci fosse un modo tramite makefile non solo per lanciare i due eseguibili(server che riceve le richieste e client che mano a mano gliele inoltra e stampa su stdout i servizi),ma anche per collaudarlo una volta avviato SIMULANDO l'interazione dell'utente con una serie di comandi che altrimenti dovrei inserire da tastiera io stesso
forse dovrei lanciare server,client, e un terzo programma che scrive una serie di comandi prestabiliti su stdin al momendo in cui è attivo il client...possibile o c***ata?
spero di aver chiarito, thanxalot!
ok, chiarito ;)
no, il makefile non e´ responsabile (giustamente) di tutto cio´. Il suo ruolo e´ creare un eseguibile, stop. Lo puo´ fare seguendo infiniti percorsi ma una volta creato non si mette anche a testarlo. Che poi ci sia il modo per la farlo (si puo´ fare tutto, volendo), la cosiddetta mandrakata, lo posso pure immaginare ma non e´ che sia molto bello ... make = creare
Si, dovresti lanciare server/client e testare con un terzo programma o creare un client apposta per testare il server e cosi´ via.
Non a caso son richieste esperienze in test dalle societa´ (serie) che assumono.
Ti consiglio di creare una test list e poi cercare di creare dei test scripts in modo da rendere la cosa piu´ dinamica e riutilizzabile possibile ;)
Secondo me forse non ti serve un terzo programma ma proprio una serie di scripts che chiamano il client con una serie di parametri.
buon divertimento :D
santaclause83
27-09-2007, 16:22
non l'ho mai fatto,come faccio a relazionare uno script con lo stdin del client avviato per dargli i parametri??
mi sapresti indicare dei links al limite??
grazie!!
trallallero
28-09-2007, 06:57
non l'ho mai fatto,come faccio a relazionare uno script con lo stdin del client avviato per dargli i parametri??
mi sapresti indicare dei links al limite??
grazie!!
quindi tu hai un client sempre attivo che deve comunicare col server ?
non puoi lanciare n clients per ogni test che devi fare ?
e poi come fa a funzionare il sistema client/server se non sai come passargli i parametri mentre e´ attivo ?
voglio dire: non e´ semplice passare dei parametri ad un programma che sta girando, se lo devi fare solo per testare puoi evitare cercando altre strade, se lo devi fare perche´ il sistema funziona cosi´ ... come fa a funzionare se non sai come fare ? :D
santaclause83
28-09-2007, 15:31
i parametri glieli passo da stdin,quindi da tastiera....
-->il processo client si interfaccia con l'utente,
-->l'utente fa delle richieste che vengono dal processo client stesso ricevute mandate al server e consegnate all'utente su stdout una volta processate
sarebbe utile avere un eseguibile che da in pasto al client una serie di comandi diversi senza per forza dover simulare l'utente,e nel mentre lanciare un programma di code coverage tipo gcov
così alla fine se termina correttamente e gli ouput sono quelli attesi,vedere anche quanto del codice è stato effettivamente eseguito
l'idea c'è,ma non saprei da dove iniziare....
se faccio un programma c che lancio dopo server e client,e questo programma nel suo main scrive su stdin una serie di comandi di seguito?
questi comandi vengono letti solo ed esclusivamente dal client se è l'unico processo in ascolto sull'input da tastiera in quel momento no?
il problema è che il processo client nn è sempre in ascolto perchè prende il comando da tastiera,lo inoltra,lo fa eseguire e riceve e stampa il risultato,POI si rimette in ascolto per un nuovo comando....
trallallero
28-09-2007, 16:00
i parametri glieli passo da stdin,quindi da tastiera....
-->il processo client si interfaccia con l'utente,
-->l'utente fa delle richieste che vengono dal processo client stesso ricevute mandate al server e consegnate all'utente su stdout una volta processate
sarebbe utile avere un eseguibile che da in pasto al client una serie di comandi diversi senza per forza dover simulare l'utente,e nel mentre lanciare un programma di code coverage tipo gcov
così alla fine se termina correttamente e gli ouput sono quelli attesi,vedere anche quanto del codice è stato effettivamente eseguito
l'idea c'è,ma non saprei da dove iniziare....
se faccio un programma c che lancio dopo server e client,e questo programma nel suo main scrive su stdin una serie di comandi di seguito?
questi comandi vengono letti solo ed esclusivamente dal client se è l'unico processo in ascolto sull'input da tastiera in quel momento no?
il problema è che il processo client nn è sempre in ascolto perchè prende il comando da tastiera,lo inoltra,lo fa eseguire e riceve e stampa il risultato,POI si rimette in ascolto per un nuovo comando....
ok, capito (piu´ o meno, ho letto al volo e sto andando via).
Esiste il tool expect (http://en.wikipedia.org/wiki/Expect) che ti permette di interfacciarti con le shell lanciando comandi a seconda di quello che ritorna a video (stdout) un programma. (l´ho spiegato da cani :D)
Lo usavo con Sun Solaris ma non ricordo molto. Devi trovare le librerie giuste ... mi spiace ma io sto cambiando lavoro ed ho appena eliminato tutta la mia directory con i BK che tengo :boh:
e sto andando via
ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.