<?xml version="1.0"?>
<!-- ***** BEGIN LICENSE BLOCK *****
   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
   -
   - The contents of this file are subject to the Mozilla Public License Version
   - 1.1 (the "License"); you may not use this file except in compliance with
   - the License. You may obtain a copy of the License at
   - http://www.mozilla.org/MPL/
   -
   - Software distributed under the License is distributed on an "AS IS" basis,
   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
   - for the specific language governing rights and limitations under the
   - License.
   -
   - The Original Code is mozilla.org code.
   -
   - The Initial Developer of the Original Code is
   - The Mozilla Foundation.
   - Portions created by the Initial Developer are Copyright (C) 2010
   - the Initial Developer. All Rights Reserved.
   -
   - Contributor(s):
   -   Zack Weinberg <zweinberg@mozilla.com>
   -
   - Alternatively, the contents of this file may be used under the terms of
   - either the GNU General Public License Version 2 or later (the "GPL"), or
   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
   - in which case the provisions of the GPL or the LGPL are applicable instead
   - of those above. If you wish to allow use of your version of this file only
   - under the terms of either the GPL or the LGPL, and not to allow others to
   - use your version of this file under the terms of the MPL, indicate your
   - decision by deleting the provisions above and replace them with the notice
   - and other provisions required by the LGPL or the GPL. If you do not delete
   - the provisions above, a recipient may use your version of this file under
   - the terms of any one of the MPL, the GPL or the LGPL.
   -
   - ***** END LICENSE BLOCK ***** -->

<window title="Performance measurement tests"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        onload="test()">

  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
  <script type="application/javascript"
          src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"/>

  <script type="application/javascript"><![CDATA[
function test()
{
  SimpleTest.waitForExplicitFinish();

  Components.utils.import("resource://gre/modules/PerfMeasurement.jsm");
  let pm = new PerfMeasurement(PerfMeasurement.ALL);
  if (pm.eventsMeasured == 0) {
    todo(false, "stub, skipping test");
  } else {
    is(pm.eventsMeasured, PerfMeasurement.ALL, "all events measurable");

    pm.start();
    for (let i = 0; i < 10000; i++) ;
      pm.stop();

    isnot(pm.cpu_cycles, -1, "cpu_cycles");
    isnot(pm.instructions, -1, "instructions");
    isnot(pm.cache_references, -1, "cache_references");
    isnot(pm.cache_misses, -1, "cache_misses");
    isnot(pm.branch_instructions, -1, "branch_instructions");
    isnot(pm.branch_misses, -1, "branch_misses");
    isnot(pm.bus_cycles, -1, "bus_cycles");
    isnot(pm.page_faults, -1, "page_faults");
    isnot(pm.major_page_faults, -1, "major_page_faults");
    isnot(pm.context_switches, -1, "context_switches");
    isnot(pm.cpu_migrations, -1, "cpu_migrations");
  }
  SimpleTest.finish();
}
]]></script>

  <body xmlns="http://www.w3.org/1999/xhtml">
    <p id="display"></p>
    <div id="content" style="display:none;"></div>
    <pre id="test"></pre>
  </body>
  <label id="test-result"/>
</window>
