From 0c2cd323f6f71309d9c8ae2b2a90463d66773b84 Mon Sep 17 00:00:00 2001 From: Adriana Draghici Date: Thu, 22 Apr 2010 12:58:57 +0000 Subject: [PATCH] autorun: changes for server GET_OUTPUT response --- autorun/server/Server.py | 20 ++++++++---- ppf/log-parser/tribler/LogParser.py | 50 +++++++++++++++-------------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/autorun/server/Server.py b/autorun/server/Server.py index c46d79f..1681011 100644 --- a/autorun/server/Server.py +++ b/autorun/server/Server.py @@ -144,15 +144,18 @@ class MyDaemon(Daemon): line = f.readline() size = 0 info_dict = {} + dicts = [] #list with all info_dict dictionaries try: while line != '': print line if size == 0 : if info_dict != {} : - if self.add_to_output_msg(file_list, info_dict) < 0: - raise Exception - if create_archive: - self.archive_files(info_dict,archives_list) + if info_dict not in dicts: + if self.add_to_output_msg(file_list, info_dict) < 0: + raise Exception + dicts.append(info_dict) + if create_archive: + self.archive_files(info_dict,archives_list) size = int(line) info_dict = {} @@ -164,7 +167,7 @@ class MyDaemon(Daemon): size = size - 1 line = f.readline() - if size == 0 and info_dict != {}: + if size == 0 and info_dict != {} and info_dict not in dicts: if self.add_to_output_msg(file_list, info_dict) < 0: raise Exception if create_archive: @@ -216,14 +219,19 @@ class MyDaemon(Daemon): """ Stops a BT client by killing it.""" int_pid = int(pid) + if int_pid == -1 or int_pid not in self.processes_fd.keys(): + return "Invalid pid " + pid os.kill(int_pid, signal.SIGKILL) # kill generates zombies os.wait() self.processes_fd[int_pid][0].close() self.processes_fd[int_pid][1].close() + del self.processes_fd[int_pid] + del self.processes_info[int_pid] if(self.DEBUG): print "Server: killed process with pid = ", pid + return "" def set_linger(self,sock, l_onoff, l_linger): """Sets the SO_LINGER value on a socket.""" @@ -259,7 +267,7 @@ class MyDaemon(Daemon): elif msg[0] == STOP_MSG: client_pid = msg[1] - self.stop_bt_client(client_pid) + err_msg = self.stop_bt_client(client_pid) response = "" elif msg[0] == GET_OUTPUT: diff --git a/ppf/log-parser/tribler/LogParser.py b/ppf/log-parser/tribler/LogParser.py index 1c9aeed..86b6055 100644 --- a/ppf/log-parser/tribler/LogParser.py +++ b/ppf/log-parser/tribler/LogParser.py @@ -1,16 +1,17 @@ #!/usr/bin/env python # # Parser for verbose messages -# author: Adriana Draghici +# author: Adriana Draghici < # import sys -from DatabaseWriter import DatabaseWriter -from DatabaseCommander import DatabaseCommander -import julian import datetime import getopt +import julian +import logging import re +from DatabaseWriter import DatabaseWriter +from DatabaseCommander import DatabaseCommander # the names used by Tribler for the BitTorrent messages msg_types = {"BT_REQUEST_SEND": "new_request", "BT_REQUEST_RECV": "REQUEST(", "BT_CHOKE": "CHOKE from", "BT_UNCHOKE": "UNCHOKE from", @@ -67,12 +68,12 @@ def tribler_parse_choke_msg(line): timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1]) if timestamp == None: - print "Error: invalid date & time format for Connecter. " + logger.error("Error: invalid date & time format for Connecter. ") return None nr_parts = len(line_parts) if nr_parts < 7 : - print "Error: invalid line format for Connecter. ", line + logger.error("Error: invalid line format for Connecter. " + line) return None peer_ip = line_parts[nr_parts-1]; @@ -97,12 +98,12 @@ def tribler_parse_interested_msg(line): timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1]) if timestamp == None: - print "Error: invalid date & time format for Connecter." + logger.error("Error: invalid date & time format for Connecter.") return None nr_parts = len(line_parts) if nr_parts < 7 : - print "Error: invalid line format for Connecter.", line + logger.error("Error: invalid line format for Connecter." + line) return None peer_ip = line_parts[nr_parts-1]; @@ -127,12 +128,12 @@ def tribler_parse_have_msg(line): timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1]) if timestamp == None: - print "Error: invalid date & time format for Connecter." + logger.error("Error: invalid date & time format for Connecter.") return None nr_parts = len(line_parts) if nr_parts < 9 : - print "Error: invalid line format for Connecter.", line + logger.error("Error: invalid line format for Connecter." + line) return None index = int(line_parts[5]) @@ -152,12 +153,12 @@ def tribler_parse_bitfield_msg(line): timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1]) if timestamp == None: - print "Error: invalid date & time format for Connecter." + logger.error("Error: invalid date & time format for Connecter.") return None nr_parts = len(line_parts) if nr_parts < 7 : - print "Error: invalid line format for Connecter.", line + logger.error("Error: invalid line format for Connecter." + line) return None peer_ip = line_parts[nr_parts-1]; @@ -188,12 +189,12 @@ def tribler_parse_request_msg(line): line_parts = re.split(" *", line) if len(line_parts) < msg_parts : - print "Error: invalid line format for ", file, + logger.error("Error: invalid line format for " + file) return None timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1]) if timestamp == None: - print "Error: invalid line format for ", file + logger.error("Error: invalid line format for " + file) return None # Send request message @@ -228,12 +229,12 @@ def tribler_parse_piece_msg(line): timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1]) if timestamp == None: - print "Error: invalid date & time format for Connecter." + logger.error("Error: invalid date & time format for Connecter.") return None nr_parts = len(line_parts) if nr_parts < 9 : - print "Error: invalid line format for Connecter.", line + logger.error("Error: invalid line format for Connecter."+ line) return None index = int(line_parts[5]) @@ -255,12 +256,12 @@ def tribler_parse_cancel_msg(line): timestamp = tribler_parse_timestamp(line_parts[0], line_parts[1]) if timestamp == None: - print "Error: invalid date & time format for Connecter." + logger.error("Error: invalid date & time format for Connecter.") return None nr_parts = len(line_parts) if nr_parts < 6 : - print "Error: invalid line format for Connecter.", line + logger.error("Error: invalid line format for Connecter."+ line) return None line_parts = re.split("[ :-]*", line) @@ -317,7 +318,7 @@ def tribler_parse_status_file(dbw, client_session_id, filename): msg_type, index, begin, length, listen_port) except IOError: - print "Error processing file %s." %filename + logger.error("Error processing file " + filename) def main_just_parse(): filename = sys.argv[1] @@ -350,16 +351,16 @@ def main_with_DB(): assert False, "unhandled option" if client_session_id == None: - print "Error: no client session id." + logger.error("Error: no client session id.") sys.exit(2) if filename == None: - print "Error: no status file." + logger.error("Error: no status file.") sys.exit(2) # no database passed as argument if len(args) != 1: - print "Error: no database file passed as argument." + logger.error("Error: no database file passed as argument.") sys.exit(2) database = args[0] @@ -368,7 +369,7 @@ def main_with_DB(): # check for client_session_id, swarm_id, btclient_id cursor = dbc.select_client_sessions_by_id(client_session_id) if cursor == None: - print "Error: no client session id (%d) in database." % client_session_id + logger.error("Error: no client session id ("+ str(client_session_id) + ") in database." ) sys.exit(2) for session_row in cursor: pass @@ -378,7 +379,8 @@ def main_with_DB(): cursor = dbc.select_swarms(swarm_id) if cursor == None: - print "Error: no swarm id (%d) in database." % swarm_id + logger.error("Error: no swarm id ("+ str(swarm_id) +") in database." ) + sys.exit(2) for swarm_row in cursor: pass -- 2.20.1