def test_run_condor_retcode():
     'It test that we can run condor job and get the retcode'
     bin = create_test_binary()
     #a simple job
     cmd = [bin]
     cmd.extend(['-r', '10'])
     popen = Popen(cmd, runner_conf={'transfer_executable':True})
     assert popen.wait() == 10 #waits till finishes and looks to the retcode
     os.remove(bin)
 def test_run_condor_kill():
     'It test that we can kill a condor job'
     bin = create_test_binary()
     #a simple job
     cmd = [bin]
     cmd.extend(['-w'])
     popen = Popen(cmd, runner_conf={'transfer_executable':True})
     pid = str(popen.pid)
     popen.kill()
     stdout = call(['condor_q', pid])[0]
     assert pid not in stdout
     os.remove(bin)
 def test_run_condor_stdout():
     'It test that we can run condor job and retrieve stdout and stderr'
     bin = create_test_binary()
     #a simple job
     cmd = [bin]
     cmd.extend(['-o', 'hola', '-e', 'caracola'])
     stdout = NamedTemporaryFile()
     stderr = NamedTemporaryFile()
     popen = Popen(cmd, runner_conf={'transfer_executable':True},
                   stdout=stdout, stderr=stderr)
     assert popen.wait() == 0 #waits till finishes and looks to the retcode
     assert open(stdout.name).read() == 'hola'
     assert open(stderr.name).read() == 'caracola'
     os.remove(bin)
 def test_run_condor_stdin():
     'It test that we can run condor job with stdin'
     bin = create_test_binary()
     #a simple job
     cmd = [bin]
     cmd.extend(['-s'])
     stdin  = NamedTemporaryFile()
     stdout = NamedTemporaryFile()
     stdin.write('hola')
     stdin.flush()
     popen = Popen(cmd, runner_conf={'transfer_executable':True},
                   stdout=stdout, stdin=stdin)
     assert popen.wait() == 0 #waits till finishes and looks to the retcode
     assert open(stdout.name).read() == 'hola'
     os.remove(bin)
    def test_run_condor_in_file():
        'It test that we can run condor job with an input file'
        bin = create_test_binary()

        in_file = NamedTemporaryFile()
        in_file.write('hola')
        in_file.flush()

        cmd = [bin]
        cmd.extend(['-i', in_file.name])
        stdout = NamedTemporaryFile()
        stderr = NamedTemporaryFile()
        cmd_def = [{'options': ('-i', '--input'), 'io': 'in'}]
        popen = Popen(cmd, runner_conf={'transfer_executable':True},
                      stdout=stdout, stderr=stderr, cmd_def=cmd_def)

        assert popen.wait() == 0 #waits till finishes and looks to the retcod
        assert open(stdout.name).read() == 'hola'
        os.remove(bin)
    def test_run_condor_in_out_file(self):
        'It test that we can run condor job with an output file'
        bin = create_test_binary()

        in_file = NamedTemporaryFile()
        in_file.write('hola')
        in_file.flush()
        out_file = open('output.txt', 'w')

        cmd = [bin]
        cmd.extend(['-i', in_file.name, '-t', out_file.name])
        stdout = NamedTemporaryFile()
        stderr = NamedTemporaryFile()
        cmd_def = [{'options': ('-i', '--input'), 'io': 'in'},
                   {'options': ('-t', '--output'), 'io': 'out'}]
        popen = Popen(cmd, runner_conf={'transfer_executable':True},
                      stdout=stdout, stderr=stderr, cmd_def=cmd_def)
        popen.wait()
        assert popen.wait() == 0 #waits till finishes and looks to the retcod
        assert open(out_file.name).read() == 'hola'
        os.remove(out_file.name)

        #and output file with path won't be allowed unless the transfer file
        #mechanism is not used
        out_file = NamedTemporaryFile()

        cmd = [bin]
        cmd.extend(['-i', in_file.name, '-t', out_file.name])
        stdout = NamedTemporaryFile()
        stderr = NamedTemporaryFile()
        cmd_def = [{'options': ('-i', '--input'), 'io': 'in'},
                   {'options': ('-t', '--output'), 'io': 'out'}]
        try:
            popen = Popen(cmd, runner_conf={'transfer_executable':True},
                          stdout=stdout, stderr=stderr, cmd_def=cmd_def)
            self.fail('ValueError expected')
            #pylint: disable-msg=W0704
        except ValueError:
            pass
        os.remove(bin)