llallocator_heap_profile_test.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:7k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /**
  2.  * @file   llallocator_heap_profile_test.cpp
  3.  * @author Brad Kittenbrink
  4.  * @date   2008-02-
  5.  * @brief  Test for llallocator_heap_profile.cpp.
  6.  * 
  7.  * $LicenseInfo:firstyear=2009&license=viewergpl$
  8.  * 
  9.  * Copyright (c) 2009-2010, Linden Research, Inc.
  10.  * 
  11.  * Second Life Viewer Source Code
  12.  * The source code in this file ("Source Code") is provided by Linden Lab
  13.  * to you under the terms of the GNU General Public License, version 2.0
  14.  * ("GPL"), unless you have obtained a separate licensing agreement
  15.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  16.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  17.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  18.  * 
  19.  * There are special exceptions to the terms and conditions of the GPL as
  20.  * it is applied to this Source Code. View the full text of the exception
  21.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  22.  * online at
  23.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  24.  * 
  25.  * By copying, modifying or distributing this software, you acknowledge
  26.  * that you have read and understood your obligations described above,
  27.  * and agree to abide by those obligations.
  28.  * 
  29.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  30.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  31.  * COMPLETENESS OR PERFORMANCE.
  32.  * $/LicenseInfo$
  33.  */
  34. #include "../llallocator_heap_profile.h"
  35. #include "../test/lltut.h"
  36. namespace tut
  37. {
  38.     struct llallocator_heap_profile_data
  39.     {
  40.         LLAllocatorHeapProfile prof;
  41.         static char const * const sample_win_profile;
  42.         // *TODO - get test output from mac/linux tcmalloc
  43.         static char const * const sample_mac_profile;
  44.         static char const * const sample_lin_profile;
  45.         static char const * const crash_testcase;
  46.     };
  47.     typedef test_group<llallocator_heap_profile_data> factory;
  48.     typedef factory::object object;
  49. }
  50. namespace
  51. {
  52.         tut::factory llallocator_heap_profile_test_factory("LLAllocatorHeapProfile");
  53. }
  54. namespace tut
  55. {
  56.     template<> template<>
  57.     void object::test<1>()
  58.     {
  59.         prof.parse(sample_win_profile);
  60.         ensure_equals("count lines", prof.mLines.size() , 5);
  61.         ensure_equals("alloc counts", prof.mLines[0].mLiveCount, 2131854U);
  62.         ensure_equals("alloc counts", prof.mLines[0].mLiveSize, 2245710106ULL);
  63.         ensure_equals("alloc counts", prof.mLines[0].mTotalCount, 14069198U);
  64.         ensure_equals("alloc counts", prof.mLines[0].mTotalSize, 4295177308ULL);
  65.         ensure_equals("count markers", prof.mLines[0].mTrace.size(), 0);
  66.         ensure_equals("count markers", prof.mLines[1].mTrace.size(), 0);
  67.         ensure_equals("count markers", prof.mLines[2].mTrace.size(), 4);
  68.         ensure_equals("count markers", prof.mLines[3].mTrace.size(), 6);
  69.         ensure_equals("count markers", prof.mLines[4].mTrace.size(), 7);
  70.         //prof.dump(std::cout);
  71.     }
  72.     template<> template<>
  73.     void object::test<2>()
  74.     {
  75.         prof.parse(crash_testcase);
  76.         ensure_equals("count lines", prof.mLines.size(), 2);
  77.         ensure_equals("alloc counts", prof.mLines[0].mLiveCount, 3U);
  78.         ensure_equals("alloc counts", prof.mLines[0].mLiveSize, 1049652ULL);
  79.         ensure_equals("alloc counts", prof.mLines[0].mTotalCount, 8U);
  80.         ensure_equals("alloc counts", prof.mLines[0].mTotalSize, 1049748ULL);
  81.         ensure_equals("count markers", prof.mLines[0].mTrace.size(), 0);
  82.         ensure_equals("count markers", prof.mLines[1].mTrace.size(), 0);
  83.         //prof.dump(std::cout);
  84.     }
  85.     template<> template<>
  86.     void object::test<3>()
  87.     {
  88.         // test that we don't crash on edge case data
  89.         prof.parse("");
  90.         ensure("emtpy on error", prof.mLines.empty());
  91.         prof.parse("heap profile:");
  92.         ensure("emtpy on error", prof.mLines.empty());
  93.     }
  94. char const * const llallocator_heap_profile_data::sample_win_profile =
  95. "heap profile: 2131854: 2245710106 [14069198: 4295177308] @n"
  96. "308592: 1073398388 [966564: 1280998739] @n"
  97. "462651: 375969538 [1177377: 753561247] @        2        3        6        1n"
  98. "314744: 206611283 [2008722: 570934755] @        2        3        3        7       21       32n"
  99. "277152: 82862770 [621961: 168503640] @        2        3        3        7       21       32       87n"
  100. "n"
  101. "MAPPED_LIBRARIES:n"
  102. "00400000-02681000 r-xp 00000000 00:00 0           c:\proj\tcmalloc-eval-9\indra\build-vc80\newview\RelWithDebInfo\secondlife-bin.exen"
  103. "77280000-773a7000 r-xp 00000000 00:00 0           C:\Windows\system32\ntdll.dlln"
  104. "76df0000-76ecb000 r-xp 00000000 00:00 0           C:\Windows\system32\kernel32.dlln"
  105. "76000000-76073000 r-xp 00000000 00:00 0           C:\Windows\system32\comdlg32.dlln"
  106. "75ee0000-75f8a000 r-xp 00000000 00:00 0           C:\Windows\system32\msvcrt.dlln"
  107. "76c30000-76c88000 r-xp 00000000 00:00 0           C:\Windows\system32\SHLWAPI.dlln"
  108. "75f90000-75fdb000 r-xp 00000000 00:00 0           C:\Windows\system32\GDI32.dlln"
  109. "77420000-774bd000 r-xp 00000000 00:00 0           C:\Windows\system32\USER32.dlln"
  110. "75e10000-75ed6000 r-xp 00000000 00:00 0           C:\Windows\system32\ADVAPI32.dlln"
  111. "75b00000-75bc2000 r-xp 00000000 00:00 0           C:\Windows\system32\RPCRT4.dlln"
  112. "72ca0000-72d25000 r-xp 00000000 00:00 0           C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6001.18000_none_886786f450a74a05\COMCTL32.dlln"
  113. "76120000-76c30000 r-xp 00000000 00:00 0           C:\Windows\system32\SHELL32.dlln"
  114. "71ce0000-71d13000 r-xp 00000000 00:00 0           C:\Windows\system32\DINPUT8.dlln";
  115. char const * const llallocator_heap_profile_data::crash_testcase =
  116. "heap profile:      3:  1049652 [     8:  1049748] @n"
  117. "     3:  1049652 [     8:  1049748] @n"
  118. "n"
  119. "MAPPED_LIBRARIES:n"
  120. "00400000-004d5000 r-xp 00000000 00:00 0           c:\code\linden\tcmalloc\indra\build-vc80\llcommon\RelWithDebInfo\llallocator_test.exen"
  121. "7c900000-7c9af000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\ntdll.dlln"
  122. "7c800000-7c8f6000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\kernel32.dlln"
  123. "77dd0000-77e6b000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\ADVAPI32.dlln"
  124. "77e70000-77f02000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\RPCRT4.dlln"
  125. "77fe0000-77ff1000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\Secur32.dlln"
  126. "71ab0000-71ac7000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\WS2_32.dlln"
  127. "77c10000-77c68000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\msvcrt.dlln"
  128. "71aa0000-71aa8000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\WS2HELP.dlln"
  129. "76bf0000-76bfb000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\PSAPI.DLLn"
  130. "5b860000-5b8b5000 r-xp 00000000 00:00 0           C:\WINDOWS\system32\NETAPI32.dlln"
  131. "10000000-10041000 r-xp 00000000 00:00 0           c:\code\linden\tcmalloc\indra\build-vc80\llcommon\RelWithDebInfo\libtcmalloc_minimal.dlln"
  132. "7c420000-7c4a7000 r-xp 00000000 00:00 0           C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\MSVCP80.dlln"
  133. "78130000-781cb000 r-xp 00000000 00:00 0           C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.1433_x-ww_5cf844d2\MSVCR80.dlln";
  134. }