You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
StreamDecoder will by notified by Envoy as headers and body fragments arrive.
130
+
The Nighthawk implementation of that is responsible for coordinating lifetime
131
+
events of a request to upper abstraction layers (**BenchmarkClient**,
132
+
**Sequencer**) as well as recording latency and reporting that upwards.
133
+
134
+
### OutputCollector
135
+
136
+
**OutputCollector** is a container that facilitates building up the native output
137
+
format of Nighthawk (`proto3`, `nighthawk::client::Output`). It is the basis for all
138
+
output formats offered by Nighthawk, including CLI human output.
139
+
140
+
### OutputFormatter
141
+
142
+
**OutputFormatter** is responsible for transformations of `nighthawk::client::Output`
143
+
to requested formats (e.g. human, json, fortio, etc)
144
+
145
+
### Statistic
146
+
147
+
Nighthawk’s **Statistic** is responsible for administrating latencies. The most
148
+
notable implementation that exists today wraps
149
+
[HdrHistogram](https://github.com/HdrHistogram/HdrHistogram_c), but Nighthawk
150
+
also has a couple of other implementations which mostly exist to ensure that
151
+
floating point math is correct in tests, as well as a simple efficient
152
+
implementation that simply tracks the `mean` and `pstddev` for those cases where
153
+
we don't need percentiles. For various reasons, HdrHistogram might get replaced
154
+
by [libcirclhist](https://github.com/envoyproxy/nighthawk/issues/115) in the
155
+
near future.
156
+
157
+
### H1Pool & H2Pool
158
+
159
+
Nighthawk derives its own version of these from the vanilla Envoy ones. It does
160
+
that to implement things like pro-active connection pre-fetching and H2
161
+
multi-connection support, as well as offer more connection management
162
+
strategies.
163
+
164
+
## Nighthawk binaries
165
+
166
+
### nighthawk_client
167
+
168
+
The CLI interface of the Nighthawk client. It synthesizes traffic according
169
+
to the requested configuration and report results in the requested output format.
170
+
171
+
### nighthawk_service
172
+
173
+
Nighthawk’s gRPC service is able to execute load tests, and report results.
174
+
Under the hood it shares much of the code of nighthawk_client, and effectively
175
+
it allows to efficiently perform remote back-to-back executions of that.
176
+
177
+
### nighthawk_test_server
178
+
179
+
Nighthawk’s test server, based on Envoy. It is able to synthesize delays and
180
+
responses based on configuration via request headers (next to on-disk
181
+
configuration).
182
+
183
+
### nighthawk_output_transform
184
+
185
+
Utility for transforming the nighthawk-native json output format into
186
+
other formats (e.g. human, fortio). It can be very useful to always store the
187
+
json output format, yet be able to easily get to one of the other output
188
+
formats. It’s like having the cake and eating it too!
189
+
190
+
## User-specified Nighthawk logging
191
+
192
+
Users of Nighthawk can specify custom format and destination (logging sink
193
+
delegate) for all Nighthawk logging messages. Nighthawk utilizes the Envoy's
194
+
logging mechanism by performing all logging via the **ENVOY_LOG** macro. To
195
+
customize this mechanism, users need to perform two steps:
196
+
1. Create a logging sink delegate inherited from [Envoy SinkDelegate](https://github.com/envoyproxy/envoy/blob/main/source/common/common/logger.h).
197
+
2. Construct a ServiceImpl object with an [Envoy Logger Context](https://github.com/envoyproxy/envoy/blob/main/source/common/common/logger.h) which contains user-specified log level and format.
0 commit comments