def ack_server(self): request = self.build_request(request_type='ACK', local_user=self.local_user) self.sock_backend.send(request.SerializeToString()) data = self.sock_backend.recv() resp = pbc.server_action() resp.ParseFromString(data) return resp
def test_add_user(cls): print('TEST #5: add user to server') second_user = { 'username': '******', 'ipAddr': '10.0.0.2', 'port': 10002 } userList = [] userList.append(second_user) request = cpb.server_action() request.action = 'REG' request.user.username = second_user.get('username') request.user.ipAddr = second_user.get('ipAddr') request.user.port = int(second_user.get('port')) resp = cls.server.parse_command(request) cls.assertEqual(cls.server.userList, userList, 'Server Appends one user') cls.assertEqual(resp.result, 'Added user to contact list', 'Added user to contact list') resp = cls.server.parse_command(request) cls.assertEqual(cls.server.userList, userList, 'Server does not append the same user again') cls.assertEqual(resp.result, 'User is already present in contact contact list', 'User is already present in contact contact list')
def build_request(self, request_type, local_user): request = pbc.server_action() request.action = request_type request.user.username = self.local_user.get('username') request.user.ipAddr = self.local_user.get('ipAddr') request.user.port = int(self.local_user.get('port')) request.requestTime = int(time.time()) return request
def remove_user(self): request = self.build_request(request_type='DEL', local_user=self.local_user) self.sock_backend.send(request.SerializeToString()) self.logger.info('Sent DEL') data = self.sock_backend.recv() resp = pbc.server_action() resp.ParseFromString(data) self.logger.info(resp.result) return resp
def list_all_available_users(self, action): reply = cpb.server_action() for users in self.userList: reply.contacts.user.add() user = dict_to_protobuf(cpb.User, values=users) reply.contacts.user.append(user) reply.action = 'ACK' reply.result = 'Server listing all possible user' return reply
def server_loop(self): action = cpb.server_action() while True: data = self.socket.recv() action.ParseFromString(data) reply = self.parse_command(action) self.socket.send(reply.SerializeToString()) if self._stop_event.isSet(): break
def request_users(self): request = self.build_request(request_type='CTS', local_user=self.local_user) self.sock_backend.send(request.SerializeToString()) self.logger.info('Sent CTS') data = self.sock_backend.recv() resp = pbc.server_action() resp.ParseFromString(data) self.logger.info(resp.result) self.contactList = self._unpack_user_list(resp) return resp
def register_user(self): request = self.build_request(request_type='REG', local_user=self.local_user) self.sock_backend.send(request.SerializeToString()) self.logger.info('Sent REG') data = self.sock_backend.recv() resp = pbc.server_action() resp.ParseFromString(data) if resp.action == 'ACK': self.logger.info('Success') self.local_user = protobuf_to_dict(request.user) return resp
def register_user(self, action): reply = cpb.server_action() new_user = self.unpack_user(action) if new_user not in self.userList: self.userList.append(new_user) reply.result = 'Added user to contact list' else: self.logger.warning('User is present already! ') reply.result = 'User is already present in contact contact list' self.logger.info(self.userList) reply.action = 'ACK' return reply
def delete_user(self, action): reply = cpb.server_action() del_user = self.unpack_user( action ) #Remove the contact from the server - throw exception if contact not present try: self.userList.remove(del_user) reply.result = 'Deleted user from contact list' except ValueError: self.logger.warning("User not in list") reply.result = 'User is not present in contact list' reply.action = 'ACK' return reply
def test_remove_user(cls): print('TEST #6: remove user to server') second_user = { 'username': '******', 'ipAddr': '10.0.0.2', 'port': 10002 } request = cpb.server_action() request.action = 'DEL' request.user.username = second_user.get('username') request.user.ipAddr = second_user.get('ipAddr') request.user.port = int(second_user.get('port')) resp = cls.server.parse_command(request) cls.assertEqual(cls.server.userList, [], 'Server remove one user') cls.assertEqual(resp.result, 'Deleted user from contact list') resp = cls.server.parse_command(request) cls.assertEqual(cls.server.userList, [], 'Server does not attempt remove non existing users') cls.assertEqual(resp.result, 'User is not present in contact list', 'Cannot remove non existing users')
def n_ack_to_request(self): reply = cpb.server_action() self.logger.error('Cannot ACK request') reply.action = 'NACK' reply.result = 'Malformed request' return reply
def ack_to_request(self): reply = cpb.server_action() self.logger.info('Client ACk\'d our reply') reply.action = 'ACK' reply.result = 'Successful request' return reply
def test_acking(cls): print("TEST #4: ack from server") request = cpb.server_action() request.action = 'ACK' resp = cls.server.parse_command(request) cls.assertEqual(resp.action, 'ACK', 'Server Nack is correct')