mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 09:01:40 +01:00 
			
		
		
		
	http examples pytest migration
This commit is contained in:
		
							
								
								
									
										59
									
								
								examples/protocols/http2_request/pytest_http2_request.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								examples/protocols/http2_request/pytest_http2_request.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
#
 | 
			
		||||
# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
 | 
			
		||||
# SPDX-License-Identifier: Apache-2.0
 | 
			
		||||
 | 
			
		||||
import http.client
 | 
			
		||||
import logging
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
import pytest
 | 
			
		||||
from pytest_embedded import Dut
 | 
			
		||||
 | 
			
		||||
HTTP_OK = 200
 | 
			
		||||
TEST_SERVER = 'http2.github.io'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def is_test_server_available():  # type: () -> bool
 | 
			
		||||
    # 443 - default https port
 | 
			
		||||
    try:
 | 
			
		||||
        conn = http.client.HTTPSConnection(TEST_SERVER, 443, timeout=10)
 | 
			
		||||
        conn.request('GET', '/')
 | 
			
		||||
        resp = conn.getresponse()
 | 
			
		||||
        return True if resp.status == HTTP_OK else False
 | 
			
		||||
    except Exception as msg:
 | 
			
		||||
        logging.info('Exception occurred when connecting to {}: {}'.format(TEST_SERVER, msg))
 | 
			
		||||
        return False
 | 
			
		||||
    finally:
 | 
			
		||||
        conn.close()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@pytest.mark.esp32
 | 
			
		||||
@pytest.mark.esp32c3
 | 
			
		||||
@pytest.mark.esp32s2
 | 
			
		||||
@pytest.mark.esp32s3
 | 
			
		||||
@pytest.mark.ethernet
 | 
			
		||||
def test_examples_protocol_http2_request(dut: Dut) -> None:
 | 
			
		||||
    """
 | 
			
		||||
    steps: |
 | 
			
		||||
      1. join AP
 | 
			
		||||
      2. connect to http2.github.io
 | 
			
		||||
      3. send http2 request
 | 
			
		||||
      4. send http2 put response
 | 
			
		||||
    """
 | 
			
		||||
    # check and log bin size
 | 
			
		||||
    binary_file = os.path.join(dut.app.binary_path, 'http2_request.bin')
 | 
			
		||||
    bin_size = os.path.getsize(binary_file)
 | 
			
		||||
    logging.info('http2_request_bin_size : {}KB'.format(bin_size // 1024))
 | 
			
		||||
    # start the test
 | 
			
		||||
    # check if test server is avilable
 | 
			
		||||
    test_server_available = is_test_server_available()
 | 
			
		||||
    # Skip the test if the server test server (http2.github.io) is not available at the moment.
 | 
			
		||||
    if test_server_available:
 | 
			
		||||
        logging.info('test server \"{}\" is available'.format(TEST_SERVER))
 | 
			
		||||
        # check for connection
 | 
			
		||||
        dut.expect('Connection done', timeout=30)
 | 
			
		||||
        # check for get response
 | 
			
		||||
        dut.expect('Frame fully received')
 | 
			
		||||
    else:
 | 
			
		||||
        logging.info('test server \"{0}\" is not available at the moment.\nSkipping the test with status = success.'.format(TEST_SERVER))
 | 
			
		||||
		Reference in New Issue
	
	Block a user