Ejemplo n.º 1
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")
Ejemplo n.º 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")
Ejemplo n.º 3
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()
Ejemplo n.º 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()
Ejemplo n.º 5
0
config = ConfigParser()
config.read('sapnwrfc.cfg')


# Callback function
def my_stfc_connection(request_context, REQUTEXT=""):
    return {
        'ECHOTEXT':
        REQUTEXT,
        'RESPTEXT':
        u"Python server here. Connection attributes are: "
        u"User '{user}' from system '{sysId}', client '{client}', "
        u"host '{partnerHost}'".format(
            **request_context['connection_attributes'])
    }


# Open a connection for retrieving the metadata of 'STFC_CONNECTION'
params_connection = config._sections['connection']
conn = Connection(**params_connection)
func_desc_stfc_connection = conn.get_function_description("STFC_CONNECTION")

# Instantiate server with gateway information for registering, and
# install a function.
params_gateway = config._sections['gateway']
server = Server(**params_gateway)
server.install_function(func_desc_stfc_connection, my_stfc_connection)
print "--- Server registration and serving ---"
server.serve(20)
Ejemplo n.º 6
0
from tests.config import get_error


def my_stfc_connection(request_context=None, REQUTEXT=""):
    print("stfc invoked")
    print("request_context", request_context)
    print(f"REQUTEXT: {REQUTEXT}")

    return {"ECHOTEXT": REQUTEXT, "RESPTEXT": "Python server here"}


dir_path = os.path.dirname(os.path.realpath(__file__))
set_ini_file_directory(dir_path)

server = Server({"dest": "gateway"}, {"dest": "MME"})


class TestServer:
    def teardown_method(self, test_method):
        pass

    def test_add_wrong_function(self):
        try:
            server.add_function("STFC_CONNECTION1", my_stfc_connection)
        except ABAPApplicationError as ex:
            error = get_error(ex)
            assert error["code"] == 5
            assert error["key"] == "FU_NOT_FOUND"
            assert error["message"][
                0] == "ID:FL Type:E Number:046 STFC_CONNECTION1"
Ejemplo n.º 7
0
import os
from pyrfc import Server, set_ini_file_directory


def my_stfc_connection(request_context=None, REQUTEXT=""):
    print("stfc invoked")
    print("request_context", request_context)
    print(f"REQUTEXT: {REQUTEXT}")

    return {"ECHOTEXT": REQUTEXT, "RESPTEXT": "Python server here"}


def my_auth_check(func_name=False, request_context={}):
    print(f"authorization check for '{func_name}'")
    print("request_context", request_context)
    return 0


dir_path = os.path.dirname(os.path.realpath(__file__))
set_ini_file_directory(dir_path)

server = Server({"dest": "gateway"}, {"dest": "MME"}, {
    "port": 8081,
    "server_log": False
})
# server = Server({"dest": "gateway"}, {"dest": "MME"}, {"auth_check": my_auth_check, "server_log": True})

server.add_function("STFC_CONNECTION", my_stfc_connection)

server.serve()
Ejemplo n.º 8
0
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)
    return {'ECHOTEXT': REQUTEXT, 'RESPTEXT': u"Local server here."}


# func_desc_stfc_connection = conn.get_function_description("STFC_CONNECTION")
Ejemplo n.º 9
0
                      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."
    }
# func_desc_stfc_connection = conn.get_function_description("STFC_CONNECTION")
 def get_gateway(self):
     """ Return the SAP gateway """
     return Server(**self.__config._sections['gateway'])
Ejemplo n.º 11
0
import signal
import sys

config = ConfigParser()
config.read('sapnwrfc.cfg')

# Callback function
def my_stfc_connection(request_context, REQUTEXT=""):
    REQUTEXT = 'wusj'
    return {
        'ECHOTEXT': REQUTEXT,
        'RESPTEXT': u"Python server here. Connection attributes are: "
                    u"User '{user}' from system '{sysId}', client '{client}', "
                    u"host '{partnerHost}'".format(**request_context['connection_attributes'])
    }

# Open a connection for retrieving the metadata of 'STFC_CONNECTION'
params_connection = config._sections['connection']
conn = Connection(**params_connection)
func_desc_stfc_connection = conn.get_function_description("STFC_CONNECTION")

# Instantiate server with gateway information for registering, and
# install a function.
params_gateway = config._sections['gateway']
server = Server(**params_gateway)
server.install_function(func_desc_stfc_connection, my_stfc_connection)
print("--- Server registration and serving ---")

server.serve()# Serves for a given timeout. Note: internally this function installs a generic server function and registers the server at the gateway (if required). :param timeout: Number of seconds to serve or None (default) for no timeout. :raises: :exc:~pyrfc.RFCError or a subclass
Ejemplo n.º 12
0
# SPDX-FileCopyrightText: 2013 SAP SE Srdjan Boskovic <*****@*****.**>
#
# SPDX-License-Identifier: Apache-2.0

import os

from pyrfc import Server, set_ini_file_directory


def my_stfc_connection(request_context=None, REQUTEXT=""):
    print("stfc invoked")
    print("request_context", request_context)
    print("REQUTEXT: {REQUTEXT}")
    return {"ECHOTEXT": REQUTEXT, "RESPTEXT": "Python server here"}


dir_path = os.path.dirname(os.path.realpath(__file__))
set_ini_file_directory(dir_path)

server = Server({"dest": "gateway"}, {"dest": "MME"})

server.add_function("STFC_CONNECTION", my_stfc_connection)

print("\nPress CTRL-C to skip server test...")
server.serve(20)
Ejemplo n.º 13
0
import signal
import sys



config = ConfigParser()
config.read('sapnwrfc.cfg')

# Callback function
def my_stfc_connection(request_context, REQUTEXT=""):
    return {
        'ECHOTEXT': REQUTEXT,
        'RESPTEXT': u"Python server here. Connection attributes are: "
                    u"User '{user}' from system '{sysId}', client '{client}', "
                    u"host '{partnerHost}'".format(**request_context['connection_attributes'])
    }

# Open a connection for retrieving the metadata of 'STFC_CONNECTION'
params_connection = config._sections['connection']
conn = Connection(**params_connection)
func_desc_stfc_connection = conn.get_function_description("STFC_CONNECTION")

# Instantiate server with gateway information for registering, and
# install a function.
params_gateway = config._sections['gateway']
server = Server(**params_gateway)
server.install_function(func_desc_stfc_connection, my_stfc_connection)
print "--- Server registration and serving ---"
server.serve(20)