| This test case can be used to test the thread safety of the Axis C++ client |
| engine. |
| This sample used thread package; and hence would only work on Linux/Unix |
| platforms. |
| You are invited to write a threaded test for Windows like this (or a better |
| one;-) ) |
| |
| I tested this with Axis Java echo sample. (Axis Java service and C++ client) |
| BTW: echo sample is equivalent to base sample of Axis C++ sample set. |
| |
| Usage: |
| You can run the sample by simply running: |
| ./thSafeTest hostname port [use-same] |
| |
| 1. If you run with just hostname and port the client will create a stub object |
| for each thread. |
| 2. If the third argument is present, then the client will use a single stub |
| object for multiple threads. |
| I am not sure if the second scenario is much useful. |
| |
| The number of threads used is hard coded with NUM_THREADS macro in Client.cpp. |
| (yes you can improve it by making it a command line option) |
| If you have set NUM_THREADS to some number, say 30, and if you want to know |
| if all threads were successful you could use the following command: |
| ./thSafeTest localhost 8080 | grep Done | nl |
| and count the Done lines in output to see how many threads succeeded. |
| (Note: I have printf( "%ld Done\n", pthread_self() ); as the last line of my |
| run function) |
| I mentioned this tip because you will find the output confusing at times if |
| you are using large number of threads. However I have the thread IDs on the |
| output so that those you have patience can verify the creation and completion |
| of the threads one by one. |
| |
| - Samisa |