def testCopy(self): """ Test that regular copying works. """ # Prepare source data = "Everything starts somewhere, " + \ "though many physicists disagree." + \ "But people have always been dimly aware of the " + \ "problem with the start of things." + \ "They wonder how the snowplough driver gets to work, or " + \ "how the makers of dictionaries look up the spelling of words." # (C) Terry Pratchet - Small Gods # Makes sure we round up to a complete block size data *= 512 with temporaryPath(perms=0o666, data=data) as srcPath: with temporaryPath(perms=0o666) as dstPath: # Copy rc, out, err = misc.ddWatchCopy(srcPath, dstPath, None, len(data)) # Get copied data readData = open(dstPath).read() # Comapre self.assertEquals(readData, data)
def testCopyUserModeToGroup(self): with temporaryPath() as path: for initialMode, expectedMode in self.modesList: os.chmod(path, initialMode) fileUtils.copyUserModeToGroup(path) self.assertEquals(os.stat(path).st_mode & self.MODE_MASK, expectedMode)
def testUpdateRead(self): data = """ Aliquet. Aliquam eni ac nullam iaculis cras ante, adipiscing. Enim eget egestas pretium. Ultricies. Urna cubilia in, hac. Curabitur. Nibh. Purus ridiculus natoque sed id. Feugiat lacus quam, arcu maecenas nec egestas. Hendrerit duis nunc eget dis lacus porttitor per sodales class diam condimentum quisque condimentum nisi ligula. Dapibus blandit arcu nam non ac feugiat diam, dictumst. Ante eget fames eu penatibus in, porta semper accumsan adipiscing tellus in sagittis. Est parturient parturient mi fermentum commodo, per fermentum. Quis duis velit at quam risus mi. Facilisi id fames. Turpis, conubia rhoncus. Id. Elit eni tellus gravida, ut, erat morbi. Euismod, enim a ante vestibulum nibh. Curae curae primis vulputate adipiscing arcu ipsum suspendisse quam hymenaeos primis accumsan vestibulum. """ self.assertTrue(len(data) > 512) with temporaryPath() as srcPath: with fileUtils.open_ex(srcPath, "wd") as f: f.write(data[:512]) with fileUtils.open_ex(srcPath, "r+d") as f: f.seek(512) f.write(data[512:]) with fileUtils.open_ex(srcPath, "r") as f: self.assertEquals(f.read(len(data)), data)
def testCopyUserModeToGroup(self): with temporaryPath() as path: for initialMode, expectedMode in self.modesList: os.chmod(path, initialMode) fileUtils.copyUserModeToGroup(path) self.assertEquals( os.stat(path).st_mode & self.MODE_MASK, expectedMode)
def testSmallWrites(self): data = """ Aliquet habitasse tellus. Fringilla faucibus tortor parturient consectetuer sodales, venenatis platea habitant. Hendrerit nostra nunc odio. Primis porttitor consequat enim ridiculus. Taciti nascetur, nibh, convallis sit, cum dis mi. Nonummy justo odio cursus, ac hac curabitur nibh. Tellus. Montes, ut taciti orci ridiculus facilisis nunc. Donec. Risus adipiscing habitant donec vehicula non vitae class, porta vitae senectus. Nascetur felis laoreet integer, tortor ligula. Pellentesque vestibulum cras nostra. Ut sollicitudin posuere, per accumsan curabitur id, nisi fermentum vel, eget netus tristique per, donec, curabitur senectus ut fusce. A. Mauris fringilla senectus et eni facilisis magna inceptos eu, cursus habitant fringilla neque. Nibh. Elit facilisis sed, elit, nostra ve torquent dictumst, aenean sapien quam, habitasse in. Eu tempus aptent, diam, nisi risus pharetra, ac, condimentum orci, consequat mollis. Cras lacus augue ultrices proin fermentum nibh sed urna. Ve ipsum ultrices curae, feugiat faucibus proin et elementum vivamus, lectus. Torquent. Tempus facilisi. Cras suspendisse euismod consectetuer ornare nostra. Fusce amet cum amet diam. """ self.assertTrue(len(data) > 512) with temporaryPath() as srcPath: with fileUtils.open_ex(srcPath, "dw") as f: f.write(data[:512]) f.write(data[512:]) with fileUtils.open_ex(srcPath, "r") as f: self.assertEquals(f.read(len(data)), data)
def testRead(self): data = """Vestibulum. Libero leo nostra, pede nunc eu. Pellentesque platea lacus morbi nisl montes ve. Ac. A, consectetuer erat, justo eu. Elementum et, phasellus fames et rutrum donec magnis eu bibendum. Arcu, ante aliquam ipsum ut facilisis ad.""" with temporaryPath(data=data) as srcPath: # two nested withs to be py2.6 friendly. with fileUtils.open_ex(srcPath, "dr") as f: self.assertEquals(f.read(), data)
def testWrite(self): data = """In ut non platea egestas, quisque magnis nunc nostra ac etiam suscipit nec integer sociosqu. Fermentum. Ante orci luctus, ipsum ullamcorper enim arcu class neque inceptos class. Ut, sagittis torquent, commodo facilisi.""" with temporaryPath() as srcPath: with fileUtils.open_ex(srcPath, "dw") as f: f.write(data) with fileUtils.open_ex(srcPath, "r") as f: self.assertEquals(f.read(len(data)), data)
def testNames(self): # I convert to some id because I have no # idea what users are defined and what # there IDs are apart from root tmpId = 666 with temporaryPath() as srcPath: fileUtils.chown(srcPath, tmpId, tmpId) stat = os.stat(srcPath) self.assertTrue(stat.st_uid == stat.st_gid == tmpId) fileUtils.chown(srcPath, "root", "root") stat = os.stat(srcPath) self.assertTrue(stat.st_uid == stat.st_gid == 0)
def testValidInput(self): """ Test if method works when given a valid file. """ #create writeData = ("Trust me, I know what self-loathing is," "but to kill myself? That would put a damper on my " "search for answers. Not at all productive.") # (C) Jhonen Vasquez - Johnny the Homicidal Maniac with temporaryPath(data=writeData) as path: #read readData = misc.readfile(path) self.assertEquals(writeData, readData[0])
def testNonAlignedCopy(self, sudo=False): """ Test that copying a file with odd length works. """ data = '- "What\'re quantum mechanics?"' + \ '- "I don\'t know. People who repair quantums, I suppose."' # (C) Terry Pratchet - Small Gods # Make sure the length is appropriate if (len(data) % 512) == 0: data += "!" with temporaryPath(perms=0o666, data=data) as srcPath: with temporaryPath(perms=0o666) as dstPath: # Copy rc, out, err = misc.ddWatchCopy(srcPath, dstPath, None, len(data)) # Get copied data readData = open(dstPath).read() # Compare self.assertEquals(readData, data)
def testVmWithCdrom(self, pathLocation): customization = {'vmId': '77777777-ffff-3333-bbbb-222222222222', 'devices': [], 'vmName': 'testVmWithCdrom_%s' % pathLocation, 'display': 'vnc'} # echo -n testPayload | md5sum # d37e46c24c78b1aed33496107afdb44b vmPayloadName = ('/var/run/vdsm/payload/%s.' 'd37e46c24c78b1aed33496107afdb44b' '.img' % customization['vmId']) cdrom = {'index': '2', 'iface': 'ide', 'specParams': {}, 'readonly': 'true', 'path': '', 'device': 'cdrom', 'shared': 'false', 'type': 'disk'} with temporaryPath(0o666) as path: cdromPaths = {'self': {'path': path, 'specParams': {'path': '/dev/null'}}, 'specParams': {'path': '', 'specParams': {'path': path}}, 'vmPayload': {'path': '', 'specParams': {'path': '', 'vmPayload': {'volId': 'testConfig', 'file': {'testPayload': ''}}}}} cdrom.update(cdromPaths[pathLocation]) customization['devices'].append(cdrom) with RunningVm(self.vdsm, customization) as vm: self._waitForStartup(vm, 10) status, msg, stats = self.vdsm.getVmList(vm) self.assertEqual(status, SUCCESS, msg) for device in stats['devices']: if device['device'] == 'cdrom': if 'vmPayload' in cdrom['specParams']: cdrom['path'] = vmPayloadName self.assertEqual(device['path'], cdrom['path']) self.assertEqual(device['specParams']['path'], cdrom['specParams']['path'])
def testSeekRead(self): data = """ Habitasse ipsum at fusce litora metus, placerat dui purus aenean ante, ve. Pede hymenaeos ut primis cum, rhoncus, lectus, nunc. Vestibulum curabitur vitae etiam magna auctor velit, mi tempus vivamus orci eros. Pellentesque curabitur risus fermentum eget. Elementum curae, donec nisl egestas ve, ut odio eu nunc elit felis primis id. Ridiculus metus morbi nulla erat, amet nisi. Amet ligula nisi, id penatibus risus in. Purus velit duis. Aenean eget, pellentesque eu rhoncus arcu et consectetuer laoreet, augue nisi dictum lacinia urna. Fermentum torquent. Ut interdum vivamus duis. Felis consequat nec pede. Orci sollicitudin parturient orci felis. Enim, diam velit sapien condimentum fames semper nibh. Integer at, egestas pede consectetuer ac augue pharetra dolor non placerat quisque id cursus ultricies. Ligula mi senectus sit. Habitasse. Integer sollicitudin dapibus cum quam. """ self.assertTrue(len(data) > 512) with temporaryPath(data=data) as srcPath: # two nested withs to be py2.6 friendly. with fileUtils.open_ex(srcPath, "dr") as f: f.seek(512) self.assertEquals(f.read(), data[512:])
def testStringAsDrive(self): with temporaryPath() as f: volPath = self.cif.prepareVolumePath(f) self.assertEquals(volPath, f)
def test(self): targetId = 666 with temporaryPath() as srcPath: fileUtils.chown(srcPath, targetId, targetId) stat = os.stat(srcPath) self.assertTrue(stat.st_uid == stat.st_gid == targetId)
def testVmWithCdrom(self, pathLocation): customization = { 'vmId': '77777777-ffff-3333-bbbb-222222222222', 'devices': [], 'vmName': 'testVmWithCdrom_%s' % pathLocation, 'display': 'vnc' } # echo -n testPayload | md5sum # d37e46c24c78b1aed33496107afdb44b vmPayloadName = ('/var/run/vdsm/payload/%s.' 'd37e46c24c78b1aed33496107afdb44b' '.img' % customization['vmId']) cdrom = { 'index': '2', 'iface': 'ide', 'specParams': {}, 'readonly': 'true', 'path': '', 'device': 'cdrom', 'shared': 'false', 'type': 'disk' } with temporaryPath(0o666) as path: cdromPaths = { 'self': { 'path': path, 'specParams': { 'path': '/dev/null' } }, 'specParams': { 'path': '', 'specParams': { 'path': path } }, 'vmPayload': { 'path': '', 'specParams': { 'path': '', 'vmPayload': { 'volId': 'testConfig', 'file': { 'testPayload': '' } } } } } cdrom.update(cdromPaths[pathLocation]) customization['devices'].append(cdrom) with RunningVm(self.vdsm, customization) as vm: self._waitForStartup(vm, 10) status, msg, stats = self.vdsm.getVmList(vm) self.assertEqual(status, SUCCESS, msg) for device in stats['devices']: if device['device'] == 'cdrom': if 'vmPayload' in cdrom['specParams']: cdrom['path'] = vmPayloadName self.assertEqual(device['path'], cdrom['path']) self.assertEqual(device['specParams']['path'], cdrom['specParams']['path'])