testing, add folder
This commit is contained in:
parent
d37d577289
commit
fb9200469e
@ -198,6 +198,10 @@ class Manager():
|
|||||||
return self.agent
|
return self.agent
|
||||||
|
|
||||||
def get_local_snap_diff(self):
|
def get_local_snap_diff(self):
|
||||||
|
'''
|
||||||
|
`last_tree` is the last tree saved
|
||||||
|
in file system after last sync
|
||||||
|
'''
|
||||||
last_tree = self.load_local_hash()
|
last_tree = self.load_local_hash()
|
||||||
current_tree = self.compute_local_hash()
|
current_tree = self.compute_local_hash()
|
||||||
local_snap_diff = snap.diff_snap(last_tree, current_tree)
|
local_snap_diff = snap.diff_snap(last_tree, current_tree)
|
||||||
@ -247,7 +251,10 @@ class Manager():
|
|||||||
|
|
||||||
for node in nodes:
|
for node in nodes:
|
||||||
if node['cur_type'] == 'f':
|
if node['cur_type'] == 'f':
|
||||||
|
if node.get('remote_file_buf') is not None:
|
||||||
n = self.store_fdiff(node)
|
n = self.store_fdiff(node)
|
||||||
|
else:
|
||||||
|
n = node
|
||||||
todump.append(n)
|
todump.append(n)
|
||||||
continue
|
continue
|
||||||
todump.append(node)
|
todump.append(node)
|
||||||
@ -294,6 +301,18 @@ class Manager():
|
|||||||
remote_mount_point = self.get_remote_mount_point(node)
|
remote_mount_point = self.get_remote_mount_point(node)
|
||||||
return agent.copy_dir(absolute_local_path, remote_mount_point)
|
return agent.copy_dir(absolute_local_path, remote_mount_point)
|
||||||
|
|
||||||
|
def remove_node_remotely(self, node):
|
||||||
|
absolute_remote_path = self.get_absolute_remote_path(node)
|
||||||
|
agent = self.get_agent()
|
||||||
|
if node['cur_type'] == 'f':
|
||||||
|
## simply put
|
||||||
|
return agent.remove_file(absolute_remote_path)
|
||||||
|
elif node['cur_type'] == 'd':
|
||||||
|
#cur_hash contains the entire subtree to recreate on remote
|
||||||
|
## it is better to remove the root node if already exists on remote
|
||||||
|
# remote_mount_point = self.get_remote_mount_point(node)
|
||||||
|
return agent.remove_dir(absolute_remote_path)
|
||||||
|
|
||||||
#maybe useless
|
#maybe useless
|
||||||
# def precheck_remote_unode(self, node):
|
# def precheck_remote_unode(self, node):
|
||||||
# '''
|
# '''
|
||||||
@ -388,6 +407,7 @@ class Manager():
|
|||||||
# before copy check the remote
|
# before copy check the remote
|
||||||
## copy node to remote
|
## copy node to remote
|
||||||
print(f'Push local node: {absolute_local_path} to remote path: {absolute_remote_path}')
|
print(f'Push local node: {absolute_local_path} to remote path: {absolute_remote_path}')
|
||||||
|
self.remove_node_remotely(node)
|
||||||
self.copy_node_to_remote(node)
|
self.copy_node_to_remote(node)
|
||||||
new_local_tree = self.update_local_hash('changed', node)
|
new_local_tree = self.update_local_hash('changed', node)
|
||||||
## save new_local_tree
|
## save new_local_tree
|
||||||
@ -422,11 +442,13 @@ class Manager():
|
|||||||
if remote_hash is None and rexists:
|
if remote_hash is None and rexists:
|
||||||
# if node is added in local tree,
|
# if node is added in local tree,
|
||||||
# but a copy appears in remote tree
|
# but a copy appears in remote tree
|
||||||
#`we don't know before, remote_hash` don't exists
|
# we don't know before, `remote_hash` don't exists
|
||||||
|
# it is possible remote_file_buf exists
|
||||||
conflicting = True
|
conflicting = True
|
||||||
unode = node.copy()
|
unode = node.copy()
|
||||||
unode['last_hash'] = None
|
unode['last_hash'] = None
|
||||||
unode['remote_hash'] = rhash
|
unode['remote_hash'] = rhash
|
||||||
|
if rfile_buf: unode['remote_file_buf'] = rfile_buf
|
||||||
return conflicting, unode
|
return conflicting, unode
|
||||||
|
|
||||||
if rhash == remote_hash:
|
if rhash == remote_hash:
|
||||||
|
24
src/testing/add.py
Normal file
24
src/testing/add.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
from lib.snapshot.generate import local as _genlocal
|
||||||
|
|
||||||
|
from testing import sync
|
||||||
|
|
||||||
|
def test_add_folder():
|
||||||
|
new_path = '/home/luca/sharednotes_dev/test_add/test_add_nested'
|
||||||
|
try:
|
||||||
|
os.makedirs(new_path)
|
||||||
|
except FileExistsError:
|
||||||
|
print(f'{new_path} already exists skip creation')
|
||||||
|
|
||||||
|
m = sync.get_test_manager()
|
||||||
|
m.sync()
|
||||||
|
|
||||||
|
## verify
|
||||||
|
local_node_hash = _genlocal.generate_tree_hash('/home/luca/sharednotes_dev/test_add/')
|
||||||
|
|
||||||
|
agent = m.get_agent()
|
||||||
|
remote_node_hash = agent.generate_tree_hash_oversftp('/home/notanamber/notes_dev/test_add/')
|
||||||
|
|
||||||
|
assert local_node_hash == remote_node_hash
|
||||||
|
print('Test executed succesfully')
|
Loading…
x
Reference in New Issue
Block a user