| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  | #!/usr/bin/env python | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD | 
					
						
							|  |  |  | # SPDX-License-Identifier: Apache-2.0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import logging | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import pytest | 
					
						
							|  |  |  | from pytest_embedded import Dut | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @pytest.mark.esp32 | 
					
						
							|  |  |  | @pytest.mark.ethernet | 
					
						
							|  |  |  | def test_examples_protocol_mqtt5(dut: Dut) -> None: | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     steps: | | 
					
						
							|  |  |  |       1. join AP | 
					
						
							|  |  |  |       2. connect to mqtt://mqtt.eclipseprojects.io | 
					
						
							|  |  |  |       3. check conneciton success | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     # check and log bin size | 
					
						
							|  |  |  |     binary_file = os.path.join(dut.app.binary_path, 'mqtt5.bin') | 
					
						
							|  |  |  |     bin_size = os.path.getsize(binary_file) | 
					
						
							|  |  |  |     logging.info('mqtt5_bin_size : {}KB'.format(bin_size // 1024)) | 
					
						
							|  |  |  |     # check if connected or not | 
					
						
							|  |  |  |     dut.expect_exact('MQTT_EVENT_CONNECTED', timeout=30) | 
					
						
							|  |  |  |     # check log | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'sent publish successful, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_pub1 = res.group(1).decode('utf8') | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'sent subscribe successful, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_sub1 = res.group(1).decode('utf8') | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'sent subscribe successful, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_sub2 = res.group(1).decode('utf8') | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'sent unsubscribe successful, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_unsub = res.group(1).decode('utf8') | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'MQTT_EVENT_PUBLISHED, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_pubd = res.group(1).decode('utf8') | 
					
						
							|  |  |  |     assert msgid_pubd == msgid_pub1 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'MQTT_EVENT_SUBSCRIBED, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_subd = res.group(1).decode('utf8') | 
					
						
							|  |  |  |     assert msgid_subd == msgid_sub1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     dut.expect_exact('sent publish successful, msg_id=0') | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'MQTT_EVENT_SUBSCRIBED, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_subd = res.group(1).decode('utf8') | 
					
						
							|  |  |  |     assert msgid_subd == msgid_sub2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     dut.expect_exact('sent publish successful, msg_id=0') | 
					
						
							|  |  |  |     dut.expect_exact('MQTT_EVENT_DATA') | 
					
						
							|  |  |  |     dut.expect_exact('key is board, value is esp32') | 
					
						
							|  |  |  |     dut.expect_exact('key is u, value is user') | 
					
						
							|  |  |  |     dut.expect_exact('key is p, value is password') | 
					
						
							|  |  |  |     dut.expect_exact('payload_format_indicator is 1') | 
					
						
							|  |  |  |     dut.expect_exact('response_topic is /topic/test/response') | 
					
						
							|  |  |  |     dut.expect_exact('correlation_data is 123456') | 
					
						
							|  |  |  |     dut.expect_exact('TOPIC=/topic/qos1') | 
					
						
							|  |  |  |     dut.expect_exact('DATA=data_3') | 
					
						
							| 
									
										
										
										
											2022-12-21 10:50:11 +08:00
										 |  |  |     res = dut.expect(r'MQTT_EVENT_UNSUBSCRIBED, msg_id=(\d+)[^\d]') | 
					
						
							| 
									
										
										
										
											2022-03-03 15:41:43 +08:00
										 |  |  |     msgid_unsubd = res.group(1).decode('utf8') | 
					
						
							|  |  |  |     assert msgid_unsubd == msgid_unsub | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     dut.expect_exact('MQTT_EVENT_DISCONNECTED') | 
					
						
							|  |  |  |     logging.info('MQTT5 pytest pass') |