2010-01-13 10 views
6

Abbiamo creato un framework di threading comune per gestire il modo in cui vogliamo utilizzare i thread nelle nostre applicazioni. Esistono framework come Gtest o cppunit che si concentrano esclusivamente su thread di test unitari, pool di thread, code di thread e così via?Esistono quadri di test automatici per testare un framework di threading interno?

In questo momento eseguo solo manualmente alcuni passaggi che so che dovrei coprire e fare controlli nel codice per assicurarmi che certe condizioni siano soddisfatte (come i valori non sono corretti b/la risorsa condivisa è stata letta contemporaneamente da due o più thread contemporaneamente) Se non riesco a creare un controllo definitivo, allora passo al debugger ma sembra che si stia verificando negli anni '90.

Vorrei testare più sistematicamente la funzionalità del framework di threading per la sua funzionalità interna che potrebbe non essere uguale a tutti i framework di threading, ma voglio anche testare la funzionalità comune che tutti i framework di threading dovrebbero avere (come non deadlocking , non corrompendo i dati che i conteggi sono ciò che dovrebbero essere, ecc ...).

Qualsiasi suggerimento sarebbe molto apprezzato.

risposta

1

Se le discussioni che sono costruiti su OpenMP, è possibile utilizzare VivaMP per il controllo statico.

Ma si desidera un controllo dinamico con test di unità. Non sono a conoscenza di alcun framework esistente per questo scopo. Potresti farcela da sola con uno dei tanti framework di test unitari là fuori, ma sarebbe difficile renderlo robusto. Intel ha una suite di strumenti di sviluppo paralleli che potrebbero essere di interesse, ma non li ho mai usati. They say che possono aiutare con i test unitari da Visual Studio.

+0

Intel Parallel Studio funziona bene, ma è troppo male è $ 800 + per ottenere una versione non di valutazione. –

1

Se si scrive una libreria di thread, è necessario eseguire il debug da soli. librerie di threading non sono di uso generale come i programmi di uso generale = D in modo da non troverete un quadro unit testing specifico per il problema specifico: D

Dopo di che diniego però. Se stavi usando Solaris/OSX o FreeBSD .... dtrace renderebbe banale il test della tua libreria.

Problemi correlati