kg.apc.jmeter.dbmon.DbMonSampler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jmeter-plugins-extras Show documentation
Show all versions of jmeter-plugins-extras Show documentation
Custom plugins set for Apache JMeter
package kg.apc.jmeter.dbmon;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
public class DbMonSampler {
private static final Logger log = LoggingManager.getLoggerForClass();
private String metricName;
private String sql;
private String poolName;
private final Connection connection;
private boolean sampleDeltaValue = true;
private double oldValue = Double.NaN;
public DbMonSampler(Connection conn, String poolName, String name, boolean sampleDeltaValue, String sql) {
this.metricName = name;
this.connection = conn;
this.poolName = poolName;
this.sql = sql;
this.sampleDeltaValue = sampleDeltaValue;
}
public void generateSamples(DbMonSampleGenerator collector) {
Statement stmt = null;
ResultSet rs = null;
try {
stmt = connection.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
final double val = rs.getDouble(1);
if (sampleDeltaValue) {
if (!Double.isNaN(oldValue)) {
collector.generateSample(val - oldValue, metricName);
}
oldValue = val;
} else {
collector.generateSample(val, metricName);
}
}
} catch (SQLException ex) {
log.error("Error executing query: " + sql, ex);
} finally {
close(rs);
close(stmt);
}
}
private void close(ResultSet r) {
if (r != null) {
try {
r.close();
} catch (SQLException ex) {
log.warn("Failed to close resultset", ex);
}
}
}
private void close(Statement r) {
if (r != null) {
try {
r.close();
} catch (SQLException ex) {
log.warn("Failed to close statement", ex);
}
}
}
public String getMetricName() {
return metricName;
}
public void setMetricName(String metricName) {
this.metricName = metricName;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
public boolean isSampleDeltaValue() {
return sampleDeltaValue;
}
public void setSampleDeltaValue(boolean sampleDeltaValue) {
this.sampleDeltaValue = sampleDeltaValue;
}
public Connection getConnection() {
return connection;
}
public String getPoolName() {
return poolName;
}
public void setPoolName(String poolName) {
this.poolName = poolName;
}
}