diff options
Diffstat (limited to 'tags/cpp-1.0-incubating-M2-RC3/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp')
-rw-r--r-- | tags/cpp-1.0-incubating-M2-RC3/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp | 375 |
1 files changed, 0 insertions, 375 deletions
diff --git a/tags/cpp-1.0-incubating-M2-RC3/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp b/tags/cpp-1.0-incubating-M2-RC3/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp deleted file mode 100644 index da3a90cff4..0000000000 --- a/tags/cpp-1.0-incubating-M2-RC3/sca/test/ws.service.interop/ws.service.interop.client/TestClient.cpp +++ /dev/null @@ -1,375 +0,0 @@ -/* - * Copyright 2004,2005 The Apache Software Foundation. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include <axiom.h> -#include <axis2_util.h> -#include <axiom_soap.h> -#include <axis2_client.h> - -#include <commonj/sdo/SDO.h> -using namespace commonj::sdo; - -#include <sdo_axiom.h> -using namespace commonj::sdo_axiom; - -#include <tuscany/sca/util/Utils.h> -using namespace tuscany::sca; - -#include <string> -#include <iostream> -using namespace std; - -axiom_node_t* get_om_payload_from_xml_file(axis2_env_t *env, const char* currentTest); -axiom_node_t* runCall(axis2_env_t *env, char* endpoint, char* opName, axiom_node_t* payload); -void loadAllXSD(); -bool compareAxiomNodes(axiom_node_t* returned_payload, axiom_node_t* payload_data); - -XSDHelperPtr xsdHelper = NULL; -XMLHelperPtr xmlHelper = NULL; - - -int main(int argc, char** argv) -{ - axis2_env_t *env = NULL; - axis2_char_t *address = NULL; - axis2_char_t *testNumberString = "-1"; - - axis2_endpoint_ref_t* endpoint_ref = NULL; - axis2_options_t *options = NULL; - axis2_char_t *client_home = NULL; - axis2_svc_client_t* svc_client = NULL; - axiom_node_t *payload = NULL; - axiom_node_t *ret_node = NULL; - - /* Set up the envioronment */ - env = axis2_env_create_all("ws.service.interop.client.log", AXIS2_LOG_LEVEL_TRACE); - - /* Set end point reference of echo service */ - address = "http://localhost:9090/axis2/services/ws.service"; - if (argc > 1 ) - testNumberString = argv[1]; - if (argc > 2 ) - address = argv[2]; - if (AXIS2_STRCMP(testNumberString, "-h") == 0) - { - cout<<"Usage : "<< argv[0] <<"[test_number] [endpoint_url]"<<endl; - cout<<"use -h for help"<<endl; - return 0; - } - - int testNumber = atoi(testNumberString); - if(testNumber > 0 && testNumber <= 50) - { - cout<<"Running test : "<< testNumber << endl; - } - else - { - testNumber = -1; - cout<<"Running all tests" << endl; - } - - cout<<"Using endpoint : "<< address << endl; - - const string interop = "interop"; - - string currentTest; - - int testsPassed = 0; - int testsRun = 0; - string failedTests = ""; - string unsupportedTests = ""; - - loadAllXSD(); - - // Tests 1 to 50 - for(int i=1; i<=50; i++) - { - if( testNumber != i && - testNumber > 0 ) - { - // Only running a single, chosen test - continue; - } - if( i==13 || - i==48 || - i==49 ) - { - // Ignore non-existant schemas - continue; - } - - currentTest = interop; - if(i<10) - { - currentTest.append("0"); - } - char buf[3]; - sprintf(buf, "%d", i); - currentTest.append(buf); - - cout << "Running test " << currentTest << endl; - - if( i==5 || - i==25 || - i==27 || - i==39 ) - { - cout << "We do not currently support schema " << currentTest << endl; - unsupportedTests += currentTest + " "; - continue; - } - - testsRun++; - - payload = get_om_payload_from_xml_file(env, currentTest.c_str()); - axiom_node_t* returned_payload = NULL; - bool success = false; - if(payload) - { - returned_payload = runCall(env, address, (char*) currentTest.c_str(), payload); - } - - if(returned_payload) - { - // Get the inner node to compare - axiom_node_t* payload_data = AXIOM_NODE_GET_FIRST_CHILD(payload, env); - success = compareAxiomNodes(returned_payload, payload_data); - } - - if(success) - { - cout << currentTest << " PASSED!" << endl; - testsPassed++; - } - else - { - failedTests += currentTest + " "; - cout << currentTest << " FAILED!" << endl; - } - - } - cout << "Passed " << testsPassed << " of " << testsRun << " tests" << endl; - if(failedTests.size() > 0) - { - string expectedFailedTests = "interop04 interop28 interop30 interop32 interop33 interop40 interop50"; - cout << " Failed Tests: " << failedTests << endl; - cout << "Expected failures: " << expectedFailedTests << endl; - } - if(unsupportedTests.size() > 0) - { - cout << "Unsupported: " << unsupportedTests << endl; - } - return 0; -} - -axiom_node_t* runCall(axis2_env_t *env, char* endpoint, char* opName, axiom_node_t* payload) -{ - axis2_char_t *address = endpoint; - axis2_endpoint_ref_t* endpoint_ref = NULL; - axis2_options_t *options = NULL; - axis2_char_t *client_home = NULL; - axis2_svc_client_t* svc_client = NULL; - axiom_node_t *ret_node = NULL; - axiom_node_t *ret = NULL; - char action [100]; - int len = 0; - - client_home = AXIS2_GETENV("AXIS2C_HOME"); - - /* Create EPR with given address */ - endpoint_ref = axis2_endpoint_ref_create(env, address); - - svc_client = axis2_svc_client_create(env, client_home); - if (!svc_client) - { - printf("Error creating service client\n"); - AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:" - " %d :: %s", env->error->error_number, - AXIS2_ERROR_GET_MESSAGE(env->error)); - return NULL; - } - - options = axis2_options_create(env); - - AXIS2_OPTIONS_SET_TO(options, env, endpoint_ref); - - len = sprintf(action, "http://www.WSEntryPointTest.org/WSEntryPointTest/%s", opName); - AXIS2_OPTIONS_SET_ACTION(options, env, action); - - /* Set service client options */ - AXIS2_SVC_CLIENT_SET_OPTIONS(svc_client, env, options); - - /* Engage addressing composite */ - AXIS2_SVC_CLIENT_ENGAGE_MODULE(svc_client, env, AXIS2_MODULE_ADDRESSING); - - - /* Send request */ - ret_node = AXIS2_SVC_CLIENT_SEND_RECEIVE(svc_client, env, payload); - if(ret_node) - { - ret = AXIOM_NODE_GET_FIRST_CHILD(ret_node, env); - if(!ret) - { - cout << "No data in response - failure on server" << endl; - } - } - else - { - cout << "request failed" << endl; - AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:" - " %d :: %s", env->error->error_number, - AXIS2_ERROR_GET_MESSAGE(env->error)); - } - - if (svc_client) - { - AXIS2_SVC_CLIENT_FREE(svc_client, env); - svc_client = NULL; - } - if (endpoint_ref) - { - // The following line is commented out due to it causing a segmentation fault on Linux with Axis2C 0.93 - // AXIS2_ENDPOINT_REF_FREE(endpoint_ref, env); - endpoint_ref = NULL; - } - - return ret; -} - - -bool compareAxiomNodes(axiom_node_t* returned_payload, axiom_node_t* expected_payload) -{ - bool success = false; - - AxiomHelper* axiomHelper = AxiomHelper::getHelper(); - DataObjectPtr expectedDO = axiomHelper->toSdo(expected_payload, xsdHelper->getDataFactory()); - DataObjectPtr returnedDO = axiomHelper->toSdo(returned_payload, xsdHelper->getDataFactory()); - - string diff; - success = Utils::compareDataObjects(expectedDO, returnedDO, diff); - - if(!success) - { - cout << "Expected data does not match returned data:\n" << diff << "\nExpected data:"<<endl; - Utils::printDO(expectedDO); - cout << "Returned data:"<<endl; - Utils::printDO(returnedDO); - } - return success; -} - -void loadAllXSD() -{ - const string resourcesDir = "./resources/"; - const string dotxsd = ".xsd"; - - try - { - // Create an xsd helper - xsdHelper = HelperProvider::getXSDHelper(); - - // Tests 1 to 50 - for(int i=1; i<=50; i++) - { - if( i==13 || - i==48 || - i==49 || - i==5 || - i==25 || - i==27 || - i==39 ) - { - // Ignore non-existant/unsupported schemas - continue; - } - - string currentTest = "interop"; - if(i<10) - { - currentTest.append("0"); - } - char buf[3]; - sprintf(buf, "%d", i); - currentTest.append(buf); - - string xsdFileName = resourcesDir + currentTest + dotxsd; - xsdHelper->defineFile(xsdFileName.c_str()); - } - - } - catch(SDORuntimeException& ex) - { - cout << "SDORuntimeException whilst loading xsd" << endl; - cout << ex.getMessageText() << endl; - } -} - -/* build SOAP request message content using OM */ -axiom_node_t* get_om_payload_from_xml_file(axis2_env_t *env, const char* currentTest) -{ - axiom_node_t* req_om_node = NULL; - axiom_node_t* payload_om_node = NULL; - const string resourcesDir = "./resources/"; - const string dotxml = "-in.xml"; - - string xmlFileName = resourcesDir + currentTest + dotxml; - - try - { - - xmlHelper = HelperProvider::getXMLHelper(xsdHelper->getDataFactory()); - - XMLDocumentPtr payloadFile = xmlHelper->loadFile(xmlFileName.c_str()); - string rootElemURI = payloadFile->getRootElementURI(); - string rootElemName = payloadFile->getRootElementName(); - - DataObjectPtr payloadDO = payloadFile->getRootDataObject(); - - AxiomHelper* axiomHelper = AxiomHelper::getHelper(); - payload_om_node = axiomHelper->toAxiomNode(payloadDO, rootElemURI.c_str(), rootElemName.c_str()); - - if(!payload_om_node) - { - payload_om_node = axiomHelper->toAxiomNode(payloadDO); - } - - if(payload_om_node) - { - axiom_element_t* req_om_elem = NULL; - axiom_namespace_t *ns1 = NULL; - axis2_char_t *om_str = NULL; - - ns1 = axiom_namespace_create (env, "http://www.apache.org/tuscany/interop", "ns1"); - req_om_elem = axiom_element_create(env, NULL, currentTest, ns1, &req_om_node); - AXIOM_NODE_DETACH(payload_om_node, env); - AXIOM_NODE_ADD_CHILD(req_om_node, env, payload_om_node); - } - else - { - cout << "Could not convert xml document("<< xmlFileName <<") to Axiom" << endl; - return NULL; - } - - } - catch(SDORuntimeException& ex) - { - cout << "SDORuntimeException whilst loading xml ("<< xmlFileName <<") & converting to Axiom" << endl; - cout << ex.getMessageText() << endl; - return NULL; - } - - return req_om_node; -} |