How to decouple sql conn so that connection to db remain open for entire simulation and use sql queries separately for all different scenario

package com.kotak.qe.load.scenario.api.sanity;

import com.kotak.qe.load.interfaces.IScenario;
import com.kotak.qe.load.utils.CommonUtils;
import io.gatling.javaapi.core.FeederBuilder;
//import io.gatling.javaapi.core.ScenarioBuilder;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import java.util.function.Supplier;
import java.util.stream.Stream;



import static io.gatling.javaapi.core.CoreDsl.scenario;
import static io.gatling.javaapi.core.CoreDsl.csv;
import static io.gatling.javaapi.core.CoreDsl.StringBody;
import static io.gatling.javaapi.http.HttpDsl.http;
import static io.gatling.javaapi.http.HttpDsl.status;
*/
import static ru.tinkoff.load.javaapi.JdbcDsl.*;
import edu.umd.cs.findbugs.annotations.NonNull;

//import static io.gatling.javaapi.core.CoreDsl.bodyString;
//import static io.gatling.javaapi.core.CoreDsl.substring;
import static io.gatling.core.structure.ScenarioBuilder.*;
import io.gatling.jdbc.Predef.*;
import io.gatling.http.Predef.*;
import static io.gatling.core.Predef.*;
import java.sql.*;
import java.util.*;
import java.util.function.*;
import io.gatling.javaapi.core.*;
import io.gatling.javaapi.jdbc.*;
import io.gatling.javaapi.http.*;
import static io.gatling.javaapi.core.CoreDsl.scenario;
import static io.gatling.javaapi.core.CoreDsl.csv;
import static io.gatling.javaapi.core.CoreDsl.StringBody;
import static io.gatling.javaapi.http.HttpDsl.http;
import static io.gatling.javaapi.http.HttpDsl.status;
import static io.gatling.javaapi.core.CoreDsl.bodyString;
import static io.gatling.javaapi.core.CoreDsl.substring;

//import io.gatling.core.feeder.FeederBuilder;

//import io.gatling.javaapi.core.RecordSeqFeederBuilder;
public class AcOpndScenario implements IScenario {

   
    private static final String currentDate = CommonUtils.getCurrentDate("dd-MM-yyyy");
    static Iterator<Map<String, Object>> currentDateFeeder =
            Stream.generate((Supplier<Map<String, Object>>) () -> {
                        return Map.of("currentdate", currentDate);
                    }
            ).iterator();
  

    public static String getPayload() {
        String filePath = TEST_RESOURCES_PATH + "/api/templates/custom/write/ac_opnd.xml";
        return CommonUtils.getFileContents(filePath);
    }
    @Override
    public String getScenarioName() {
        return getClass().getSimpleName();
    }

    ////


    public List<Map<String, Object>> chk() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection("JDBC", "USER", "PWD");
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("SQL");
            List<Map<String, Object>> list = new ArrayList<>();
            while (rs.next()) {
                ResultSetMetaData mt = rs.getMetaData();
                int count = mt.getColumnCount();
                System.out.println(count);
                Map<String, Object> row = new HashMap<>();
                for (int i = 1; i <= count; i++) {
                    String cname = mt.getColumnName(i).toLowerCase();
                    Object cvalue = rs.getObject(i);
                    row.put(cname, cvalue);

                    System.out.println(cname+"--"+row.get(cname));
                }
                list.add(row);



            }
            rs.close();
            con.close();
            System.out.println(list.toString());
            return list;

        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();

        }
        return null;
    }


    //   Iterator<Map<String, Object>> fr = chk().iterator();
    List<Map<String, Object>> aa=chk();
    Iterator<Map<String, Object>> fr = aa.iterator();


    @Override
    public ScenarioBuilder getScenarioBuilder() {
        return scenario("APISimulation ")
               .feed(fr)
                .feed(requestIdFeeder)
                .feed(currentDateFeeder)
                .exec(http("APISimulation")
                        .post("/API")
                        .body(StringBody(getPayload())).asXml()
                        .check(status().is(200))
                        .check(bodyString().saveAs("ResponseBody"))

                )
                .exec(session -> {
                    String res = session.get("ResponseBody");
                    if(res != null && res.contains("SUCCESS"))
                        System.out.println("*****API SUCCESS ***");
                    System.out.println(res);
                    return session;
                });

    }
}
import static ru.tinkoff.load.javaapi.JdbcDsl.*;

You’re using a community third party plugin. As explained in the terms of this forum, this is not something we can help with here. You’ll have to directly reach out to the authors of this plugin.

Regard

add up to Slandelle’s answer,

You can try to ask directly on their github GitHub - galax-io/gatling-jdbc-plugin: Simple gatling plugin for JDBC
The original Author moved it to another group.

Hope you can find the answer there

@trinp Oh, nice finding, thanks! That’s great news that these plugins will keep on being maintained. I’m going to update the links in our documentation.

It seems the plugin hasn’t been released with the new groupId and package yet. I’ll only be able to update once this happens.

Hi @slandelle , No offense intended, may I know reason why we don’t have official support on JDBC ?

No offense taken :slight_smile:
Time, effort, return on investment.

1 Like

Maybe you guys can consider to open a donate function on Github too :smiley: I will be the first to donate