Exemple #1
1
from pyrfc import Server, Connection, RFCError, RFCLibError, \
                      ABAPApplicationError, ABAPRuntimeError, \
                      ExternalRuntimeError
from pyrfc._pyrfc import _Testing

from ConfigParser import ConfigParser
import sys

config = ConfigParser()
config.read('sapnwrfc.cfg')
params_connection = config._sections['connection']
conn = Connection(**params_connection)
test = _Testing()

# Instantiate server
params_gateway = config._sections['gateway']
# server = Server(config={'debug': True}, **params_gateway)
server = Server(config={'debug': True}, **params_gateway)

# Create callback functions and retrieve correspondent descriptions
#def my_stfc_connection(**kwargs):
#    print "my_stfc_connection was called with arguments: {}".format(kwargs)
#    return {
#        'ECHOTEXT': kwargs['REQUTEXT'],
#        'RESPTEXT': u"Local server here."
#    }
def my_stfc_connection(request_context, REQUTEXT=""):
    #print "my_stfc_connection was called with arguments: {}".format(kwargs)
    return {
        'ECHOTEXT': REQUTEXT,
        'RESPTEXT': u"Local server here."
Exemple #2
0
    def test_server_error(self):
        server = Server(config={'debug': True}, **config._sections['gateway'])
        test = _Testing()

        # Install two functions
        func_desc_conn = self.conn.get_function_description("STFC_CONNECTION")
        server.install_function(
            func_desc_conn,
            my_sftc_connection_error
        )

        with self.assertRaises(ABAPApplicationError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="EXCEPTION")
        self.assertEqual(run.exception.code, 5, "rc")
        self.assertEqual(run.exception.key, "BAD_EXCEPTION_HAPPENED")

        with self.assertRaises(ABAPApplicationError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="EXCEPTION_MESSAGE")
        self.assertEqual(run.exception.code, 5, "rc")
        self.assertEqual(run.exception.key, "BAD_EXCEPTION_W_MSG")
        self.assertEqual(run.exception.msg_class, "SR")
        self.assertEqual(run.exception.msg_type, "E")
        self.assertEqual(run.exception.msg_number, "007")
        self.assertEqual(run.exception.msg_v1, "V1 text")

        with self.assertRaises(ABAPRuntimeError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="MESSAGE")
        self.assertEqual(run.exception.code, 4, "rc")
        self.assertEqual(run.exception.msg_class, "SM")
        self.assertEqual(run.exception.msg_type, "E")
        self.assertEqual(run.exception.msg_number, "107")
        self.assertEqual(run.exception.msg_v1, "V1 text (ABAP_MESSAGE)")

        with self.assertRaises(ExternalRuntimeError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="FAILURE")
        self.assertEqual(run.exception.code, 15, "rc")
        self.assertEqual(run.exception.message[:9], "Something")

        with self.assertRaises(ExternalRuntimeError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="INVALID")
        self.assertEqual(run.exception.code, 15, "rc")
        self.assertEqual(run.exception.message[:7], "Invalid")
Exemple #3
0
    def test_server_error(self):
        server = Server(config={'debug': True}, **config._sections['gateway'])
        test = _Testing()

        # Install two functions
        func_desc_conn = self.conn.get_function_description("STFC_CONNECTION")
        server.install_function(
            func_desc_conn,
            my_sftc_connection_error
        )

        with self.assertRaises(ABAPApplicationError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="EXCEPTION")
        self.assertEqual(run.exception.code, 5, "rc")
        self.assertEqual(run.exception.key, "BAD_EXCEPTION_HAPPENED")

        with self.assertRaises(ABAPApplicationError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="EXCEPTION_MESSAGE")
        self.assertEqual(run.exception.code, 5, "rc")
        self.assertEqual(run.exception.key, "BAD_EXCEPTION_W_MSG")
        self.assertEqual(run.exception.msg_class, "SR")
        self.assertEqual(run.exception.msg_type, "E")
        self.assertEqual(run.exception.msg_number, "007")
        self.assertEqual(run.exception.msg_v1, "V1 text")

        with self.assertRaises(ABAPRuntimeError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="MESSAGE")
        self.assertEqual(run.exception.code, 4, "rc")
        self.assertEqual(run.exception.msg_class, "SM")
        self.assertEqual(run.exception.msg_type, "E")
        self.assertEqual(run.exception.msg_number, "107")
        self.assertEqual(run.exception.msg_v1, "V1 text (ABAP_MESSAGE)")

        with self.assertRaises(ExternalRuntimeError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="FAILURE")
        self.assertEqual(run.exception.code, 15, "rc")
        self.assertEqual(run.exception.message[:9], "Something")

        with self.assertRaises(ExternalRuntimeError) as run:
            test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="INVALID")
        self.assertEqual(run.exception.code, 15, "rc")
        self.assertEqual(run.exception.message[:7], "Invalid")
Exemple #4
0
    def test_server(self):
        server = Server(config={'debug': True}, **config._sections['gateway'])
        test = _Testing()

        # Install two functions
        func_desc_conn = self.conn.get_function_description("STFC_CONNECTION")
        server.install_function(func_desc_conn, my_stfc_connection)
        func_desc_chan = self.conn.get_function_description("STFC_CHANGING")
        server.install_function(func_desc_chan, my_stfc_changing)

        # Lookup test
        func_desc_invalid = test.get_srv_func_desc("NOT_VALID")
        self.assertEqual(
            func_desc_invalid, 17,
            "Return code for unknown func_desc should be RFC_NOT_FOUND (17).")

        func_desc_conn2 = test.get_srv_func_desc("STFC_CONNECTION")
        self.assertEqual(pickle.dumps(func_desc_conn),
                         pickle.dumps(func_desc_conn2))

        func_desc_chan2 = test.get_srv_func_desc("STFC_CHANGING")
        self.assertEqual(pickle.dumps(func_desc_chan),
                         pickle.dumps(func_desc_chan2))

        # Invocation test
        result = test.invoke_srv_function("STFC_CONNECTION",
                                          REQUTEXT="request_text")
        self.assertEqual(result['ECHOTEXT'], "request_text")
        self.assertEqual(result['RESPTEXT'], u"Local server here.")

        result = test.invoke_srv_function("STFC_CHANGING",
                                          START_VALUE=23,
                                          COUNTER=7)
        self.assertEqual(result['COUNTER'], 17)  # COUNTER = COUNTER + 10
        self.assertEqual(result['RESULT'],
                         40)  # RESULT = START_VALUE + (COUNTER + 10)

        server.close()
Exemple #5
0
    def test_server(self):
        server = Server(config={'debug': True}, **config._sections['gateway'])
        test = _Testing()

        # Install two functions
        func_desc_conn = self.conn.get_function_description("STFC_CONNECTION")
        server.install_function(
            func_desc_conn,
            my_stfc_connection
        )
        func_desc_chan = self.conn.get_function_description("STFC_CHANGING")
        server.install_function(
            func_desc_chan,
            my_stfc_changing
        )

        # Lookup test
        func_desc_invalid = test.get_srv_func_desc("NOT_VALID")
        self.assertEqual(func_desc_invalid, 17, "Return code for unknown func_desc should be RFC_NOT_FOUND (17).")

        func_desc_conn2 = test.get_srv_func_desc("STFC_CONNECTION")
        self.assertEqual(pickle.dumps(func_desc_conn), pickle.dumps(func_desc_conn2))

        func_desc_chan2 = test.get_srv_func_desc("STFC_CHANGING")
        self.assertEqual(pickle.dumps(func_desc_chan), pickle.dumps(func_desc_chan2))

        # Invocation test
        result = test.invoke_srv_function("STFC_CONNECTION", REQUTEXT="request_text")
        self.assertEqual(result['ECHOTEXT'], "request_text")
        self.assertEqual(result['RESPTEXT'], u"Local server here.")

        result = test.invoke_srv_function("STFC_CHANGING", START_VALUE=23, COUNTER=7)
        self.assertEqual(result['COUNTER'], 17) # COUNTER = COUNTER + 10
        self.assertEqual(result['RESULT'], 40) # RESULT = START_VALUE + (COUNTER + 10)

        server.close()
Exemple #6
0
    def test_func_desc_auto(self):
        test = _Testing()
        func_desc = self.conn.get_function_description("STFC_STRUCTURE")
        func_desc2 = test.fill_and_wrap_function_description(func_desc)

        self.assertEqual(pickle.dumps(func_desc), pickle.dumps(func_desc2))
Exemple #7
0
    def test_func_desc_auto(self):
        test = _Testing()
        func_desc = self.conn.get_function_description("STFC_STRUCTURE")
        func_desc2 = test.fill_and_wrap_function_description(func_desc)

        self.assertEqual(pickle.dumps(func_desc), pickle.dumps(func_desc2))
Exemple #8
0
from pyrfc import Server, Connection, RFCError, RFCLibError, \
                      ABAPApplicationError, ABAPRuntimeError, \
                      ExternalRuntimeError
from pyrfc._pyrfc import _Testing
import sys
try:
    from ConfigParser import ConfigParser
except ModuleNotFoundError as e:
    from configparser import ConfigParser

config = ConfigParser()
config.read('sapnwrfc.cfg')
params_connection = config._sections['connection']
conn = Connection(**params_connection)
test = _Testing()

# Instantiate server
params_gateway = config._sections['gateway']
# server = Server(config={'debug': True}, **params_gateway)
server = Server(config={'debug': True}, **params_gateway)


# Create callback functions and retrieve correspondent descriptions
#def my_stfc_connection(**kwargs):
#    print "my_stfc_connection was called with arguments: {}".format(kwargs)
#    return {
#        'ECHOTEXT': kwargs['REQUTEXT'],
#        'RESPTEXT': u"Local server here."
#    }
def my_stfc_connection(request_context, REQUTEXT=""):
    #print "my_stfc_connection was called with arguments: {}".format(kwargs)