I am trying to send karate.info object details to InfluxDB but when i am trying to call a java method in afterScenario it is throwing an error.
ignore: Code contains only connection call method.
Code:
* def inFluxDb = Java.type('utility.InfluxDBCall');
* configure afterScenario =
"""
function(){
var info = karate.info;
karate.log('after', info.scenarioType + ':', info.scenarioName);
karate.log('after', info.scenarioType + ':', info.errorMessage);
karate.log('after', info.scenarioType + ':', info.featureDir);
karate.log('after', info.scenarioType + ':', info.featureFileName);
karate.log('after', info.scenarioType + ':', info.scenarioDescription);
inFluxDb.DBConnection("http://localhost:8086", "root", "root");
}
"""
Error:
19:43:52.318 [ForkJoinPool-1-worker-1] INFO com.intuit.karate - after Scenario:
19:43:52.380 [ForkJoinPool-1-worker-1] ERROR com.intuit.karate - javascript function call failed: TypeError: inFluxDb.DBConnection is not a function
19:43:52.380 [ForkJoinPool-1-worker-1] ERROR com.intuit.karate - failed function body: function(){
var info = karate.info;
karate.log('after', info.scenarioType + ':', info.scenarioName);
karate.log('after', info.scenarioType + ':', info.errorMessage);
karate.log('after', info.scenarioType + ':', info.featureDir);
karate.log('after', info.scenarioType + ':', info.featureFileName);
karate.log('after', info.scenarioType + ':', info.scenarioDescription);
inFluxDb.DBConnection("http://localhost:8086", "root", "root");
}
used ' karate.call(inFluxDb.DBConnection("http://localhost:8086", "root", "root"));' as well but seeing same error. I have been seeing https://github.com/intuit/karate/blob/master/karate-core/src/test/java/com/intuit/karate/core/MandatoryTagHook.java, any thoughts on how to configure this class?
Java class used
public class InfluxDBCall {
private static InfluxDB influxDB;
public void DBConnection(String serverURL, String username, String password) {
influxDB = InfluxDBFactory.connect(serverURL, username, password);
influxDB.enableBatch(BatchOptions.DEFAULTS);
System.out.println("Connection created");
}
public static void writeIntoDB(String Measurement,String featureName, String scenarioName, String status, String error) {
influxDB.write(Point.measurement(Measurement)
.time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
.tag("projectName","SPSAutomation")
.tag("featureName", featureName.split(".")[0].toString())
.addField("scenarioName", scenarioName)
.addField("status", status)
.addField("Error", error)
.build());
}
public void connectionClose() {
influxDB.close();
System.out.println("Connection closed");
}
}