Sto facendo uno strumento di test del carico che avvia thread multipli per simulare il carico sul server di destinazione. Ogni thread esegue un set predefinito di comandi nella struttura di TestSuite - TestCase-TestStep e ogni livello restituisce oggetti risultati (di rispettivi tipi). Ogni thread esegue il loop dei suoi comandi predefiniti, quindi vengono generati una serie di risultati di TestSuite e ci vuole del tempo per completare tutti i loop.
Sto cercando di trovare il modo migliore per mostrare i risultati generati nei thread ancora in esecuzione. Ho pensato ad alcuni modi possibili:
-
Usa BlockingQueue e pattern produttore-consumatore. Ciò richiede una pesante programmazione della concorrenza e non sono stato molto chiaro su come dovrei gestire diversi livelli di risultati: risultati di suite, risultati di casi e risultati di passaggi.
-
Utilizza una mappa simultanea per mantenere il riferimento ai risultati e esegui il polling periodico della mappa per mostrare cosa è disponibile. Questo può essere molto inefficiente. Come faccio a ottenere i nuovi risultati ogni volta che scrivo?
-
Sviluppa un logger Log4J personalizzato, così posso aggiungere appendici che riceveranno risultati al volo. Non ho indagato su quanto lavoro sia coinvolto se utilizzo questo approccio. È persino possibile? Considerando il livello dei tipi di risultati che deve gestire.