You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by da...@apache.org on 2004/10/12 12:28:24 UTC
cvs commit: ws-axis/c/tests/client/performance/time Client.cpp
damitha 2004/10/12 03:28:24
Modified: c/tests/client/performance/time Client.cpp
Log:
Samisa, I put back the origianlly file back. Pardon for the mistake
Revision Changes Path
1.4 +144 -227 ws-axis/c/tests/client/performance/time/Client.cpp
Index: Client.cpp
===================================================================
RCS file: /home/cvs/ws-axis/c/tests/client/performance/time/Client.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Client.cpp 12 Oct 2004 09:38:37 -0000 1.3
+++ Client.cpp 12 Oct 2004 10:28:24 -0000 1.4
@@ -1,231 +1,148 @@
-#include <iostream.h>
-#include <fstream.h>
-#include <sys/time.h>
-#include "gen_src/InteropTestPortType.h"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-
-struct timeval time1, time2;
-struct timezone zone;
-
-void tm_init()
-{
- zone.tz_minuteswest = 0;
- zone.tz_dsttime = 0;
-}
-
-#define tm_start() gettimeofday(&time1, &zone);
-
-int diff_time(struct timeval *time2, struct timeval *time1)
-{
- return 1000000 * (time2->tv_sec - time1->tv_sec)
- + time2->tv_usec - time1->tv_usec;
-}
-
-int inline tm_stop()
-{
- gettimeofday(&time2, &zone);
- return diff_time(&time2, &time1);
-}
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-
-//#define NUM_TEST_RUNS 5
-
-#define TEST_STRING_DATA
-//#define TEST_INT_DATA
-//#define TEST_FLOAT_DATA
-//#define TEST_STRUCT_DATA
-/////////////////////////////////////////////////////////////////////////////
-//
-
-#define MAX_LINE_LEN 256
-
-//int test_rslt[NUM_TEST_RUNS];
-int* test_rslt;
-int next_elem;
-
-#ifdef TEST_STRING_DATA
-#define DATA_TYPE char*
-#define DATA_FILE "stringdata.txt"
-xsd__string_Array testdata;
-#else
-
-#ifdef TEST_INT_DATA
-#define DATA_TYPE int
-#define DATA_FILE "intdata.txt"
-xsd__int_Array testdata;
-#else
-
-#ifdef TEST_FLOAT_DATA
-#define DATA_TYPE float
-#define DATA_FILE "floatdata.txt"
-xsd__float_Array testdata;
-#else
-
-#ifdef TEST_STRUCT_DATA
-#define DATA_TYPE ns_SOAPStruct
-#define DATA_FILE "structdata.txt"
-SOAPStruct_Array testdata;
-#endif
-#endif
-#endif
-#endif
-
-////////////////////////////////////////////////////////////////////////////////
-//
-InteropTestPortType tester;
-
-char *pchBuff;
-
-void inittestdata(int array_sz)
-{
- testdata.m_Size = array_sz;
-#ifdef TEST_STRING_DATA
- if( !(testdata.m_Array = new char *[array_sz]))
-#else
- if (!(testdata.m_Array = (DATA_TYPE *)malloc(sizeof(DATA_TYPE) * array_sz)))
-#endif
- exit(-1);
- next_elem = 0;
-}
-
-
-int storetestdata(char* pchBuff)
-{
-#ifdef TEST_STRING_DATA
- //testdata.m_Array[next_elem] = pchBuff;
- testdata.m_Array[next_elem] = new char [strlen(pchBuff) + 2];
- strcpy(testdata.m_Array[next_elem], pchBuff);
- //printf("pchBuff:%s\n", pchBuff);
- //printf("testdata.m_Array:%s", testdata.m_Array[next_elem]);
- //printf("next_elem:%d\n", next_elem);
- if (testdata.m_Array == NULL)
- exit(-1);
-#else
-#ifdef TEST_INT_DATA
- testdata.m_Array[next_elem] = strtol(s, NULL, 10);
-#else
-#ifdef TEST_FLOAT_DATA
- testdata.m_Array[next_elem] = strtof(s, NULL);
-#else
-#ifdef TEST_STRUCT_DATA
- // TODO
- printf("\nERROR: TODO!\n");
- exit(-1);
-#endif
-#endif
-#endif
-#endif
- return ++next_elem < testdata.m_Size;
-}
-
-
-void gettestdata(int intMaxLineLen)
-{
- FILE *filePtr = fopen(DATA_FILE, "rt");
- if (filePtr) {
- pchBuff = new char [intMaxLineLen];
- while (fgets(pchBuff, intMaxLineLen, filePtr))
- {
- //printf("pchBuff:%s\n", pchBuff);
- if (!storetestdata(pchBuff))
- return;
- }
- fclose(filePtr);
-
- exit(-1);
+/*
+ * Copyright 2003-2004 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.
+ *
+ * @author Samisa Abeysinghe (sabeysinghe@virtusa.com)
+ *
+ */
+
+#include <string>
+#include <iostream>
+#include <time.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/timeb.h>
+
+#ifdef WIN32
+#else
+#include <sys/times.h>
+#include <unistd.h>
+#endif
+
+
+#include <axis/AxisGenException.h>
+#include "./gen_src/InteropTestPortType.h"
+
+using namespace std;
+
+#define STRING_TO_SEND "HelloWorld"
+
+static void
+usage (char *programName, char *defaultURL)
+{
+ cout << "\nUsage:\n"
+ << programName << " [-? | message_size [service_url]] " << endl
+ << " -? Show this help.\n"
+ << " message_size Size of the message sent in chars / 10\n"
+ << " (i.e. If you say 5, then 50 chars would be sent).\n"
+ << " Default is 10*10.\n"
+ << " service_url URL of the service.\n"
+ << " Default service URL is assumed to be " << defaultURL
+ << "\n Could use http://localhost:8080/axis/services/echo to test with Axis Java."
+ << endl;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ int length = 10;
+ char endpoint[256];
+
+ // Set default service URL
+ sprintf (endpoint, "http://localhost/axis/base");
+ // Could use http://localhost:8080/axis/services/echo to test with Axis Java
+
+ try
+ {
+
+ if (argc > 1)
+ {
+ // Watch for special case help request
+ if (!strncmp (argv[1], "-", 1)) // Check for - only so that it works for
+ //-?, -h or --help; -anything
+ {
+ usage (argv[0], endpoint);
+ return 2;
+ }
+ length = atoi(argv[1]);
}
-
- perror("Error");
- exit(-1);
-}
-
-
-void test(int intNumRuns)
-{
- test_rslt = new int[intNumRuns];
- printf("\nStarting... (microseconds)\n");
- for (int ii = 0; ii < intNumRuns; ii++) {
- tm_start();
-
- if (tester.
-#ifdef TEST_STRING_DATA
- echoStringArray
-#else
-#ifdef TEST_INT_DATA
- echoIntegerArray
-#else
-#ifdef TEST_FLOAT_DATA
- echoFloatArray
-#else
-#ifdef TEST_STRUCT_DATA
- echoStructArray
+
+ if (argc > 2)
+ sprintf (endpoint, argv[2]);
+
+ cout << endl << " Using service at " << endpoint << endl << endl;
+
+ InteropTestPortType ws (endpoint);
+
+ ws.setTransportTimeout(2);
+
+ // Prepare the string to be sent
+ char* buffer = new char[ length * strlen(STRING_TO_SEND) + 1];
+ buffer[0] = '\0';
+ for (int i = 0; i < length; i++ )
+ strcat(buffer, STRING_TO_SEND);
+
+ // Time mesurement stuff
+ time_t startTime;
+ time_t endTime;
+
+ time( &startTime );
+
+ char* echoStringResult = ws.echoString(buffer);
+
+ time( &endTime );
+ printf( "Time spent to invoke method ws.echoString(buffer); = %lf s\n", difftime( endTime, startTime ) );
+
+ if (0 == strcmp(echoStringResult, buffer))
+ printf ("successful\n");
+ else
+ printf ("failed\n");
+
+ // Clean memory
+ if (echoStringResult)
+ free(echoStringResult);
+
+ delete [] buffer;
+
+ }
+ catch (AxisException & e)
+ {
+ printf ("Exception : %s\n", e.what ());
+ }
+ catch (exception & e)
+ {
+ printf ("Unknown exception has occured\n");
+ }
+ catch (...)
+ {
+ printf ("Unknown exception has occured\n");
+ }
+
+ // System vs User time stuff
+#ifdef WIN32
+#else // Linux/Unix
+ tms timesSpent;
+ times(×Spent);
+
+ printf( "User time = %ld clock ticks\n", timesSpent.tms_utime );
+ printf( "System time = %ld clock ticks\n", timesSpent.tms_stime);
+ printf( "User time of children = %ld clock ticks\n", timesSpent.tms_cutime);
+ printf( "System time of children = %ld clock ticks\n", timesSpent.tms_cstime);
+ printf( "Processor time used = %ld clock ticks\n", clock());
+ printf( "Number of clock ticks per second = %ld clock ticks/s\n", sysconf(_SC_CLK_TCK) );
#endif
-#endif
-#endif
-#endif
- (testdata).m_Array == NULL) {
- printf("\nError: No data returned!\n");
- exit(-1);
- }
-
- test_rslt[ii] = tm_stop();
-
- printf("\n%d\n", test_rslt[ii]);
- }
-
- printf("\nDone.\n");
-}
-
-
-void save_results(char *save_as, char *desc, int intNumRuns)
-{
- FILE *s = fopen(save_as, "wt");
- if (s) {
- fprintf(s, "%s\n", desc);
- for (int ii = 0; ii < intNumRuns; ii++)
- fprintf(s, "%d\n", test_rslt[ii]);
-
- fclose(s);
- printf("\nResult saved as %s\n", save_as);
- }
- else {
- perror("Error");
- exit(-1);
- }
-}
-
-
-
-int main(int argc, char **argv)
-{
-
- if (6 == argc) {
- int intNumElements = strtol(argv[1], NULL, 0);
- int intMaxLineLen = strtol(argv[2], NULL, 0);
- int intNumRuns = strtol(argv[3], NULL, 0);
- printf("\nArray size: %d\n", intNumElements);
- printf("\nMaximum line length: %d\n", intMaxLineLen);
- printf("\nNumber of runs: %d\n", intNumRuns);
-
- inittestdata(intNumElements);
-
- gettestdata(intMaxLineLen);
-
- test(intNumRuns);
-
- // FIXME:
- save_results(argv[4], argv[5], intNumRuns);
-
- return 0;
-
- }
-
- printf("\nenter:largeArrays <array size> <maximum line length> <number of runs> <datafile> <comment>\n");
- return -1;
+ return 0;
}