Exemplo n.º 1
0
def call_returning_exit_and_output(exec_args, **popen_args):
    def readInputStream(inputStream):
        reader = BufferedReader(InputStreamReader(inputStream))
        builder = StringBuilder()
        line = None
        while True:
            line = reader.readLine()
            if line is None:
                break
            builder.append(line)
            builder.append(System.getProperty("line.separator"))
        return builder.toString()

    # WORKAOUND: because capturing output of Jython's subprocess module at testing with
    # pytest is not possible using Java implementation
    pb = ProcessBuilder(exec_args)
    env = popen_args.get('env')
    if env:
        process_env = pb.environment()
        for key in list(process_env.keySet()):
            if key not in env:
                _log.debug("remove from process-env: %s", key)
                process_env.remove(key)
        for key in env:
            process_env.put(key, env[key])
    pb.redirectErrorStream(True)
    process = pb.start()
    stdout = readInputStream(process.getInputStream())
    exitValue = process.waitFor()
    return exitValue, (stdout, stdout)
Exemplo n.º 2
0
def call_returning_exit_and_output(exec_args, **popen_args):
    def readInputStream(inputStream):
        reader = BufferedReader(InputStreamReader(inputStream))
        builder = StringBuilder()
        line = None
        while True:
            line = reader.readLine()
            if line is None:
                break
            builder.append(line)
            builder.append(System.getProperty("line.separator"))
        return builder.toString()

    # WORKAOUND: because capturing output of Jython's subprocess module at testing with
    # pytest is not possible using Java implementation
    pb = ProcessBuilder(exec_args)
    env = popen_args.get('env')
    if env:
        process_env = pb.environment()
        for key in list(process_env.keySet()):
            if key not in env:
                _log.debug("remove from process-env: %s", key)
                process_env.remove(key)
        for key in env:
            process_env.put(key, env[key])
    pb.redirectErrorStream(True)
    process = pb.start()
    stdout = readInputStream(process.getInputStream())
    exitValue = process.waitFor()
    return exitValue, (stdout, stdout)
Exemplo n.º 3
0
def runJob(cmdArray, hosts, sleepTime=60, maxWaits=60, interimResult=None):
    finished = HashSet()
    failures = HashSet()
    pb = ProcessBuilder(cmdArray)
    done = False
    # first wait is short in case job finishes quickly
    waitTime = 10
    while not done:
        p = pb.start()
        dataOut = DataOutputStream(p.getOutputStream())
        try:
            for host in hosts:
                dataOut.writeBytes(host + "\n")
        finally:
            dataOut.close()
        p.waitFor()
        (curFinished, curFailures) = processJobResults(p.getInputStream(), interimResult)
        finished.addAll(curFinished)
        failures.addAll(curFailures)
        done = finished.size() == len(hosts)

        if not done:
            maxWaits = maxWaits - 1
            done == maxWaits == 0

        if not done:
            time.sleep(waitTime)
            waitTime = sleepTime
    return failures
            x = chr(x)
            f.write(x)
        except:
            break
finally:
    f.close()
print(f.closed)
#q = System.getenv()
#for k in q.items():
#	print (k)
#System.getenv("user.dir")
import os
from java.io import File
builder = ProcessBuilder(["python", "prog.py"])
builder.directory(File(os.getcwd()))
process = builder.start()
x = br1(br(process.getInputStream()))
y = bw1(bw(process.getOutputStream()))
y.write(10)
y.flush()
y.close()
from java.util import Scanner as S
X = S(x)
print(X.nextLine())
print(X.nextLine())
t.sleep(5000)
print(X.nextLine())
#while x!=-1:
#	b = x.read()
#	print (chr(b))