Asset compute Worker testen

Das Asset compute-Projekt definiert ein Muster zum einfachen Erstellen und Ausführen von Tests von Asset compute-Sekundären.

Anatomie eines Worker-Tests

asset compute-Worker-Tests sind in Test-Suites unterteilt, und in jeder Test-Suite werden ein oder mehrere Testfälle durchgeführt, in denen eine Testbedingung bestätigt wird.

Die Teststruktur in einem Asset compute-Projekt sieht wie folgt aus:

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

Jeder Testcast kann die folgenden Dateien enthalten:

  • file.<extension>
    • Zu testende Quelldatei (Erweiterung kann alles außer .link sein)
    • Erforderlich
  • rendition.<extension>
    • Erwartete Ausgabedarstellung
    • Erforderlich, außer für Fehlertests
  • params.json
    • JSON-Anweisungen für einzelne Ausgabedarstellungen
    • Optional
  • validate
    • Ein Skript, das erwartete und tatsächliche Ausgabedarstellungs-Dateipfade als Argumente abruft und Exitcode 0 zurückgeben muss, wenn das Ergebnis in Ordnung ist, oder einen Exitcode ungleich null, wenn die Überprüfung oder der Vergleich fehlgeschlagen ist.
    • Optional, standardmäßig der Befehl diff
    • Verwenden Sie ein Shell-Skript, das einen Docker-Ausführungsbefehl für die Verwendung verschiedener Validierungs-Tools umbricht
  • mock-<host-name>.json

Schreiben eines Testfalls

In diesem Testfall wird die parametrisierte Eingabe (params.json) für die Eingabedatei (file.jpg) bestätigt, die die erwartete PNG-Wiedergabe (rendition.png) generiert.

  1. Löschen Sie zunächst den automatisch generierten Testfall simple-worker unter /test/asset-compute/simple-worker, da dieser ungültig ist, da unser Worker die Quelle nicht mehr einfach in die Ausgabedarstellung kopiert.

  2. Erstellen Sie unter /test/asset-compute/worker/success-parameterized einen neuen Ordner für Testfälle, um eine erfolgreiche Ausführung des Sekundärs zu testen, der eine PNG-Ausgabedarstellung generiert.

  3. Fügen Sie im Ordner success-parameterized die Eingabedatei test für diesen Testfall hinzu und nennen Sie sie file.jpg.

  4. Fügen Sie im Ordner success-parameterized eine neue Datei mit dem Namen params.json hinzu, die die Eingabeparameter des Sekundärs definiert:

    { 
        "size": "400",
        "contrast": "0.25",
        "brightness": "-0.50"
    }
    

    Hierbei handelt es sich um dieselben Schlüssel/Werte, die an die Asset compute-Profildefinition des Entwicklungs-Tools übergeben werden, abzüglich des Schlüssels worker.

  5. Fügen Sie diesem Testfall die erwartete Ausgabedarstellungsdatei hinzu und nennen Sie sie rendition.png. Diese Datei stellt die erwartete Ausgabe des Sekundärs für die angegebene Eingabe dar file.jpg.

  6. Führen Sie in der Befehlszeile die Tests für den Projektstamm durch, indem Sie aio app test ausführen.

    • Stellen Sie sicher, dass Docker Desktop und unterstützende Docker-Bilder installiert und gestartet sind.
    • Beenden Sie alle laufenden Entwicklungstool-Instanzen.

Test - Erfolg

Schreiben eines Testfalls zur Fehlerprüfung

In diesem Testfall wird geprüft, ob der Worker den entsprechenden Fehler ausgibt, wenn der Parameter contrast auf einen ungültigen Wert gesetzt ist.

  1. Erstellen Sie einen neuen Ordner für Testfälle unter /test/asset-compute/worker/error-contrast , um eine fehlerhafte Ausführung des Sekundärs aufgrund eines ungültigen contrast-Parameterwerts zu testen.

  2. Fügen Sie im Ordner error-contrast die Eingabedatei test für diesen Testfall hinzu und nennen Sie sie file.jpg. Der Inhalt dieser Datei ist für diesen Test nicht wesentlich. Er muss nur vorhanden sein, um die Prüfung "Beschädigte Quelle"zu beenden, damit die rendition.instructions-Validierungsprüfungen, die dieser Testfall validiert, erreicht werden können.

  3. Fügen Sie im Ordner error-contrast eine neue Datei mit dem Namen params.json hinzu, die die Eingabeparameter des Sekundärs mit dem Inhalt definiert:

    {
        "contrast": "10",
        "errorReason": "rendition_instructions_error"
    }
    
  4. Da während einer fehlerhaften Ausführung keine Ausgabedarstellung generiert werden sollte, ist keine rendition.<extension>-Datei erforderlich.

  5. Führen Sie die Test-Suite aus dem Stammverzeichnis des Projekts aus, indem Sie den Befehl aio app test ausführen.

    • Stellen Sie sicher, dass Docker Desktop und unterstützende Docker-Bilder installiert und gestartet sind.
    • Beenden Sie alle laufenden Entwicklungstool-Instanzen.

Test - Fehlerkontrast

Testfälle bei GitHub

Die endgültigen Testfälle sind auf Github verfügbar unter:

Fehlerbehebung

Auf dieser Seite