Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Genom att testa DINA WASM-moduler på flera nivåer kan du fånga upp problem tidigt och verifiera bearbetningslogiken innan du distribuerar till produktion. Den här artikeln beskriver hur du enhetstestar dina moduler, inspekterar WASM-utdata och kör lokala och slutpunkt-till-slutpunkt-tester för Azure IoT Operations dataflödesdiagram.
Innan du slutför stegen i den här artikeln konfigurerar du din lokala utvecklingsmiljö och skapar och kör ett grafprogram lokalt. Mer information finns i Skapa WASM-moduler för dataflöden.
Förutsättningar
Slutför de krav som anges i Skapa WASM-moduler för dataflöden.
Enhetstestning
Extrahera kärnlogik i vanliga funktioner som du kan testa utan 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
Inspektera WASM-utdata
Kontrollera att modulen exporterar de förväntade gränssnitten innan du skickar till ett register:
wasm-tools component wit your-module.wasm
Detta visar WIT-gränssnitten som modulen implementerar. Kontrollera att du ser den förväntade map, filter, eller branch export.
Lokal test med dataflow-dev CLI
Med dataflow-dev CLI kan du testa dina WASM-moduler lokalt mot en grafdefinition utan att distribuera till ett kluster. CLI använder Docker-containrar för att simulera dataflödeskörningen.
Skapa ett testfall genom att skapa en katalog med följande struktur:
my-test/
my-test.test.yaml # Test descriptor
input/ # Input data files
temperature.json
expected/ # Expected output
expected.json
Definiera testet i .test.yaml filen:
name: "Temperature F to C conversion"
graph: "../graph-simple.yaml"
input: "./input"
expected: "./expected/expected.json"
timeout: 90000
select: ["payload"]
Fältet graph pekar på grafdefinitionen, input innehåller testdata och expected har utdata att jämföra med. Fältet select anger vilka fält i utdata som ska jämföras.
Kör testet:
dataflow-dev run start
dataflow-dev build --app .
dataflow-dev test --app . my-test
dataflow-dev run stop
En fullständig uppsättning testexempel finns i testkatalogen i exempellagringsplatsen.
Slutpunkt till slutpunkt-testning i ett kluster
För integreringstestning distribuerar du modulen till ett utvecklingskluster och använder MQTT för att skicka testdata:
- Skicka modulen till ett testregister.
- Distribuera en DataflowGraph som pekar på testregistret.
- Prenumerera på ämnet:
mosquitto_sub -h localhost -t "output/topic" -v - Publicera testmeddelanden:
mosquitto_pub -h localhost -t "input/topic" -m '{"temperature": {"value": 72}}' - Kontrollera att utdata matchar förväntningarna.
- Kontrollera poddloggarna efter fel:
kubectl logs -l app=dataflow-dev -n azure-iot-operations --tail=50
Mer information finns i Distribuera moduler och grafdefinitioner och Konfigurera registerslutpunkter.