feat: preparation for data integrity test
This commit is contained in:
@ -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):
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user