Skip to content
/ echo Public

An server will echo the requests detail into response. For api testing / benchmark for your proxies like APIGateway/ReverseProxy/nginx/traefik.

License

Notifications You must be signed in to change notification settings

wklken/echo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

echo

Echo server will echo the requests detail into response.

For api testing or benchmarking for your proxies like APIGateway/ReverseProxy/nginx/traefik.

Build on chi with simple logical, so the performance is good enough.

run

make build

./echo 9001

apis

/ping/

  • AllowedMethods: all
  • return 200 with pong
$ curl -XPOST http://127.0.0.1:9001/ping/

> POST /ping/ HTTP/1.1
> Host: 127.0.0.1:9001
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 02 Jun 2019 00:19:19 GMT
< Content-Length: 4
< Content-Type: text/plain; charset=utf-8

pong

/sleep/{sleep}/

  • AllowedMethods: all
  • will sleep for {sleep} ms
  • return 200 with ok
$ curl -XPOST http://127.0.0.1:9001/sleep/10/

> POST /sleep/10/ HTTP/1.1
> Host: 127.0.0.1:9001
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sun, 02 Jun 2019 00:20:16 GMT
< Content-Length: 2
< Content-Type: text/plain; charset=utf-8

ok

and do the benchmark

$ wrk -t8 -c1000 -d10s http://127.0.0.1:9000/sleep/10/
Running 10s test @ http://127.0.0.1:9000/sleep/10/
  8 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    11.84ms   18.96ms 266.92ms   91.97%
    Req/Sec     8.79k     2.04k   14.77k    64.38%
  699458 requests in 10.04s, 117.40MB read
  Socket errors: connect 0, read 916, write 0, timeout 0
  Non-2xx or 3xx responses: 699458
Requests/sec:  69640.30
Transfer/sec:     11.69MB

/status/{status}/

  • AllowedMethods: all
  • return {status}
$ curl -XPOST http://127.0.0.1:9001/status/500/

> POST /status/500/ HTTP/1.1
> Host: 127.0.0.1:9001
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 500 Internal Server Error
< Content-Type: text/plain; charset=utf-8
< X-Content-Type-Options: nosniff
< Date: Sun, 02 Jun 2019 00:21:01 GMT
< Content-Length: 22

Internal Server Error

/echo/

  • AllowedMethods: all
  • return 200, with the request contents in json
$ curl -XPOST http://127.0.0.1:9001/echo/\?a\=1\&b\=2

> POST /echo/?a=1&b=2 HTTP/1.1
> Host: 127.0.0.1:9001
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=UTF-8
< Date: Sun, 02 Jun 2019 00:17:57 GMT
< Content-Length: 140

{
    "body": "",
    "form":
    {},
    "headers":
    {
        "Accept": ["*/*"],
        "User-Agent": ["curl/7.54.0"]
    },
    "method": "POST",
    "query":
    {
        "a": ["1"],
        "b": ["2"]
    },
    "url": "/echo/"
}

websocket

  • /ws/index/ the websocket test page
  • /ws/ the websocket api, will broadcast the message to all client

file upload/download

  • /file/download/{size}/ the size unit is KB
$ curl -XGET http://127.0.0.1:9001/file/download/1024/ -vv > a.txt

> GET /file/download/1024/ HTTP/1.1
> Host: 127.0.0.1:3000
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Content-Control: private, no-transform, no-store, must-revalidate
< Content-Disposition: attachment; filename=data.txt
< Content-Length: 1048576
< Content-Transfer-Encoding: binary
< Content-Type: text/plain; charset=utf-8
< Expires: 0
< Last-Modified: Tue, 02 Jul 2019 08:23:20 GMT
< Date: Tue, 02 Jul 2019 08:23:20 GMT

$ du -h a.txt
1M
  • /file/upload/{filename}/
$ curl -XPOST \
  'http://127.0.0.1:9001/file/upload/data.txt/' \
  -H 'Content-Type: multipart/form-data' \
  -F data.txt=@/Downloads/data.txt -v

> POST /file/upload/data.txt/ HTTP/1.1
> Host: 127.0.0.1:3000
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 10430
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=------------------------1fb40c77823315c2
>
< HTTP/1.1 100 Continue
< HTTP/1.1 204 No Content
< Date: Tue, 02 Jul 2019 08:25:48 GMT

TODO

  • httpbin apis

About

An server will echo the requests detail into response. For api testing / benchmark for your proxies like APIGateway/ReverseProxy/nginx/traefik.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published