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

from autotest_lib.client.bin.site_sysinfo import purgeable_logdir

AUTHOR = "Chrome OS Team"
NAME = "KernelCrashServer"
TIME = "SHORT"
TEST_CATEGORY = "Benchmark"
TEST_CLASS = "platform"
TEST_TYPE = "server"

DOC = """
This test crashes the client and verifies the kernel crash was collected.

Fails if any of the following conditions occur:
  - kernel does not support crash dumping
  - kernel crash dump doesn't appear after crash
  - crash dump does not appear to be correct
  - crash report is not sent properly
"""

def run_it(machine):
    # We have set up our autotest to copy off the crashes in /var/spool/crash
    # and purge its content after each test pass.  This test executes several
    # client-side tests and require that the content of /var/spool/crash be
    # preserved between each client-side tests.  So we'll need to remove the
    # /var/spool/crash entry from the test_loggables so that autotest doesn't
    # purge the content.
    for log in job.sysinfo.test_loggables:
      if type(log) is purgeable_logdir and log.dir == '/var/spool/crash':
        job.sysinfo.test_loggables.remove(log)
        break
    host = hosts.create_host(machine)
    job.run_test("logging_KernelCrashServer", host=host)

parallel_simple(run_it, machines)
