# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import json

from profile_chrome import chrome_tracing_agent
from systrace import decorators
from systrace.tracing_agents import agents_unittest


class ChromeAgentTest(agents_unittest.BaseAgentTest):
  # TODO(washingtonp): This test seems to fail on the version of Android
  # currently on the Trybot servers (KTU84P), although it works on Android M.
  # Either upgrade the version of Android on the Trybot servers or determine
  # if there is a way to run this agent on Android KTU84P.
  @decorators.Disabled
  def testGetCategories(self):
    curr_browser = self.GetChromeProcessID()
    if curr_browser is None:
      self.StartBrowser()

    categories = \
        chrome_tracing_agent.ChromeTracingAgent.GetCategories(
            self.device, self.package_info)

    self.assertEquals(len(categories), 2)
    self.assertTrue(categories[0])
    self.assertTrue(categories[1])

  # TODO(washingtonp): This test is pretty flaky on the version of Android
  # currently on the Trybot servers (KTU84P), although it works on Android M.
  # Either upgrade the version of Android on the Trybot servers or determine
  # if there is a way to run this agent on Android KTU84P.
  @decorators.Disabled
  def testTracing(self):
    curr_browser = self.GetChromeProcessID()
    if curr_browser is None:
      self.StartBrowser()

    categories = '*'
    ring_buffer = False
    agent = chrome_tracing_agent.ChromeTracingAgent(self.device,
                                                    self.package_info,
                                                    ring_buffer)
    agent.StartAgentTracing(chrome_tracing_agent.ChromeConfig(categories, None,
        None, None, None, None, None, None, ring_buffer, self.device,
        self.package_info))
    agent.StopAgentTracing()
    result = agent.GetResults()
    json.loads(result.raw_data)
