#!/usr/bin/python2
#
# Copyright (c) 2010 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.

__author__ = 'kdlucas@chromium.org (Kelly Lucas)'

import logging, os

from autotest_lib.client.bin import test, utils
from autotest_lib.client.common_lib import error


class platform_TempFS(test.test):
    """
    Test temp file systems.
    """
    version = 1

    def run_once(self):
        errors = 0
        # The minimum available space we expect on temp filesystems.
        # TempFS allows 1/2 of Total Memory for each temp fs. Our threshold
        # allows for 50% usage of space allocated before this test is run.

        threshold = utils.memtotal()/4
        tempdirs = ['/dev', '/tmp', '/dev/shm', '/var/tmp', '/run',
                    '/run/lock']

        for dir in tempdirs:
            if os.path.isdir(dir):
                # utils.freespace is in bytes, so convert to kb.
                avail = utils.freespace(dir)/1024
                if avail < threshold:
                    logging.error('Not enough available space on %s', dir)
                    logging.error('%d bytes is minimum, found %d bytes',
                                  (threshold, avail))
                    errors += 1
            else:
                logging.error('%s does not exist!' % dir)
                errors += 1

        if errors:
            raise error.TestFail('There were %d temp directory errors' % errors)
