Come funzionano i test di carico distribuiti su AWS - Test di carico distribuito su AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Come funzionano i test di carico distribuiti su AWS

La seguente suddivisione dettagliata mostra i passaggi necessari per l'esecuzione di uno scenario di test.

Workflow di test

image3

  1. Si utilizza la console Web per inviare uno scenario di test che include i dettagli di configurazione all'API della soluzione.

  2. La configurazione dello scenario di test viene caricata su Amazon Simple Storage Service (Amazon S3) come file JSON (). s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json

  3. Una macchina a stati AWS Step Functions viene eseguita utilizzando l'ID di test, il conteggio delle attività, il tipo di test e il tipo di file come input della macchina a stati AWS Step Functions. Se il test è pianificato, creerà innanzitutto una regola CloudWatch Events, che attiva AWS Step Functions alla data specificata. Per maggiori dettagli sul flusso di lavoro di pianificazione, consulta la sezione Flusso di lavoro di pianificazione dei test di questa guida.

  4. I dettagli di configurazione sono archiviati nella tabella degli scenari Amazon DynamoDB.

  5. Nel flusso di lavoro del task runner di AWS Step Functions, la funzione task-status-checker AWS Lambda verifica se le attività di Amazon Elastic Container Service (Amazon ECS) sono già in esecuzione per lo stesso ID di test. Se vengono rilevate attività con lo stesso ID di test in esecuzione, viene generato un errore. Se non ci sono attività Amazon ECS in esecuzione nel cluster AWS Fargate, la funzione restituisce l'ID di test, il conteggio delle attività e il tipo di test.

  6. La funzione task-runner AWS Lambda ottiene i dettagli delle attività dal passaggio precedente ed esegue le attività dei worker di Amazon ECS nel cluster AWS Fargate. L'API Amazon ECS utilizza l' RunTask azione per eseguire le attività dei lavoratori. Queste attività lavorative vengono avviate e quindi attendono un messaggio di avvio dall'attività principale per iniziare il test. L' RunTask azione è limitata a 10 attività per definizione. Se il numero di attività è superiore a 10, la definizione dell'attività verrà eseguita più volte fino all'avvio di tutte le attività dei lavoratori. La funzione genera anche un prefisso per distinguere il test corrente nella funzione di analisi dei risultati di AWS Lambda.

  7. La funzione task-status-checker AWS Lambda verifica se tutte le attività di lavoro di Amazon ECS vengono eseguite con lo stesso ID di test. Se le attività sono ancora in fase di provisioning, attende un minuto e verifica nuovamente. Una volta eseguite tutte le attività di Amazon ECS, restituisce l'ID di test, il conteggio delle attività, il tipo di test, tutte le attività IDs e il prefisso e li passa alla funzione task-runner.

  8. La funzione task-runner AWS Lambda viene eseguita nuovamente, questa volta lanciando una singola attività Amazon ECS che funge da nodo leader. Questa attività ECS invia un messaggio di avvio del test a ciascuna delle attività del lavoratore per avviare i test contemporaneamente.

  9. La funzione task-status-checker AWS Lambda verifica nuovamente se le attività di Amazon ECS sono in esecuzione con lo stesso ID di test. Se le attività sono ancora in esecuzione, attende un minuto e verifica nuovamente. Quando non ci sono attività Amazon ECS in esecuzione, restituisce l'ID di test, il conteggio delle attività, il tipo di test e il prefisso.

  10. Quando la funzione task-runner AWS Lambda esegue le attività di Amazon ECS nel cluster AWS Fargate, ogni attività scarica la configurazione di test da Amazon S3 e avvia il test.

  11. Una volta eseguiti i test, il tempo di risposta medio, il numero di utenti simultanei, il numero di richieste riuscite e il numero di richieste non riuscite per ogni attività vengono registrati in Amazon CloudWatch e possono essere visualizzati in una CloudWatch dashboard.

  12. Se hai incluso dati in tempo reale nel test, la soluzione filtra i risultati dei test in tempo reale CloudWatch utilizzando un filtro di abbonamento. Quindi la soluzione passa i dati a una funzione Lambda.

  13. La funzione Lambda struttura quindi i dati ricevuti e li pubblica su un argomento di AWS IoT Core.

  14. La console Web sottoscrive l'argomento AWS IoT Core per il test e riceve i dati pubblicati sull'argomento per rappresentare graficamente i dati in tempo reale durante l'esecuzione del test.

  15. Al termine del test, le immagini del contenitore esportano un report dettagliato come file XML in Amazon S3. A ogni file viene assegnato un UUID per il nome del file. Ad esempio, s3://dlte-bucket/test-scenarios/ <$TEST_ID> /results/ <$UUID> .json.

  16. Quando i file XML vengono caricati su Amazon S3, la funzione results-parser AWS Lambda legge i risultati nei file XML a partire dal prefisso e analizza e aggrega tutti i risultati in un unico risultato riepilogativo.

  17. La funzione results-parser AWS Lambda scrive il risultato aggregato in una tabella Amazon DynamoDB.