1、mongodb插入数据,作为BeanShell 预处理程序,在http请求执行之前执行BeanShell 预处理
1)java脚本,先调通
import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MongoTest {
public static void main(String[] args) {
ServerAddress serverAddress = new ServerAddress("10.141.62.19",27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//credentials存储登录数据库管理,用户名root,authDB: admin,密码password
MongoCredential credential = MongoCredential.createScramSha1Credential("dbuser","mondb","dbuser2017".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//登录 MongoDB服务器
MongoClient mongoClient = new MongoClient(addrs,credentials);
MongoDatabase mondb = mongoClient.getDatabase("mondb");
MongoDatabase mongoDatabase = mongoClient.getDatabase("mondb");
MongoCollection<Document> collection = mongoDatabase.getCollection("probes");
insertMongDB(collection);
}
public static void insertMongDB(MongoCollection<Document> collection ) {
Document document = new Document();
document.put("alias", "proxy_"+System.currentTimeMillis());//时间戳
document.put("status", -1);
document.put("ip", "10.18.5.27");
document.put("os", "Windows 10");
document.put("uptime", "66");
document.put("version", "p2.5.0.135");
document.put("platform", "win_32");
document.put("step", 5);
Date now = new Date();
document.put("timestamp", now);
document.put("isproxy", "0");
document.put("_class", "com.dwzq.lib.model.Probe");
document.put("osUptime", "25395178");
document.put("release", 0);
document.put("updated", now);
collection.insertOne(document);
}
}
2)jmeter脚本,添加BeanShell 预处理程序
BeanShell 预处理程序脚本
import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
Document document = new Document();
document.put("alias", "proxy_"+System.currentTimeMillis());//时间戳
document.put("status", -1);
document.put("ip", "10.18.5.27");
document.put("os", "Windows 10");
document.put("uptime", "66");
document.put("version", "p2.5.0.135");
document.put("platform", "win_32");
document.put("step", 5);
Date now = new Date();
document.put("timestamp", now);
document.put("isproxy", "0");
document.put("_class", "com.dwzq.lib.model.Probe");
document.put("osUptime", "25395178");
document.put("release", 0);
document.put("updated", now);
ServerAddress serverAddress = new ServerAddress("10.141.62.19",27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//credentials存储登录数据库管理,用户名root,authDB: admin,密码password
MongoCredential credential = MongoCredential.createScramSha1Credential("dbuser","mondb","dbuser2017".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//登录 MongoDB服务器
MongoClient mongoClient = new MongoClient(addrs,credentials);
MongoDatabase mondb = mongoClient.getDatabase("mondb");
MongoDatabase mongoDatabase = mongoClient.getDatabase("mondb");
MongoCollection<Document> collection = mongoDatabase.getCollection("probes");
collection.insertOne(document);
3)执行异常,异常信息
ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval In file: inline evaluation of: ``import com.mongodb.*; import com.mongodb.client.MongoCollection; import com.mong
原因:Map方法中不能指定数据类型,List中也是。
将
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
MongoCollection<Document> collection = mongoDatabase.getCollection("probes");
修改为
List addrs = new ArrayList();
List credentials = new ArrayList();
MongoCollection collection = mongoDatabase.getCollection("probes");