MailNews:Memory Bloat and Leak Tests: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Bug 427980 now landed.)
(Replaced content with '<small><< Back to MailNews:Performance Testing</small> '''NOTE: This page (and its related talk page) has been moved to the [https://…')
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<small>[[MailNews:Performance Testing|<< Back to MailNews:Performance Testing]]</small>
<small>[[MailNews:Performance Testing|&lt;&lt; Back to MailNews:Performance Testing]]</small>  


__TOC__
'''NOTE: This page (and its related talk page) has been moved to the [https://developer.mozilla.org/en/MailNews/Leak_And_Bloat_Tests Mozilla Developer Center]. Please refer to that page for recent updates and discussions.'''
 
''Note: MailNews here refers to either Thunderbird, or the Mail/Newsgroups/Address Book part of SeaMonkey''
 
== Aim ==
 
* To provide a continuous check within Mailnews and its sub-components for the following items:
*# Total memory leaks.
*# Total memory usage (aka bloat).
* Provide a consistent number from build to build where no source code has changed.
* Provide reasonable coverage for the normal activities that a user performs.
 
== Method ==
 
Current Method:
 
* Measure Leaks and Bloats, in a similar way to Firefox (using XPCOM_MEM_LEAK_LOG and --trace-malloc).
* The method of testing memory bloat and leaks will be the same sequence of events, using the same set of test data.
*# Startup Main Mail Window
*# Open Address Book Window, close it
*# Open Message Composition Window, close it
*# Close Main Mail Window
 
Future improvements will be discussed on the [[MailNews_Talk:Memory_Bloat_and_Leak_Tests|discussion]] page.
 
== Results ==
 
Printed via standard tinderbox methods, these will consist of:
 
* Mail RLk
** Reference Count Leaks
* Mail Lk
** Total Bytes malloc'ed and not free'd
* Mail MH
** Maximum Heap size
* Mail A
** Allocations - number of calls to malloc and friends.
 
== Manually Running Tests ==
 
=== Setting up ===
 
==== Build Set up ====
 
# Build Thunderbird or SeaMonkey trunk with your standard mozconfig file, but with the following options set:
#* ac_add_options --enable-debug
#* ac_add_options --enable-trace-malloc
 
==== Profile Set Up ====
 
# Enter the executable directory. Use the command:
#* <executable_name> -createProfile <profilename>
# Now go into the /mailnews/test/performance/bloat directory and run the command:
#* python setUpBloatTest.py --binary-dir=<directory where executable is> --profile-dir=<directory for profile created in step 1>
 
These two commands will set up the profile the same as on the tinderbox.
 
=== Reference Count Leak Test ===
 
# set XPCOM_MEM_BLOAT_LOG to 1 in your environment (see also [http://developer.mozilla.org/en/docs/Debugging_memory_leaks Debugging Memory Leaks])
# Start the appropriate executable (using -P <profilename> if required)
# Once the test is completed (application automatically shuts down), you'll get a dump of the objects allocated and which ones are leaking.
 
=== Leak, Max Heap and Allocations Test ===
 
# Start the appropriate executable with the following arguments:
#* --trace-malloc malloc.log
#* --shutdown-leaks sdleak.log
#* -P <profilename> ''(if required)''
# Wait for the test to complete and the application to shut down.
# The malloc.log file can then be run through leakstats in the <objdir>/tools/trace-malloc/ directory to obtain the statistics:
#* leakstats malloc.log
 
See [http://developer.mozilla.org/en/docs/Debugging_memory_leaks Debugging Memory Leaks] for more information on what to do with this data.
 
== Code Locations ==
 
The code used to drive this will be in [[Buildbot]].
 
The files specific to mailnews testing will be stored in:
 
/mailnews/test/performance/
 
These files consist of:
 
* Overlays (used to provide the hooks for the javascript):
** bloat/bloatAddrOverlay.xul
** bloat/bloatComposeOverlay.xul
** bloat/bloatMainOverlay.xul
* Javascript files (used to drive the tests):
** bloat/bloatAddrOverlay.js
** bloat/bloatComposeOverlay.js
** bloat/bloatMainOverlay.js
* Preference Settings (used to provide a defined profile, see below):
** common/mailnewsTestPrefs.js
* Python scripts (used to set up the profile):
** bloat/setUpBloatTest.py
** common/setUpCommonMailNews.py
 
== Pre-defined profile ==
 
Initial Setup:
 
* One POP3 account (Mails TBD)
* One Identity
* One SMTP server defined (not used)
 
Future requirements/possibilities:
 
* One Address Book where PAB has ~1000 entries
* Large Message folders
* IMAP
* NNTP Server and subscribed newsgroup.
 
08/04/2008: prefs.js created via TB with the above settings, the first section is for preferences included in tinderbox, the second section is ones which don't currently get set.
 
<pre>
user_pref("mail.account.account1.server", "server1");
user_pref("mail.account.account2.identities", "id1");
user_pref("mail.account.account2.server", "server2");
user_pref("mail.accountmanager.accounts", "account1,account2");
user_pref("mail.accountmanager.defaultaccount", "account2");
user_pref("mail.accountmanager.localfoldersserver", "server1");
user_pref("mail.identity.id1.fullName", "Tinderbox");
user_pref("mail.identity.id1.smtpServer", "smtp1");
user_pref("mail.identity.id1.useremail", "tinderbox@invalid.com");
user_pref("mail.identity.id1.valid", true);
user_pref("mail.root.none-rel", "[ProfD]Mail");
user_pref("mail.root.pop3-rel", "[ProfD]Mail");
user_pref("mail.server.server1.directory-rel", "[ProfD]Mail/Local Folders");
user_pref("mail.server.server1.hostname", "Local Folders");
user_pref("mail.server.server1.name", "Local Folders");
user_pref("mail.server.server1.type", "none");
user_pref("mail.server.server1.userName", "nobody");
user_pref("mail.server.server2.check_new_mail", false);
user_pref("mail.server.server2.directory-rel", "[ProfD]Mail/tinderbox");
user_pref("mail.server.server2.download_on_biff", true);
user_pref("mail.server.server2.hostname", "tinderbox");
user_pref("mail.server.server2.login_at_startup", false);
user_pref("mail.server.server2.name", "tinderbox@invalid.com");
user_pref("mail.server.server2.type", "pop3");
user_pref("mail.server.server2.userName", "tinderbox");
user_pref("mail.smtp.defaultserver", "smtp1");
user_pref("mail.smtpserver.smtp1.hostname", "tinderbox");
user_pref("mail.smtpserver.smtp1.username", "tinderbox");
user_pref("mail.smtpservers", "smtp1");
user_pref("mail.startup.enabledMailCheckOnce", true);
user_pref("mailnews.start_page_override.mstone", "1.9pre");
</pre>
 
Preferences in generated profile, but not set:
 
<pre>
user_pref("mail.root.none", "/home/moztest/.thunderbird/t7i1txfw.minimum/Mail");
user_pref("mail.root.pop3", "/home/moztest/.thunderbird/t7i1txfw.minimum/Mail");
user_pref("mail.server.server1.directory", "/home/moztest/.thunderbird/t7i1txfw.minimum/Mail/Local Folders");
user_pref("mail.server.server2.directory", "/home/moztest/.thunderbird/t7i1txfw.minimum/Mail/tinderbox");
user_pref("mail.attachment.store.version", 1);
user_pref("mail.folder.views.version", 1);
user_pref("mail.spam.version", 1);
user_pref("mailnews.quotingPrefs.version", 1);
user_pref("mailnews.ui.threadpane.version", 6);
</pre>

Latest revision as of 11:09, 14 January 2010

<< Back to MailNews:Performance Testing

NOTE: This page (and its related talk page) has been moved to the Mozilla Developer Center. Please refer to that page for recent updates and discussions.