import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.concurrent.atomic.AtomicLong;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.Mongo;
import com.mongodb.MongoOptions;
import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;
/**
*
* @author ke.chenk 2011-12-21 上午9:48:58
* @mail lingqi1818@gmail.com
*/
public class TestMongodb extends AbstractJavaSamplerClient {
private static Mongo m;
private static DB db;
private static AtomicLong read_key = new AtomicLong(0);
private static FileOutputStream fos;
static {
try {
fos = new FileOutputStream(new File("jmeter_error.log"));
MongoOptions options = new MongoOptions();
options.autoConnectRetry = true;
options.connectionsPerHost = 1000;
options.maxWaitTime = 5000;
options.socketTimeout = 0;
options.connectTimeout = 15000;
options.threadsAllowedToBlockForConnectionMultiplier = 5000;
m = new Mongo(new ServerAddress("10.20.141.22", 28018), options);
// m = new Mongo(new ServerAddress("10.20.159.19",28018), options);
db = m.getDB("test");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public SampleResult runTest(JavaSamplerContext context) {
// System.out.println(read_key.getAndIncrement());
SampleResult results = new SampleResult();
// System.out.println(context.getParameter("rw"));
results.sampleStart();
DBCollection coll = db.getCollection("test");
if ("w".equalsIgnoreCase(context.getParameter("rw"))) {
long key = 1;
BasicDBObject doc = new BasicDBObject();
doc.put("count", 100);
doc.put("offer_price", 150);
doc.put("industry_name", "捕鱼,原材料,加工品,十个字以内");
doc.put("category_id", 10);
doc.put("offer_title", "黑猫白猫抓到老鼠就是好猫");
doc.put("sum_payment", 100);
doc.put("sum_product_payment", 1);
doc.put("gmt_completed", new Date());
doc.put("is_completed", true);
doc.put("status", "new");
doc.put("gmt_create", new Date());
doc.put("gmt_modified", new Date());
doc.put("_id", read_key.getAndIncrement());
doc.put("offer_id", key);
doc.put("buyer_member_id", "lingqi" + key);
doc.put("seller_member_id", "yeling" + key);
db.requestStart();
WriteResult rs = coll.insert(doc);
try {
if (rs.getError() != null) fos.write(rs.getError().getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("w error->" + rs.getError());
db.requestDone();
}
if ("r".equalsIgnoreCase(context.getParameter("rw"))) {
BasicDBObject query = new BasicDBObject();
query.put("_id", read_key.getAndIncrement());
DBCursor cur = coll.find(query);
System.out.println(cur.count());
}
results.setSuccessful(true);
results.sampleEnd();
return results;
// return null;
}
public static void main(String args[]) throws Exception {
Arguments a = new Arguments();
a.addArgument("rw", "w");
final JavaSamplerContext c = new JavaSamplerContext(a);
long start = System.currentTimeMillis();
for (int i = 0; i < 50; i++) {
new Thread() {
public void run() {
TestMongodb t = new TestMongodb();
for (int j = 0; j < 10000; j++) {
t.runTest(c);
}
}
}.start();
}
// DBCollection coll = db.getCollection("test");
// System.out.println(db.getLastError());
// BasicDBObject in = new BasicDBObject();
// BasicDBList values = new BasicDBList();
// values.add(1);
// values.add(2);
// values.add(3);
// in.put("$in", values);
// BasicDBObject query = new BasicDBObject();
// query.put("_id", in);
// System.out.println(query);
// //System.out.println(coll.find(query).hasNext());
// System.out.println(coll.count());
// System.out.println(coll.findOne());
/*
* String map = "function() { emit(this.offer_price, {count:1});}"; String reduce = "function(key, values) {";
* reduce = reduce + "var total = 0;"; reduce = reduce +
* "for(var i=0;i<values.length;i++){total += values[i].count;}"; reduce = reduce + "return {count:total};}";
* String result = "resultCollection"; MapReduceOutput mapReduceOutput = coll.mapReduce(map, reduce.toString(),
* result, null); DBCollection resultColl = mapReduceOutput.getOutputCollection(); DBCursor cursor =
* resultColl.find(); while (cursor.hasNext()) { System.out.println(cursor.next()); }
*/
// DBCursor cursor = coll.find();
// long start = System.currentTimeMillis();
// while (cursor.hasNext()) {
// System.out.println(cursor.next());
// }
// System.out.println(System.currentTimeMillis()-start);
}
}
分享到:
相关推荐
mongodb创建库以及基本使用脚本说明.
mongodb集群部署脚本,包括mongos启动、mongodb config启动,mongodb分片启动,mongodb副本集仲部署等脚本
linux mongoDB数据库备份脚本
mongodb的安装脚本 详细可以查看,我的博客 http://blog.csdn.net/tb12315/article/details/12433891
NULL 博文链接:https://wangzijian777.iteye.com/blog/1141763
mongodb测试数据,学习增删改查等,或是用于性能测试
mongodb 集群测试代码 3个sharding 3个config srv 1个mongos
Mongodb备份脚本(mongodump)
MongoDB自动备份脚本,自动删除几天前的备份,带全部注释
数据库备份脚本 进入编辑任务界面:crontab -e 配置定时任务:30 1 * * * /opt/mongobk.sh 每天一点30分备份数据库 基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 *...
mongodb脚本 与MongoDB相关的有用脚本和命令提示的集合。 目录 驱动程序Kerberos测试框架 Kerberos即服务( KaaS ) VM气球检测
在Linux命令行下自动安装Mongodb,操作方便快捷,只需修改一下PHP配置文件的路径参数即可。
MongoDB备份脚本 里面有什么? 这个 shell 脚本是一种简单而简约的方式来备份你的 MongoDB 并将文件存储在你的本地机器上。 如何使用它? 打开 shell 脚本并用您的凭据替换变量 [可选:更改权限以便您可以执行脚本...
MongoDB自动迁移脚本
MongoDB的分析和报告的解决方案
请有缘人注意,该脚本是基于aliyun提供的自动化安装脚本进行的扩展,需要与install.sh放置在同一目录下方可使用。运行后,会自动安装上mongodb于相关的PHP扩展,并只适用于centos或aliyun os。切忌不顾前提胡乱使用
压力测试工具 apache jmeter 2.10,新增支持mongodb测试,模版内含有mongodb,elasticsearch 的测试脚本jmx
mongodb数据库操作脚本
JMeterPlugins-mongodb.jarr插件放到lib目录ext目录下
使用python脚本和docker部署mongodb集群, 支持多种角色, 并且支持, 复制集群和分片集群. 具体参数配置看脚本