From 4d6287a6995d6a2859353ac73ab81ad352751ef9 Mon Sep 17 00:00:00 2001 From: helight Date: Wed, 30 Sep 2020 15:57:45 +0800 Subject: [PATCH] add verity script --- http-filter-example/README.md | 6 +++++- http-filter-example/httpserver.py | 23 +++++++++++--------- http-filter-example/start_service.sh | 3 +++ http-filter-example/verify.sh | 32 ++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+), 11 deletions(-) create mode 100644 http-filter-example/start_service.sh create mode 100644 http-filter-example/verify.sh diff --git a/http-filter-example/README.md b/http-filter-example/README.md index adfc02965..2c5d32693 100644 --- a/http-filter-example/README.md +++ b/http-filter-example/README.md @@ -60,7 +60,7 @@ or you can just use this demo yaml file [config.yaml](config.yaml). ``` - Run an http server ```sh -python httpserver.py +python ./http-filter-example/httpserver.py ``` - Access the http server with curl cmd: ```sh @@ -82,6 +82,10 @@ via: sample-filter x-envoy-expected-rq-timeout-ms: 15000 content-length: 0 ``` +- Start service and verify with shell script + +1. `bash ./http-filter-example/start_service.sh` +2. `bash ./http-filter-example/verify.sh` [StreamDecoderFilter]: https://github.com/envoyproxy/envoy/blob/b2610c84aeb1f75c804d67effcb40592d790e0f1/include/envoy/http/filter.h#L300 [StreamEncoderFilter]: https://github.com/envoyproxy/envoy/blob/b2610c84aeb1f75c804d67effcb40592d790e0f1/include/envoy/http/filter.h#L413 diff --git a/http-filter-example/httpserver.py b/http-filter-example/httpserver.py index 9f2894d25..c60f99ca6 100644 --- a/http-filter-example/httpserver.py +++ b/http-filter-example/httpserver.py @@ -1,27 +1,30 @@ -#!/usr/bin/python -from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer +#!/usr/bin/python3 +from http.server import BaseHTTPRequestHandler,HTTPServer -PORT = 8081 +HTTP_PORT = 8081 +# This class will handles any incoming request class doHandler(BaseHTTPRequestHandler): + # Handler for the GET requests def do_GET(self): self.send_response(200) self.send_header('Content-type','text/html') self.end_headers() - print self.headers # print the http header - # Send the html message - self.wfile.write("Hello World !") + print(self.headers) + # Send the message + self.wfile.write(b"Hello World !\r\n") + self.wfile.write(self.headers.as_bytes()) return try: - # Create a web server and define the handler to manage the incoming request - server = HTTPServer(('', PORT), doHandler) - print 'Started httpserver on port ' , PORT + # Create a http server and define the handler to manage the request + server = HTTPServer(('', HTTP_PORT), doHandler) + print('Started httpserver on port ' , HTTP_PORT) # Wait forever for incoming http requests server.serve_forever() except KeyboardInterrupt: - print 'shutting down the web server' + print('^C received, shutting down the web server') server.socket.close() diff --git a/http-filter-example/start_service.sh b/http-filter-example/start_service.sh new file mode 100644 index 000000000..ae30c9e66 --- /dev/null +++ b/http-filter-example/start_service.sh @@ -0,0 +1,3 @@ +#!/bin/sh +python3 ./http-filter-example/httpserver.py& +./bazel-bin/envoy --config-path ./http-filter-example/config.yaml diff --git a/http-filter-example/verify.sh b/http-filter-example/verify.sh new file mode 100644 index 000000000..f2d345f13 --- /dev/null +++ b/http-filter-example/verify.sh @@ -0,0 +1,32 @@ +#!/bin/bash -e + +export NAME=http-filter-example + +_curl () { + local arg curl_command + curl_command=(curl -s) + if [[ ! "$*" =~ "-X" ]]; then + curl_command+=(-X GET) + fi + for arg in "${@}"; do + curl_command+=("$arg") + done + "${curl_command[@]}" || { + echo "ERROR: curl (${curl_command[*]})" >&2 + return 1 + } +} + +responds_with () { + local expected + expected="$1" + shift + _curl "${@}" | grep "$expected" || { + echo "ERROR: curl expected (${*}): $expected" >&2 + return 1 + } +} + +responds_with \ + "via: sample-filter" \ + "http://localhost:8080"