15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/tests/test_uma.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/instance.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/cpp/module.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/tests/testing_instance.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REGISTER_TEST_CASE(UMA);
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestUMA::Init() {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uma_interface_ = static_cast<const PPB_UMA_Private*>(
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pp::Module::Get()->GetBrowserInterface(PPB_UMA_PRIVATE_INTERFACE));
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return !!uma_interface_;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestUMA::RunTests(const std::string& filter) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RUN_TEST(Count, filter);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RUN_TEST(Time, filter);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RUN_TEST(Enum, filter);
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string TestUMA::TestCount() {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pp::Var name_var = pp::Var("Test.CountHistogram");
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Var name = name_var.pp_var();
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  PP_Instance instance = instance_->pp_instance();
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomCounts(instance, name, 10, 1, 100, 50);
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomCounts(instance, name, 30, 1, 100, 50);
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomCounts(instance, name, 20, 1, 100, 50);
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomCounts(instance, name, 40, 1, 100, 50);
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Test that passing in different construction arguments for the same
34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // histogram name does not crash.
35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  uma_interface_->HistogramCustomCounts(instance, name, 40, 1, 100, 100);
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  uma_interface_->HistogramCustomCounts(instance, name, 40, 1, 90, 50);
37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  uma_interface_->HistogramCustomCounts(instance, name, 40, 10, 100, 50);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PASS();
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string TestUMA::TestTime() {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pp::Var name_var = pp::Var("Test.TimeHistogram");
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Var name = name_var.pp_var();
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  PP_Instance instance = instance_->pp_instance();
455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomTimes(instance, name, 100, 1, 10000, 50);
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomTimes(instance, name, 1000, 1, 10000, 50);
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomTimes(instance, name, 5000, 1, 10000, 50);
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramCustomTimes(instance, name, 10, 1, 10000, 50);
49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Test that passing in different construction arguments for the same
50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // histogram name does not crash.
51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  uma_interface_->HistogramCustomTimes(instance, name, 10, 1, 10000, 100);
52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  uma_interface_->HistogramCustomTimes(instance, name, 10, 1, 9000, 50);
53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  uma_interface_->HistogramCustomTimes(instance, name, 10, 100, 10000, 50);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PASS();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string TestUMA::TestEnum() {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pp::Var name_var = pp::Var("Test.EnumHistogram");
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_Var name = name_var.pp_var();
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  PP_Instance instance = instance_->pp_instance();
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramEnumeration(instance, name, 0, 5);
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramEnumeration(instance, name, 3, 5);
635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramEnumeration(instance, name, 3, 5);
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramEnumeration(instance, name, 1, 5);
655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  uma_interface_->HistogramEnumeration(instance, name, 2, 5);
66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // Test that passing in different construction arguments for the same
67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  // histogram name does not crash.
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  uma_interface_->HistogramEnumeration(instance, name, 2, 6);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PASS();
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72