server: fixed stderr, stdout redirect
authorAdriana Draghici <adriana008@gmail.com>
Fri, 5 Mar 2010 10:42:37 +0000 (12:42 +0200)
committerAdriana Draghici <adriana008@gmail.com>
Fri, 5 Mar 2010 10:42:37 +0000 (12:42 +0200)
bt_comm/server/Client.py
bt_comm/server/Server_NO_DAEMON.py
scripts/start-clients/BitTorrentClientRun.py
scripts/start-clients/TransmissionRun.py

index 918e81e..ebdc9c7 100644 (file)
@@ -1,4 +1,4 @@
-import sys, socket
+import sys,time, socket
 import pickle
 from Util import *
 MSGLEN = 1024
@@ -65,7 +65,7 @@ def test_all_commands():
     print pid
     s = MySocket()
     s.connect(SERVER_HOST, SERVER_PORT)
-
+    time.sleep(30)
     response = s.send_command(STOP_MSG, pid)
     print response
 
index 18d9461..5da2405 100644 (file)
@@ -7,7 +7,7 @@ from daemon import Daemon
 from Util import *
 from Util import SERVER_HOST, SERVER_PORT
 from BitTorrentClientRun import *
-
+from TransmissionRun import *
 BUFFER_SIZE = 4096
 
 states = {} # keeps track of what kind of message was previously receveid on a socket.
@@ -31,14 +31,8 @@ def recv_pickled_data(clientsock):
 def start_bt_client(bt_client_data):
 
     if bt_client_data[CLIENT] == TRANSMISSION:
-        """btcr = BitTorrentClientRun("/usr/bin/transmissioncli", 
-            "$base_path  --port $port $torrent_file $download_dir> $output_dir/$output_file", 
-            "TR_DEBUG=2 $base_path/cli/transmissioncli --port $port $torrent_file $download_dir 2> $log_dir/$log_file > $output_dir/$output_file")"""
-
-        btcr = BitTorrentClientRun("/usr/bin/transmissioncli", 
-        "$base_path  --port $port $torrent_file $download_dir", 
-        "TR_DEBUG=2 $base_path/cli/transmissioncli --port $port $torrent_file $download_dir 2> $log_dir/$log_file > $output_dir/$output_file")
-
+        
+        btcr = TransmissionRun("/usr/bin/transmissioncli")
         btcr.config_run(bt_client_data[DL_DIR], bt_client_data[LOG_DIR], 
             bt_client_data[OUT_FILE], bt_client_data[LOG_DIR],
             bt_client_data[LOG_FILE], bt_client_data[PORT], 
@@ -53,10 +47,7 @@ def start_bt_client(bt_client_data):
     return -1
     """Simple test 
 
-    btcr = BitTorrentClientRun("/usr/bin/transmissioncli", 
-            "$base_path --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file", 
-            "TR_DEBUG=2 $base_path/cli/transmissioncli --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
-    
+    btcr = TransmissionRun("/usr/bin/transmissioncli")
     btcr.config_run("/home/adriana/p2p/p2p-dld/transmission", 
                     "/home/adriana/p2p/p2p-log/transmission", 
                     "scrubs.out", "/home/adriana/p2p/", 
index 56f494c..83311c0 100644 (file)
@@ -12,7 +12,7 @@ import subprocess
 import shlex
 from string import Template
 
-DEBUG = False
+DEBUG = True
 
 class BitTorrentClientRun:
     def __init__(self, base_path, simple_run_expr, logging_run_expr):
@@ -23,9 +23,9 @@ class BitTorrentClientRun:
     def config_run(self, download_dir, output_dir, output_file, log_dir, log_file, port, torrent_file):
         self.download_dir = download_dir
         self.output_dir = output_dir
-        self.output_file = output_file
+        self.output_file = output_file # output from stdout
         self.log_dir = log_dir
-        self.log_file = log_file
+        self.log_file = log_file # output from stderr
         self.port = port
         self.torrent_file = torrent_file
 
@@ -58,17 +58,22 @@ class BitTorrentClientRun:
         print self.logging_run_command
        
     def run_client(self, command):
-        #      os.system(command)
-        #split command
+
+        # split command
         args = shlex.split(command)
-        print args
-        p=subprocess.Popen(args, shell=False, stdout=subprocess.PIPE) #does not create sh process
+        if(DEBUG):
+            print "BitTorrentClientRun: command =", args
+       
+        log_redirect = open(self.log_dir+"/"+self.log_file,"w")
+        output_redirect = open(self.output_dir+"/"+self.output_file,"w")
+        p=subprocess.Popen(args, shell=False, #does not create sh process
+                            stdout=log_redirect,
+                            stderr=output_redirect)
         pid = p.pid
-        print "pid =", pid
+        if(DEBUG):
+            print "BitTorrentClientRun: pid =", pid
         return pid
-    
-        # todo citit din stdout si pun in output_dir/output_file. le voi primi ca ragumente la functia de run_client
-       #output, errors = p.communicate()
+        
 
 def main():
 
index c6ba26e..2a6917d 100644 (file)
@@ -15,9 +15,13 @@ DEBUG = False
 class TransmissionRun(BitTorrentClientRun):
     def __init__(self, base_path):
         BitTorrentClientRun.__init__(self, base_path,
-                "$base_path/cli/transmissioncli --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file",
-                "TR_DEBUG=2 $base_path/cli/transmissioncli --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
-
+                "$base_path  --port $port $torrent_file $download_dir> $output_dir/$output_file",
+                "TR_DEBUG=2 $base_path  --port $port $torrent_file $download_dir 2> $log_dir/$log_file > $output_dir/$output_file")
+        # for some versions of transmission the cmdline arguments are given differently:
+        """BitTorrentClientRun.__init__(self, base_path,
+                "$base_path --download-dir $download_dir --port $port $torrent_file > $output_dir/$output_file", 
+                "TR_DEBUG=2 $base_path --download-dir $download_dir --port $port $torrent_file 2> $log_dir/$log_file > $output_dir/$output_file")
+        """
 
 def main():