`
lingqi1818
  • 浏览: 253426 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

测试mongodb的jmeter脚本代码

 
阅读更多
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);

    }

}
分享到:
评论

相关推荐

    apache jmeter 2.10测试工具

    在2.10版本中,JMeter进一步扩展了其功能,尤其在支持非关系型数据库(NoSQL)如MongoDB和搜索引擎Elasticsearch的测试方面有了显著提升。 一、JMeter简介 JMeter是由Apache软件基金会开发的一款完全基于Java的开放...

    JMeter插件

    - **自动化测试辅助**:一些插件提供代码生成或导入功能,帮助快速构建和维护测试计划,例如录制回放功能,可以快速生成基于真实用户行为的脚本。 - **数据可视化**:通过丰富的图表和报告,JMeter GUI插件能更好...

    JAVA开发jmeter测试mysql+jsno+mangodb用到的jar包,三个包都在里面

    在这个压缩包中,提供了针对MySQL、JSON以及MongoDB数据库进行JMeter测试所需的特定jar包。下面将详细阐述这些知识点: 1. **JMeter**: Apache JMeter是一款由Apache软件基金会开发的负载和性能测试工具。它可以...

    apache-jmeter-5.6.2.zip

    6. **脚本录制与回放**:JMeter内置了代理服务器功能,可以录制用户的浏览器操作并生成测试脚本,方便回放和编辑。这对于创建复杂的测试场景非常有用。 7. **分布式测试**:JMeter支持分布式测试,可以在多台机器上...

    apache-jmeter-3.2

    Apache JMeter是一款强大的性能测试工具,专为评估和测试各种应用程序的性能而设计。它是一个开源项目,由Apache Software Foundation维护,广泛应用于Web应用、FTP服务器、数据库和其他类型的服务器的负载和性能...

    apache-jmeter-4.0

    Apache JMeter是一款强大的开源压力测试工具,主要用于对Web应用程序进行性能和负载测试。这款工具最初设计为HTTP服务器的测试工具,但随着时间的发展,它已经扩展到支持多种协议,包括FTP、SMTP、POP3、JDBC等,...

    软件测试个人成长计划图谱

    8. **常用开源测试平台**:熟悉Jenkins、Travis CI等持续集成工具,以及JMeter、LoadRunner等性能测试工具,实现自动化测试和性能评估。 9. **客户端专项测试**:针对GUI、网络、多媒体等方面的测试,确保用户体验...

    2020校招测试开发岗秋招知识点总结

    2. 性能测试:学习使用LoadRunner、JMeter进行性能测试,理解性能指标如响应时间、并发用户数等。 3. 持续集成:熟悉Jenkins、Travis CI等持续集成工具,实现测试脚本的自动化执行。 四、数据库与网络知识 1. ...

    面向WEBsite的测试t教程

    4. **安全性测试**:检测SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等安全漏洞。 5. **自动化测试**:利用Selenium、JUnit、TestNG等工具进行回归测试,提高效率,减少手动测试的工作量。 6. **用户体验(UX...

    全国大学生软件测试大赛web应用测试环境配置资料以及做题学习教程链接和录制视频.zip

    学会编写测试脚本和分析测试结果是提高测试效率的关键。 5. **版本控制**:Git是常见的版本控制系统,用于协同开发和版本管理。熟悉Git的基本操作如克隆、提交、推送和合并分支,可以更好地协作和跟踪代码变更。 6...

    网上星座测试系统前后台有数据库

    7. 测试策略:功能测试用例、性能测试工具(如JMeter)、安全测试方法(如SQL注入测试)、兼容性测试环境搭建 8. 版本控制:Git的使用 9. 项目构建与部署:Webpack、npm或Maven命令、服务器环境配置(如Apache或...

    第四次迭代计划1

    在这个计划中,主要涉及的技术包括百度云内容审核API、Python脚本、MongoDB和MySQL数据库、repository/service/controller的单元测试、JMeter性能测试、Nginx负载均衡、前端优化、消息队列、Redis缓存、安全认证、...

    软件测试工程师简历模板.doc

    - 回归测试:修改代码后重新进行测试,确保新功能的加入不会影响原有功能。 #### 2. **测试工具与技术** - **自动化测试工具**:Selenium、JUnit、TestNG等。 - **性能测试工具**:LoadRunner、JMeter等。 - **...

    第四次迭代评估报告1

    3. **单元测试与代码覆盖率**:团队实现了repository/service/controller各层的单元测试,达到了类覆盖率和代码行数覆盖率100%,确保了代码质量。尽管在测试过程中遇到了junit5与powermockito的兼容问题,但通过调整...

    lotteryweb-ceshizhan.zip

    这个压缩包很可能包含了用于测试或演示的彩票Web应用的所有必要文件,比如HTML、CSS、JavaScript代码、图片资源、数据库配置文件以及可能的服务器端脚本如PHP或Java。 在深入分析之前,让我们先了解一些基本概念: ...

    DWF_DB_testing

    可能包含的文件有测试脚本、数据库配置文件、测试报告模板、数据库连接库(如JDBC或MongoDB驱动)等。 测试脚本可能使用了像Jest或Mocha这样的测试框架,它们提供了一套结构化的测试API,使得编写和组织测试变得...

    Plouf:测试项目2

    在测试过程中,开发者会使用各种工具来辅助测试,例如JUnit用于Java的单元测试,Selenium用于Web应用的自动化UI测试,JMeter用于性能测试,Postman用于API接口的测试等。同时,持续集成/持续部署(CI/CD)工具如...

    testwebsite:测试测试

    可能包括以下文件和文件夹:`index.html`(主页)、`style.css`和`script.js`(样式和脚本文件)、`app.py`或`server.js`(后端服务)、`db.js`或`models.py`(数据库操作)、`tests`目录(测试代码)、`.gitignore`...

    MyApplication:测试

    对于更复杂的测试场景,可能还需要Selenium、JMeter等工具进行功能测试和性能测试。 在实际的测试过程中,开发者需要关注代码覆盖率、性能指标(如响应时间、并发处理能力)、内存占用、错误日志等,确保应用在各种...

    惠生活网站.zip

    自动化测试工具如JUnit、Selenium和JMeter可以帮助提高测试效率。 8. **部署与运维**:网站上线前,需要配置服务器环境,选择合适的服务器如AWS、Google Cloud或阿里云,并设置持续集成/持续部署(CI/CD)流程,以...

Global site tag (gtag.js) - Google Analytics