From 2b026ea1fa42e5a3a914d29826ef637de481d816 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Wed, 5 Jan 2022 12:26:39 +0530 Subject: [PATCH] http2_request_example: Change the target http2 server to `http2.github.io` and perform only a `GET` request. --- examples/protocols/http2_request/README.md | 49 ++++++------------- .../protocols/http2_request/example_test.py | 13 ++--- .../http2_request/main/CMakeLists.txt | 2 +- .../http2_request/main/golang_root_cert.pem | 31 ------------ .../main/http2_github_io_root_cert.pem | 28 +++++++++++ .../main/http2_request_example_main.c | 16 ++---- 6 files changed, 55 insertions(+), 84 deletions(-) delete mode 100644 examples/protocols/http2_request/main/golang_root_cert.pem create mode 100644 examples/protocols/http2_request/main/http2_github_io_root_cert.pem diff --git a/examples/protocols/http2_request/README.md b/examples/protocols/http2_request/README.md index f4a46a453a..e7be3a83ef 100644 --- a/examples/protocols/http2_request/README.md +++ b/examples/protocols/http2_request/README.md @@ -1,8 +1,7 @@ # HTTP/2 Request Example -Established HTTP/2 connection with https://http2.golang.org -- Performs a GET on /clockstream -- Performs a PUT on /ECHO +Establish an HTTP/2 connection with https://http2.github.io +- Performs a GET on /index.html ## How to use example Before project configuration and build, be sure to set the correct chip target using `idf.py set-target `. @@ -36,37 +35,21 @@ See the Getting Started Guide for full steps to configure and use ESP-IDF to bui ## Example Output ``` -I (9637) example_connect: - IPv4 address: 192.168.194.219 -I (9637) example_connect: - IPv6 address: fe80:0000:0000:0000:266f:28ff:fe80:2c74, type: ESP_IP6_ADDR_IS_LINK_LOCAL +I (5609) example_connect: - IPv4 address: 192.168.0.103 +I (5609) example_connect: - IPv6 address: fe80:0000:0000:0000:ae67:b2ff:fe45:0194, type: ESP_IP6_ADDR_IS_LINK_LOCAL Connecting to server Connection done -[data-prvd] Sending 11 bytes -[echo-response] HELLO WORLD -[echo-response] Frame fully received -[echo-response] Frame fully received -[echo-response] Stream Closed -[get-response] # ~1KB of junk to force browsers to start rendering immediately: -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -# xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -2021-09-07 08:22:10.73175944 +0000 UTC m=+530259.401042400 - +[get-response] + +. +. +. +Body of index.html +. +. +. +. + [get-response] Frame fully received -[get-response] 2021-09-07 08:22:11.73205314 +0000 UTC m=+530260.401336111 - -[get-response] Frame fully received -[get-response] 2021-09-07 08:22:12.7320106 +0000 UTC m=+530261.401293569 - -[get-response] Frame fully received -[get-response] 2021-09-07 08:22:13.732013218 +0000 UTC m=+530262.401296183 +[get-response] Stream Closed ``` diff --git a/examples/protocols/http2_request/example_test.py b/examples/protocols/http2_request/example_test.py index 7e0389413c..ef3fb8f345 100644 --- a/examples/protocols/http2_request/example_test.py +++ b/examples/protocols/http2_request/example_test.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD +# SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD # SPDX-License-Identifier: Apache-2.0 import http.client @@ -11,7 +11,7 @@ import ttfw_idf from tiny_test_fw import Utility HTTP_OK = 200 -TEST_SERVER = 'http2.golang.org' +TEST_SERVER = 'http2.github.io' def is_test_server_available(): # type: () -> bool @@ -33,7 +33,7 @@ def test_examples_protocol_http2_request(env, extra_data): # type: (tiny_test_f """ steps: | 1. join AP - 2. connect to http2.golang.org + 2. connect to http2.github.io 3. send http2 request 4. send http2 put response """ @@ -45,15 +45,12 @@ def test_examples_protocol_http2_request(env, extra_data): # type: (tiny_test_f # 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.golang.org) is not available at the moment. + # Skip the test if the server test server (http2.github.io) is not available at the moment. if test_server_available: + Utility.console_log('test server \"{}\" is available'.format(TEST_SERVER)) dut1.start_app() # check for connection dut1.expect('Connection done', timeout=30) - # check for echo response - dut1.expect('[echo-response] HELLO WORLD', timeout=30) - dut1.expect('[echo-response] Frame fully received') - dut1.expect('[echo-response] Stream Closed') # check for get response dut1.expect('[get-response] Frame fully received') else: diff --git a/examples/protocols/http2_request/main/CMakeLists.txt b/examples/protocols/http2_request/main/CMakeLists.txt index 5020cf4e91..a450362baa 100644 --- a/examples/protocols/http2_request/main/CMakeLists.txt +++ b/examples/protocols/http2_request/main/CMakeLists.txt @@ -1,3 +1,3 @@ idf_component_register(SRCS "http2_request_example_main.c" INCLUDE_DIRS "." - EMBED_TXTFILES "golang_root_cert.pem") + EMBED_TXTFILES "http2_github_io_root_cert.pem") diff --git a/examples/protocols/http2_request/main/golang_root_cert.pem b/examples/protocols/http2_request/main/golang_root_cert.pem deleted file mode 100644 index b85c8037f6..0000000000 --- a/examples/protocols/http2_request/main/golang_root_cert.pem +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 -WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu -ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY -MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc -h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ -0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U -A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW -T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH -B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC -B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv -KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn -OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn -jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw -qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI -rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq -hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL -ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ -3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK -NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 -ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur -TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC -jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc -oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq -4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA -mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d -emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= ------END CERTIFICATE----- diff --git a/examples/protocols/http2_request/main/http2_github_io_root_cert.pem b/examples/protocols/http2_request/main/http2_github_io_root_cert.pem new file mode 100644 index 0000000000..8c4c741058 --- /dev/null +++ b/examples/protocols/http2_request/main/http2_github_io_root_cert.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIEsTCCA5mgAwIBAgIQBOHnpNxc8vNtwCtCuF0VnzANBgkqhkiG9w0BAQsFADBs +MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 +d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j +ZSBFViBSb290IENBMB4XDTEzMTAyMjEyMDAwMFoXDTI4MTAyMjEyMDAwMFowcDEL +MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 +LmRpZ2ljZXJ0LmNvbTEvMC0GA1UEAxMmRGlnaUNlcnQgU0hBMiBIaWdoIEFzc3Vy +YW5jZSBTZXJ2ZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2 +4C/CJAbIbQRf1+8KZAayfSImZRauQkCbztyfn3YHPsMwVYcZuU+UDlqUH1VWtMIC +Kq/QmO4LQNfE0DtyyBSe75CxEamu0si4QzrZCwvV1ZX1QK/IHe1NnF9Xt4ZQaJn1 +itrSxwUfqJfJ3KSxgoQtxq2lnMcZgqaFD15EWCo3j/018QsIJzJa9buLnqS9UdAn +4t07QjOjBSjEuyjMmqwrIw14xnvmXnG3Sj4I+4G3FhahnSMSTeXXkgisdaScus0X +sh5ENWV/UyU50RwKmmMbGZJ0aAo3wsJSSMs5WqK24V3B3aAguCGikyZvFEohQcft +bZvySC/zA/WiaJJTL17jAgMBAAGjggFJMIIBRTASBgNVHRMBAf8ECDAGAQH/AgEA +MA4GA1UdDwEB/wQEAwIBhjAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw +NAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy +dC5jb20wSwYDVR0fBEQwQjBAoD6gPIY6aHR0cDovL2NybDQuZGlnaWNlcnQuY29t +L0RpZ2lDZXJ0SGlnaEFzc3VyYW5jZUVWUm9vdENBLmNybDA9BgNVHSAENjA0MDIG +BFUdIAAwKjAoBggrBgEFBQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQ +UzAdBgNVHQ4EFgQUUWj/kK8CB3U8zNllZGKiErhZcjswHwYDVR0jBBgwFoAUsT7D +aQP4v0cB1JgmGggC72NkK8MwDQYJKoZIhvcNAQELBQADggEBABiKlYkD5m3fXPwd +aOpKj4PWUS+Na0QWnqxj9dJubISZi6qBcYRb7TROsLd5kinMLYBq8I4g4Xmk/gNH +E+r1hspZcX30BJZr01lYPf7TMSVcGDiEo+afgv2MW5gxTs14nhr9hctJqvIni5ly +/D6q1UEL2tU2ob8cbkdJf17ZSHwD2f2LSaCYJkJA69aSEaRkCldUxPUd1gJea6zu +xICaEnL6VpPX/78whQYwvwt/Tv9XBZ0k7YXDK/umdaisLRbvfXknsuvCnQsH6qqF +0wGjIChBWUMo0oHjqvbsezt3tkBigAVBRQHvFwY+3sAzm2fTYS5yh+Rp/BIAV0Ae +cPUeybQ= +-----END CERTIFICATE----- diff --git a/examples/protocols/http2_request/main/http2_request_example_main.c b/examples/protocols/http2_request/main/http2_request_example_main.c index 5df763cf0c..5dce7dbbda 100644 --- a/examples/protocols/http2_request/main/http2_request_example_main.c +++ b/examples/protocols/http2_request/main/http2_request_example_main.c @@ -1,6 +1,6 @@ /* HTTP2 GET Example using nghttp2 - Contacts http2.golang.org and executes the GET/PUT requests. A thin API + Contacts http2.github.io and executes the GET request. A thin API wrapper on top of nghttp2, to properly demonstrate the interactions. This example code is in the Public Domain (or CC0 licensed, at your option.) @@ -26,15 +26,13 @@ #include "sh2lib.h" -extern const uint8_t server_root_cert_pem_start[] asm("_binary_golang_root_cert_pem_start"); -extern const uint8_t server_root_cert_pem_end[] asm("_binary_golang_root_cert_pem_end"); +extern const uint8_t server_root_cert_pem_start[] asm("_binary_http2_github_io_root_cert_pem_start"); +extern const uint8_t server_root_cert_pem_end[] asm("_binary_http2_github_io_root_cert_pem_end"); /* The HTTP/2 server to connect to */ -#define HTTP2_SERVER_URI "https://http2.golang.org" +#define HTTP2_SERVER_URI "https://http2.github.io" /* A GET request that keeps streaming current time every second */ -#define HTTP2_STREAMING_GET_PATH "/clockstream" -/* A PUT request that echoes whatever we had sent to it */ -#define HTTP2_PUT_PATH "/ECHO" +#define HTTP2_STREAMING_GET_PATH "/index.html" int handle_get_response(struct sh2lib_handle *handle, const char *data, size_t len, int flags) @@ -120,10 +118,6 @@ static void http2_task(void *args) /* HTTP GET */ sh2lib_do_get(&hd, HTTP2_STREAMING_GET_PATH, handle_get_response); - - /* HTTP PUT */ - sh2lib_do_put(&hd, HTTP2_PUT_PATH, send_put_data, handle_echo_response); - while (1) { /* Process HTTP2 send/receive */ if (sh2lib_execute(&hd) < 0) {