Testare un processo di lavoro Asset Compute
Il progetto Asset Compute definisce un modello per la creazione e l'esecuzione di test dei processi di lavoro Asset Compute.
Anatomia di un test di lavoro
I test dei processi di lavoro di Asset Compute vengono suddivisi in suite di test e, all’interno di ogni suite di test, uno o più casi di test affermano una condizione da testare.
La struttura dei test in un progetto Asset Compute è la seguente:
/actions/<worker-name>/index.js
...
/test/
asset-compute/
<worker-name>/ <--- Test suite for the worker, must match the yaml key for this worker in manifest.yml
<test-case-1>/ <--- Specific test case
file.jpg <--- Input file (ie. `source.path` or `source.url`)
params.json <--- Parameters (ie. `rendition.instructions`)
rendition.png <--- Expected output file (ie. `rendition.path`)
<test-case-2>/ <--- Another specific test case for this worker
...
Ogni cast di test può avere i seguenti file:
-
file.<extension>- File Source da testare (l'estensione può essere qualsiasi cosa tranne
.link) - Obbligatorio
- File Source da testare (l'estensione può essere qualsiasi cosa tranne
-
rendition.<extension>- Rendering previsto
- Obbligatorio, ad eccezione della verifica degli errori
-
params.json- Istruzioni JSON per la rappresentazione singola
- Facoltativo
-
validate- Uno script che ottiene come argomenti i percorsi previsti ed effettivi del file di rendering e deve restituire il codice di uscita 0 se il risultato è ok, o un codice di uscita diverso da zero se la convalida o il confronto non è riuscito.
- Facoltativo, viene impostato automaticamente sul comando
diff - Utilizza uno script della shell che racchiude un comando di esecuzione docker per l’utilizzo di diversi strumenti di convalida
-
mock-<host-name>.json- Risposte HTTP in formato JSON per chiamate al servizio esterno in modalità beffa.
- Facoltativo, utilizzato solo se il codice del lavoratore effettua proprie richieste HTTP
Scrittura di un test case
Questo caso di test afferma l'input con parametri (params.json) per il file di input (file.jpg) genera la rappresentazione PNG prevista (rendition.png).
-
Eliminare prima il caso dei test di
simple-workergenerati automaticamente in/test/asset-compute/simple-workerperché non è valido, in quanto il processo di lavoro non copia più semplicemente l'origine nella rappresentazione. -
Creare una nuova cartella dei test case in
/test/asset-compute/worker/success-parameterizedper verificare la corretta esecuzione del processo di lavoro che genera una rappresentazione PNG. -
Nella cartella
success-parameterizedaggiungere il file di input di test per questo test case e denominarlofile.jpg. -
Nella cartella
success-parameterized, aggiungere un nuovo file denominatoparams.jsonche definisce i parametri di input del processo di lavoro:code language-json { "size": "400", "contrast": "0.25", "brightness": "-0.50" }Questi sono gli stessi valori di chiave passati nella definizione del profilo Asset Compute🔗 dello strumento di sviluppo , meno la chiave
worker. -
Aggiungi il file di rendering previsto a questo test case e denominalo
rendition.png. Questo file rappresenta l'output previsto del processo di lavoro per l'input specificatofile.jpg. -
Dalla riga di comando, eseguire i test della directory principale del progetto eseguendo
aio app test- Verificare che Docker Desktop e le immagini Docker di supporto siano installati e avviati
- Termina tutte le istanze dello strumento di sviluppo in esecuzione
Scrittura di un test case di controllo degli errori
Questo test case verifica che il processo di lavoro generi l'errore appropriato quando il parametro contrast è impostato su un valore non valido.
-
Creare una nuova cartella dei test case in
/test/asset-compute/worker/error-contrastper testare un'esecuzione errata del processo di lavoro a causa di un valore del parametrocontrastnon valido. -
Nella cartella
error-contrastaggiungere il file di input di test per questo test case e denominarlofile.jpg. Il contenuto di questo file non è rilevante per il test. È sufficiente che esista per superare il controllo "Origine danneggiata" per raggiungere irendition.instructionscontrolli di validità convalidati dal test case. -
Nella cartella
error-contrast, aggiungere un nuovo file denominatoparams.jsonche definisce i parametri di input del processo di lavoro con il contenuto:code language-json { "contrast": "10", "errorReason": "rendition_instructions_error" }- Impostare i parametri
contrastsu10. Valore non valido. Il contrasto deve essere compreso tra -1 e 1 per generare unRenditionInstructionsError. - Asserire che l'errore appropriato viene generato nei test impostando la chiave
errorReasonsul "motivo" associato all'errore previsto. Questo parametro di contrasto non valido genera l'errore personalizzato,RenditionInstructionsError, quindi impostaerrorReasonsul motivo dell'errore oppurerendition_instructions_errorper verificare che sia stato generato.
- Impostare i parametri
-
Poiché durante un'esecuzione errata non deve essere generata alcuna rappresentazione, non è necessario alcun file
rendition.<extension>. -
Eseguire il gruppo di test dalla radice del progetto eseguendo il comando
aio app test- Verificare che Docker Desktop e le immagini Docker di supporto siano installati e avviati
- Termina tutte le istanze dello strumento di sviluppo in esecuzione
Casi di test su Github
I test case finali sono disponibili su Github all’indirizzo: