mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Fix naive fileserver map diff algorithm
Naively comparing sorted dict keys does not guarantee that maps are equal. We must compare mtimes for filenames in case keys are the same to make sure there isnt a modified file.
This commit is contained in:
parent
837bc6ba7d
commit
56b1f6c651
3 changed files with 36 additions and 2 deletions
|
@ -198,11 +198,15 @@ def diff_mtime_map(map1, map2):
|
|||
'''
|
||||
# check if the mtimes are the same
|
||||
if sorted(map1) != sorted(map2):
|
||||
#log.debug('diff_mtime_map: the maps are different')
|
||||
return True
|
||||
|
||||
# map1 and map2 are guaranteed to have same keys,
|
||||
# so compare mtimes
|
||||
for filename, mtime in map1.iteritems():
|
||||
if map2[filename] != mtime:
|
||||
return True
|
||||
|
||||
# we made it, that means we have no changes
|
||||
#log.debug('diff_mtime_map: the maps are the same')
|
||||
return False
|
||||
|
||||
|
||||
|
|
0
tests/unit/fileserver/__init__.py
Normal file
0
tests/unit/fileserver/__init__.py
Normal file
30
tests/unit/fileserver/map.py
Normal file
30
tests/unit/fileserver/map.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
'''
|
||||
:codeauthor: :email:`Joao Mesquita <jmesquita@sangoma.com>`
|
||||
'''
|
||||
|
||||
# Import pytohn libs
|
||||
from __future__ import absolute_import
|
||||
|
||||
# Import Salt Testing libs
|
||||
from salttesting import TestCase
|
||||
|
||||
from salt import fileserver
|
||||
|
||||
|
||||
class MapDiffTestCase(TestCase):
|
||||
def test_diff_with_diffent_keys(self):
|
||||
'''
|
||||
Test that different maps are indeed reported different
|
||||
'''
|
||||
map1 = {'file1': 1234}
|
||||
map2 = {'file2': 1234}
|
||||
assert fileserver.diff_mtime_map(map1, map2) is True
|
||||
|
||||
def test_diff_with_diffent_values(self):
|
||||
'''
|
||||
Test that different maps are indeed reported different
|
||||
'''
|
||||
map1 = {'file1': 12345}
|
||||
map2 = {'file1': 1234}
|
||||
assert fileserver.diff_mtime_map(map1, map2) is True
|
Loading…
Add table
Reference in a new issue