コード例 #1
0
    def test_get_file_chunk(self):
        cwd = os.getcwd()
        path = cwd + "/tests/input/testfile.txt"
        length = os.stat(path).st_size
        config = {'tsi.testing': True, 'tsi.switch_uid': False}
        msg = """#TSI_GETFILECHUNK
#TSI_FILE %s
#TSI_START 0
#TSI_LENGTH %d
ENDOFMESSAGE
""" % (path, length)

        control_source = io.BufferedReader(io.BytesIO(msg.encode("UTF-8")))
        control_in = io.TextIOWrapper(control_source)
        control_out = io.StringIO()
        data_out = io.BytesIO()
        connector = MockConnector.MockConnector(control_in, control_out, None,
                                                data_out, self.LOG)
        TSI.process(connector, config, self.LOG)
        result = control_out.getvalue()
        data = str(data_out.getvalue())
        self.assertTrue("TSI_OK" in result)
        self.assertTrue("this is a test file" in data)
        control_source.close()
        data_out.close()
        os.chdir(cwd)
コード例 #2
0
ファイル: test_ACL.py プロジェクト: UNICORE-EU/tsi
    def test_setfacl_via_connector(self):
        acl_support = self.config['tsi.acl']
        acl_support['/tmp/test_TSI_ACL'] = "POSIX"
        self.config['tsi.setfacl'] = "setfacl"
        user = "******"
        msg = """#TSI_FILE_ACL
#TSI_ACL_OPERATION SETFACL
#TSI_ACL_COMMAND MODIFY RECURSIVE
#TSI_ACL_COMMAND_SPEC U %s rwx
#TSI_ACL_PATH /tmp/test_TSI_ACL
ENDOFMESSAGE
""" % os.environ['USER']
        connector = self.setup_connector(msg)
        TSI.process(connector, self.config, self.LOG)
        result = connector.control_out.getvalue()
        self.assertTrue("TSI_OK" in result)

        msg = """#TSI_FILE_ACL
#TSI_ACL_OPERATION GETFACL
#TSI_ACL_PATH /tmp/test_TSI_ACL
ENDOFMESSAGE
"""
        connector = self.setup_connector(msg)
        TSI.process(connector, self.config, self.LOG)
        result = connector.control_out.getvalue()
        self.assertTrue("TSI_OK" in result)
        print(result)
コード例 #3
0
    def test_submit(self):
        cwd = os.getcwd()
        uspace = cwd + "/build/uspace-%s" % int(time.time())
        os.mkdir(uspace)
        config = {'tsi.testing': True, 'tsi.switch_uid': False}
        bss = BSS.BSS()
        bss.init(config, self.LOG)
        msg = """#!/bin/bash
#TSI_SUBMIT
#TSI_OUTCOME_DIR %s
#TSI_USPACE_DIR %s
#TSI_STDOUT stdout
#TSI_STDERR stderr
#TSI_SCRIPT
#TSI_TIME 60
#TSI_MEMORY 32
#TSI_JOBNAME test_job
#TSI_SCRIPT

echo "Hello World!"
sleep 1
ENDOFMESSAGE
""" % (uspace, uspace)

        control_source = io.BufferedReader(io.BytesIO(msg.encode("UTF-8")))
        control_in = io.TextIOWrapper(control_source)
        control_out = io.StringIO()
        connector = MockConnector.MockConnector(control_in, control_out, None,
                                                None, self.LOG)
        TSI.process(connector, config, self.LOG)
        result = control_out.getvalue()
        if "TSI_FAILED" in result:
            print(result)
        else:
            result = result.splitlines()[0]
            print("Submitted with ID %s" % result)
        control_source.close()
        children = config.get('tsi.NOBATCH.children')
        print("Children: " + str(children))
        self.assertEqual(1, len(children))
        control_out = io.StringIO()
        connector = MockConnector.MockConnector(control_in, control_out, None,
                                                None, self.LOG)
        bss.get_status_listing(None, connector, config, self.LOG)
        qstat = control_out.getvalue()
        print(qstat + "\n")
        self.assertTrue(result in qstat)
        # test cleanup
        time.sleep(2)
        bss.cleanup(config)
        print("Children after cleanup: " + str(children))
        self.assertEqual(0, len(children))
コード例 #4
0
ファイル: test_IO.py プロジェクト: DriesVerachtert/tsi
    def test_put_file_chunk(self):
        cwd = os.getcwd()
        path = cwd + "/build/testfile.txt"
        config = {'tsi.testing': True, 'tsi.switch_uid': False}
        data = b"this is some testdata used for testing the TSI I/O \n"
        msg = """#TSI_PUTFILECHUNK
#TSI_FILE %s 600
#TSI_FILESACTION 1
#TSI_START 0
#TSI_LENGTH %d
ENDOFMESSAGE
""" % (path, len(data))

        control_source = io.BufferedReader(io.BytesIO(msg.encode("UTF-8")))
        control_in = io.TextIOWrapper(control_source)
        control_out = io.StringIO()
        data_in = io.BytesIO(data)
        connector = MockConnector.MockConnector(control_in, control_out,
                                                data_in, None, self.LOG)
        TSI.process(connector, config, self.LOG)
        result = control_out.getvalue()
        print(result)
        self.assertTrue("TSI_OK" in result)
        control_source.close()

        lines = self.readlines(path)
        self.assertEqual(1, len(lines))
        self.assertTrue(data.decode() in lines[0])

        # test append
        msg = """#TSI_PUTFILECHUNK
#TSI_FILE %s 600
#TSI_FILESACTION 3
#TSI_START 0
#TSI_LENGTH %d
ENDOFMESSAGE
""" % (path, len(data))

        control_source = io.BufferedReader(io.BytesIO(msg.encode("UTF-8")))
        control_in = io.TextIOWrapper(control_source)
        control_out = io.StringIO()
        data_in = io.BytesIO(data)
        connector = MockConnector.MockConnector(control_in, control_out,
                                                data_in, None, self.LOG)
        TSI.process(connector, config, self.LOG)
        result = control_out.getvalue()
        print(result)
        self.assertTrue("TSI_OK" in result)
        lines = self.readlines(path)
        self.assertEqual(2, len(lines))
        self.assertTrue(data.decode() in lines[0])
        os.chdir(cwd)
コード例 #5
0
ファイル: test_ACL.py プロジェクト: UNICORE-EU/tsi
    def test_getsupport_via_connector(self):
        acl_support = self.config['tsi.acl']
        acl_support['/tmp'] = "POSIX"
        msg = """#TSI_FILE_ACL
#TSI_ACL_OPERATION CHECK_SUPPORT
#TSI_ACL_PATH /tmp
ENDOFMESSAGE
"""
        connector = self.setup_connector(msg)
        TSI.process(connector, self.config, self.LOG)
        result = connector.control_out.getvalue()
        self.assertTrue("TSI_OK" in result)
        self.assertTrue("true" in result)
コード例 #6
0
 def test_PING(self):
     cwd = os.getcwd()
     version = TSI.MY_VERSION
     config = {'tsi.testing': True}
     msg = "#TSI_PING\nENDOFMESSAGE\n"
     control_source = io.BufferedReader(io.BytesIO(msg.encode("UTF-8")))
     control_in = io.TextIOWrapper(control_source)
     control_out = io.StringIO()
     connector = MockConnector.MockConnector(control_in, control_out, None,
                                             None, self.LOG)
     TSI.process(connector, config, self.LOG)
     result = control_out.getvalue()
     print(result)
     self.assertTrue(version in result)
     self.assertTrue("ENDOFMESSAGE" in result)
     control_source.close()
     os.chdir(cwd)
コード例 #7
0
    def test_Exec(self):
        cwd = os.getcwd()
        config = {'tsi.testing': True, 'tsi.switch_uid': False}
        msg = """#TSI_EXECUTESCRIPT
echo "Hello World!"
ENDOFMESSAGE
"""
        control_source = io.BufferedReader(io.BytesIO(msg.encode("UTF-8")))
        control_in = io.TextIOWrapper(control_source)
        control_out = io.StringIO()
        connector = MockConnector.MockConnector(control_in, control_out, None,
                                                None, self.LOG)
        TSI.process(connector, config, self.LOG)
        result = control_out.getvalue()
        print(result)
        self.assertTrue("TSI_OK" in result)
        self.assertTrue("Hello World!\n" in result)
        control_source.close()
        os.chdir(cwd)
コード例 #8
0
    def test_PING2(self):
        cwd = os.getcwd()
        version = TSI.MY_VERSION
        config = {'tsi.testing': True, 'tsi.enforce_os_gids': False}
        config['tsi.use_id_to_resolve_gids'] = False
        msg = """#TSI_PING_UID
#TSI_IDENTITY nobody NONE
ENDOFMESSAGE
"""
        control_source = io.BufferedReader(io.BytesIO(msg.encode("UTF-8")))
        control_in = io.TextIOWrapper(control_source)
        control_out = io.StringIO()
        BecomeUser.initialize(config, self.LOG)
        connector = MockConnector.MockConnector(control_in, control_out, None,
                                                None, self.LOG)
        TSI.process(connector, config, self.LOG)
        result = control_out.getvalue()
        print(result)
        self.assertTrue(version in result)
        control_source.close()
        os.chdir(cwd)
コード例 #9
0
ファイル: test_ACL.py プロジェクト: UNICORE-EU/tsi
    def test_getfacl_via_connector(self):
        acl_support = self.config['tsi.acl']
        acl_support['/tmp'] = "POSIX"
        msg = """#TSI_FILE_ACL
#TSI_ACL_OPERATION GETFACL
#TSI_ACL_PATH /tmp
ENDOFMESSAGE
"""
        connector = self.setup_connector(msg)
        TSI.process(connector, self.config, self.LOG)
        result = connector.control_out.getvalue()
        self.assertTrue("TSI_OK" in result)

        msg = """#TSI_FILE_ACL
#TSI_ACL_OPERATION GETFACL
#TSI_ACL_PATH /opt
ENDOFMESSAGE
"""
        connector = self.setup_connector(msg)
        TSI.process(connector, self.config, self.LOG)
        result = connector.control_out.getvalue()
        print(result)
        self.assertTrue("TSI_FAILED" in result)
        self.assertTrue("unsupported" in result)