MCPcopy Index your code
hub / github.com/HelloZeroNet/ZeroNet / testHashfieldExchange

Method testHashfieldExchange

src/Test/TestPeer.py:78–127  ·  view source on GitHub ↗
(self, file_server, site, site_temp)

Source from the content-addressed store, hash-verified

76 assert site.content_manager.hashfield.getHashId(new_hash) not in site.content_manager.hashfield
77
78 def testHashfieldExchange(self, file_server, site, site_temp):
79 server1 = file_server
80 server1.sites[site.address] = site
81 site.connection_server = server1
82
83 server2 = FileServer(file_server.ip, 1545)
84 server2.sites[site_temp.address] = site_temp
85 site_temp.connection_server = server2
86 site.storage.verifyFiles(quick_check=True) # Find what optional files we have
87
88 # Add file_server as peer to client
89 server2_peer1 = site_temp.addPeer(file_server.ip, 1544)
90
91 # Check if hashfield has any files
92 assert len(site.content_manager.hashfield) > 0
93
94 # Testing hashfield sync
95 assert len(server2_peer1.hashfield) == 0
96 assert server2_peer1.updateHashfield() # Query hashfield from peer
97 assert len(server2_peer1.hashfield) > 0
98
99 # Test force push new hashfield
100 site_temp.content_manager.hashfield.appendHash("AABB")
101 server1_peer2 = site.addPeer(file_server.ip, 1545, return_peer=True)
102 with Spy.Spy(FileRequest, "route") as requests:
103 assert len(server1_peer2.hashfield) == 0
104 server2_peer1.sendMyHashfield()
105 assert len(server1_peer2.hashfield) == 1
106 server2_peer1.sendMyHashfield() # Hashfield not changed, should be ignored
107
108 assert len(requests) == 1
109
110 time.sleep(0.01) # To make hashfield change date different
111
112 site_temp.content_manager.hashfield.appendHash("AACC")
113 server2_peer1.sendMyHashfield() # Push hashfield
114
115 assert len(server1_peer2.hashfield) == 2
116 assert len(requests) == 2
117
118 site_temp.content_manager.hashfield.appendHash("AADD")
119
120 assert server1_peer2.updateHashfield(force=True) # Request hashfield
121 assert len(server1_peer2.hashfield) == 3
122 assert len(requests) == 3
123
124 assert not server2_peer1.sendMyHashfield() # Not changed, should be ignored
125 assert len(requests) == 3
126
127 server2.stop()
128
129 def testFindHash(self, file_server, site, site_temp):
130 file_server.sites[site.address] = site

Callers

nothing calls this directly

Calls 7

stopMethod · 0.95
FileServerClass · 0.90
verifyFilesMethod · 0.80
addPeerMethod · 0.80
appendHashMethod · 0.80
updateHashfieldMethod · 0.45
sendMyHashfieldMethod · 0.45

Tested by

no test coverage detected