예제 #1
0
    def test_store(self):
        """Test storing of cuds_object."""
        client = TransportSessionClient(TestWrapperSession, None)
        client._engine = MockEngine()

        # first item
        c1 = create_recycle(oclass=city.CityWrapper,
                            kwargs={},
                            uid=1,
                            session=client,
                            fix_neighbors=False)  # store will be called here
        self.assertEqual(client._engine._sent_command, INITIALIZE_COMMAND)
        assertJsonLdEqual(self, json.loads(client._engine._sent_data),
                          INIT_DATA)
        self.assertEqual(set(client._registry.keys()), {c1.uid})

        # second item
        client._engine._sent_data = None
        client._engine._sent_command = None
        c2 = create_recycle(oclass=city.City,
                            kwargs={"name": "Freiburg"},
                            uid=2,
                            session=client,
                            fix_neighbors=False)
        self.assertEqual(client._engine._sent_command, None)
        self.assertEqual(client._engine._sent_data, None)
        self.assertEqual(set(client._registry.keys()), {c1.uid, c2.uid})
        client.close()
예제 #2
0
 def test_send(self):
     """Test sending data to the server."""
     client = TransportSessionClient(TestWrapperSession, None)
     client._engine = MockEngine()
     client._send("command", True, "hello", bye="bye")
     self.assertEqual(client._engine._sent_command, "command")
     self.assertEqual(
         client._engine._sent_data,
         ('{"added": [], "updated": [], "deleted": [], "expired": [], '
          '"args": ["hello"], "kwargs": {"bye": "bye"}}'))
     client.close()
예제 #3
0
 def test_receive(self):
     """Test the receive method."""
     client = TransportSessionClient(TestWrapperSession, None)
     client._engine = MockEngine()
     w = city.CityWrapper(session=client)
     self.assertRaises(RuntimeError, client._receive, "ERROR: Error!", None)
     client._receive(json.dumps(SERIALIZED_BUFFERS2), None)
     self.assertEqual(set(client._registry.keys()),
                      {uuid.UUID(int=42), w.uid})
     self.assertEqual(client._buffers[BufferContext.USER],
                      [dict(), dict(), dict()])
     self.assertEqual(
         list(map(dict.keys, client._buffers[BufferContext.ENGINE])),
         [set([uuid.UUID(int=42)]), set(),
          set()])
     client.close()
예제 #4
0
    def test_load(self):
        """Test loading from server."""
        client = TransportSessionClient(TestWrapperSession, None)
        client.root = 1
        c1 = create_recycle(
            oclass=city.City,
            kwargs={"name": "Freiburg"},
            uid=1,
            session=client,
            fix_neighbors=False,
        )
        c2 = city.City(name="London", uid=2)
        c3 = create_recycle(
            oclass=city.City,
            kwargs={"name": "Paris"},
            uid=3,
            session=client,
            fix_neighbors=False,
        )
        client._reset_buffers(BufferContext.USER)
        client.expire(c3.uid)

        def on_send(command, data):
            with EngineContext(client):
                create_from_cuds_object(c2, client)
                return [c2, None]

        client._engine = MockEngine(on_send)
        result = list(
            client.load(uuid.UUID(int=1), uuid.UUID(int=2), uuid.UUID(int=3))
        )
        self.assertEqual(client._engine._sent_command, LOAD_COMMAND)
        self.assertEqual(
            client._engine._sent_data,
            '{"expired": '
            '[{"UID": "00000000-0000-0000-0000-000000000003"}], '
            '"uids": '
            '[{"UID": "00000000-0000-0000-0000-000000000002"}, '
            '{"UID": "00000000-0000-0000-0000-000000000003"}]}',
        )
        self.assertEqual(result, [c1, c2, None])
        self.assertEqual(set(client._registry.keys()), {c1.uid, c2.uid})
        self.assertEqual(
            client._buffers,
            [[dict(), dict(), dict()], [dict(), dict(), dict()]],
        )
        client.close()
예제 #5
0
    def test_getattr(self):
        """Test the __getatt__ magic method."""
        def command(*args, **kwargs):
            pass

        TestWrapperSession.command = consumes_buffers(command)

        client = TransportSessionClient(TestWrapperSession, None)
        client._engine = MockEngine()
        client.command("arg1", "arg2", kwarg="kwarg")
        self.assertEqual(client._engine._sent_command, "command")
        self.assertEqual(
            client._engine._sent_data,
            ('{"added": [], "updated": [], "deleted": [], "expired": [], '
             '"args": ["arg1", "arg2"], "kwargs": {"kwarg": "kwarg"}}'))
        self.assertRaises(AttributeError, getattr, client, "run")
        client.close()