#!/usr/bin/python # # Copyright (c) 2010 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. """ This testcase exercises the file system by ensuring we can create a sufficient number of files into one directory. In this case we will create 150,000 files on the stateful partition and 2,000 files on the /tmp partition. """ __author__ = ['kdlucas@chromium.org (Kelly Lucas)', 'dalecurtis@chromium.org (Dale Curtis)'] import os import shutil from autotest_lib.client.bin import test from autotest_lib.client.common_lib import error class platform_FileNum(test.test): """Test file number limitations per directory.""" version = 1 _TEST_PLAN = [ {'dir': '/mnt/stateful_partition', 'count': 150000}, {'dir': '/tmp', 'count': 2000}] _TEST_TEXT = 'ChromeOS rocks with fast response and low maintenance costs!' def create_files(self, target_dir, count): """Create the number of files specified by count in target_dir. Args: target_dir: Directory to create files in. count: Number of files to create. Returns: Number of files created. """ create_dir = os.path.join(target_dir, 'createdir') try: if os.path.exists(create_dir): shutil.rmtree(create_dir) os.makedirs(create_dir) for i in xrange(count): f = open(os.path.join(create_dir, '%d.txt' % i), 'w') f.write(self._TEST_TEXT) f.close() total_created = len(os.listdir(create_dir)) finally: shutil.rmtree(create_dir) return total_created def run_once(self): for item in self._TEST_PLAN: actual_count = self.create_files(item['dir'], item['count']) if actual_count != item['count']: raise error.TestFail( 'File creation count in %s is incorrect! Found %d files ' 'when there should have been %d!' % (item['dir'], actual_count, item['count']))