1# End-to-end testing script
2
3This directory contains a basic end-to-end testing script.
4The script sets up a configuration cache, stands up a configuration server,
5and starts up Envoy with the server as either ADS or xDS discovery option. The
6configuration is periodically refreshed with new routes and new clusters. In
7parallel, the test sends echo requests one after another through Envoy,
8exercising the pushed configuration.
9
10## Requirements
11
12* Envoy binary `envoy` available: set `ENVOY` environment variable to the
13  location of the binary, or use the default value `/usr/local/bin/envoy`
14* `go-control-plane` builds successfully
15
16## Steps
17
18To run the script with a single ADS server:
19
20    make integration.ads
21
22To run the script with a single server configured as different xDS servers:
23
24    make integration.xds
25
26To run the script with a single server configured to use `Fetch` through HTTP:
27
28    make integration.rest
29
30You should see runs of configuration push events and request batch reports. The
31test executes batches of requests to exercise multiple listeners, routes, and
32clusters, and records the number of successful and failed requests. The test is
33successful if at least one batch passes through all requests (e.g. Envoy
34eventually converges to use the latest pushed configuration) for each run.
35
36## Customizing the test driver
37
38You can run ```bin/test -help``` to get a list of the cli flags that
39the test program accepts.  There are also comments in ```main.go```.
40