Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: util/mach/mach_message_server_test.cc

Issue 586053002: MachMultiprocess test: the child process must wait for the parent to finish (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Handle it in the base class Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | util/test/mac/mach_multiprocess.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Crashpad Authors. All rights reserved. 1 // Copyright 2014 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 716
717 TEST(MachMessageServer, Complex) { 717 TEST(MachMessageServer, Complex) {
718 // The client allocates a new receive right and sends a complex request 718 // The client allocates a new receive right and sends a complex request
719 // message to the server with a send right made out of this receive right. The 719 // message to the server with a send right made out of this receive right. The
720 // server receives this message and is instructed to destroy the send right 720 // server receives this message and is instructed to destroy the send right
721 // when it is done handling the request-reply transaction. The former send 721 // when it is done handling the request-reply transaction. The former send
722 // right is verified to be invalid after the server runs. This test ensures 722 // right is verified to be invalid after the server runs. This test ensures
723 // that resources transferred to a server process temporarily aren’t leaked. 723 // that resources transferred to a server process temporarily aren’t leaked.
724 TestMachMessageServer::Options options; 724 TestMachMessageServer::Options options;
725 options.client_send_complex = true; 725 options.client_send_complex = true;
726 options.child_wait_for_parent_pipe = true;
727 TestMachMessageServer test_mach_message_server(options); 726 TestMachMessageServer test_mach_message_server(options);
728 test_mach_message_server.Test(); 727 test_mach_message_server.Test();
729 } 728 }
730 729
731 TEST(MachMessageServer, ComplexNotDestroyed) { 730 TEST(MachMessageServer, ComplexNotDestroyed) {
732 // As in MachMessageServer.Complex, but the server is instructed not to 731 // As in MachMessageServer.Complex, but the server is instructed not to
733 // destroy the send right. After the server runs, the send right is verified 732 // destroy the send right. After the server runs, the send right is verified
734 // to continue to exist in the server task. The client process is then 733 // to continue to exist in the server task. The client process is then
735 // signalled by pipe that it’s safe to exit so that the send right in the 734 // signalled by pipe that it’s safe to exit so that the send right in the
736 // server task doesn’t prematurely become a dead name. This test ensures that 735 // server task doesn’t prematurely become a dead name. This test ensures that
737 // rights that are expected to be retained in the server task are properly 736 // rights that are expected to be retained in the server task are properly
738 // retained. 737 // retained.
739 TestMachMessageServer::Options options; 738 TestMachMessageServer::Options options;
740 options.server_destroy_complex = false; 739 options.server_destroy_complex = false;
741 options.expect_server_destroyed_complex = false; 740 options.expect_server_destroyed_complex = false;
742 options.client_send_complex = true; 741 options.client_send_complex = true;
743 options.child_wait_for_parent_pipe = true;
744 TestMachMessageServer test_mach_message_server(options); 742 TestMachMessageServer test_mach_message_server(options);
745 test_mach_message_server.Test(); 743 test_mach_message_server.Test();
746 } 744 }
747 745
748 TEST(MachMessageServer, ComplexDestroyedInvalidArgument) { 746 TEST(MachMessageServer, ComplexDestroyedInvalidArgument) {
749 // As in MachMessageServer.ComplexNotDestroyed, but the server does not return 747 // As in MachMessageServer.ComplexNotDestroyed, but the server does not return
750 // a successful code via MIG. The server is expected to destroy resources in 748 // a successful code via MIG. The server is expected to destroy resources in
751 // this case, because server_destroy_complex = false is only honored when a 749 // this case, because server_destroy_complex = false is only honored when a
752 // MIG request is handled successfully or with no reply. 750 // MIG request is handled successfully or with no reply.
753 TestMachMessageServer::Options options; 751 TestMachMessageServer::Options options;
754 options.server_mig_retcode = KERN_INVALID_TASK; 752 options.server_mig_retcode = KERN_INVALID_TASK;
755 options.server_destroy_complex = false; 753 options.server_destroy_complex = false;
756 options.client_send_complex = true; 754 options.client_send_complex = true;
757 options.child_wait_for_parent_pipe = true;
758 TestMachMessageServer test_mach_message_server(options); 755 TestMachMessageServer test_mach_message_server(options);
759 test_mach_message_server.Test(); 756 test_mach_message_server.Test();
760 } 757 }
761 758
762 TEST(MachMessageServer, ComplexNotDestroyedNoReply) { 759 TEST(MachMessageServer, ComplexNotDestroyedNoReply) {
763 // As in MachMessageServer.ComplexNotDestroyed, but the server does not send 760 // As in MachMessageServer.ComplexNotDestroyed, but the server does not send
764 // a reply message and is expected to retain the send right in the server 761 // a reply message and is expected to retain the send right in the server
765 // task. 762 // task.
766 TestMachMessageServer::Options options; 763 TestMachMessageServer::Options options;
767 options.server_mig_retcode = MIG_NO_REPLY; 764 options.server_mig_retcode = MIG_NO_REPLY;
(...skipping 26 matching lines...) Expand all
794 // so a new buffer is allocated to receive the message. The server receives 791 // so a new buffer is allocated to receive the message. The server receives
795 // the large request message, processes it, and returns a reply to the client. 792 // the large request message, processes it, and returns a reply to the client.
796 TestMachMessageServer::Options options; 793 TestMachMessageServer::Options options;
797 options.server_options = MACH_RCV_LARGE; 794 options.server_options = MACH_RCV_LARGE;
798 options.client_send_large = true; 795 options.client_send_large = true;
799 TestMachMessageServer test_mach_message_server(options); 796 TestMachMessageServer test_mach_message_server(options);
800 test_mach_message_server.Test(); 797 test_mach_message_server.Test();
801 } 798 }
802 799
803 } // namespace 800 } // namespace
OLDNEW
« no previous file with comments | « no previous file | util/test/mac/mach_multiprocess.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698