src/HOL/Library/Sum_Of_Squares/neos_csdp_client
changeset 32362 c0c640d86b4e
parent 32332 bc5cec7b2be6
child 32542 e37c0ddf257e
equal deleted inserted replaced
32336:e88b295aae35 32362:c0c640d86b4e
     1 #!/usr/bin/env python
     1 #!/usr/bin/env python
     2 import sys
     2 import sys
       
     3 import signal
     3 import xmlrpclib
     4 import xmlrpclib
     4 import time
     5 import time
     5 import re
     6 import re
     6 
     7 
     7 # Neos server config
     8 # Neos server config
     8 NEOS_HOST="neos.mcs.anl.gov"
     9 NEOS_HOST="neos.mcs.anl.gov"
     9 NEOS_PORT=3332
    10 NEOS_PORT=3332
    10 
    11 
    11 if len(sys.argv) < 3 or len(sys.argv) > 3:
    12 jobNumber = 0
    12   sys.stderr.write("Usage: NeosCSDPClient <input_filename> <output_filename>\n")
    13 password = ""
    13   sys.exit(1)
    14 neos = None
       
    15 inputfile = None
       
    16 outputfile = None
       
    17 # interrupt handler
       
    18 def cleanup(signal, frame):
       
    19   sys.stdout.write("Caught interrupt, cleaning up\n")
       
    20   if jobNumber != 0:
       
    21     neos.killJob(jobNumber, password)
       
    22   if inputfile != None:
       
    23     inputfile.close()
       
    24   if outputfile != None:
       
    25     outputfile.close()
       
    26   sys.exit(21)
       
    27 
       
    28 signal.signal(signal.SIGHUP, cleanup)
       
    29 signal.signal(signal.SIGINT, cleanup)
       
    30 signal.signal(signal.SIGQUIT, cleanup)
       
    31 signal.signal(signal.SIGTERM, cleanup)
       
    32 
       
    33 if len(sys.argv) <> 3:
       
    34   sys.stderr.write("Usage: neos_csdp_client <input_filename> <output_filename>\n")
       
    35   sys.exit(19)
    14 
    36 
    15 neos=xmlrpclib.Server("http://%s:%d" % (NEOS_HOST, NEOS_PORT))
    37 neos=xmlrpclib.Server("http://%s:%d" % (NEOS_HOST, NEOS_PORT))
    16 
    38 
    17 inputfile = open(sys.argv[1],"r")
       
    18 xml_pre = "<document>\n<category>sdp</category>\n<solver>csdp</solver>\n<inputMethod>SPARSE_SDPA</inputMethod>\n<dat><![CDATA["
    39 xml_pre = "<document>\n<category>sdp</category>\n<solver>csdp</solver>\n<inputMethod>SPARSE_SDPA</inputMethod>\n<dat><![CDATA["
    19 xml_post = "]]></dat>\n</document>\n"
    40 xml_post = "]]></dat>\n</document>\n"
    20 xml = xml_pre
    41 xml = xml_pre
       
    42 inputfile = open(sys.argv[1],"r")
    21 buffer = 1
    43 buffer = 1
    22 while buffer:
    44 while buffer:
    23   buffer = inputfile.read()
    45   buffer = inputfile.read()
    24   xml += buffer
    46   xml += buffer
    25 inputfile.close()
    47 inputfile.close()
    48 sys.stdout.write(msg)
    70 sys.stdout.write(msg)
    49 
    71 
    50 # extract solution
    72 # extract solution
    51 result = msg.split("Solution:")
    73 result = msg.split("Solution:")
    52 if len(result) > 1:
    74 if len(result) > 1:
    53   output = open(sys.argv[2],"w")
    75   solution = result[1].strip()
    54   output.write(result[1].strip())
    76   if solution != "":
    55   output.close()
    77     output = open(sys.argv[2],"w")
       
    78     output.write(solution)
       
    79     output.close()
    56 
    80 
    57 # extract return code
    81 # extract return code
    58 p = re.compile(r"^Error: Command exited with non-zero status (\d+)$", re.MULTILINE)
    82 p = re.compile(r"^Error: Command exited with non-zero status (\d+)$", re.MULTILINE)
    59 m = p.search(messages)
    83 m = p.search(messages)
    60 if m:
    84 if m:
    61   sys.exit(int(m.group(1)))
    85   sys.exit(int(m.group(1)))
    62 else:
    86 else:
    63   sys.exit(0)
    87   sys.exit(0)
    64 
    88 
    65