Eseguire il test di 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 lavoratori 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-worker
generati automaticamente in/test/asset-compute/simple-worker
perché 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-parameterized
per verificare la corretta esecuzione del processo di lavoro che genera una rappresentazione PNG. -
Nella cartella
success-parameterized
aggiungere il file di input di test per questo test case e denominarlofile.jpg
. -
Nella cartella
success-parameterized
, aggiungere un nuovo file denominatoparams.json
che definisce i parametri di input del processo di lavoro:code language-json { "size": "400", "contrast": "0.25", "brightness": "-0.50" }
Sono gli stessi valori di chiave passati nella definizione del profilo di 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-contrast
per testare un'esecuzione errata del processo di lavoro a causa di un valore del parametrocontrast
non valido. -
Nella cartella
error-contrast
aggiungere 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.instructions
controlli di validità convalidati dal test case. -
Nella cartella
error-contrast
, aggiungere un nuovo file denominatoparams.json
che definisce i parametri di input del processo di lavoro con il contenuto:code language-json { "contrast": "10", "errorReason": "rendition_instructions_error" }
- Impostare i parametri
contrast
su10
. 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
errorReason
sul "motivo" associato all'errore previsto. Questo parametro di contrasto non valido genera l'errore personalizzato,RenditionInstructionsError
, quindi impostaerrorReason
sul motivo dell'errore oppurerendition_instructions_error
per 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: