mirror of
https://github.com/openfaas/faas.git
synced 2025-06-08 16:26:47 +00:00
Add hey sample function
Use it to do load testing and observe scaling. Signed-off-by: Kyle Brennan <kylos101@gmail.com>
This commit is contained in:
parent
4e7fdfe03b
commit
c3c1d0c2fe
33
sample-functions/hey/Dockerfile
Normal file
33
sample-functions/hey/Dockerfile
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
FROM openfaas/classic-watchdog:0.18.1 as watchdog
|
||||||
|
|
||||||
|
FROM alpine:3.11
|
||||||
|
|
||||||
|
RUN mkdir -p /home/app
|
||||||
|
|
||||||
|
COPY --from=watchdog /fwatchdog /usr/bin/fwatchdog
|
||||||
|
RUN chmod +x /usr/bin/fwatchdog
|
||||||
|
|
||||||
|
# Add non root user
|
||||||
|
RUN addgroup -S app && adduser app -S -G app && chown app /home/app
|
||||||
|
|
||||||
|
WORKDIR /home/app
|
||||||
|
|
||||||
|
# setup hey
|
||||||
|
RUN apk --no-cache add curl && curl -o /home/app/hey https://storage.googleapis.com/hey-release/hey_linux_amd64 && chmod +x /home/app/hey
|
||||||
|
|
||||||
|
# Change from root user
|
||||||
|
USER app
|
||||||
|
|
||||||
|
# Setup some timeouts for this function...
|
||||||
|
ENV write_timeout="60"
|
||||||
|
|
||||||
|
# Run the function
|
||||||
|
ENV fprocess="xargs ./hey"
|
||||||
|
# Set to true to see request in function logs
|
||||||
|
ENV write_debug="false"
|
||||||
|
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=3s CMD [ -e /tmp/.lock ] || exit 1
|
||||||
|
|
||||||
|
CMD ["fwatchdog"]
|
25
sample-functions/hey/readme.md
Normal file
25
sample-functions/hey/readme.md
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Overview
|
||||||
|
|
||||||
|
[`hey` is a HTTP load generator.](https://github.com/rakyll/hey).
|
||||||
|
|
||||||
|
This is a OpenFaaS Dockerfile function, it wraps `hey`.
|
||||||
|
|
||||||
|
Use it to test your functions!
|
||||||
|
|
||||||
|
For example, generate load and watch them scale up and down!!!
|
||||||
|
|
||||||
|
## Demo
|
||||||
|
|
||||||
|
1. Deploy the `nodeinfo` function
|
||||||
|
2. Deploy this function
|
||||||
|
3. Send a request like through the `hey` function to load test the `nodeinfo` function
|
||||||
|
|
||||||
|
```$
|
||||||
|
-m POST -d '{}' http://127.0.0.1:8080/function/nodeinfo.openfaas-fn
|
||||||
|
```
|
||||||
|
|
||||||
|
## Tips
|
||||||
|
|
||||||
|
* `hey` does not randomize the request payload, there's nothing saying you cannot call it a bunch with different payloads, though.
|
||||||
|
* `hey` defaults Content-Type to "text/html".
|
||||||
|
* `hey` requires parameters to be in a certain order. For example, if you don't use the order above, the post body may be empty.
|
Loading…
x
Reference in New Issue
Block a user