commit
b720b609ea
135 changed files with 4124 additions and 5441 deletions
@ -0,0 +1,57 @@ |
|||||||
|
/*
|
||||||
|
* |
||||||
|
* Copyright 2016, Google Inc. |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are |
||||||
|
* met: |
||||||
|
* |
||||||
|
* * Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* * Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following disclaimer |
||||||
|
* in the documentation and/or other materials provided with the |
||||||
|
* distribution. |
||||||
|
* * Neither the name of Google Inc. nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "src/core/lib/transport/pid_controller.h" |
||||||
|
|
||||||
|
void grpc_pid_controller_init(grpc_pid_controller *pid_controller, |
||||||
|
double gain_p, double gain_i, double gain_d) { |
||||||
|
pid_controller->gain_p = gain_p; |
||||||
|
pid_controller->gain_i = gain_i; |
||||||
|
pid_controller->gain_d = gain_d; |
||||||
|
grpc_pid_controller_reset(pid_controller); |
||||||
|
} |
||||||
|
|
||||||
|
void grpc_pid_controller_reset(grpc_pid_controller *pid_controller) { |
||||||
|
pid_controller->last_error = 0.0; |
||||||
|
pid_controller->error_integral = 0.0; |
||||||
|
} |
||||||
|
|
||||||
|
double grpc_pid_controller_update(grpc_pid_controller *pid_controller, |
||||||
|
double error, double dt) { |
||||||
|
pid_controller->error_integral += error * dt; |
||||||
|
double diff_error = (error - pid_controller->last_error) / dt; |
||||||
|
pid_controller->last_error = error; |
||||||
|
return dt * (pid_controller->gain_p * error + |
||||||
|
pid_controller->gain_i * pid_controller->error_integral + |
||||||
|
pid_controller->gain_d * diff_error); |
||||||
|
} |
@ -0,0 +1,64 @@ |
|||||||
|
/*
|
||||||
|
* |
||||||
|
* Copyright 2016, Google Inc. |
||||||
|
* All rights reserved. |
||||||
|
* |
||||||
|
* Redistribution and use in source and binary forms, with or without |
||||||
|
* modification, are permitted provided that the following conditions are |
||||||
|
* met: |
||||||
|
* |
||||||
|
* * Redistributions of source code must retain the above copyright |
||||||
|
* notice, this list of conditions and the following disclaimer. |
||||||
|
* * Redistributions in binary form must reproduce the above |
||||||
|
* copyright notice, this list of conditions and the following disclaimer |
||||||
|
* in the documentation and/or other materials provided with the |
||||||
|
* distribution. |
||||||
|
* * Neither the name of Google Inc. nor the names of its |
||||||
|
* contributors may be used to endorse or promote products derived from |
||||||
|
* this software without specific prior written permission. |
||||||
|
* |
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
* |
||||||
|
*/ |
||||||
|
|
||||||
|
#ifndef GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H |
||||||
|
#define GRPC_CORE_LIB_TRANSPORT_PID_CONTROLLER_H |
||||||
|
|
||||||
|
/* \file Simple PID controller.
|
||||||
|
Implements a proportional-integral-derivative controller. |
||||||
|
Used when we want to iteratively control a variable to converge some other |
||||||
|
observed value to a 'set-point'. |
||||||
|
Gains can be set to adjust sensitivity to current error (p), the integral |
||||||
|
of error (i), and the derivative of error (d). */ |
||||||
|
|
||||||
|
typedef struct { |
||||||
|
double gain_p; |
||||||
|
double gain_i; |
||||||
|
double gain_d; |
||||||
|
double last_error; |
||||||
|
double error_integral; |
||||||
|
} grpc_pid_controller; |
||||||
|
|
||||||
|
/** Initialize the controller */ |
||||||
|
void grpc_pid_controller_init(grpc_pid_controller *pid_controller, |
||||||
|
double gain_p, double gain_i, double gain_d); |
||||||
|
|
||||||
|
/** Reset the controller: useful when things have changed significantly */ |
||||||
|
void grpc_pid_controller_reset(grpc_pid_controller *pid_controller); |
||||||
|
|
||||||
|
/** Update the controller: given a current error estimate, and the time since
|
||||||
|
the last update, returns a delta to the control value */ |
||||||
|
double grpc_pid_controller_update(grpc_pid_controller *pid_controller, |
||||||
|
double error, double dt); |
||||||
|
|
||||||
|
#endif |
@ -0,0 +1,53 @@ |
|||||||
|
#!/usr/bin/env python2.7 |
||||||
|
|
||||||
|
# Copyright 2015, Google Inc. |
||||||
|
# All rights reserved. |
||||||
|
# |
||||||
|
# Redistribution and use in source and binary forms, with or without |
||||||
|
# modification, are permitted provided that the following conditions are |
||||||
|
# met: |
||||||
|
# |
||||||
|
# * Redistributions of source code must retain the above copyright |
||||||
|
# notice, this list of conditions and the following disclaimer. |
||||||
|
# * Redistributions in binary form must reproduce the above |
||||||
|
# copyright notice, this list of conditions and the following disclaimer |
||||||
|
# in the documentation and/or other materials provided with the |
||||||
|
# distribution. |
||||||
|
# * Neither the name of Google Inc. nor the names of its |
||||||
|
# contributors may be used to endorse or promote products derived from |
||||||
|
# this software without specific prior written permission. |
||||||
|
# |
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||||
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||||
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||||
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||||
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||||
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||||
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||||
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||||
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||||
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||||
|
|
||||||
|
import os |
||||||
|
import sys |
||||||
|
import glob |
||||||
|
import yaml |
||||||
|
|
||||||
|
os.chdir(os.path.dirname(sys.argv[0])+'/../..') |
||||||
|
|
||||||
|
out = {} |
||||||
|
|
||||||
|
out['libs'] = [{ |
||||||
|
'name': 'google_benchmark', |
||||||
|
'build': 'private', |
||||||
|
'language': 'c++', |
||||||
|
'secure': 'no', |
||||||
|
'defaults': 'google_benchmark', |
||||||
|
'src': sorted(glob.glob('third_party/google_benchmark/src/*.cc')), |
||||||
|
'headers': sorted( |
||||||
|
glob.glob('third_party/google_benchmark/src/*.h') + |
||||||
|
glob.glob('third_party/google_benchmark/include/benchmark/*.h')), |
||||||
|
}] |
||||||
|
|
||||||
|
print yaml.dump(out) |
@ -1,128 +0,0 @@ |
|||||||
//
|
|
||||||
// Copyright 2016, Google Inc.
|
|
||||||
// All rights reserved.
|
|
||||||
//
|
|
||||||
// Redistribution and use in source and binary forms, with or without
|
|
||||||
// modification, are permitted provided that the following conditions are
|
|
||||||
// met:
|
|
||||||
//
|
|
||||||
// * Redistributions of source code must retain the above copyright
|
|
||||||
// notice, this list of conditions and the following disclaimer.
|
|
||||||
// * Redistributions in binary form must reproduce the above
|
|
||||||
// copyright notice, this list of conditions and the following disclaimer
|
|
||||||
// in the documentation and/or other materials provided with the
|
|
||||||
// distribution.
|
|
||||||
// * Neither the name of Google Inc. nor the names of its
|
|
||||||
// contributors may be used to endorse or promote products derived from
|
|
||||||
// this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "test/core/end2end/end2end_tests.h" |
|
||||||
|
|
||||||
#include <string.h> |
|
||||||
|
|
||||||
#include <grpc/support/alloc.h> |
|
||||||
#include <grpc/support/host_port.h> |
|
||||||
#include <grpc/support/log.h> |
|
||||||
#include <grpc/support/string_util.h> |
|
||||||
#include <grpc/support/sync.h> |
|
||||||
#include <grpc/support/thd.h> |
|
||||||
#include <grpc/support/useful.h> |
|
||||||
|
|
||||||
#include "src/core/ext/client_channel/client_channel.h" |
|
||||||
#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" |
|
||||||
#include "src/core/lib/channel/connected_channel.h" |
|
||||||
#include "src/core/lib/channel/http_server_filter.h" |
|
||||||
#include "src/core/lib/surface/channel.h" |
|
||||||
#include "src/core/lib/surface/server.h" |
|
||||||
#include "test/core/end2end/fake_resolver.h" |
|
||||||
#include "test/core/util/port.h" |
|
||||||
#include "test/core/util/test_config.h" |
|
||||||
|
|
||||||
typedef struct fullstack_fixture_data { |
|
||||||
char *localaddr; |
|
||||||
} fullstack_fixture_data; |
|
||||||
|
|
||||||
static grpc_end2end_test_fixture chttp2_create_fixture_fullstack( |
|
||||||
grpc_channel_args *client_args, grpc_channel_args *server_args) { |
|
||||||
grpc_end2end_test_fixture f; |
|
||||||
int port = grpc_pick_unused_port_or_die(); |
|
||||||
fullstack_fixture_data *ffd = gpr_malloc(sizeof(fullstack_fixture_data)); |
|
||||||
memset(&f, 0, sizeof(f)); |
|
||||||
|
|
||||||
gpr_join_host_port(&ffd->localaddr, "127.0.0.1", port); |
|
||||||
|
|
||||||
f.fixture_data = ffd; |
|
||||||
f.cq = grpc_completion_queue_create(NULL); |
|
||||||
|
|
||||||
return f; |
|
||||||
} |
|
||||||
|
|
||||||
void chttp2_init_client_fullstack(grpc_end2end_test_fixture *f, |
|
||||||
grpc_channel_args *client_args, |
|
||||||
const char *query_args) { |
|
||||||
fullstack_fixture_data *ffd = f->fixture_data; |
|
||||||
char *server_uri; |
|
||||||
gpr_asprintf(&server_uri, "test:%s%s%s", ffd->localaddr, |
|
||||||
(query_args == NULL ? "" : "?"), |
|
||||||
(query_args == NULL ? "" : query_args)); |
|
||||||
gpr_log(GPR_INFO, "server_uri: %s", server_uri); |
|
||||||
f->client = grpc_insecure_channel_create(server_uri, client_args, NULL); |
|
||||||
GPR_ASSERT(f->client); |
|
||||||
gpr_free(server_uri); |
|
||||||
} |
|
||||||
|
|
||||||
void chttp2_init_server_fullstack(grpc_end2end_test_fixture *f, |
|
||||||
grpc_channel_args *server_args) { |
|
||||||
fullstack_fixture_data *ffd = f->fixture_data; |
|
||||||
if (f->server) { |
|
||||||
grpc_server_destroy(f->server); |
|
||||||
} |
|
||||||
f->server = grpc_server_create(server_args, NULL); |
|
||||||
grpc_server_register_completion_queue(f->server, f->cq, NULL); |
|
||||||
GPR_ASSERT(grpc_server_add_insecure_http2_port(f->server, ffd->localaddr)); |
|
||||||
grpc_server_start(f->server); |
|
||||||
} |
|
||||||
|
|
||||||
void chttp2_tear_down_fullstack(grpc_end2end_test_fixture *f) { |
|
||||||
fullstack_fixture_data *ffd = f->fixture_data; |
|
||||||
gpr_free(ffd->localaddr); |
|
||||||
gpr_free(ffd); |
|
||||||
} |
|
||||||
|
|
||||||
/* All test configurations */ |
|
||||||
static grpc_end2end_test_config configs[] = { |
|
||||||
{"chttp2/fullstack", FEATURE_MASK_SUPPORTS_DELAYED_CONNECTION | |
|
||||||
FEATURE_MASK_SUPPORTS_QUERY_ARGS, |
|
||||||
chttp2_create_fixture_fullstack, chttp2_init_client_fullstack, |
|
||||||
chttp2_init_server_fullstack, chttp2_tear_down_fullstack}, |
|
||||||
}; |
|
||||||
|
|
||||||
int main(int argc, char **argv) { |
|
||||||
size_t i; |
|
||||||
|
|
||||||
grpc_test_init(argc, argv); |
|
||||||
grpc_end2end_tests_pre_init(); |
|
||||||
grpc_fake_resolver_init(); |
|
||||||
grpc_init(); |
|
||||||
|
|
||||||
for (i = 0; i < sizeof(configs) / sizeof(*configs); i++) { |
|
||||||
grpc_end2end_tests(argc, argv, configs[i]); |
|
||||||
} |
|
||||||
|
|
||||||
grpc_shutdown(); |
|
||||||
|
|
||||||
return 0; |
|
||||||
} |
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue