VirtualBox

source: vbox/trunk/src/VBox/Runtime/testcase/tstRTProcCreatePrf.cpp@ 66404

Last change on this file since 66404 was 62477, checked in by vboxsync, 8 years ago

(C) 2016

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.9 KB
Line 
1/* $Id: tstRTProcCreatePrf.cpp 62477 2016-07-22 18:27:37Z vboxsync $ */
2/** @file
3 * IPRT Testcase - RTProcCreate Profiling.
4 */
5
6/*
7 * Copyright (C) 2012-2016 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * The contents of this file may alternatively be used under the terms
18 * of the Common Development and Distribution License Version 1.0
19 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
20 * VirtualBox OSE distribution, in which case the provisions of the
21 * CDDL are applicable instead of those of the GPL.
22 *
23 * You may elect to license modified versions of this file under the
24 * terms and conditions of either the GPL or the CDDL or both.
25 */
26
27
28/*********************************************************************************************************************************
29* Header Files *
30*********************************************************************************************************************************/
31#include <iprt/process.h>
32#include <iprt/test.h>
33#include <iprt/time.h>
34#include <iprt/path.h>
35#include <iprt/env.h>
36#include <iprt/string.h>
37
38
39int main(int argc, char **argv)
40{
41 /* the child response. */
42 if (argc != 1)
43 return 0;
44
45 RTTEST hTest;
46 RTEXITCODE rcExit = RTTestInitAndCreate("tstRTProcCreatePrf", &hTest);
47 if (rcExit)
48 return rcExit;
49 RTTestBanner(hTest);
50
51 char szExecPath[RTPATH_MAX];
52 if (!RTProcGetExecutablePath(szExecPath, sizeof(szExecPath)))
53 RTStrCopy(szExecPath, sizeof(szExecPath), argv[0]);
54
55 const char *apszArgs[4] = { szExecPath, "child", "process", NULL };
56
57 uint64_t NsStart = RTTimeNanoTS();
58 uint32_t i;
59#if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) || defined(RT_OS_DARWIN)
60 for (i = 0; i < 1000; i++)
61#else
62 for (i = 0; i < 10000; i++)
63#endif
64 {
65 RTPROCESS hProc;
66 RTTEST_CHECK_RC_BREAK(hTest, RTProcCreate(szExecPath, apszArgs, RTENV_DEFAULT, 0 /* fFlags*/, &hProc), VINF_SUCCESS);
67 RTPROCSTATUS ChildStatus;
68 RTTEST_CHECK_RC_BREAK(hTest, RTProcWait(hProc, RTPROCWAIT_FLAGS_BLOCK, &ChildStatus), VINF_SUCCESS);
69 RTTEST_CHECK_BREAK(hTest, ChildStatus.enmReason == RTPROCEXITREASON_NORMAL);
70 RTTEST_CHECK_BREAK(hTest, ChildStatus.iStatus == 0);
71 }
72 uint64_t cNsElapsed = RTTimeNanoTS() - NsStart;
73 if (i)
74 {
75 RTTestValue(hTest, "Time per process", cNsElapsed / i, RTTESTUNIT_NS);
76 }
77
78 /*
79 * Summary.
80 */
81 return RTTestSummaryAndDestroy(hTest);
82}
83
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette