import logging
import os
import socket
+import sys
from optparse import OptionParser, SUPPRESS_HELP
conn.send("%s\n" % encoded)
def get_options():
- usage = ("usage: %prog -S <socket-name> -L <NS_LOG> -v ")
+ usage = ("usage: %prog -S <socket-name> -L <NS_LOG> -H <home_dir> -v ")
parser = OptionParser(usage = usage)
help = "NS_LOG environmental variable to be set",
default = "", type="str")
+ parser.add_option("-H", "--homedir", dest="homedir",
+ help = "Home directory where to store results",
+ default = "", type="str")
+
parser.add_option("-v", "--verbose",
help="Print debug output",
action="store_true",
(options, args) = parser.parse_args()
- return options.socket_name, options.verbose, options.ns_log
-
-def run_server(socket_name, verbose = False, ns_log = None):
+ return (options.socket_name, options.homedir, options.verbose,
+ options.ns_log)
- level = logging.DEBUG if verbose else logging.INFO
+def run_server(socket_name, homedir = None, level = logging.INFO,
+ ns_log = None):
# Sets NS_LOG environmental variable for NS debugging
if ns_log:
###### ns-3 wrapper instantiation
- ns3_wrapper = NS3Wrapper(loglevel=level)
+ ns3_wrapper = NS3Wrapper(homedir = homedir, loglevel=level)
+
+ ns3_wrapper.logger.info("STARTING...")
# create unix socket to receive instructions
sock = create_socket(socket_name)
if msg == NS3WrapperMessage.SHUTDOWN:
stop = True
-
- reply = handle_message(ns3_wrapper, msg, args)
+
+ try:
+ reply = handle_message(ns3_wrapper, msg, args)
+ except:
+ import traceback
+ err = traceback.format_exc()
+ ns3_wrapper.logger.error(err)
+ raise
try:
send_reply(conn, reply)
except socket.error:
break
+
+ ns3_wrapper.logger.info("EXITING...")
if __name__ == '__main__':
- (socket_name, verbose, ns_log) = get_options()
+ (socket_name, homedir, verbose, ns_log) = get_options()
+
+ ## configure logging
+ FORMAT = "%(asctime)s %(name)s %(levelname)-4s %(message)s"
+ level = logging.DEBUG if verbose else logging.INFO
+
+ logging.basicConfig(format = FORMAT, level = level)
+
+ # Make sure to send DEBUG messages to stdout instead of stderr
+ root = logging.getLogger()
+ handler = logging.StreamHandler(sys.stdout)
+ handler.setLevel(logging.DEBUG)
+ root.addHandler(handler)
- run_server(socket_name, verbose, ns_log)
+ ## Run the server
+ run_server(socket_name, homedir, level, ns_log)