'Executes a test fs-style (umount,mkfs,mount,test)
Here we unmarshal the args to set up tags before running the test.
Tests are also run by first umounting, mkfsing and then mounting
before executing the test.
:param test: name of test to run
:param mountpoint_func: function to return mount point string'

def run_test_on_partition(self, test, mountpoint_func, **dargs):

    tag = dargs.get('tag')
    if tag:
        tag = ('%s.%s' % (self.name, tag))
    elif self.fs_tag:
        tag = ('%s.%s' % (self.name, self.fs_tag))
    else:
        tag = self.name
    suffix = dargs.pop('suffix', None)
    if suffix:
        tag = ('%s.%s' % (tag, suffix))
    dargs['tag'] = ((test + '.') + tag)
    def _make_partition_and_run_test(test_tag, dir=None, **dargs):
        self.setup_before_test(mountpoint_func)
        try:
            self.job.run_test(test, tag=test_tag, dir=mountpoint, **dargs)
        finally:
            self.unmount()
            self.fsck()
    mountpoint = mountpoint_func(self)
    self.job.run_group(_make_partition_and_run_test, test_tag=tag, dir=mountpoint, **dargs)
