Qual è il modo migliore per implementare uno show board in tempo reale per mostrare i risultati dei produttori di risultati concorrenti in Java?

-1

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:

  1. 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.

  2. 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?

  3. 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.

posta Max 26.03.2015 - 05:45
fonte

1 risposta

0

Questo suona come un problema multi-threading piuttosto standard che può essere risolto con tecniche consolidate.

Il mio suggerimento sarebbe:

  • Imposta una classe singleton il cui compito nella vita è registrare gli eventi. Sincronizza i metodi per assicurarti che siano thread-safe.
  • Fare in modo che ogni test chiami regolarmente il logger thread-safe per eseguire qualsiasi lavoro di registrazione. Assicurati che il messaggio di registrazione includa un ID thread.

Siccome la tua classe di log è sicura per i thread, sei libero di allegare qualsiasi appendice.

    
risposta data 26.03.2015 - 08:57
fonte

Leggi altre domande sui tag