Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il test dei moduli WASM a più livelli consente di rilevare i problemi in anticipo e di convalidare la logica di elaborazione prima della distribuzione nell'ambiente di produzione. Questo articolo descrive come eseguire unit test dei moduli, esaminare l'output WASM ed eseguire test locali e end-to-end per i grafici del flusso di dati Azure IoT Operations.
Prima di completare i passaggi descritti in questo articolo, configurare l'ambiente di sviluppo locale ed eseguire un'applicazione graph in locale. Per altre informazioni, vedere Creare moduli WASM per i flussi di dati.
Prerequisiti
Completare i prerequisiti elencati in Compilare moduli WASM per i flussi di dati.
Test unitario
Estrarre la logica di base in funzioni semplici che è possibile testare senza WASM:
// In src/lib.rs - extract the conversion logic
pub fn fahrenheit_to_celsius(f: f64) -> f64 {
(f - 32.0) * 5.0 / 9.0
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_boiling_point() {
assert!((fahrenheit_to_celsius(212.0) - 100.0).abs() < 0.001);
}
#[test]
fn test_freezing_point() {
assert!((fahrenheit_to_celsius(32.0) - 0.0).abs() < 0.001);
}
#[test]
fn test_body_temperature() {
assert!((fahrenheit_to_celsius(98.6) - 37.0).abs() < 0.001);
}
}
cargo test # Runs tests without WASM target
Esaminare l'output WASM
Verificare che il modulo esporta le interfacce previste prima di eseguire il push in un registro:
wasm-tools component wit your-module.wasm
Vengono visualizzate le interfacce WIT implementate dal modulo. Verificare che venga visualizzata l'esportazione prevista map, filter o branch.
Test locali con la CLI aio-dataflow
L'interfaccia della aio-dataflow riga di comando consente di testare i moduli WASM localmente contro una definizione del grafo senza distribuirli in un cluster. L'interfaccia della riga di comando usa contenitori Docker per simulare il runtime del flusso di dati.
Per creare un test case, creare una directory con la struttura seguente:
my-test/
my-test.test.yaml # Test descriptor
input/ # Input data files
temperature.json
expected/ # Expected output
expected.json
Definire il test nel .test.yaml file:
name: "Temperature F to C conversion"
graph: "../graph-simple.yaml"
input: "./input"
expected: "./expected/expected.json"
timeout: 90000
select: ["payload"]
Il graph campo punta alla definizione del grafo, input contiene i dati di test e expected ha l'output da confrontare. Il select campo specifica i campi dell'output da confrontare.
Eseguire il test:
aio-dataflow run start
aio-dataflow build --app .
aio-dataflow test --app . my-test
aio-dataflow run stop
Per un set completo di esempi di test, vedere la directory test-runner/tests nel repository degli esempi.
Test end-to-end su un cluster
Per i test di integrazione, distribuire il modulo in un cluster di sviluppo e usare MQTT per inviare dati di test:
- Spingere il modulo in un registro di test.
- Distribuire un DataflowGraph che punta o al registro di test.
- Iscriviti al topic di output:
mosquitto_sub -h localhost -t "output/topic" -v - Pubblicare messaggi di test:
mosquitto_pub -h localhost -t "input/topic" -m '{"temperature": {"value": 72}}' - Verificare che l'output corrisponda alle aspettative.
- Controllare la presenza di errori nei log dei pod:
kubectl logs -l app=aio-dataflow -n azure-iot-operations --tail=50
Per altre informazioni, vedere Distribuire moduli e definizioni di grafo e Configurare gli endpoint del Registro di sistema.
Contenuti correlati
- Compilare moduli WASM per i flussi di dati
- Eseguire il debug di moduli WASM
- Creare grafici WASM con stato incorporato utilizzando l'archivio degli stati
- Usare il registro degli schemi con i moduli WASM
- Informazioni sui moduli WebAssembly (WASM) e sulle definizioni di grafo per i grafici del flusso di dati