Exemple #1
0
def create_dummy_store_data():
    data = {}
    DatabaseIDModel.objects.create()
    (data['group1_id'], _) = InstanceIDModel.get_or_create_current_instance()  # counter is at 0

    # create controllers for app/store/buffer operations
    data['mc'] = MorangoProfileController('facilitydata')
    data['sc'] = SyncClient(None, 'host')
    session = SyncSession.objects.create(id=uuid.uuid4().hex, profile="facilitydata", last_activity_timestamp=timezone.now())
    data['sc'].current_transfer_session = TransferSession.objects.create(id=uuid.uuid4().hex, sync_session=session, push=True, last_activity_timestamp=timezone.now())

    data['mc'].serialize_into_store()  # counter is at 1
    # create group of facilities and first serialization
    data['group1_c1'] = [FacilityFactory() for _ in range(5)]
    data['mc'].serialize_into_store()  # counter is at 2

    # create group of facilities and second serialization
    data['group1_c2'] = [FacilityFactory() for _ in range(5)]

    # create users and logs associated with user
    data['user1'] = MyUser.objects.create(username='******')
    data['user1_sumlogs'] = [SummaryLog.objects.create(user=data['user1']) for _ in range(5)]

    data['mc'].serialize_into_store()  # counter is at 3

    # create new instance id and group of facilities
    with mock.patch('platform.platform', return_value='plataforma'):
        (data['group2_id'], _) = InstanceIDModel.get_or_create_current_instance()  # new counter is at 0

    data['mc'].serialize_into_store()  # new counter is at 1
    data['group2_c1'] = [FacilityFactory() for _ in range(5)]

    # create users and logs associated with user
    data['user2'] = MyUser.objects.create(username='******')
    data['user2_sumlogs'] = [SummaryLog.objects.create(user=data['user2']) for _ in range(5)]
    data['user2_interlogs'] = [InteractionLog.objects.create(user=data['user2']) for _ in range(5)]

    data['user3'] = MyUser.objects.create(username='******')
    data['user3_sumlogs'] = [SummaryLog.objects.create(user=data['user3']) for _ in range(5)]
    data['user3_interlogs'] = [InteractionLog.objects.create(user=data['user3']) for _ in range(5)]

    data['mc'].serialize_into_store()  # new counter is at 2

    data['user4'] = MyUser.objects.create(username='******', _morango_partition='badpartition')
    data['mc'].serialize_into_store()  # new counter is at 3

    return data
Exemple #2
0
 def setUp(self):
     session = SyncSession.objects.create(
         id=uuid.uuid4().hex,
         profile="facilitydata",
         last_activity_timestamp=timezone.now())
     transfer_session = TransferSession.objects.create(
         id=uuid.uuid4().hex,
         sync_session=session,
         filter='partition',
         push=True,
         last_activity_timestamp=timezone.now(),
         records_total=3)
     conn = NetworkSyncConnection()
     self.syncclient = SyncClient(conn, session)
     self.syncclient.current_transfer_session = transfer_session
     self.chunk_size = 3
     InstanceIDModel.get_or_create_current_instance()
    def setUp(self):
        settings.MORANGO_DESERIALIZE_AFTER_DEQUEUING = False
        self.data = {}
        DatabaseIDModel.objects.create()
        (self.current_id, _) = InstanceIDModel.get_or_create_current_instance()

        # create controllers for app/store/buffer operations
        self.data['mc'] = MorangoProfileController('facilitydata')
        self.data['sc'] = SyncClient(None, 'host')
        session = SyncSession.objects.create(
            id=uuid.uuid4().hex,
            profile="",
            last_activity_timestamp=timezone.now())
        self.data[
            'sc'].current_transfer_session = TransferSession.objects.create(
                id=uuid.uuid4().hex,
                sync_session=session,
                push=True,
                last_activity_timestamp=timezone.now())
        self.data.update(
            create_buffer_and_store_dummy_data(
                self.data['sc'].current_transfer_session.id))
Exemple #4
0
class SyncClientTestCase(TestCase):
    def setUp(self):
        session = SyncSession.objects.create(
            id=uuid.uuid4().hex,
            profile="facilitydata",
            last_activity_timestamp=timezone.now())
        transfer_session = TransferSession.objects.create(
            id=uuid.uuid4().hex,
            sync_session=session,
            filter='partition',
            push=True,
            last_activity_timestamp=timezone.now(),
            records_total=3)
        conn = NetworkSyncConnection()
        self.syncclient = SyncClient(conn, session)
        self.syncclient.current_transfer_session = transfer_session
        self.chunk_size = 3
        InstanceIDModel.get_or_create_current_instance()

    def build_buffer_items(self, transfer_session, **kwargs):

        data = {
            "profile":
            kwargs.get("profile", 'facilitydata'),
            "serialized":
            kwargs.get("serialized", '{"test": 99}'),
            "deleted":
            kwargs.get("deleted", False),
            "last_saved_instance":
            kwargs.get("last_saved_instance",
                       uuid.uuid4().hex),
            "last_saved_counter":
            kwargs.get("last_saved_counter", 179),
            "partition":
            kwargs.get("partition", 'partition'),
            "source_id":
            kwargs.get("source_id",
                       uuid.uuid4().hex),
            "model_name":
            kwargs.get("model_name", "contentsummarylog"),
            "conflicting_serialized_data":
            kwargs.get("conflicting_serialized_data", ""),
            "model_uuid":
            kwargs.get("model_uuid", None),
            "transfer_session":
            transfer_session,
        }

        for i in range(self.chunk_size):
            data['source_id'] = uuid.uuid4().hex
            data["model_uuid"] = SummaryLog.compute_namespaced_id(
                data["partition"], data["source_id"], data["model_name"])
            Buffer.objects.create(**data)

        buffered_items = Buffer.objects.filter(
            transfer_session=self.syncclient.current_transfer_session)
        serialized_records = BufferSerializer(buffered_items, many=True)
        return json.dumps(serialized_records.data)

    @mock_patch_decorator
    def test_push_records(self):
        self.build_buffer_items(self.syncclient.current_transfer_session)
        self.assertEqual(
            self.syncclient.current_transfer_session.records_transferred, 0)
        self.syncclient._push_records(chunk_size=self.chunk_size)
        self.assertEqual(
            self.syncclient.current_transfer_session.records_transferred,
            self.chunk_size)

    @mock_patch_decorator
    def test_pull_records(self):
        resp = self.build_buffer_items(
            self.syncclient.current_transfer_session)
        NetworkSyncConnection._request.return_value.json.return_value = json.loads(
            resp)
        Buffer.objects.filter(transfer_session=self.syncclient.
                              current_transfer_session).delete()
        self.assertEqual(
            Buffer.objects.filter(transfer_session=self.syncclient.
                                  current_transfer_session).count(), 0)
        self.assertEqual(
            self.syncclient.current_transfer_session.records_transferred, 0)
        self.syncclient._pull_records(chunk_size=self.chunk_size)
        self.assertEqual(
            Buffer.objects.filter(transfer_session=self.syncclient.
                                  current_transfer_session).count(),
            self.chunk_size)
        self.assertEqual(
            self.syncclient.current_transfer_session.records_transferred,
            self.chunk_size)

    @mock_patch_decorator
    def test_create_transfer_session_push(self):
        self.syncclient.current_transfer_session.active = False
        self.syncclient.current_transfer_session.save()
        self.assertEqual(
            TransferSession.objects.filter(active=True).count(), 0)
        self.syncclient._create_transfer_session(True, 'filter')
        self.assertEqual(
            TransferSession.objects.filter(active=True).count(), 1)

    @mock_patch_decorator
    def test_close_transfer_session_push(self):
        self.assertEqual(
            TransferSession.objects.filter(active=True).count(), 1)
        self.syncclient._close_transfer_session()
        self.assertEqual(
            TransferSession.objects.filter(active=True).count(), 0)

    @mock_patch_decorator
    def test_close_sync_session(self):
        self.assertEqual(SyncSession.objects.filter(active=True).count(), 1)
        self.syncclient._close_transfer_session()
        self.syncclient.close_sync_session()
        self.assertEqual(SyncSession.objects.filter(active=True).count(), 0)