media/webrtc/trunk/testing/multiprocess_func_list.h

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

     1 // Copyright (c) 2008 The Chromium Authors. All rights reserved.
     2 // Use of this source code is governed by a BSD-style license that can be
     3 // found in the LICENSE file.
     5 #ifndef TESTING_MULTIPROCESS_FUNC_LIST_H_
     6 #define TESTING_MULTIPROCESS_FUNC_LIST_H_
     8 #include <string>
    10 // This file provides the plumbing to register functions to be executed
    11 // as the main function of a child process in a multi-process test.
    12 // This complements the MultiProcessTest class which provides facilities
    13 // for launching such tests.
    14 //
    15 // The MULTIPROCESS_TEST_MAIN() macro registers a string -> func_ptr mapping
    16 // by creating a new global instance of the AppendMultiProcessTest() class
    17 // this means that by the time that we reach our main() function the mapping
    18 // is already in place.
    19 //
    20 // Example usage:
    21 //  MULTIPROCESS_TEST_MAIN(a_test_func) {
    22 //    // Code here runs in a child process.
    23 //    return 0;
    24 //  }
    25 //
    26 // The prototype of a_test_func is implicitly
    27 //   int test_main_func_name();
    29 namespace multi_process_function_list {
    31 // Type for child process main functions.
    32 typedef int (*ChildFunctionPtr)();
    34 // Helper class to append a test function to the global mapping.
    35 // Used by the MULTIPROCESS_TEST_MAIN macro.
    36 class AppendMultiProcessTest {
    37  public:
    38   AppendMultiProcessTest(std::string test_name, ChildFunctionPtr func_ptr);
    39 };
    41 // Invoke the main function of a test previously registered with
    42 // MULTIPROCESS_TEST_MAIN()
    43 int InvokeChildProcessTest(std::string test_name);
    45 // This macro creates a global MultiProcessTest::AppendMultiProcessTest object
    46 // whose constructor does the work of adding the global mapping.
    47 #define MULTIPROCESS_TEST_MAIN(test_main) \
    48   int test_main(); \
    49   namespace { \
    50     multi_process_function_list::AppendMultiProcessTest \
    51     AddMultiProcessTest##_##test_main(#test_main, (test_main)); \
    52   } \
    53   int test_main()
    55 }  // namespace multi_process_function_list
    57 #endif  // TESTING_MULTIPROCESS_FUNC_LIST_H_

mercurial