pytest_esp_http_client.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  2. # SPDX-License-Identifier: Unlicense OR CC0-1.0
  3. import logging
  4. import os
  5. import pytest
  6. from pytest_embedded import Dut
  7. @pytest.mark.esp32
  8. @pytest.mark.esp32c3
  9. @pytest.mark.esp32s2
  10. @pytest.mark.esp32s3
  11. @pytest.mark.ethernet
  12. def test_examples_protocol_esp_http_client(dut: Dut) -> None:
  13. """
  14. steps: |
  15. 1. join AP
  16. 2. Send HTTP request to httpbin.org
  17. """
  18. binary_file = os.path.join(dut.app.binary_path, 'esp_http_client_example.bin')
  19. bin_size = os.path.getsize(binary_file)
  20. logging.info('esp_http_client_bin_size : {}KB'.format(bin_size // 1024))
  21. # start test
  22. dut.expect('Connected to AP, begin http example', timeout=30)
  23. dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
  24. dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
  25. dut.expect(r'HTTP PUT Status = 200, content_length = (\d)')
  26. dut.expect(r'HTTP PATCH Status = 200, content_length = (\d)')
  27. dut.expect(r'HTTP DELETE Status = 200, content_length = (\d)')
  28. dut.expect(r'HTTP HEAD Status = 200, content_length = (\d)')
  29. dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
  30. dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
  31. dut.expect(r'HTTP PUT Status = 200, content_length = (\d)')
  32. dut.expect(r'HTTP PATCH Status = 200, content_length = (\d)')
  33. dut.expect(r'HTTP DELETE Status = 200, content_length = (\d)')
  34. dut.expect(r'HTTP HEAD Status = 200, content_length = (\d)')
  35. dut.expect(r'HTTP Basic Auth Status = 200, content_length = (\d)')
  36. dut.expect(r'HTTP Basic Auth redirect Status = 200, content_length = (\d)')
  37. dut.expect(r'HTTP Digest Auth Status = 200, content_length = (\d)')
  38. dut.expect(r'HTTP Relative path redirect Status = 200, content_length = (\d)')
  39. dut.expect(r'HTTP Absolute path redirect Status = 200, content_length = (\d)')
  40. dut.expect(r'HTTP Absolute path redirect \(manual\) Status = 200, content_length = (\d)')
  41. dut.expect(r'HTTPS Status = 200, content_length = (\d)')
  42. dut.expect(r'HTTPS Status = 200, content_length = (\d)')
  43. dut.expect(r'HTTP redirect to HTTPS Status = 200, content_length = (\d)')
  44. dut.expect(r'HTTP chunk encoding Status = 200, content_length = (-?\d)')
  45. # content-len for chunked encoding is typically -1, could be a positive length in some cases
  46. dut.expect(r'HTTP Stream reader Status = 200, content_length = (\d)')
  47. dut.expect(r'HTTPS Status = 200, content_length = (\d)')
  48. dut.expect(r'Last esp error code: 0x8001')
  49. dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
  50. dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
  51. dut.expect(r'HTTP Status = 206, content_length = (\d)')
  52. dut.expect(r'HTTP Status = 206, content_length = 10')
  53. dut.expect(r'HTTP Status = 206, content_length = 10')
  54. dut.expect('Finish http example')
  55. @pytest.mark.parametrize('config', [pytest.param('ssldyn', marks=[pytest.mark.supported_targets, pytest.mark.ethernet]),], indirect=True)
  56. def test_examples_protocol_esp_http_client_dynamic_buffer(dut: Dut) -> None:
  57. # test mbedtls dynamic resource
  58. # check and log bin size
  59. binary_file = os.path.join(dut.app.binary_path, 'esp_http_client_example.bin')
  60. bin_size = os.path.getsize(binary_file)
  61. logging.info('esp_http_client_bin_size : {}KB'.format(bin_size // 1024))
  62. dut.expect('Connected to AP, begin http example', timeout=30)
  63. dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
  64. dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
  65. dut.expect(r'HTTP PUT Status = 200, content_length = (\d)')
  66. dut.expect(r'HTTP PATCH Status = 200, content_length = (\d)')
  67. dut.expect(r'HTTP DELETE Status = 200, content_length = (\d)')
  68. dut.expect(r'HTTP HEAD Status = 200, content_length = (\d)')
  69. dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
  70. dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
  71. dut.expect(r'HTTP PUT Status = 200, content_length = (\d)')
  72. dut.expect(r'HTTP PATCH Status = 200, content_length = (\d)')
  73. dut.expect(r'HTTP DELETE Status = 200, content_length = (\d)')
  74. dut.expect(r'HTTP HEAD Status = 200, content_length = (\d)')
  75. dut.expect(r'HTTP Basic Auth Status = 200, content_length = (\d)')
  76. dut.expect(r'HTTP Basic Auth redirect Status = 200, content_length = (\d)')
  77. dut.expect(r'HTTP Relative path redirect Status = 200, content_length = (\d)')
  78. dut.expect(r'HTTP Absolute path redirect Status = 200, content_length = (\d)')
  79. dut.expect(r'HTTP Absolute path redirect \(manual\) Status = 200, content_length = (\d)')
  80. dut.expect(r'HTTPS Status = 200, content_length = (\d)')
  81. dut.expect(r'HTTPS Status = 200, content_length = (\d)')
  82. dut.expect(r'HTTP redirect to HTTPS Status = 200, content_length = (\d)')
  83. dut.expect(r'HTTP chunk encoding Status = 200, content_length = (-?\d)')
  84. # content-len for chunked encoding is typically -1, could be a positive length in some cases
  85. dut.expect(r'HTTP Stream reader Status = 200, content_length = (\d)')
  86. dut.expect(r'HTTPS Status = 200, content_length = (\d)')
  87. dut.expect(r'Last esp error code: 0x8001')
  88. dut.expect(r'HTTP GET Status = 200, content_length = (\d)')
  89. dut.expect(r'HTTP POST Status = 200, content_length = (\d)')
  90. dut.expect(r'HTTP Status = 206, content_length = (\d)')
  91. dut.expect(r'HTTP Status = 206, content_length = 10')
  92. dut.expect(r'HTTP Status = 206, content_length = 10')
  93. dut.expect('Finish http example')