Beispiel #1
0
    def test_rotate(self):
        # insert root
        root_message = protocol.ClientMessage()
        root_message.insert(None, 5, 'left')
        server_message = self.s.receive(root_message)
        # insert left child
        insert_message = protocol.ClientMessage()
        insert_message.insert(5, 3, 'left')
        server_message_2 = self.s.receive(insert_message)
        self.assertEqual(3, self.s.root.left.value)
        self.assertEqual(None, self.s.root.right)
        # insert a right child into unbalanced tree
        # insert_message_2 = protocol.ClientMessage()
        # insert_message_2.insert(3, 4, 'right')
        # server_message_3 = self.s.receive(insert_message_2)
        new_node = server.Server.OPE_Node(4)
        new_node.parent = self.s.root.left
        self.s.root.left.right = new_node

        self.assertEqual(3, server.height(self.s.root))
        self.assertEqual(2, server.subtree_size(self.s.root.left))
        self.assertEqual(2, server.balance_factor(self.s.root))

        server.left_rotate(self.s.root.left)
        self.assertEqual(4, self.s.root.left.value)
        self.assertEqual(3, self.s.root.left.left.value)
        self.assertEqual(3, server.subtree_size(self.s.root))

        server.right_rotate(self.s.root)
        server.Server.update_root(self.s)
        self.assertEqual(4, self.s.root.value)
        self.assertEqual(5, self.s.root.right.value)
        self.assertEqual(3, self.s.root.left.value)
Beispiel #2
0
 def test_move_right(self):
     root_message = protocol.ClientMessage()
     root_message.insert(None, 5, 'left')
     server_message = self.s.receive(root_message)
     move_right_message = protocol.ClientMessage()
     move_right_message.move_right(5)
     server_message = self.s.receive(move_right_message)
     self.assertEqual(None, server_message.ciphertext)
Beispiel #3
0
 def test_get_root(self):
     root_message = protocol.ClientMessage()
     root_message.insert(None, 5, 'left')
     server_message = self.s.receive(root_message)
     get_root_message = protocol.ClientMessage()
     get_root_message.get_root()
     server_message = self.s.receive(get_root_message)
     self.assertEqual(5, self.s.root.value)
     self.assertEqual(5, server_message.ciphertext)
Beispiel #4
0
 def test_move_left(self):
     root_message = protocol.ClientMessage()
     root_message.insert(None, 5, 'left')
     server_message = self.s.receive(root_message)
     insert_message = protocol.ClientMessage()
     insert_message.insert(5, 3, 'left')
     server_message_2 = self.s.receive(insert_message)
     move_left_message = protocol.ClientMessage()
     move_left_message.move_left(5)
     server_message_3 = self.s.receive(move_left_message)
     self.assertEqual(3, server_message_3.ciphertext)
 def query(self, message):
     if self.dcs_scheme:
         message = self.dcs_scheme.encrypt(message)
     ciphertext = self.encryption_scheme.encrypt(self.key, message)
     client_message = protocol.ClientMessage()
     client_message.query(ciphertext)
     return self._send_client_message(client_message)
Beispiel #6
0
 def setUp(self):
     self.factory = communication_channel.CommunicationFactory()
     self.server_channel = self.factory.build_for("server")
     self.client_channel = self.factory.build_for("client")
     #self.client = client.Client(self.client_channel)
     self.client_message = protocol.ClientMessage()
     self.client_message.get_root()
 def test_query(self):
     ciphertext = self.encryption_scheme.encrypt(self.key, self.message)
     client_message = protocol.ClientMessage()
     client_message.query(ciphertext)
     self.assertIsInstance(client_message, protocol.ClientMessage)
     self.assertEqual(client_message.message_type.__repr__(),
                      protocol.MessageType("query").__repr__())
 def test_move_left(self):
     ciphertext = self.encryption_scheme.encrypt(self.key, self.message)
     client_message = protocol.ClientMessage()
     client_message.move_left(ciphertext)
     #TODO protocol.ClientMessage().move_left(ciphertext) doesn't work
     self.assertIsInstance(client_message, protocol.ClientMessage)
     self.assertEqual(client_message.message_type.__repr__(),
                      protocol.MessageType("move_left").__repr__())
 def test_insert(self):
     ciphertext = self.encryption_scheme.encrypt(self.key, self.message)
     client_message = protocol.ClientMessage()
     client_message.insert(ciphertext, None, "left")
     self.assertIsInstance(client_message, protocol.ClientMessage)
     self.assertIsNone(client_message.new_ciphertext)
     self.assertEqual(client_message.insert_direction, "left")
     self.assertEqual(client_message.message_type.__repr__(),
                      protocol.MessageType("insert").__repr__())
 def _insert(self, current_ciphertext, new_ciphertext, direction):
     if self.dcs_scheme:
         current_ciphertext = self.dcs_scheme.encrypt(current_ciphertext)
         new_ciphertext = self.dcs_scheme.encrypt(new_ciphertext)
     print "Client insert, current_ciphertext=" + str(
         current_ciphertext) + ", new_ciphertext:" + str(
             new_ciphertext) + ", direction:" + str(direction)
     client_message = protocol.ClientMessage()
     client_message.insert(current_ciphertext, new_ciphertext, direction)
     return self._send_client_message(client_message)
Beispiel #11
0
 def test_insert_root(self):
     root_message = protocol.ClientMessage()
     root_message.insert(None, 5, 'left')
     server_message = self.s.receive(root_message)
     self.assertEqual(root_message.new_ciphertext,
                      server_message.ciphertext)
     self.assertEqual(self.s.fake_ope_table,
                      {root_message.new_ciphertext: self.s.root})
     self.assertEqual(
         server.Server.OPE_Node(root_message.new_ciphertext).value,
         self.s.root.value)
 def _move_right(self, ciphertext):
     if self.dcs_scheme:
         ciphertext = self.dcs_scheme.encrypt(ciphertext)
     client_message = protocol.ClientMessage()
     client_message.move_right(ciphertext)
     return self._send_client_message(client_message)
 def _get_root(self):
     client_message = protocol.ClientMessage()
     client_message.get_root()
     return self._send_client_message(client_message)
 def test_get_root(self):
     client_message = protocol.ClientMessage()
     client_message.get_root()
     self.assertIsInstance(client_message, protocol.ClientMessage)
     self.assertEqual(client_message.message_type.__repr__(),
                      protocol.MessageType("get_root").__repr__())
 def insert_test(self):
     message = self.client._insert(1, 10, 'left')
     test_message = protocol.ClientMessage()
     test_message.insert(1, 10, 'left')
     self.assertEqual(message, test_message)
 def left_test(self):
     message = self.client._move_left(10)
     test_message = protocol.ClientMessage()
     test_message.move_left(10)
     self.assertEqual(message, test_message)
 def root_test(self):
     message = self.client._get_root()
     test_message = protocol.ClientMessage()
     test_message.get_root()
     self.assertEqual(message, test_message)