Example #1
0
    def test_buffered_write(self):
        fd = directio.open(self.file)
        fd.write('A' * 512)
        fd.write('B' * 512)
        fd.write('C' * 512)
        fd.write('D' * 512)
        fd.write('E' * 512)
        fd.seek(-512, os.SEEK_CUR)
        self.assertEquals(fd.read(512), 'E' * 512)
        fd.close()

        fd = directio.open(self.file)
        self.assertEquals(fd.read(512), 'A' * 512)
        fd.seek(2048)
        self.assertEquals(fd.read(512), 'E' * 512)
        fd.close()
Example #2
0
		def open_disk(self, io):

			if io.write and self.read_only and not self.make_writes_as_reads: # and os.stat(disk)
				print """Data replay would write to disk %s, but read-only mode is enabled.""" % io.disk
				print """Disable read-only mode or enable "make_writes_as_reads" to convert writes to reads."""
				return False

			if not self.read_only and not self.make_write_as_reads and io.write == True:
				op = "w"
			else:
				op = "r"

			op = "r"

			if io.disk in self.fps.keys() and ( self.fps[io.disk]["mode"] == "w" or self.fps[io.disk]["mode"] == op):
				return self.fps[io.disk]["fp"]

			if io.disk in self.disk_to_disk.keys():
				dev = "/dev/%s" % self.disk_to_disk[io.disk]
			else:
				dev = "/dev/%s" % io.disk

			print """adding device "%s" (will use %s) in %s mode""" % (io.disk, dev, op)

			import directio

			try:
				self.fps[io.disk] = { "fp":directio.open(dev, directio.O_RDONLY, 0644), "mode":op }
			except OSError:
				print "error: could not open %s" % dev
				return False

			return self.fps[io.disk]["fp"]
Example #3
0
def direct_io(offset, count):
    total = 0
    with directio.open(sys.argv[1], buffered=32768) as fd:
        fd.seek(offset)
        for i in xrange(0, count):
            total = total + os.write(sys.stdout.fileno(), fd.read(4096))
    return total
def scrub(cow, options):
    try:
        log.info("Opening Cow '%s'" % cow)
        # Open the cow block device
        fd = directio.open(cow, buffered=32768)
    except OSError, e:
        raise ScrubError("Failed to open cow '%s'" % e)
Example #5
0
 def test_open_write_only(self):
     fd = directio.open(self.file, 'w')
     self.assertEquals(fd.write('A' * 512), 512)
     fd.seek(0)
     self.assertRaises(UnsupportedOperation, fd.read, 512)
     fd.close()
Example #6
0
 def test_open_read_only(self):
     fd = directio.open(self.file, 'r')
     self.assertRaises(UnsupportedOperation, fd.write, ('\0' * 512))
     fd.seek(0)
     self.assertEquals(fd.read(512), '\0' * 512)
     fd.close()
Example #7
0
 def test_open_with(self):
     # BufferedIOBase gives us a context manager for free!
     with directio.open(self.file) as fd:
         self.assertEquals(fd.write('A' * 512), 512)
         fd.seek(0)
         self.assertEquals(fd.read(512), 'A' * 512)
Example #8
0
def direct_io(data):
    with directio.open(sys.argv[1], buffered=32768) as fd:
        total = 0
        for i in xrange(0, count):
            total = total + fd.write(data)
    return total