From c6467a9c11c932808b4efd30cd07acee4c530696 Mon Sep 17 00:00:00 2001 From: Hansong Zhang Date: Mon, 29 Apr 2019 14:35:53 -0700 Subject: [PATCH] Gracefully shutdown SUT in cert * After each test suite, shutdown the stack before closing rootcanal * Don't stop gRPC server twice * Crash the stack when can't build gRPC server Test: cert/run_cert.sh Change-Id: Ie4c8d749079e99b46d63fb70d157db26d9aa2474 --- gd/cert/gd_base_test.py | 2 ++ gd/cert/gd_device.py | 1 + gd/facade/stack_with_grpc_main.cc | 1 - gd/grpc/grpc_module.cc | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gd/cert/gd_base_test.py b/gd/cert/gd_base_test.py index c3af386dd..388ea03cb 100644 --- a/gd/cert/gd_base_test.py +++ b/gd/cert/gd_base_test.py @@ -61,6 +61,8 @@ class GdBaseTestClass(BaseTestClass): builtin=True) def teardown_class(self): + self.unregister_controllers() self.rootcanal_process.send_signal(signal.SIGINT) + self.rootcanal_process.wait() self.rootcanal_logs.close() diff --git a/gd/cert/gd_device.py b/gd/cert/gd_device.py index 640ab19fa..4b854b05b 100755 --- a/gd/cert/gd_device.py +++ b/gd/cert/gd_device.py @@ -117,6 +117,7 @@ class GdDevice: def clean_up(self): self.grpc_channel.close() self.backing_process.send_signal(signal.SIGINT) + self.backing_process.wait() self.backing_process_logs.close() class GdDeviceLoggerAdapter(logging.LoggerAdapter): diff --git a/gd/facade/stack_with_grpc_main.cc b/gd/facade/stack_with_grpc_main.cc index 67b618d20..c798a7138 100644 --- a/gd/facade/stack_with_grpc_main.cc +++ b/gd/facade/stack_with_grpc_main.cc @@ -69,7 +69,6 @@ int main(int argc, const char** argv) { auto wait_thread = std::thread([grpc_module] { grpc_module->RunGrpcLoop(); }); wait_thread.join(); - grpc_module->StopServer(); stack->ShutDown(); delete stack; diff --git a/gd/grpc/grpc_module.cc b/gd/grpc/grpc_module.cc index 60099a8ac..c7460093a 100644 --- a/gd/grpc/grpc_module.cc +++ b/gd/grpc/grpc_module.cc @@ -50,6 +50,7 @@ void GrpcModule::StartServer(const std::string& address, int port) { builder.AddListeningPort(listening_port, ::grpc::InsecureServerCredentials()); completion_queue_ = builder.AddCompletionQueue(); server_ = builder.BuildAndStart(); + ASSERT(server_ != nullptr); for (const auto& facade : facades_) { facade->OnServerStarted(completion_queue_.get()); -- 2.11.0