Forum Discussion

BhuvanShanmugam's avatar
BhuvanShanmugam
Contributor
16 years ago

load test with multiple threads/data source/data sink

Hi,

I need to run a test case with multiple threads.
Each thread can have its own data source or can share a single source.

But I want each thread to write out the output of soap call and also the elapsed time in making the call.

I have progressed to have a single data sink and a loop .

Any help to achieve this multi-set will be helpful.

Thanks,
Bhuvan.
  • SmartBear_Suppo's avatar
    SmartBear_Suppo
    SmartBear Alumni (Retired)
    Hello,

    This sounds like a correct setup, what issues are you having?

    Regards,
    Dain
    eviware.com
  • Well

    I want each thread to have its own data source if possible.

    I also want each thread to write its output to a seperate output file.

    I also want to log the time it took to process the test case into the output file (for each thread - for each soap call to server)

    Thanks,
    Bhuvan.
  • Here are additional screen captures on how I have set it up.

    Weird this to note with the load test is that although 10 threads were started, there were only 92 records in the data sink.

    the data source file00 has 100 records.

    Let me know if more info will help

    Bhuvan
  • SmartBear_Suppo's avatar
    SmartBear_Suppo
    SmartBear Alumni (Retired)
    Hello,

    You can differentiate between threads during a LoadTest by using the thread index (context.ThreadIndex). Using this you can have separate DataSources and DataSinks, for example, you could have a File DataSource and use the filename "data_${ThreadIndex}.txt" (and then have separate data files for each thread, data_0.txt, data_1.txt, etc).

    You can do the same for the output. In the TestCase Setup script put something along the lines of:


    context.logger = new FileWriter("out_"+context.ThreadIndex+".txt", true)


    And then use context.logger for any output that needs to be saved to file.

    To get the time for the TestCase, you can put this in your TestCase TearDown Script:


    context.logger.println "Time taken: " + testRunner.timeTaken
    context.logger.close()


    Regards,
    Dain
    eviware.com
  • Hi Dain,

    I have managed to get multiple data sources and sinks with multiple threads.

    however, Ive never done any groovy stuff - so is there a way to get the time into the data sink other than using groovy..

    i already use property from the test case output to write into the sink.

    using ${testRunner.timeTaken} as a property value doesnt work.

    Bhuvan.
  • SmartBear_Suppo's avatar
    SmartBear_Suppo
    SmartBear Alumni (Retired)
    Hi!

    you could try ${=testRunner.timeTaken} instead (which evaluates your statement as a groovy script)

    Does that help?

    regards!

    /Ole
    eviware.com