feat: preparation for data integrity test

This commit is contained in:
Swann Martinez
2019-07-19 14:29:57 +02:00
parent dac5662f77
commit 589dcd6979
3 changed files with 67 additions and 13 deletions

View File

@ -89,6 +89,7 @@ class ReplicatedDatablock(object):
self.buffer = self.deserialize(buffer) self.buffer = self.deserialize(buffer)
else: else:
raise ValueError("Not enought parameter in constructor") raise ValueError("Not enought parameter in constructor")
self.str_type = type(self).__name__ self.str_type = type(self).__name__
def push(self, socket): def push(self, socket):
@ -119,7 +120,6 @@ class ReplicatedDatablock(object):
uuid = uuid.decode() uuid = uuid.decode()
instance = factory.construct_from_net(str_type)(owner=owner, uuid=uuid, buffer=data) instance = factory.construct_from_net(str_type)(owner=owner, uuid=uuid, buffer=data)
# instance.data = instance.deserialize(data) # instance.data = instance.deserialize(data)
return instance return instance
@ -155,7 +155,7 @@ class ReplicatedDatablock(object):
raise NotImplementedError raise NotImplementedError
def apply(self,data,target): def apply(self,target=None):
""" """
JSON -> DCC JSON -> DCC
""" """
@ -182,8 +182,8 @@ class RepCommand(ReplicatedDatablock):
def deserialize(self,data): def deserialize(self,data):
return pickle.loads(data) return pickle.loads(data)
def apply(self,data,target): def apply(self,target):
target = data target = self.pointer
# class RepObject(ReplicatedDatablock): # class RepObject(ReplicatedDatablock):
# def deserialize(self): # def deserialize(self):

View File

@ -119,7 +119,7 @@ class ClientNetService(threading.Thread):
SYNCING : Ask for snapshots SYNCING : Ask for snapshots
ACTIVE : Do nothing ACTIVE : Do nothing
""" """
items = dict(poller.poll(10)) items = dict(poller.poll(1))
if self.snapshot in items: if self.snapshot in items:
if self.state == STATE_SYNCING: if self.state == STATE_SYNCING:
@ -129,7 +129,7 @@ class ClientNetService(threading.Thread):
self.state = STATE_ACTIVE self.state = STATE_ACTIVE
logger.debug('{} : snapshot done'.format(self._id)) logger.debug('{} : snapshot done'.format(self._id))
datablock.store(self._store_reference)
# We receive updates from the server ! # We receive updates from the server !
if self.subscriber in items: if self.subscriber in items:

View File

@ -9,13 +9,8 @@ import time
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class SampleData(): class SampleData():
def __init__(self): def __init__(self, map={"sample":"data"}):
self.map = { self.map = map
"sample":"data",
"sample":"data",
"sample":"data",
"sample":"data"
}
class RepSampleData(ReplicatedDatablock): class RepSampleData(ReplicatedDatablock):
@ -62,6 +57,32 @@ class TestClient(unittest.TestCase):
self.assertNotEqual(test_state, 2) self.assertNotEqual(test_state, 2)
def test_filled_snapshot(self):
# Setup
factory = ReplicatedDataFactory()
factory.register_type(SampleData, RepSampleData)
server = Server(factory=factory)
client = Client(factory=factory, id="client_test_callback")
client2 = Client(factory=factory, id="client_2")
server.serve(port=5575)
client.connect(port=5575)
# Test the key registering
data_sample_key = client.register(SampleData())
time.sleep(2)
client2.connect(port=5575)
time.sleep(0.2)
rep_test_key = client2._rep_store[data_sample_key].uuid
server.stop()
client.disconnect()
client2.disconnect()
self.assertEqual(data_sample_key, rep_test_key)
def test_register_client_data(self): def test_register_client_data(self):
# Setup environment # Setup environment
@ -91,12 +112,45 @@ class TestClient(unittest.TestCase):
server.stop() server.stop()
self.assertEqual(rep_test_key, data_sample_key)
def test_client_data_intergity(self):
# Setup environment
factory = ReplicatedDataFactory()
factory.register_type(SampleData, RepSampleData)
server = Server(factory=factory)
server.serve(port=5560)
client = Client(factory=factory, id="client_1")
client.connect(port=5560)
client2 = Client(factory=factory, id="client_2")
client2.connect(port=5560)
test_map = {"toto":"test"}
# Test the key registering
client.register(SampleData(map=test_map))
test_map_result = {}
#Waiting for server to receive the datas
time.sleep(.5)
rep_test_key = client2._rep_store[data_sample_key].uuid
client.disconnect()
client2.disconnect()
server.stop()
self.assertEqual(rep_test_key, data_sample_key) self.assertEqual(rep_test_key, data_sample_key)
def suite(): def suite():
suite = unittest.TestSuite() suite = unittest.TestSuite()
suite.addTest(TestDataFactory('test_data_factory')) suite.addTest(TestDataFactory('test_data_factory'))
suite.addTest(TestClient('test_empty_snapshot')) suite.addTest(TestClient('test_empty_snapshot'))
suite.addTest(TestClient('test_filled_snapshot'))
suite.addTest(TestClient('test_register_client_data')) suite.addTest(TestClient('test_register_client_data'))
return suite return suite