Merge pull request #10844 from ctiller/PSC

Fixes for test stability (especially microbenchmarks)
pull/10840/head^2
Craig Tiller 8 years ago committed by GitHub
commit b864e7c41c
  1. 4
      test/core/util/port_server_client.c
  2. 24
      test/cpp/microbenchmarks/fullstack_fixtures.h
  3. 1
      tools/jenkins/run_performance.sh
  4. 5
      tools/profiling/microbenchmarks/bm_diff.py
  5. 7
      tools/run_tests/python_utils/port_server.py

@ -103,7 +103,7 @@ void grpc_free_port_using_server(int port) {
grpc_resource_quota *resource_quota =
grpc_resource_quota_create("port_server_client/free");
grpc_httpcli_get(&exec_ctx, &context, &pr.pops, resource_quota, &req,
grpc_timeout_seconds_to_deadline(10),
grpc_timeout_seconds_to_deadline(30),
grpc_closure_create(freed_port_from_server, &pr,
grpc_schedule_on_exec_ctx),
&rsp);
@ -235,7 +235,7 @@ int grpc_pick_port_using_server(void) {
grpc_resource_quota_create("port_server_client/pick");
grpc_httpcli_get(
&exec_ctx, &context, &pr.pops, resource_quota, &req,
grpc_timeout_seconds_to_deadline(10),
grpc_timeout_seconds_to_deadline(30),
grpc_closure_create(got_port_from_server, &pr, grpc_schedule_on_exec_ctx),
&pr.response);
grpc_resource_quota_unref_internal(&exec_ctx, resource_quota);

@ -113,13 +113,17 @@ class TCP : public FullstackFixture {
public:
TCP(Service* service, const FixtureConfiguration& fixture_configuration =
FixtureConfiguration())
: FullstackFixture(service, fixture_configuration, MakeAddress()) {}
: FullstackFixture(service, fixture_configuration, MakeAddress(&port_)) {}
~TCP() { grpc_recycle_unused_port(port_); }
private:
static grpc::string MakeAddress() {
int port = grpc_pick_unused_port_or_die();
int port_;
static grpc::string MakeAddress(int* port) {
*port = grpc_pick_unused_port_or_die();
std::stringstream addr;
addr << "localhost:" << port;
addr << "localhost:" << *port;
return addr.str();
}
};
@ -128,14 +132,18 @@ class UDS : public FullstackFixture {
public:
UDS(Service* service, const FixtureConfiguration& fixture_configuration =
FixtureConfiguration())
: FullstackFixture(service, fixture_configuration, MakeAddress()) {}
: FullstackFixture(service, fixture_configuration, MakeAddress(&port_)) {}
~UDS() { grpc_recycle_unused_port(port_); }
private:
static grpc::string MakeAddress() {
int port = grpc_pick_unused_port_or_die(); // just for a unique id - not a
int port_;
static grpc::string MakeAddress(int* port) {
*port = grpc_pick_unused_port_or_die(); // just for a unique id - not a
// real port
std::stringstream addr;
addr << "unix:/tmp/bm_fullstack." << port;
addr << "unix:/tmp/bm_fullstack." << *port;
return addr.str();
}
};

@ -37,4 +37,5 @@ BENCHMARKS_TO_RUN="bm_fullstack_unary_ping_pong bm_fullstack_streaming_ping_pong
# Enter the gRPC repo root
cd $(dirname $0)/../..
tools/run_tests/start_port_server.py
tools/profiling/microbenchmarks/bm_diff.py -d origin/$ghprbTargetBranch -b $BENCHMARKS_TO_RUN

@ -204,7 +204,10 @@ def eintr_be_gone(fn):
def read_json(filename):
try:
with open(filename) as f: return json.loads(f.read())
except ValueError, e:
return None
def finalize():
@ -217,11 +220,13 @@ def finalize():
js_old_ctr = read_json('%s.counters.old.%d.json' % (bm, loop))
js_old_opt = read_json('%s.opt.old.%d.json' % (bm, loop))
if js_new_ctr:
for row in bm_json.expand_json(js_new_ctr, js_new_opt):
print row
name = row['cpp_name']
if name.endswith('_mean') or name.endswith('_stddev'): continue
benchmarks[name].add_sample(row, True)
if js_old_ctr:
for row in bm_json.expand_json(js_old_ctr, js_old_opt):
print row
name = row['cpp_name']

@ -46,7 +46,7 @@ import threading
# increment this number whenever making a change to ensure that
# the changes are picked up by running CI servers
# note that all changes must be backwards compatible
_MY_VERSION = 11
_MY_VERSION = 14
if len(sys.argv) == 2 and sys.argv[1] == 'dump_version':
@ -166,12 +166,11 @@ class Handler(BaseHTTPRequestHandler):
elif self.path == '/quitquitquit':
self.send_response(200)
self.end_headers()
sys.exit(0)
self.server.shutdown()
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
"""Handle requests in a separate thread"""
httpd = ThreadedHTTPServer(('', args.port), Handler)
httpd.serve_forever()
ThreadedHTTPServer(('', args.port), Handler).serve_forever()

Loading…
Cancel
Save