MCPcopy Create free account
hub / github.com/3rdparty/libprocess / run

Method run

src/tests/benchmarks.cpp:125–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123
124private:
125 Future<http::Response> run(const http::Request& request)
126 {
127 if (duration.get() != nullptr) {
128 return http::BadRequest("A run is already in progress");
129 }
130
131 hashmap<string, Option<string>> parameters {
132 {"server", request.url.query.get("server")},
133 {"messageSize", request.url.query.get("messageSize")},
134 {"requests", request.url.query.get("requests")},
135 {"concurrency", request.url.query.get("concurrency")},
136 };
137
138 // Ensure all parameters were provided.
139 foreachpair (const string& parameter,
140 const Option<string>& value,
141 parameters) {
142 if (value.isNone()) {
143 return http::BadRequest("Missing '" + parameter + "' parameter");
144 }
145 }
146
147 server = UPID(parameters["server"].get());
148 link(server);
149
150 Try<Bytes> messageSize = Bytes::parse(parameters["messageSize"].get());
151 if (messageSize.isError()) {
152 return http::BadRequest("Invalid 'messageSize': " + messageSize.error());
153 }
154 message = string(messageSize->bytes(), '1');
155
156 Try<size_t> numify_ = numify<size_t>(parameters["requests"].get());
157 if (numify_.isError()) {
158 return http::BadRequest("Invalid 'requests': " + numify_.error());
159 }
160 totalRequests = numify_.get();
161
162 numify_ = numify<size_t>(parameters["concurrency"].get());
163 if (numify_.isError()) {
164 return http::BadRequest("Invalid 'concurrency': " + numify_.error());
165 }
166 concurrency = numify_.get();
167
168 if (concurrency > totalRequests) {
169 concurrency = totalRequests;
170 }
171
172 return _run()
173 .then([](const Duration& duration) -> Future<http::Response> {
174 return http::OK(stringify(duration));
175 });
176 }
177
178 Future<Duration> _run()
179 {

Callers 1

foreachFunction · 0.45

Calls 6

BadRequestClass · 0.85
UPIDClass · 0.85
OKClass · 0.85
parseFunction · 0.50
getMethod · 0.45
thenMethod · 0.45

Tested by

no test coverage detected