#!/usr/bin/env python
#
# Copyright (c) 2012 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.

"""Enables dalvik vm asserts in the android device."""

import argparse
import sys

from devil.android import device_blacklist
from devil.android import device_utils


def main():
  parser = argparse.ArgumentParser()

  parser.add_argument('--blacklist-file', help='Device blacklist JSON file.')

  set_asserts_group = parser.add_mutually_exclusive_group(required=True)
  set_asserts_group.add_argument(
      '--enable_asserts', dest='set_asserts', action='store_true',
      help='Sets the dalvik.vm.enableassertions property to "all"')
  set_asserts_group.add_argument(
      '--disable_asserts', dest='set_asserts', action='store_false',
      help='Removes the dalvik.vm.enableassertions property')

  args = parser.parse_args()

  blacklist = (device_blacklist.Blacklist(args.blacklist_file)
               if args.blacklist_file
               else None)

  # TODO(jbudorick): Accept optional serial number and run only for the
  # specified device when present.
  devices = device_utils.DeviceUtils.parallel(
      device_utils.DeviceUtils.HealthyDevices(blacklist))

  def set_java_asserts_and_restart(device):
    if device.SetJavaAsserts(args.set_asserts):
      device.RunShellCommand('stop')
      device.RunShellCommand('start')

  devices.pMap(set_java_asserts_and_restart)
  return 0


if __name__ == '__main__':
  sys.exit(main())
