Example #1
0
    def testBuildingDict(self):
        """See if the partial inode dictionary is correct"""
        Globals.preserve_hardlinks = 1
        reset_hardlink_dicts()
        for dsrp in selection.Select(self.hlinks_rp3).set_iter():
            Hardlink.add_rorp(dsrp)

        self.assertEqual(len(list(Hardlink._inode_index.keys())), 3)
Example #2
0
	def testBuildingDict(self):
		"""See if the partial inode dictionary is correct"""
		Globals.preserve_hardlinks = 1
		reset_hardlink_dicts()
		for dsrp in selection.Select(self.hardlink_dir3).set_iter():
			Hardlink.add_rorp(dsrp)
		
		assert len(Hardlink._inode_index.keys()) == 3, \
			   Hardlink._inode_index
Example #3
0
    def testBuildingDict(self):
        """See if the partial inode dictionary is correct"""
        Globals.preserve_hardlinks = 1
        reset_hardlink_dicts()
        for dsrp in selection.Select(self.hardlink_dir3).set_iter():
            Hardlink.add_rorp(dsrp)

        assert len(Hardlink._inode_index.keys()) == 3, \
            Hardlink._inode_index
Example #4
0
    def testCompletedDict(self):
        """See if the hardlink dictionaries are built correctly"""
        reset_hardlink_dicts()
        for dsrp in selection.Select(self.hlinks_rp1).set_iter():
            Hardlink.add_rorp(dsrp)
            Hardlink.del_rorp(dsrp)
        self.assertEqual(Hardlink._inode_index, {})

        reset_hardlink_dicts()
        for dsrp in selection.Select(self.hlinks_rp2).set_iter():
            Hardlink.add_rorp(dsrp)
            Hardlink.del_rorp(dsrp)
        self.assertEqual(Hardlink._inode_index, {})
Example #5
0
    def _pre_process(self, source_rorp, dest_rorp):
        """Do initial processing on source_rorp and dest_rorp

        It will not be clear whether source_rorp and dest_rorp have
        errors at this point, so don't do anything which assumes they
        will be backed up correctly.

        """
        if Globals.preserve_hardlinks and source_rorp:
            Hardlink.add_rorp(source_rorp, dest_rorp)
        if (dest_rorp and dest_rorp.isdir() and Globals.process_uid != 0
                and dest_rorp.getperms() % 0o1000 < 0o700):
            self._unreadable_dir_init(source_rorp, dest_rorp)
Example #6
0
	def testCompletedDict(self):
		"""See if the hardlink dictionaries are built correctly"""
		reset_hardlink_dicts()
		for dsrp in selection.Select(self.hardlink_dir1).set_iter():
			Hardlink.add_rorp(dsrp)
			Hardlink.del_rorp(dsrp)
		assert Hardlink._inode_index == {}, Hardlink._inode_index

		reset_hardlink_dicts()
		for dsrp in selection.Select(self.hardlink_dir2).set_iter():
			Hardlink.add_rorp(dsrp)
			Hardlink.del_rorp(dsrp)
		assert Hardlink._inode_index == {}, Hardlink._inode_index
Example #7
0
    def testCompletedDict(self):
        """See if the hardlink dictionaries are built correctly"""
        reset_hardlink_dicts()
        for dsrp in selection.Select(self.hardlink_dir1).set_iter():
            Hardlink.add_rorp(dsrp)
            Hardlink.del_rorp(dsrp)
        assert Hardlink._inode_index == {}, Hardlink._inode_index

        reset_hardlink_dicts()
        for dsrp in selection.Select(self.hardlink_dir2).set_iter():
            Hardlink.add_rorp(dsrp)
            Hardlink.del_rorp(dsrp)
        assert Hardlink._inode_index == {}, Hardlink._inode_index
Example #8
0
def _hardlink_rorp_eq(src_rorp, dest_rorp):
    """Compare two files for hardlink equality, encompassing being hard-linked,
    having the same hashsum, and the same number of link counts."""
    Hardlink.add_rorp(dest_rorp)
    Hardlink.add_rorp(src_rorp, dest_rorp)
    rorp_eq = Hardlink.rorp_eq(src_rorp, dest_rorp)
    if not src_rorp.isreg() or not dest_rorp.isreg() or src_rorp.getnumlinks() == dest_rorp.getnumlinks() == 1:
        if not rorp_eq:
            Log("Hardlink compare error with when no links exist", 3)
            Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
            Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
            return False
    elif src_rorp.getnumlinks() > 1 and not Hardlink.is_linked(src_rorp):
        if rorp_eq:
            Log("Hardlink compare error with first linked src_rorp and no dest_rorp sha1", 3)
            Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
            Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
            return False
        hash.compute_sha1(dest_rorp)
        rorp_eq = Hardlink.rorp_eq(src_rorp, dest_rorp)
        if src_rorp.getnumlinks() != dest_rorp.getnumlinks():
            if rorp_eq:
                Log("Hardlink compare error with first linked src_rorp, with dest_rorp sha1, and with differing link counts", 3)
                Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
                Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
                return False
        elif not rorp_eq:
            Log("Hardlink compare error with first linked src_rorp, with dest_rorp sha1, and with equal link counts", 3)
            Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
            Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
            return False
    elif src_rorp.getnumlinks() != dest_rorp.getnumlinks():
        if rorp_eq:
            Log("Hardlink compare error with non-first linked src_rorp and with differing link counts", 3)
            Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
            Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
            return False
    elif not rorp_eq:
        Log("Hardlink compare error with non-first linked src_rorp and with equal link counts", 3)
        Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
        Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
        return False
    Hardlink.del_rorp(src_rorp)
    Hardlink.del_rorp(dest_rorp)
    return True
Example #9
0
 def hardlink_rorp_eq(src_rorp, dest_rorp):
     Hardlink.add_rorp(dest_rorp)
     Hardlink.add_rorp(src_rorp, dest_rorp)
     rorp_eq = Hardlink.rorp_eq(src_rorp, dest_rorp)
     if not src_rorp.isreg() or not dest_rorp.isreg() or src_rorp.getnumlinks() == dest_rorp.getnumlinks() == 1:
         if not rorp_eq:
             Log("Hardlink compare error with when no links exist exist", 3)
             Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
             Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
             return 0
     elif src_rorp.getnumlinks() > 1 and not Hardlink.is_linked(src_rorp):
         if rorp_eq:
             Log("Hardlink compare error with first linked src_rorp and no dest_rorp sha1", 3)
             Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
             Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
             return 0
         hash.compute_sha1(dest_rorp)
         rorp_eq = Hardlink.rorp_eq(src_rorp, dest_rorp)
         if src_rorp.getnumlinks() != dest_rorp.getnumlinks():
             if rorp_eq:
                 Log("Hardlink compare error with first linked src_rorp, with dest_rorp sha1, and with differing link counts", 3)
                 Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
                 Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
                 return 0
         elif not rorp_eq:
             Log("Hardlink compare error with first linked src_rorp, with dest_rorp sha1, and with equal link counts", 3)
             Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
             Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
             return 0
     elif src_rorp.getnumlinks() != dest_rorp.getnumlinks():
         if rorp_eq:
             Log("Hardlink compare error with non-first linked src_rorp and with differing link counts", 3)
             Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
             Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
             return 0
     elif not rorp_eq:
         Log("Hardlink compare error with non-first linked src_rorp and with equal link counts", 3)
         Log("%s: %s" % (src_rorp.index, Hardlink._get_inode_key(src_rorp)), 3)
         Log("%s: %s" % (dest_rorp.index, Hardlink._get_inode_key(dest_rorp)), 3)
         return 0
     Hardlink.del_rorp(src_rorp)
     Hardlink.del_rorp(dest_rorp)
     return 1
Example #10
0
	def preprocess(src_rorp, dest_rorp):
		"""Initially process src and dest_rorp"""
		if compare_hardlinks and src_rorp:
			Hardlink.add_rorp(src_rorp, dest_rorp)