mercredi 3 août 2016

How to use CSV Dataset Config's variable in Bean Shell Post Processor in Jmeter

In my application I have two scenarios.

  • 1. Create: Here we book a hotel room. After booking application returns a transaction ID.
  • 2. Cancel: We need to pass the transaction Id to the application to cancel booking.
  • I want to test with jmeter in such a way that after a create call is made, the cancel call of the respective create is called with the generated transaction ID automatically.

So I have created two thread groups. One for create where I am calling create API, saving the transaction Id in a CSV file using Regular Expression Extractor & Bean Shell Post Processor. Another thread is for cancel where I am picking the transaction ID using CSV Dataset Config & calling the cancel API.

Problem is I want to delete that transaction ID from CSV file after calling the cancel API. I think Bean Shell Post Processor will do the job. This is my CSV Data Set Config:

enter image description here

Here is my Bean Shell Post Processor code:

File inputFile = new File("/home/demo/LocalFolder/CSV/result.csv");
File tempFile = new File("/home/demo/LocalFolder/CSV/myTempFile.csv");

BufferedReader reader;
try {
    reader = new BufferedReader(new FileReader(inputFile));

    BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

    String lineToRemove = vars.get("transactionId");
    //String lineToRemove = "${transactionId}";
    String currentLine;

    while((currentLine = reader.readLine()) != null) {
        // trim newline when comparing with lineToRemove
        String trimmedLine = currentLine.trim();
        if(trimmedLine.equals(lineToRemove)) continue;
        writer.write(currentLine + System.getProperty("line.separator"));
    }
    writer.close(); 
    reader.close(); 
    boolean successful = tempFile.renameTo(inputFile);
    System.out.println("Completed");
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

But the transaction ID is not getting deleted from the file. I think that vars.get("transactionId") is not returning anything or returning wrong value. If I hardcode a transation ID then the code works fine. Can anyone help me?

Aucun commentaire:

Enregistrer un commentaire