def test_examples_protocol_http_server_simple(env, extra_data): # Acquire DUT dut1 = env.get_dut("http_server", "examples/protocols/http_server/simple", dut_class=ttfw_idf.ESP32DUT) # Get binary file binary_file = os.path.join(dut1.app.binary_path, "simple.bin") bin_size = os.path.getsize(binary_file) ttfw_idf.log_performance("http_server_bin_size", "{}KB".format(bin_size // 1024)) ttfw_idf.check_performance("http_server_bin_size", bin_size // 1024, dut1.TARGET) # Upload binary and start testing Utility.console_log("Starting http_server simple test app") dut1.start_app() # Parse IP address of STA Utility.console_log("Waiting to connect with AP") got_ip = dut1.expect( re.compile(r"(?:[\s\S]*)IPv4 address: (\d+.\d+.\d+.\d+)"), timeout=30)[0] got_port = dut1.expect( re.compile(r"(?:[\s\S]*)Starting server on port: '(\d+)'"), timeout=30)[0] Utility.console_log("Got IP : " + got_ip) Utility.console_log("Got Port : " + got_port) # Expected Logs dut1.expect("Registering URI handlers", timeout=30) # Run test script # If failed raise appropriate exception Utility.console_log("Test /hello GET handler") if not client.test_get_handler(got_ip, got_port): raise RuntimeError # Acquire host IP. Need a way to check it dut1.expect( re.compile(r"(?:[\s\S]*)Found header => Host: (\d+.\d+.\d+.\d+)"), timeout=30)[0] # Match additional headers sent in the request dut1.expect("Found header => Test-Header-2: Test-Value-2", timeout=30) dut1.expect("Found header => Test-Header-1: Test-Value-1", timeout=30) dut1.expect("Found URL query parameter => query1=value1", timeout=30) dut1.expect("Found URL query parameter => query3=value3", timeout=30) dut1.expect("Found URL query parameter => query2=value2", timeout=30) dut1.expect("Request headers lost", timeout=30) Utility.console_log( "Test /ctrl PUT handler and realtime handler de/registration") if not client.test_put_handler(got_ip, got_port): raise RuntimeError dut1.expect("Unregistering /hello and /echo URIs", timeout=30) dut1.expect("Registering /hello and /echo URIs", timeout=30) # Generate random data of 10KB random_data = ''.join( string.printable[random.randint(0, len(string.printable)) - 1] for _ in range(10 * 1024)) Utility.console_log("Test /echo POST handler with random data") if not client.test_post_handler(got_ip, got_port, random_data): raise RuntimeError query = "http://foobar" Utility.console_log("Test /hello with custom query : " + query) if not client.test_custom_uri_query(got_ip, got_port, query): raise RuntimeError dut1.expect("Found URL query => " + query, timeout=30) query = "abcd+1234%20xyz" Utility.console_log("Test /hello with custom query : " + query) if not client.test_custom_uri_query(got_ip, got_port, query): raise RuntimeError dut1.expect("Found URL query => " + query, timeout=30)
def test_examples_protocol_http_server_simple(dut: Dut) -> None: # Get binary file binary_file = os.path.join(dut.app.binary_path, 'simple.bin') bin_size = os.path.getsize(binary_file) logging.info('http_server_bin_size : {}KB'.format(bin_size // 1024)) # Upload binary and start testing logging.info('Starting http_server simple test app') # Parse IP address of STA logging.info('Waiting to connect with AP') got_ip = dut.expect(r'IPv4 address: (\d+\.\d+\.\d+\.\d+)', timeout=30)[1].decode() got_port = dut.expect(r"(?:[\s\S]*)Starting server on port: '(\d+)'", timeout=30)[1].decode() logging.info('Got IP : {}'.format(got_ip)) logging.info('Got Port : {}'.format(got_port)) # Expected Logs dut.expect('Registering URI handlers', timeout=30) # Run test script # If failed raise appropriate exception logging.info('Test /hello GET handler') if not client.test_get_handler(got_ip, str(got_port)): raise RuntimeError # Acquire host IP. Need a way to check it dut.expect(r'(?:[\s\S]*)Found header => Host: (\d+.\d+.\d+.\d+)', timeout=30) # Match additional headers sent in the request dut.expect('Found header => Test-Header-2: Test-Value-2', timeout=30) dut.expect('Found header => Test-Header-1: Test-Value-1', timeout=30) dut.expect('Found URL query parameter => query1=value1', timeout=30) dut.expect('Found URL query parameter => query3=value3', timeout=30) dut.expect('Found URL query parameter => query2=value2', timeout=30) dut.expect('Request headers lost', timeout=30) logging.info('Test /ctrl PUT handler and realtime handler de/registration') if not client.test_put_handler(got_ip, got_port): raise RuntimeError dut.expect('Unregistering /hello and /echo URIs', timeout=30) dut.expect('Registering /hello and /echo URIs', timeout=30) # Generate random data of 10KB random_data = ''.join( string.printable[random.randint(0, len(string.printable)) - 1] for _ in range(10 * 1024)) logging.info('Test /echo POST handler with random data') if not client.test_post_handler(got_ip, got_port, random_data): raise RuntimeError query = 'http://foobar' logging.info('Test /hello with custom query : {}'.format(query)) if not client.test_custom_uri_query(got_ip, got_port, query): raise RuntimeError dut.expect('Found URL query => ' + query, timeout=30) query = 'abcd+1234%20xyz' logging.info('Test /hello with custom query : {}'.format(query)) if not client.test_custom_uri_query(got_ip, got_port, query): raise RuntimeError dut.expect_exact('Found URL query => ' + query, timeout=30)