MailNews:Memory Bloat and Leak Tests: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Add proposed code locations)
m (→‎Results: Prefix results names by Mail)
Line 37: Line 37:
Printed via standard tinderbox methods, these will consist of:
Printed via standard tinderbox methods, these will consist of:


* RLk
* Mail RLk
** Reference Count Leaks
** Reference Count Leaks
* Lk
* Mail Lk
** Total Bytes malloc'ed and not free'd
** Total Bytes malloc'ed and not free'd
* MH
* Mail MH
** Maximum Heap size
** Maximum Heap size
* A
* Mail A
** Allocations - number of calls to malloc and friends.
** Allocations - number of calls to malloc and friends.



Revision as of 20:02, 8 April 2008

<< Back to MailNews:Performance Testing

Please do not edit this page unless you are on the Thunderbird or SeaMonkey MailNews team. Your feedback and comments are welcomed on the discussion page.


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:
    1. Total memory leaks.
    2. 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

Initial 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.
    1. Startup Main Mail Window
    2. Open Address Book Window, close Address Book Window
    3. Open Message Compose Window, close Message Compose Window
    4. Close Main Mail Window

To be added at a later stage:

  • Large Message folders and selection thereof.
  • Large Address Books.
  • Sending/Receiving on different protocols (this would run best with local servers being setting up i.e. same physical hardware).

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.

Code Locations

The existing tinderbox code will be used to drive the tests, this may require migrating to Buildbot at an appropriate stage.

The files specific to mailnews testing will be stored in:

/mozilla/testing/mailnews/bloat/

These files consist of:

  • An overlay (bloatTestOverlay.xul) which is used to overlay the main windows and loads bloatTestOverlay.js
  • An script (bloatTestOverlay.js) which is used to drive the actual tests.

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

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.

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");

Preferences in generated profile, but not set:

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);