import os
from autotest_lib.client.bin import test, utils


class scrashme(test.test):
    """
    Runs the scrashme syscalls test suite. This test mode will exercise
    kernel syscalls randomically, or in a sequential fashion.

    @note: As of the current version shipped, scrashme does support the
            following options:

    --mode must be one of random, rotate, regval, struct, or capcheck
       --mode=random : pass random values in registers to random syscalls
         -s#: use # as random seed.

       --mode=rotate : rotate value through all register combinations
         -k:  pass kernel addresses as arguments.
         -u:  pass userspace addresses as arguments.
         -x#: use value as register arguments.
         -z:  use all zeros as register parameters.
         -Sr: pass struct filled with random junk.
         -Sxx: pass struct filled with hex value xx.

       --mode=capcheck:  check syscalls that call capable() return -EPERM.

       -b#: begin at offset #.
       -c#: target syscall # only.
       -N#: do # syscalls then exit.
       -P:  poison buffers before calling syscall, and check afterwards.
       -p:  pause after syscall.

    @see: http://www.codemonkey.org.uk/projects/scrashme/
    @author: Yi Yang <yang.y.yi@gmail.com>
    """
    version = 2

    def initialize(self):
        self.job.require_gcc()


    def setup(self, tarball = 'scrashme-git-snapshot-03-18-2010.tar.bz2'):
        diff_src = os.path.join(self.bindir, 'testfix.diff')
        tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
        utils.extract_tarball_to_dir(tarball, self.srcdir)
        os.chdir(self.srcdir)
        if os.path.exists(diff_src):
            utils.system('patch -i %s' % diff_src)
        utils.make()


    def run_once(self, args_list=''):
        if args_list:
            args = args_list
        else:
            args = '--mode rotate'

        scrashme_path = os.path.join(self.srcdir, 'scrashme')
        utils.system("%s %s" % (scrashme_path, args))
