Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ Keep selected-run exports from representative open and recently closed runs. Inc

### Embedded PHP {#embedded-php-replay}

Use Workflow **2.11.4 or newer** for `workflow:v2:history-export` to preserve whole/nested floating-point kinds and signed zero, such as `1.0` and `-0.0`, in new JSON bundles. Check `composer.lock` in the artifact that actually runs `artisan`; a separately selected installation pin may be older. The [normal installed writer qualification](https://github.com/durable-workflow/workflow/issues/912#issuecomment-6364964505) covers compact/pretty output for waiting/completed runs with the original checksum untouched. This qualifies the writer and integrity check, not your candidate workflow code.

Older lossy JSON remains invalid: 2.11.4 does not reinterpret or repair it. If the authoritative store and original payload bytes are available, re-export using the fixed producer. Keep the generated bundle unchanged; never coerce numbers or edit a checksum/version to force acceptance. Still run candidate replay and enforce the promotion gate below.

Export from the application's owning store. Set `WORKFLOW_ID` and `RUN_ID` to the exact selected instance and run:

```bash
Expand Down Expand Up @@ -44,6 +48,8 @@ exit($allowed ? 0 : 1);

### Service SDKs {#service-sdk-replay}

Server images, their bundled CLI and `dw`/SDK HTTP exports depend on the actual Server producer. The Core 2.11.4 release alone does not upgrade or qualify those artifacts. Follow the separate [Server #692 package-pin, image and installed-transport qualification](https://github.com/durable-workflow/server/issues/692); do not infer an HTTP fix from the Core tag. Keep refusing invalid bundles.

**PHP:** use `DurableWorkflow\Worker\Replayer::replay()` with the application's codec, callable, event list, original input, queue and recorded task identity. Let `NonDeterministicWorkflow` fail the test and assert the expected commands/result. See [PHP replay testing](https://php.durable-workflow.com/build/testing/).

**Python:** use `Replayer.replay()` or `verify_replay()` against registered candidate workflows and assert the expected outcome. A returned object alone is not a passing assertion. Supply the original decoded `start_input` when events omit it: Core exports store it under `payloads.arguments`. Preserve recorded type, IDs and codec. See [Python replay APIs](https://python.durable-workflow.com/sdk-reference/#replay-captured-histories). `--simulate-bundles` checks integrity, not candidate code; current schema-2 compatibility is tracked in [Python #173](https://github.com/durable-workflow/sdk-python/issues/173). Do not rewrite a version or checksum to bypass refusal.
Expand Down
6 changes: 6 additions & 0 deletions i18n/de/docusaurus-plugin-content-docs/current/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ Bewahren Sie Exporte ausgewählter Runs aus repräsentativen offenen und kürzli

### Eingebettetes PHP {#embedded-php-replay}

Verwenden Sie Workflow **2.11.4 oder neuer** für `workflow:v2:history-export`, um ganzzahlige und verschachtelte Gleitkommawerte sowie das Vorzeichen von Null, etwa `1.0` und `-0.0`, in neuen JSON-Bundles zu erhalten. Prüfen Sie `composer.lock` im Artefakt, das `artisan` tatsächlich ausführt; die separat gewählte Installation kann eine ältere Version festlegen. Die [Abnahme des normal installierten Writers](https://github.com/durable-workflow/workflow/issues/912#issuecomment-6364964505) umfasst kompakte/formatierte Ausgaben wartender/abgeschlossener Läufe mit unveränderter ursprünglicher Prüfsumme. Das qualifiziert Writer und Integritätsprüfung, nicht Ihren Workflow-Kandidaten.

Älteres verlustbehaftetes JSON bleibt ungültig: 2.11.4 interpretiert oder repariert es nicht neu. Wenn maßgeblicher Speicher und ursprüngliche Payload-Bytes verfügbar sind, exportieren Sie mit dem korrigierten Producer erneut. Lassen Sie das erzeugte Bundle unverändert; erzwingen Sie keine Annahme durch Zahlenkonvertierung oder Änderungen an Prüfsumme/Version. Führen Sie weiterhin Kandidaten-Replay und die nachstehende Freigabeprüfung aus.

Exportieren Sie aus dem Datenspeicher der Anwendung. Setzen Sie `WORKFLOW_ID` und `RUN_ID` auf die genau ausgewählte Instanz und den Run:

```bash
Expand Down Expand Up @@ -44,6 +48,8 @@ exit($allowed ? 0 : 1);

### Service-SDKs {#service-sdk-replay}

Server-Images, deren enthaltene CLI und HTTP-Exporte von `dw`/SDK hängen vom tatsächlichen Server-Producer ab. Der Core-Release 2.11.4 allein aktualisiert oder qualifiziert diese Artefakte nicht. Beachten Sie die separate [Paket-Pin-, Image- und installierte Transportqualifikation in Server #692](https://github.com/durable-workflow/server/issues/692); leiten Sie keine HTTP-Korrektur aus dem Core-Tag ab. Ungültige Bundles bleiben abzulehnen.

**PHP:** verwenden Sie `DurableWorkflow\Worker\Replayer::replay()` mit dem Codec der Anwendung, der aufrufbaren Funktion, Ereignisliste, ursprünglichen Eingabe, Queue und aufgezeichneten Task-Identität. Lassen Sie `NonDeterministicWorkflow` den Test fehlschlagen und prüfen Sie erwartete Befehle und Ergebnisse. Siehe [PHP-Replay-Tests](https://php.durable-workflow.com/build/testing/).

**Python:** verwenden Sie `Replayer.replay()` oder `verify_replay()` mit registrierten Kandidaten-Workflows und prüfen Sie das erwartete Ergebnis. Ein zurückgegebenes Objekt allein ist kein erfolgreicher Test. Übergeben Sie die ursprüngliche dekodierte `start_input`, wenn Ereignisse sie nicht enthalten: Core-Exporte speichern sie unter `payloads.arguments`. Behalten Sie aufgezeichneten Typ, IDs und Codec bei. Siehe [Python-Replay-APIs](https://python.durable-workflow.com/sdk-reference/#replay-captured-histories). `--simulate-bundles` prüft Integrität und keinen Kandidatencode. Die aktuelle Kompatibilität mit Schema 2 wird in [Python #173](https://github.com/durable-workflow/sdk-python/issues/173) verfolgt. Schreiben Sie weder Version noch Prüfsumme um, um eine Ablehnung zu umgehen.
Expand Down
2 changes: 1 addition & 1 deletion i18n/de/source-hashes.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,6 @@
"sdk-neutrality.md": "7b0714c123ade4904591870fc20e9a797da1e5485b2a6c87ca3eaa00c5de6ed6",
"sponsors.md": "e85e14375743ca8fa50e3a48f894b160e28272573aa88480064f74010ebee98a",
"support.md": "706807b3902599dda6080f632ec1f893017ea18bbe9585f533dcdbd6d85f4621",
"testing.md": "c26048b42e1589d9e8db4a7b48ac8862808d25ca74fb389c41bac73456a87ecc",
"testing.md": "b80db83e74647e9559c1f0db442dcfe7c0e636d8c9842583c69f9ae46d68633d",
"waterline-operator-api.md": "2aca03b2c14100060b40be0bb033a82525ba924908834e9060ec746ead26f36d"
}
6 changes: 6 additions & 0 deletions i18n/es/docusaurus-plugin-content-docs/current/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ Conserve exportaciones de ejecuciones seleccionadas de workflows representativos

### PHP integrado {#embedded-php-replay}

Use Workflow **2.11.4 o posterior** para `workflow:v2:history-export` a fin de conservar tipos flotantes de valor entero, flotantes anidados y el signo del cero, como `1.0` y `-0.0`, en nuevos bundles JSON. Revise `composer.lock` en el artefacto que realmente ejecuta `artisan`; la combinación de instalación separada puede fijar una versión anterior. La [aceptación del escritor instalado normalmente](https://github.com/durable-workflow/workflow/issues/912#issuecomment-6364964505) cubre salida compact/pretty de ejecuciones en espera/completadas sin reemplazar la checksum original. Verifica el escritor y la integridad, no el código candidato de su workflow.

El JSON antiguo con pérdida sigue siendo inválido: 2.11.4 no lo reinterpreta ni repara. Si dispone del almacén autoritativo y los bytes originales del payload, vuelva a exportar con el productor corregido. Mantenga el bundle generado intacto; no convierta números ni edite checksum/versión para forzar aceptación. Siga ejecutando replay del candidato y el control de promoción siguiente.

Exporte desde el almacén que pertenece a la aplicación. Establezca `WORKFLOW_ID` y `RUN_ID` para la instancia y ejecución seleccionadas exactamente:

```bash
Expand Down Expand Up @@ -44,6 +48,8 @@ exit($allowed ? 0 : 1);

### SDK de servicio {#service-sdk-replay}

Las imágenes Server, su CLI incluido y las exportaciones HTTP de `dw`/SDK dependen del productor Server real. La versión Core 2.11.4 por sí sola no actualiza ni cualifica esos artefactos. Siga la [cualificación separada de pin de paquete, imagen y transportes instalados de Server #692](https://github.com/durable-workflow/server/issues/692); no deduzca una corrección HTTP del tag Core. Mantenga el rechazo de bundles inválidos.

**PHP:** use `DurableWorkflow\Worker\Replayer::replay()` con el codec de la aplicación, el callable, la lista de eventos, la entrada original, la cola y la identidad registrada de la tarea. Deje que `NonDeterministicWorkflow` haga fallar la prueba y compruebe comandos y resultados esperados. Consulte las [pruebas de replay de PHP](https://php.durable-workflow.com/build/testing/).

**Python:** use `Replayer.replay()` o `verify_replay()` con los workflows candidatos registrados y compruebe el resultado esperado. Recibir un objeto no es, por sí solo, una aserción satisfactoria. Proporcione el `start_input` original decodificado cuando los eventos no lo incluyan: Core lo almacena en `payloads.arguments`. Conserve el tipo, los ID y el codec registrados. Consulte las [API de replay de Python](https://python.durable-workflow.com/sdk-reference/#replay-captured-histories). `--simulate-bundles` comprueba integridad, no código candidato; la compatibilidad actual con el esquema 2 se sigue en [Python #173](https://github.com/durable-workflow/sdk-python/issues/173). No reescriba la versión ni la suma de comprobación para evitar un rechazo.
Expand Down
2 changes: 1 addition & 1 deletion i18n/es/source-hashes.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,6 @@
"sdk-neutrality.md": "7b0714c123ade4904591870fc20e9a797da1e5485b2a6c87ca3eaa00c5de6ed6",
"sponsors.md": "e85e14375743ca8fa50e3a48f894b160e28272573aa88480064f74010ebee98a",
"support.md": "706807b3902599dda6080f632ec1f893017ea18bbe9585f533dcdbd6d85f4621",
"testing.md": "c26048b42e1589d9e8db4a7b48ac8862808d25ca74fb389c41bac73456a87ecc",
"testing.md": "b80db83e74647e9559c1f0db442dcfe7c0e636d8c9842583c69f9ae46d68633d",
"waterline-operator-api.md": "2aca03b2c14100060b40be0bb033a82525ba924908834e9060ec746ead26f36d"
}
6 changes: 6 additions & 0 deletions i18n/fr/docusaurus-plugin-content-docs/current/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ Conservez les exports d’exécutions sélectionnées parmi des workflows ouvert

### PHP embarqué {#embedded-php-replay}

Utilisez Workflow **2.11.4 ou ultérieur** pour `workflow:v2:history-export` afin de préserver les types flottants de valeur entière, les flottants imbriqués et le signe du zéro, comme `1.0` et `-0.0`, dans les nouveaux bundles JSON. Vérifiez `composer.lock` dans l’artefact exécutant réellement `artisan` ; la combinaison sélectionnée séparément peut fixer une ancienne version. L’[acceptation du writer installé normalement](https://github.com/durable-workflow/workflow/issues/912#issuecomment-6364964505) couvre les sorties compact/pretty d’exécutions en attente/terminées sans remplacer la checksum originale. Cela qualifie le writer et l’intégrité, pas votre code de workflow candidat.

Un ancien JSON ayant perdu de l’information reste invalide : 2.11.4 ne le réinterprète ni ne le répare. Si le stockage faisant autorité et les octets de payload originaux sont disponibles, réexportez avec le producteur corrigé. Conservez le bundle généré intact ; ne convertissez pas les nombres et ne modifiez pas checksum/version pour forcer l’acceptation. Exécutez toujours le replay candidat et le contrôle de promotion ci-dessous.

Exportez depuis le stockage dont l’application est propriétaire. Définissez `WORKFLOW_ID` et `RUN_ID` pour l’instance et l’exécution précisément sélectionnées :

```bash
Expand Down Expand Up @@ -44,6 +48,8 @@ exit($allowed ? 0 : 1);

### SDK en mode service {#service-sdk-replay}

Les images Server, leur CLI intégré et les exports HTTP de `dw`/SDK dépendent du producteur Server réel. La publication Core 2.11.4 seule ne met pas à jour ni ne qualifie ces artefacts. Suivez la [qualification distincte du pin de paquet, de l’image et des transports installés de Server #692](https://github.com/durable-workflow/server/issues/692) ; ne déduisez pas une correction HTTP du tag Core. Continuez à refuser les bundles invalides.

**PHP :** utilisez `DurableWorkflow\Worker\Replayer::replay()` avec le codec de l’application, le callable, la liste d’événements, l’entrée d’origine, la file et l’identité enregistrée de la tâche. Laissez `NonDeterministicWorkflow` faire échouer le test et vérifiez les commandes et résultats attendus. Voir les [tests de relecture PHP](https://php.durable-workflow.com/build/testing/).

**Python :** utilisez `Replayer.replay()` ou `verify_replay()` avec les workflows candidats enregistrés et vérifiez le résultat attendu. Le simple retour d’un objet ne constitue pas une assertion réussie. Fournissez le `start_input` d’origine décodé si les événements l’omettent : Core le stocke dans `payloads.arguments`. Préservez le type, les identifiants et le codec enregistrés. Voir les [API de relecture Python](https://python.durable-workflow.com/sdk-reference/#replay-captured-histories). `--simulate-bundles` vérifie l’intégrité, pas le code candidat. La compatibilité actuelle avec le schéma 2 est suivie dans [Python #173](https://github.com/durable-workflow/sdk-python/issues/173). Ne réécrivez ni version ni somme de contrôle pour contourner un refus.
Expand Down
2 changes: 1 addition & 1 deletion i18n/fr/source-hashes.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,6 @@
"sdk-neutrality.md": "7b0714c123ade4904591870fc20e9a797da1e5485b2a6c87ca3eaa00c5de6ed6",
"sponsors.md": "e85e14375743ca8fa50e3a48f894b160e28272573aa88480064f74010ebee98a",
"support.md": "706807b3902599dda6080f632ec1f893017ea18bbe9585f533dcdbd6d85f4621",
"testing.md": "c26048b42e1589d9e8db4a7b48ac8862808d25ca74fb389c41bac73456a87ecc",
"testing.md": "b80db83e74647e9559c1f0db442dcfe7c0e636d8c9842583c69f9ae46d68633d",
"waterline-operator-api.md": "2aca03b2c14100060b40be0bb033a82525ba924908834e9060ec746ead26f36d"
}
6 changes: 6 additions & 0 deletions i18n/ja/docusaurus-plugin-content-docs/current/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ sidebar_position: 9

### 組み込み PHP {#embedded-php-replay}

新しい JSON bundle で整数値の浮動小数点数、入れ子の浮動小数点数、ゼロの符号(`1.0` や `-0.0`)を保つには、`workflow:v2:history-export` に Workflow **2.11.4 以降**を使ってください。実際に `artisan` を実行する成果物の `composer.lock` を確認します。別途選択された構成は旧版を固定している場合があります。[通常インストールの writer 検証](https://github.com/durable-workflow/workflow/issues/912#issuecomment-6364964505)は、待機中/完了済み実行の compact/pretty 出力を、元の checksum を置き換えずに確認しています。これは writer と整合性の検証であり、候補 workflow コードの検証ではありません。

情報を失った旧 JSON は無効なままです。2.11.4 は再解釈や修復をしません。正本のストアと元の payload バイトが利用できる場合、修正済み producer で再エクスポートしてください。生成 bundle は変更せず、数値の変換や checksum/バージョンの書き換えで強制的に通さないでください。引き続き候補の replay と以下の昇格判定を実行します。

アプリケーションが所有するストアからエクスポートします。`WORKFLOW_ID` と `RUN_ID` に、選択したインスタンスとランの正確な ID を設定します。

```bash
Expand Down Expand Up @@ -44,6 +48,8 @@ exit($allowed ? 0 : 1);

### サービス SDK {#service-sdk-replay}

Server イメージ、内蔵 CLI、`dw`/SDK の HTTP エクスポートは、実際の Server producer に依存します。Core 2.11.4 の公開だけでは成果物の更新や検証にはなりません。[Server #692 の独立したパッケージ固定・イメージ・インストール済み transport 検証](https://github.com/durable-workflow/server/issues/692)に従い、Core tag から HTTP 修正を推定しないでください。無効な bundle は引き続き拒否します。

**PHP:** アプリケーションのコーデック、呼び出し可能オブジェクト、イベント一覧、元の入力、キュー、記録されたタスク ID を指定して `DurableWorkflow\Worker\Replayer::replay()` を使います。`NonDeterministicWorkflow` でテストを失敗させ、期待するコマンドと結果を検証してください。[PHP のリプレイテスト](https://php.durable-workflow.com/build/testing/)を参照してください。

**Python:** 登録した候補ワークフローに対して `Replayer.replay()` または `verify_replay()` を使い、期待する結果を検証します。オブジェクトが返るだけではテストの成功になりません。イベントに入力が含まれない場合は、デコードした元の `start_input` を渡してください。Core のエクスポートでは `payloads.arguments` に保存されます。記録された型、ID、コーデックを維持します。[Python のリプレイ API](https://python.durable-workflow.com/sdk-reference/#replay-captured-histories)を参照してください。`--simulate-bundles` が確認するのは整合性であり、候補コードではありません。現行スキーマ 2 との互換性は [Python #173](https://github.com/durable-workflow/sdk-python/issues/173) で管理しています。拒否を回避するためにバージョンやチェックサムを書き換えないでください。
Expand Down
2 changes: 1 addition & 1 deletion i18n/ja/source-hashes.json
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,6 @@
"sdk-neutrality.md": "7b0714c123ade4904591870fc20e9a797da1e5485b2a6c87ca3eaa00c5de6ed6",
"sponsors.md": "e85e14375743ca8fa50e3a48f894b160e28272573aa88480064f74010ebee98a",
"support.md": "706807b3902599dda6080f632ec1f893017ea18bbe9585f533dcdbd6d85f4621",
"testing.md": "c26048b42e1589d9e8db4a7b48ac8862808d25ca74fb389c41bac73456a87ecc",
"testing.md": "b80db83e74647e9559c1f0db442dcfe7c0e636d8c9842583c69f9ae46d68633d",
"waterline-operator-api.md": "2aca03b2c14100060b40be0bb033a82525ba924908834e9060ec746ead26f36d"
}
Loading
Loading