From 63ca2c13a870f45d48c9e3549190ed959dc9fc08 Mon Sep 17 00:00:00 2001 From: fvanroie Date: Sat, 2 Jan 2021 18:50:56 +0100 Subject: [PATCH] Add tavern tests --- test/config.yaml | 10 + test/test_label.tavern.yaml | 392 ++++++++++++++++++++++++++++++++++++ test/test_mqtt.tavern.yaml | 135 +++++++++++++ test/test_obj.tavern.yaml | 273 +++++++++++++++++++++++++ 4 files changed, 810 insertions(+) create mode 100644 test/config.yaml create mode 100644 test/test_label.tavern.yaml create mode 100644 test/test_mqtt.tavern.yaml create mode 100644 test/test_obj.tavern.yaml diff --git a/test/config.yaml b/test/config.yaml new file mode 100644 index 00000000..123df340 --- /dev/null +++ b/test/config.yaml @@ -0,0 +1,10 @@ +# config.yaml +--- + +name: Common test information +description: Connection information for MQTT Client + +variables: + host: 10.4.0.5 + port: 1883 + plate: plate35 \ No newline at end of file diff --git a/test/test_label.tavern.yaml b/test/test_label.tavern.yaml new file mode 100644 index 00000000..c641e1f8 --- /dev/null +++ b/test/test_label.tavern.yaml @@ -0,0 +1,392 @@ +# test_page.tavern.yaml +--- + +test_name: Label Standard Properties + +includes: + - !include config.yaml + +paho-mqtt: &mqtt_spec + client: + transport: tcp + client_id: tavern-tester + connect: + host: "{host}" + port: !int "{port:d}" + timeout: 3 + +stages: + - name: Page 1 + mqtt_publish: + topic: hasp/{plate}/command + payload: "page 1" + mqtt_response: + topic: hasp/{plate}/state/page + payload: "1" + timeout: 5 + delay_after: 0.1 + + - name: Clear page + mqtt_publish: + topic: hasp/{plate}/command/clearpage + payload: "" + delay_after: 0.1 + + - name: Create object + mqtt_publish: + topic: hasp/{plate}/command/jsonl + json: + objid: 12 + id: 1 + delay_after: 0.1 + + - name: Set x + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].x=50" + delay_after: 0.1 + - name: Get x + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].x" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + x: "50" + timeout: 5 + - name: Set x + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].x=25" + - name: Get x + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].x" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + x: "25" + timeout: 5 + + - name: Set y + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].y=50" + delay_after: 0.1 + - name: Get y + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].y" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + y: "50" + timeout: 5 + - name: Set y + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].y=25" + delay_after: 0.1 + - name: Get y + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].y" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + y: "25" + timeout: 5 + + - name: Set w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w=50" + delay_after: 0.1 + - name: Get w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + w: !anything + timeout: 5 + - name: Set w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w=25" + - name: Get w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + w: !anything + timeout: 5 + + - name: Set h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h=50" + delay_after: 0.1 + - name: Get h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + h: !anything + timeout: 5 + - name: Set h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h=25" + delay_after: 0.1 + - name: Get h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + h: !anything + timeout: 5 + + - name: Set mode + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].mode=crop" + delay_after: 0.1 + - name: Get mode + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].mode" + + - name: Set w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w=50" + delay_after: 0.1 + - name: Get w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + w: "50" + timeout: 5 + - name: Set w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w=25" + - name: Get w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + w: "25" + timeout: 5 + + - name: Set h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h=50" + delay_after: 0.1 + - name: Get h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + h: "50" + timeout: 5 + - name: Set h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h=45" + delay_after: 0.1 + - name: Get h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + h: "45" + timeout: 5 + + - name: Set enabled + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].enabled=0" + delay_after: 0.1 + - name: Get enabled + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].enabled" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + enabled: "0" + timeout: 5 + - name: Set enabled + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].enabled=1" + delay_after: 0.1 + - name: Get enabled + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].enabled" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + enabled: "1" + timeout: 5 + + - name: Set hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden=1" + delay_after: 0.1 + - name: Get hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + hidden: "1" + timeout: 5 + - name: Get vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + vis: "0" + timeout: 5 + + - name: Set hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden=0" + delay_after: 0.1 + - name: Get hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + hidden: "0" + timeout: 5 + - name: Get vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + vis: "1" + timeout: 5 + + - name: Set vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis=0" + delay_after: 0.1 + - name: Get hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + hidden: "1" + timeout: 5 + - name: Get vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + vis: "0" + timeout: 5 + + - name: Set vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis=1" + delay_after: 0.1 + - name: Get hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + hidden: "0" + timeout: 5 + - name: Get vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + vis: "1" + timeout: 5 + diff --git a/test/test_mqtt.tavern.yaml b/test/test_mqtt.tavern.yaml new file mode 100644 index 00000000..576dc288 --- /dev/null +++ b/test/test_mqtt.tavern.yaml @@ -0,0 +1,135 @@ +# test_page.tavern.yaml +--- + +test_name: Page command + +includes: + - !include config.yaml + +paho-mqtt: + client: + transport: tcp + client_id: tavern-tester + connect: + host: "{host}" + port: !int "{port:d}" + timeout: 3 + +stages: + - name: step 1 - Page test + mqtt_publish: + topic: hasp/{plate}/command/page + payload: "1" + mqtt_response: + topic: hasp/{plate}/state/page + payload: "1" + timeout: 5 + delay_after: 1 + - name: step 2 - Page test + mqtt_publish: + topic: hasp/{plate}/command + payload: "page 2" + mqtt_response: + topic: hasp/{plate}/state/page + payload: "2" + timeout: 5 + delay_after: 1 + - name: step 3 - Page test + mqtt_publish: + topic: hasp/{plate}/command + payload: "page=3" + mqtt_response: + topic: hasp/{plate}/state/page + payload: "3" + timeout: 5 + delay_after: 1 + - name: step 4 - Page test + mqtt_publish: + topic: hasp/{plate}/command/json + payload: "[\"page=0\"]" + mqtt_response: + topic: hasp/{plate}/state/page + payload: "0" + timeout: 3 + delay_after: 1 + - name: step 5 - Page test + mqtt_publish: + topic: hasp/{plate}/command/json + payload: "[\"page 300\"]" + mqtt_response: + topic: hasp/{plate}/state/page + payload: "0" + timeout: 3 + delay_after: 1 + +--- +test_name: Reboot Command + +includes: + - !include config.yaml + +paho-mqtt: + client: + transport: tcp + client_id: tavern-tester + connect: + host: "{host}" + port: !int "{port:d}" + timeout: 3 + +stages: + - name: Test reboot command + mqtt_publish: + topic: hasp/{plate}/command/reboot + payload: "" + mqtt_response: + topic: hasp/{plate}/status + payload: "OFF" + timeout: 20 + delay_after: 1 + +--- +test_name: Idle States + +includes: + - !include config.yaml + +paho-mqtt: + client: + transport: tcp + client_id: tavern-tester + connect: + host: "{host}" + port: !int "{port:d}" + timeout: 3 + +stages: + - name: Test idle + mqtt_publish: + topic: hasp/{plate}/command + payload: "wakeup" + mqtt_response: + topic: hasp/{plate}/state/idle + payload: "LONG" + timeout: 190 + delay_after: 1 + + - name: Test idle + mqtt_publish: + topic: hasp/{plate}/command + payload: "wakeup" + mqtt_response: + topic: hasp/{plate}/state/idle + payload: "SHORT" + timeout: 70 + delay_after: 1 + + - name: Test idle + mqtt_publish: + topic: hasp/{plate}/command + payload: "wakeup" + mqtt_response: + topic: hasp/{plate}/state/idle + payload: "OFF" + timeout: 3 + delay_after: 1 diff --git a/test/test_obj.tavern.yaml b/test/test_obj.tavern.yaml new file mode 100644 index 00000000..d6fab181 --- /dev/null +++ b/test/test_obj.tavern.yaml @@ -0,0 +1,273 @@ +# test_page.tavern.yaml +--- + +test_name: Obj Standard Properties + +includes: + - !include config.yaml + +paho-mqtt: + client: + transport: tcp + client_id: tavern-tester + connect: + host: "{host}" + port: !int "{port:d}" + timeout: 3 + +marks: + - parametrize: + key: x + vals: + - 120 + - 80 + - parametrize: + key: y + vals: + - 121 + - 81 + - parametrize: + key: w + vals: + - 122 + - 82 + - parametrize: + key: h + vals: + - 123 + - 83 + - parametrize: + key: objid + vals: + - 10 + - 12 + - 20 + - 22 + - 30 + - 31 + - 32 + - 33 + - 40 + - 41 + - 50 + - 51 + - 91 + - parametrize: + key: + - hidden + - hidden_inv + vals: + - [1, 0] + - [0, 1] + - parametrize: + key: opacity + vals: + - 0 + - 127 + - 255 + - parametrize: + key: radius + vals: + - 0 + - 5 + - 32535 + +stages: + - name: Page 1 + mqtt_publish: + topic: hasp/{plate}/command + payload: "page 1" + mqtt_response: + topic: hasp/{plate}/state/page + payload: "1" + timeout: 5 + delay_after: 0 + + - name: Clear page + mqtt_publish: + topic: hasp/{plate}/command/clearpage + payload: "" + delay_after: 0 + + - name: Create object + mqtt_publish: + topic: hasp/{plate}/command/jsonl + json: + objid: "{objid}" + id: 1 + delay_after: 0 + + - name: Set x + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].x={x}" + delay_after: 0 + - name: Get x + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].x" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + x: "{x}" + timeout: 5 + + - name: Set y + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].y={y}" + delay_after: 0 + - name: Get y + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].y" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + y: "{y}" + timeout: 5 + + - name: Set w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w={w}" + delay_after: 0 + - name: Get w + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].w" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + w: "{w}" + timeout: 5 + + - name: Set h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h={h}" + delay_after: 0 + - name: Get h + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].h" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + h: "{h}" + timeout: 5 + + - name: Set enabled + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].enabled={hidden}" + delay_after: 0 + - name: Get enabled + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].enabled" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + enabled: "{hidden}" + timeout: 5 + + - name: Set vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis={hidden}" + delay_after: 0 + - name: Get hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + hidden: "{hidden_inv}" + timeout: 5 + - name: Get vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + vis: "{hidden}" + timeout: 5 + + - name: Set hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden={hidden}" + delay_after: 0 + - name: Get hidden + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].hidden" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + hidden: "{hidden}" + timeout: 5 + - name: Get vis + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].vis" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + vis: "{hidden_inv}" + timeout: 5 + + - name: Set opacity + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].opacity={opacity}" + delay_after: 0 + - name: Get opacity + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].opacity" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + opacity: "{opacity}" + timeout: 5 + + - name: Set radius + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].radius={radius}" + delay_after: 0 + - name: Get radius + mqtt_publish: + topic: hasp/{plate}/command + payload: "p[1].b[1].radius" + mqtt_response: + topic: hasp/{plate}/state/json + json: + page: 1 + id: 1 + radius: "{radius}" + timeout: 5