Skip to content

Commit

Permalink
update README for clarity, add docker. update Dockerfile base image (#53
Browse files Browse the repository at this point in the history
)

Co-authored-by: Shannon Weyrick <[email protected]>
  • Loading branch information
weyrick and weyrick authored Aug 12, 2020
1 parent 77f1072 commit 6063a20
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 41 deletions.
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM ubuntu:20.04 AS build
FROM debian:buster-slim AS build

ENV BUILD_DEPS "g++ cmake make libldns-dev libnghttp2-dev libuv1-dev libgnutls28-dev pkgconf"
ENV DEBIAN_FRONTEND=noninteractive
Expand All @@ -16,7 +16,7 @@ RUN \
make all tests && \
./tests

FROM ubuntu:20.04 AS runtime
FROM debian:buster-slim AS runtime

ENV RUNTIME_DEPS "libldns2 libuv1 nghttp2"

Expand Down
92 changes: 53 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,24 @@ A DNS performance and functional testing utility.

2017-2020© NSONE, Inc.

License
-------
This code is released under Apache License 2.0. You can find terms and conditions in the LICENSE file.


Overview
--------

Flamethrower is a small, fast, configurable tool for functional testing, benchmarking, and stress testing DNS servers and networks. It supports IPv4, IPv6, UDP, TCP, DoT, and DoH and has a modular system for generating queries used in the tests.

Originally built as an alternative to dnsperf (https://github.com/DNS-OARC/dnsperf), many of the command line options are compatible.

Dependencies
------------
Getting Started
---------------

* CMake >= 3.8
* Linux or OSX
* libuv >= 1.23.0
* libldns >= 1.7.0
* gnutls >= 3.3
* C++ compiler supporting C++17

DoH support requires:
* nghttp2

Build
-----

Default build:
The easiest way to get started with Flamethrower is to use the public docker image:
```
mkdir build; cd build
cmake ..
make
docker pull ns1labs/flame
docker run ns1labs/flame --help
```

To build with DoH support:
```
mkdir build; cd build
cmake -DDOH_ENABLE=ON ..
make
```

Docker based, requires a recent version of docker.
```
org="myorg"
image="myflame"
tag="latest"
docker build --network host -t ${org}/${image}:${tag} -f Dockerfile .
docker run --rm -it --net host ${org}/${image}:${tag} --help
```
There are currently no prebuilt operating system packages. If you would like to build your own executable,
please see the Build section below.

Usage
-----
Expand Down Expand Up @@ -133,6 +101,52 @@ Detailed Features

There is currently no built-in support for multiprocess sending, so the maximum throughput will be reached once a single CPU is saturated. However, you may manually start several concurrent `flame` processes, including up to 1 per CPU available. There is future planned support for builtin multiprocess sending.

Build Dependencies
------------------

* CMake >= 3.8
* Linux or OSX
* libuv >= 1.23.0
* libldns >= 1.7.0
* gnutls >= 3.3
* C++ compiler supporting C++17

Optional DoH support requires:
* nghttp2

Building
--------

Building is based on CMake.

Default build:
```
mkdir build; cd build
cmake ..
make
```

To build with DoH support:
```
mkdir build; cd build
cmake -DDOH_ENABLE=ON ..
make
```

Building the docker image:
```
org="myorg"
image="myflame"
tag="latest"
docker build --network host -t ${org}/${image}:${tag} -f Dockerfile .
docker run --rm -it --net host ${org}/${image}:${tag} --help
```

Contributions
---
Pull Requests and issues are welcome. See the [NS1 Contribution Guidelines](https://github.com/ns1/community) for more information.

License
-------
This code is released under Apache License 2.0. You can find terms and conditions in the LICENSE file.

0 comments on commit 6063a20

Please sign in to comment.