1 #!/usr/bin/python 2 # 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 4 # Use of this source code is governed by a BSD-style license that can be 5 # found in the LICENSE file. 6 7 """ 8 This testcase exercises the file system by ensuring we can create a sufficient 9 number of files into one directory. In this case we will create 150,000 files on 10 the stateful partition and 2,000 files on the /tmp partition. 11 """ 12 13 __author__ = ['kdlucas (at] chromium.org (Kelly Lucas)', 14 'dalecurtis (at] chromium.org (Dale Curtis)'] 15 16 import os 17 import shutil 18 19 from autotest_lib.client.bin import test 20 from autotest_lib.client.common_lib import error 21 22 23 class platform_FileNum(test.test): 24 """Test file number limitations per directory.""" 25 version = 1 26 27 _TEST_PLAN = [ 28 {'dir': '/mnt/stateful_partition', 'count': 150000}, 29 {'dir': '/tmp', 'count': 2000}] 30 31 _TEST_TEXT = 'ChromeOS rocks with fast response and low maintenance costs!' 32 33 def create_files(self, target_dir, count): 34 """Create the number of files specified by count in target_dir. 35 36 Args: 37 target_dir: Directory to create files in. 38 count: Number of files to create. 39 Returns: 40 Number of files created. 41 """ 42 create_dir = os.path.join(target_dir, 'createdir') 43 try: 44 if os.path.exists(create_dir): 45 shutil.rmtree(create_dir) 46 47 os.makedirs(create_dir) 48 49 for i in xrange(count): 50 f = open(os.path.join(create_dir, '%d.txt' % i), 'w') 51 f.write(self._TEST_TEXT) 52 f.close() 53 54 total_created = len(os.listdir(create_dir)) 55 finally: 56 shutil.rmtree(create_dir) 57 58 return total_created 59 60 def run_once(self): 61 for item in self._TEST_PLAN: 62 actual_count = self.create_files(item['dir'], item['count']) 63 if actual_count != item['count']: 64 raise error.TestFail( 65 'File creation count in %s is incorrect! Found %d files ' 66 'when there should have been %d!' 67 % (item['dir'], actual_count, item['count'])) 68