summaryrefslogtreecommitdiffstats
path: root/base/tracked_objects_unittest.cc
Commit message (Collapse)AuthorAgeFilesLines
* test IWYU fixups for basemostynb@opera.com2013-09-031-0/+3
| | | | | | | | | | | | | These are some of the suggestions from running include-what-you-use[1] on the base target. [1] https://code.google.com/p/include-what-you-use/ BUG=259043 Review URL: https://chromiumcodereview.appspot.com/23540009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@221067 0039d316-1c4b-4281-b951-d872f2087c98
* Update include paths in base for base/process changes.rsesek@chromium.org2013-07-251-1/+1
| | | | | | | | | | | | | | This also updates any stragglers that I missed, fixes mistakes I may have made, and deletes the forwarding headers. After this CL, the proces_util.h project is complete. BUG=242290 TBR=brettw@chromium.org Review URL: https://codereview.chromium.org/20265004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@213702 0039d316-1c4b-4281-b951-d872f2087c98
* Use a direct include of time headers in base/, part 2.avi@chromium.org2013-06-281-1/+1
| | | | | | | | | | BUG=254986 TEST=none TBR=ben@chromium.org Review URL: https://codereview.chromium.org/18119002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209144 0039d316-1c4b-4281-b951-d872f2087c98
* Fix timings in TrackedObjects unit testisherman@chromium.org2012-04-131-1/+2
| | | | | | | | | | BUG=none TEST=green build TBR=jar@chromium.org Review URL: https://chromiumcodereview.appspot.com/10071030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132121 0039d316-1c4b-4281-b951-d872f2087c98
* [UMA] Use proper C++ objects to serialize tracked_objects across process ↵isherman@chromium.org2012-04-131-529/+287
| | | | | | | | | | | | | | | boundaries. See https://chromiumcodereview.appspot.com/9702014/ for the original code review. Uploading to a new issue due to an AppEngine error... BUG=103480 TEST=none (refactoring, no functional change expected) TBR=jam@chromium.org,jar@chromium.org,eroman@chromium.org,jhawkins@chromium.org,ajwong@chromium.org Review URL: http://codereview.chromium.org/10077001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132109 0039d316-1c4b-4281-b951-d872f2087c98
* Add virtual and OVERRIDE to base/ implementation filesrsleevi@chromium.org2012-04-061-1/+1
| | | | | | | | | | BUG=none TEST=compiles Review URL: http://codereview.chromium.org/10004001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131098 0039d316-1c4b-4281-b951-d872f2087c98
* Cleanup: Replace 'DurationInt' with int32, and always use 32-bit integers ↵isherman@chromium.org2012-03-241-2/+2
| | | | | | | | | | | | for tracking time. BUG=none TEST=none Review URL: http://codereview.chromium.org/9818004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128783 0039d316-1c4b-4281-b951-d872f2087c98
* JSONWriter cleanup: integrate pretty print into write options.ericdingle@chromium.org2012-03-161-14/+14
| | | | | | | | | | | BUG= TEST=base_unittests TBR=abodenha@chromium.org,ajwong@chromium.org,chocobo@chromium.org,mnissler@chromium.org,akalin@chromium.org,brettw@chromium.org,arv@chromium.org Review URL: http://codereview.chromium.org/9590002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127080 0039d316-1c4b-4281-b951-d872f2087c98
* Propogate status setting for profiler to track parentsjar@chromium.org2012-02-101-18/+31
| | | | | | | | | | | | | | | | [Reland: https://src.chromium.org/viewvc/chrome?view=rev&revision=120789 with minor change to avoid race on status change.] This allows child processes to track ancestry, and report it to the browser process. Parent tracking is only turned on based on an environment variable. r=rtenneti Review URL: https://chromiumcodereview.appspot.com/9363007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121491 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 120789 - Propogate status setting for profiler to track parentsjar@chromium.org2012-02-071-31/+18
| | | | | | | | | | | | | | | | | | [There is a TSAN race report... so I'm reverting] This allows child processes to track ancestry, and report it to the browser process. Parent tracking is only turned on based on an environment variable. r=rtenneti Review URL: https://chromiumcodereview.appspot.com/9181002 TBR=jar@chromium.org Review URL: https://chromiumcodereview.appspot.com/9348028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120818 0039d316-1c4b-4281-b951-d872f2087c98
* Propogate status setting for profiler to track parentsjar@chromium.org2012-02-071-18/+31
| | | | | | | | | | | | | This allows child processes to track ancestry, and report it to the browser process. Parent tracking is only turned on based on an environment variable. r=rtenneti Review URL: https://chromiumcodereview.appspot.com/9181002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120789 0039d316-1c4b-4281-b951-d872f2087c98
* Add a convenience typedef LazyInstance<T>::Leaky to avoid repeating T.fischman@chromium.org2012-01-231-1/+1
| | | | | | | | | | | | | Converted the first 20 or so hits for LeakyLazyInstanceTraits on codesearch to demonstrate the benefit at callsites. The real change is base/lazy_instance.h; everything else is example. BUG=none TEST=none Review URL: https://chromiumcodereview.appspot.com/9192024 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@118754 0039d316-1c4b-4281-b951-d872f2087c98
* Compile fix for gcc 4.6, unused variables.joi@chromium.org2011-12-211-3/+1
| | | | | | | | | | TBR=jar@chromium.org BUG=none Review URL: http://codereview.chromium.org/9019008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@115319 0039d316-1c4b-4281-b951-d872f2087c98
* Detect child tasks born during a profiled tasksjar@chromium.org2011-12-141-12/+138
| | | | | | | r=rtenneti Review URL: http://codereview.chromium.org/8894022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114336 0039d316-1c4b-4281-b951-d872f2087c98
* Support incremental-max and sample in Profiler datajar@chromium.org2011-12-041-46/+102
| | | | | | | | | | | | | | | | | | | | | | I also did some cleaning and refactoring in tracked_objects. We had a lot of functionality that has migrated to JS, that we didn't need (a lot of acccessors that are supplanted by the ToValue() methods. I'm anticipating that we'll move to an asynhcronous collecting of data from the profiler, so that we can bounce around to various threads and more cleanly collect samples (without risking races during data snapshots). Several of the refactors are heading in that direction. r=rtenneti tbr=jam (for microscopic content change) BUG=106291,106293 Review URL: http://codereview.chromium.org/8775061 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112928 0039d316-1c4b-4281-b951-d872f2087c98
* Remove about:tracking.eroman@chromium.org2011-11-161-7/+0
| | | | | | | | | | | | It has been subsumed by about:profiler. I also added a button to about:profiler that matches the behavior of "about:tracking/reset" (nukes the tracked objects). That way there shouldn't be any functionality loss in deleting about:tracking. BUG=100992 Review URL: http://codereview.chromium.org/8568036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110252 0039d316-1c4b-4281-b951-d872f2087c98
* Switch to using an intergral type for durations inside profilerjar@chromium.org2011-11-111-12/+10
| | | | | | | | | | | | | Transition from internal used of "class Duration" (which is kindred of base::TimeDelta) to using an integral type. This is in preparation for handling durations that are not time based, such as memmory allocation units. r=rtenneti BUG=103321 Review URL: http://codereview.chromium.org/8502001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109720 0039d316-1c4b-4281-b951-d872f2087c98
* Revert of Revert 108752 - Support tracking of IPC messages as tasks in profilerjar@chromium.org2011-11-081-97/+0
| | | | | | | | | | | | | | | | | | | | | | | | This is a relanding of all the cleanup found in the original CL, without the hooks to actually monitor the IPC calls. I'm trying to find out what caused the ASAN bot failures by landing piecemeal (per discussion with Joi). The original CL was: Support tracking of IPC messages as tasks in profiler Also started to do more cleanup, including creating a base/profiler directory, and moving parts of the over-sized tracked_objects.* into that directory. r=rtenneti Review URL: http://codereview.chromium.org/8480014 But this CL is: TBR=joi Review URL: http://codereview.chromium.org/8499022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109040 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 108752 - Support tracking of IPC messages as tasks in profilerjoi@chromium.org2011-11-081-0/+97
| | | | | | | | | | | | | | Also started to do more cleanup, including creating a base/profiler directory, and moving parts of the over-sized tracked_objects.* into that directory. r=rtenneti Review URL: http://codereview.chromium.org/8480014 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/8496008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@109004 0039d316-1c4b-4281-b951-d872f2087c98
* Minor cleanup: Make method private that is only used for testingjar@chromium.org2011-11-061-2/+7
| | | | | | | r=rtenneti Review URL: http://codereview.chromium.org/8484003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108817 0039d316-1c4b-4281-b951-d872f2087c98
* Support tracking of IPC messages as tasks in profilerjar@chromium.org2011-11-051-97/+0
| | | | | | | | | | | Also started to do more cleanup, including creating a base/profiler directory, and moving parts of the over-sized tracked_objects.* into that directory. r=rtenneti Review URL: http://codereview.chromium.org/8480014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108752 0039d316-1c4b-4281-b951-d872f2087c98
* Support max of profiled times as well as sum and averagejar@chromium.org2011-11-041-12/+36
| | | | | | | r=rtenneti Review URL: http://codereview.chromium.org/8438062 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108593 0039d316-1c4b-4281-b951-d872f2087c98
* Test 32bit time in tracked_objectjar@chromium.org2011-11-021-0/+98
| | | | | | | | | | | Be sure it is disabled or enabled as expected. Be sure it is using the same basic function as TimeTicks. r=rtenneti Review URL: http://codereview.chromium.org/8437018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108228 0039d316-1c4b-4281-b951-d872f2087c98
* Enable tracking of objects by defaultjar@chromium.org2011-10-311-107/+305
| | | | | | | | | | | | | | | | | | | This is a reland of accumulated patches including CLs 8414036, 8425010, 8425013, 8424013. It fully enables tracking of objects, as seen in about:tracking in teh release build. The problem this had in its initaial landing centered on Mac instability in base_unittest. We were encountering crash on exit of the tests, with a stack dump involving pthreads. r=rtenneti BUG=101856 Review URL: http://codereview.chromium.org/8429009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108026 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 107895 - Fully enable about:tracking by defaultjoth@chromium.org2011-10-311-297/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a re-land of: http://codereview.chromium.org/8391019/ Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=107793 Original landing had trouble with message_loop_x.h, due to header include ordering. I pulled out the structure that was really needed by tracked_objects.h into a new file tracked_info.*. This allows tracked_objects to inlude this tracked_info, but not have to include the message_loop.h totality. I also removed a DCHECK that that was triggering on a test, and added yet one more file (browser_main.cc) where I removed a #ifdef for TRACKING_ALL_OBJECTS. The changes were minor, and I'm hoping to get clear perf runs with tihs landing, so I'm going to TBR it and reland early in the morning. Comments from original landing: Support is now controlled by the flag: --enable-tracking and the default is always on. To turn it off, use: --enable-tracking=0 All profiler code is compiled now in release and official builds (in addition to debug, where it was already active), but most entry points can be disabled (turned into no-ops) by a single const bool setting atop tracked_objects.cc (in case folks want to revert the perf-impact of this change). Transition to faster Now() service on Windows for the profiler use only. The TimeTicks::Now() function on Window uses locking to get a 64 bit time value. This CL transitions times used for profiling to more directly use a 32 bit Time interface, which is actually what drives the 64 bit TimeTicks. By using the smaller value, we avoid the need for locks, or even atomic operations for the most part in the tracking system. On linux, we just down-sample the standard TimeTicks to 32 bits for consistency (clean ability to snapshot asyncronously without atomics... but I should verify that such is helpful to performance). I've also put in yet more cleanup and refactoring. tbr=rtenneti bug=101856 Review URL: http://codereview.chromium.org/8414036 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/8430004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107961 0039d316-1c4b-4281-b951-d872f2087c98
* Fully enable about:tracking by defaultjar@chromium.org2011-10-301-104/+297
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a re-land of: http://codereview.chromium.org/8391019/ Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=107793 Original landing had trouble with message_loop_x.h, due to header include ordering. I pulled out the structure that was really needed by tracked_objects.h into a new file tracked_info.*. This allows tracked_objects to inlude this tracked_info, but not have to include the message_loop.h totality. I also removed a DCHECK that that was triggering on a test, and added yet one more file (browser_main.cc) where I removed a #ifdef for TRACKING_ALL_OBJECTS. The changes were minor, and I'm hoping to get clear perf runs with tihs landing, so I'm going to TBR it and reland early in the morning. Comments from original landing: Support is now controlled by the flag: --enable-tracking and the default is always on. To turn it off, use: --enable-tracking=0 All profiler code is compiled now in release and official builds (in addition to debug, where it was already active), but most entry points can be disabled (turned into no-ops) by a single const bool setting atop tracked_objects.cc (in case folks want to revert the perf-impact of this change). Transition to faster Now() service on Windows for the profiler use only. The TimeTicks::Now() function on Window uses locking to get a 64 bit time value. This CL transitions times used for profiling to more directly use a 32 bit Time interface, which is actually what drives the 64 bit TimeTicks. By using the smaller value, we avoid the need for locks, or even atomic operations for the most part in the tracking system. On linux, we just down-sample the standard TimeTicks to 32 bits for consistency (clean ability to snapshot asyncronously without atomics... but I should verify that such is helpful to performance). I've also put in yet more cleanup and refactoring. tbr=rtenneti bug=101856 Review URL: http://codereview.chromium.org/8414036 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107895 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 107793 - Fully enable about:tracking by defaultjar@chromium.org2011-10-281-146/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support is now controlled by the flag: --enable-tracking and the default is always on. To turn it off, use: --enable-tracking=0 All profiler code is compiled now in release and official builds (in addition to debug, where it was already active), but most entry points can be disabled (turned into no-ops) by a single const bool setting atop tracked_objects.cc (in case folks want to revert the perf-impact of this change). Transition to faster Now() service on Windows for the profiler use only. The TimeTicks::Now() function on Window uses locking to get a 64 bit time value. This CL transitions times used for profiling to more directly use a 32 bit Time interface, which is actually what drives the 64 bit TimeTicks. By using the smaller value, we avoid the need for locks, or even atomic operations for the most part in the tracking system. On linux, we just down-sample the standard TimeTicks to 32 bits for consistency (clean ability to snapshot asyncronously without atomics... but I should verify that such is helpful to performance). I've also put in yet more cleanup and refactoring. r=rtenneti bug=101856 Review URL: http://codereview.chromium.org/8391019 TBR=jar@chromium.org Review URL: http://codereview.chromium.org/8400073 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107799 0039d316-1c4b-4281-b951-d872f2087c98
* Fully enable about:tracking by defaultjar@chromium.org2011-10-281-101/+146
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support is now controlled by the flag: --enable-tracking and the default is always on. To turn it off, use: --enable-tracking=0 All profiler code is compiled now in release and official builds (in addition to debug, where it was already active), but most entry points can be disabled (turned into no-ops) by a single const bool setting atop tracked_objects.cc (in case folks want to revert the perf-impact of this change). Transition to faster Now() service on Windows for the profiler use only. The TimeTicks::Now() function on Window uses locking to get a 64 bit time value. This CL transitions times used for profiling to more directly use a 32 bit Time interface, which is actually what drives the 64 bit TimeTicks. By using the smaller value, we avoid the need for locks, or even atomic operations for the most part in the tracking system. On linux, we just down-sample the standard TimeTicks to 32 bits for consistency (clean ability to snapshot asyncronously without atomics... but I should verify that such is helpful to performance). I've also put in yet more cleanup and refactoring. r=rtenneti bug=101856 Review URL: http://codereview.chromium.org/8391019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107793 0039d316-1c4b-4281-b951-d872f2087c98
* Support JSON encoding of data for about:tracking informationjar@chromium.org2011-10-241-6/+316
| | | | | | | | | | | I also fought a terrible (but educational) fight with Thread Local Store, and its ability to do cleanup (call destructors) at thread exit (notably applicable to Worker Threads). Thta is why there were soooo many test bot runs and tiny checkins. I now have a plan in mind that won't rely on that functionality. The code seems to work cross-platform, but if I have trouble with Linux, I'll repeatedly leak ThreadData contexts temporarily on that platform. Given that the code is only enabled under Debug, this is not yet a real problem. Each CL I write for this code also includes a bunch of cleanup. In this case, I changed the Write() methods to WriteHTML(), since I didn't want any confusion with JSON writing etc. I also did a bunch of tiny cleanups which should not have changed what the code does. r=rtenneti Review URL: http://codereview.chromium.org/8313013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@106952 0039d316-1c4b-4281-b951-d872f2087c98
* base: Constantify the struct used in WprintfFormatPortabilityTest test case.tfarina@chromium.org2011-10-161-3/+3
| | | | | | | | | TEST=base_unittests --gtest_filter=StringUtilTest* R=willchan@chromium.org Review URL: http://codereview.chromium.org/8308007 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105730 0039d316-1c4b-4281-b951-d872f2087c98
* Update task tracking to not depend on message_loop_ singletonjar@chromium.org2011-10-151-6/+8
| | | | | | | | | | | | | | | | | | | | | I also did a bunch of cleanup, and transitioned to tracking the duration of a run, rather than the time from posting (construction of a task) to completion of the run. It is less interesting for now to track queueing delay, and we need a focus on task execution time. I left in the hook (API) with the expectation that I'll be extending the tracked_objects code to include this as well. I also landed changes to run in Linux/Mac. The fact that I've punted on shutdown made this landing easy (all code support was previously lost during migration to some flavor of bind support). r=willchan,jam,viettrungluu,ajwong BUG=62728 Review URL: http://codereview.chromium.org/8233037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105694 0039d316-1c4b-4281-b951-d872f2087c98
* Delete Tracked, and move Location to its own file.ajwong@chromium.org2011-09-211-8/+6
| | | | | | | | | | | | | The Birth/Death tracking of tasks has been moved out-of-band into MessageLoop's PendingTask structure. Thus, Task no longer needs to inherit from Tracked. Since Task was the only child of Tracked, delete the Tracked class and move Location to its own file. BUG=none TEST=builds Review URL: http://codereview.chromium.org/7879006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@102132 0039d316-1c4b-4281-b951-d872f2087c98
* Remove default initializtion of BirthPlace in Tracked.ajwong@chromium.org2011-06-231-3/+7
| | | | | | | | | | | | | | | | | | | | | | | Previously, MessageLoop::PostTask set the BirthPlace of the Task object (subclass of Tracked), which would decrement the counter for the Location("NoFunctionName", "NeedToSetBirthPlace", -1) Birth, and replace it with a more appropriate Location provided by the FROM_HERE argument. With the MessageLoop restructuring in r82300, tracking of Births is moved up from the Task object into the MessageLoop::PendingTask structure. The side-effect is that the default birth is never decremented, and we double count each task's creation. This default Birth is effectively a count of "tasks that were created, but not posted" without a stored reference to location, so removing it is the simplest fix to the double counting. BUG=none TEST=about:tasks looks sane. Review URL: http://codereview.chromium.org/7029038 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@90290 0039d316-1c4b-4281-b951-d872f2087c98
* Reduce header dependencies in base/phajdan.jr@chromium.org2009-06-031-0/+2
| | | | | | | | Also adds more explicit #includes for needed things. Review URL: http://codereview.chromium.org/118162 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17479 0039d316-1c4b-4281-b951-d872f2087c98
* Remove logging.h from cc files that don't use it.thestig@chromium.org2009-03-121-1/+0
| | | | | | Review URL: http://codereview.chromium.org/42155 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11593 0039d316-1c4b-4281-b951-d872f2087c98
* Eliminate the TimerManager by pulling its priority queue into MessageLoop. ↵darin@google.com2008-09-071-6/+4
| | | | | | | | | | This CL also eliminates TaskBase by creating a simple PendingTask struct that is allocated inline within a std::queue used to implement the queues in the MessageLoop class. R=jar Review URL: http://codereview.chromium.org/483 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1825 0039d316-1c4b-4281-b951-d872f2087c98
* Add a trailing EOL to tracked_objects_unittest, elimates a GCC warning.deanm@google.com2008-08-261-1/+1
| | | | git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1378 0039d316-1c4b-4281-b951-d872f2087c98
* Move unittests that had a _test filename to _unittest. Update some missing ↵deanm@google.com2008-08-261-0/+97
tests in the SCons build. git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1375 0039d316-1c4b-4281-b951-d872f2087c98