Files
@ 9bfcb1e83e61
Branch filter:
Location: Morevna/src/tests/test_overall.py - annotation
9bfcb1e83e61
1.7 KiB
text/x-python
basic testing
9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 9bfcb1e83e61 | import os
import shutil
import hashlib
import multiprocessing
from unittest import TestCase
import config
from hashtree import HashTree
from client import Client, Connection as ClientConnection
from server import Miniserver
dataDir=os.path.join(config.directory,"src/tests/data")
filename=os.path.join(dataDir,"test.img")
def compareFiles(f1,f2):
with open(f1,mode="rb") as f:
h2=hashlib.sha256(f.read()).hexdigest()
with open(f2,mode="rb") as f:
h=hashlib.sha256(f.read()).hexdigest()
return (h,h2)
class TestMorevna(TestCase):
def setUp(self):
src=os.path.join(dataDir,"test1.img")
shutil.copyfile(src,filename)
@classmethod
def tearDownClass(cls):
os.remove(filename)
def test_build(self):
treeFile=os.path.join(dataDir,"test.bin")
refFile=os.path.join(dataDir,"test1.bin")
tree=HashTree.fromFile(os.path.join(dataDir,"test1.img"))
tree.save(treeFile)
self.assertEqual(*compareFiles(refFile,treeFile))
os.remove(treeFile)
def test_push(self):
ms=Miniserver(filename)
p=multiprocessing.Process(target=ms.serve)
p.start()
for clientFile in ("test2.img","test3.img"):
clientFile=os.path.join(dataDir,clientFile)
c=Client(clientFile)
with ClientConnection() as con:
c.setConnection(con)
blocksToTransfer=c.negotiate()
c.sendData(blocksToTransfer)
self.assertEqual(*compareFiles(clientFile,filename))
p.terminate()
p.join()
def test_pull(self):
serverFile=os.path.join(dataDir,"test3.img")
ms=Miniserver(serverFile)
p=multiprocessing.Process(target=ms.serve)
p.start()
c=Client(filename)
with ClientConnection() as con:
c.setConnection(con)
blocksToTransfer=c.negotiate()
c.pullData(blocksToTransfer)
self.assertEqual(*compareFiles(serverFile,filename))
p.terminate()
p.join()
|