Exemplo n.º 1
0
 def executeTest(ramdiskdir):
     openFiles = Storage.OpenFiles(10)
     os.system('mount -t tmpfs -o size=1M tmpfs %s' % ramdiskdir)
     try:
         paths = [
             os.path.join(ramdiskdir, 'test-%s' % ix)
             for ix in range(10)
         ]
         toWrite = [
             chr((ix + c) % 255) for c in range(1024)
             for ix in range(32)
         ] * 32
         for string in toWrite:
             path = random.choice(paths)
             openFiles.append(path, string)
     except OSError as e:
         self.assertEqual(e.errno, errno.ENOSPC)
         openFiles.shutdown()
         raise
Exemplo n.º 2
0
    def test_open_files_multithreaded(self):
        # test multiple threads in C++ to test OpenFiles for race conditions

        self.openFiles = Storage.OpenFiles(10)
        numThreads = 10
        numValues = 20
        valueSize = 128
        iters = 20
        base = tempfile.mkdtemp()
        numFilesPerThread = 100
        numFiles = 1000

        def genValues(num, size):
            return [
                ''.join(
                    chr(random.randint(ord('A'), ord('z')))
                    for y in range(size)) for x in range(num)
            ]

        files = [
            os.path.join(base, 'test-path-%s' % ix) for ix in range(numFiles)
        ]

        def writer(files, strings, iters, ix):
            Storage.writeToOpenFiles(self.openFiles, files, strings, iters)

        threads = [
            threading.Thread(target=writer,
                             args=(random.sample(files, numFilesPerThread),
                                   genValues(numValues, valueSize), iters, ix))
            for ix in range(numThreads)
        ]

        for t in threads:
            t.start()

        for t in threads:
            t.join()

        print len(os.listdir(base))
        shutil.rmtree(base)
Exemplo n.º 3
0
 def test_open_files(self):
     fdsOpenBefore = len(getOwnOpenFds())
     self.openFiles = Storage.OpenFiles(1)
     self.corrupted_readers(
         lambda path: OpenFilesWrapper(path, self.openFiles))
     self.assertEqual(fdsOpenBefore + 1, len(getOwnOpenFds()))