Home | History | Annotate | Download | only in nacl
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/test/base/uma_histogram_helper.h"
      6 #include "chrome/test/nacl/nacl_browsertest_util.h"
      7 #include "native_client/src/trusted/service_runtime/nacl_error_code.h"
      8 #include "ppapi/native_client/src/trusted/plugin/plugin_error.h"
      9 
     10 namespace {
     11 
     12 NACL_BROWSER_TEST_F(NaClBrowserTest, SuccessfulLoadUMA, {
     13   // Load a NaCl module to generate UMA data.
     14   RunLoadTest(FILE_PATH_LITERAL("nacl_load_test.html"));
     15 
     16   // Make sure histograms from child processes have been accumulated in the
     17   // browser brocess.
     18   UMAHistogramHelper histograms;
     19   histograms.Fetch();
     20 
     21   // Did the plugin report success?
     22   histograms.ExpectUniqueSample("NaCl.LoadStatus.Plugin",
     23                                 plugin::ERROR_LOAD_SUCCESS, 1);
     24 
     25   // Did the sel_ldr report success?
     26   histograms.ExpectUniqueSample("NaCl.LoadStatus.SelLdr",
     27                                 LOAD_OK, 1);
     28 
     29   // Make sure we have other important histograms.
     30   if (!IsAPnaclTest()) {
     31     histograms.ExpectTotalCount("NaCl.Perf.StartupTime.LoadModule", 1);
     32     histograms.ExpectTotalCount("NaCl.Perf.StartupTime.Total", 1);
     33     histograms.ExpectTotalCount("NaCl.Perf.Size.Manifest", 1);
     34     histograms.ExpectTotalCount("NaCl.Perf.Size.Nexe", 1);
     35   } else {
     36     histograms.ExpectTotalCount("NaCl.Options.PNaCl.OptLevel", 1);
     37     histograms.ExpectTotalCount("NaCl.Perf.Size.Manifest", 1);
     38     histograms.ExpectTotalCount("NaCl.Perf.Size.Pexe", 1);
     39     histograms.ExpectTotalCount("NaCl.Perf.Size.PNaClTranslatedNexe", 1);
     40     histograms.ExpectTotalCount("NaCl.Perf.Size.PexeNexeSizePct", 1);
     41     histograms.ExpectTotalCount("NaCl.Perf.PNaClLoadTime.LoadCompiler", 1);
     42     histograms.ExpectTotalCount("NaCl.Perf.PNaClLoadTime.LoadLinker", 1);
     43     histograms.ExpectTotalCount("NaCl.Perf.PNaClLoadTime.CompileTime", 1);
     44     histograms.ExpectTotalCount("NaCl.Perf.PNaClLoadTime.CompileKBPerSec", 1);
     45     histograms.ExpectTotalCount("NaCl.Perf.PNaClLoadTime.LinkTime", 1);
     46     histograms.ExpectTotalCount(
     47         "NaCl.Perf.PNaClLoadTime.PctCompiledWhenFullyDownloaded", 1);
     48     histograms.ExpectTotalCount("NaCl.Perf.PNaClLoadTime.TotalUncachedTime", 1);
     49     histograms.ExpectTotalCount(
     50         "NaCl.Perf.PNaClLoadTime.TotalUncachedKBPerSec", 1);
     51     histograms.ExpectTotalCount("NaCl.Perf.PNaClCache.IsHit", 1);
     52   }
     53 })
     54 
     55 // TODO(ncbray) convert the rest of nacl_uma.py (currently in the NaCl repo.)
     56 // Test validation failures and crashes.
     57 
     58 }  // namespace anonymous
     59