فهرست منبع

提交压测用例

caiaolin 8 سال پیش
والد
کامیت
883a23caaa

+ 21 - 0
modules/common/helper/mongoose_helper.js

@@ -192,6 +192,27 @@ class MongooseHelper {
     }
 
     /**
+     * 自增
+     *
+     * @param {Object} condition
+     * @param {Object} incData
+     * @return {Promise}
+     */
+    incr(condition, incData) {
+        let self = this;
+        return new Promise(function(resolve, reject) {
+            condition = self._convertId(condition);
+            self.model.update(condition, {$inc: incData}, function(error, data) {
+                if (error) {
+                    reject(error);
+                } else {
+                    resolve(data);
+                }
+            });
+        });
+    }
+
+    /**
      * id转换为objectId
      *
      * @param {object} condition

+ 49 - 1
modules/users/controllers/login_controller.js

@@ -9,6 +9,10 @@ import BaseController from "../../common/base/base_controller";
 import ManagerModel from "../models/manager_model";
 import crypto from "crypto";
 
+import Test1Model from "../../../test/models/test1_model";
+import Test2Model from "../../../test/models/test2_model";
+import Test3Model from "../../../test/models/test3_model";
+
 class LoginController extends BaseController {
 
     /**
@@ -72,7 +76,7 @@ class LoginController extends BaseController {
             };
             let updateResult = managerModel.updateById(managerData._id, updateData);
             if (!updateResult) {
-                throw '更新登录信息失败!';
+                throw {code: 44003, err: '更新登录信息失败!'};
             }
         } catch (error) {
             responseData.error = error.code;
@@ -95,6 +99,50 @@ class LoginController extends BaseController {
         response.redirect('/login');
     }
 
+    /**
+     * 压测接口
+     *
+     * @param {object} request
+     * @param {object} response
+     * @return {void}
+     */
+    async test(request, response) {
+        let responseData = {
+            error: 0,
+            msg: ''
+        };
+        try {
+
+            // 第一个库的操作
+            let test1Model = new Test1Model();
+            let test1Result = await test1Model.test();
+            if (!test1Result) {
+                throw 'test1出错';
+            }
+
+            // 第二个库操作
+            let test2Model = new Test2Model();
+            let test2Result = await test2Model.test();
+            if (!test2Result) {
+                throw 'test2出错';
+            }
+
+            // 第三个库操作
+            let test3Model = new Test3Model();
+            let test3Result = await test3Model.test();
+            if (!test3Result) {
+                throw 'test3出错';
+            }
+
+        } catch (error) {
+            console.log(error);
+            responseData.error = 1;
+            responseData.msg = error;
+        }
+
+        response.json(responseData);
+    }
+
 }
 
 export default LoginController;

+ 1 - 0
modules/users/routes/login_route.js

@@ -17,6 +17,7 @@ module.exports =function (app) {
     router.get('/', loginController.index);
     router.post('/login', loginController.login);
     router.get('/logout', loginController.logout);
+    router.get('/test', loginController.test);
 
     app.use("/login", router);
     app.use("/", router);

+ 19 - 0
test/models/schemas/test1.js

@@ -0,0 +1,19 @@
+/**
+ * 压测数据模型1
+ *
+ * @author CaiAoLin
+ * @date 2017/8/3
+ * @version
+ */
+import mongoose from "mongoose";
+
+let Schema = mongoose.Schema;
+let collectionName = 'test1';
+let modelSchema = {
+    name: String,
+    value: {
+        type: Number
+    }
+};
+let model = mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));
+export {model as default, collectionName as collectionName};

+ 19 - 0
test/models/schemas/test2.js

@@ -0,0 +1,19 @@
+/**
+ * 压测数据模型2
+ *
+ * @author CaiAoLin
+ * @date 2017/8/3
+ * @version
+ */
+import mongoose from "mongoose";
+
+let Schema = mongoose.Schema;
+let collectionName = 'test2';
+let modelSchema = {
+    name: String,
+    value: {
+        type: Number
+    },
+};
+let model = mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));
+export {model as default, collectionName as collectionName};

+ 19 - 0
test/models/schemas/test3.js

@@ -0,0 +1,19 @@
+/**
+ * 压测数据模型3
+ *
+ * @author CaiAoLin
+ * @date 2017/8/3
+ * @version
+ */
+import mongoose from "mongoose";
+
+let Schema = mongoose.Schema;
+let collectionName = 'test3';
+let modelSchema = {
+    name: String,
+    value: {
+        type: Number
+    },
+};
+let model = mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));
+export {model as default, collectionName as collectionName};

+ 47 - 0
test/models/test1_model.js

@@ -0,0 +1,47 @@
+/**
+ * 压测模块1
+ *
+ * @author CaiAoLin
+ * @date 2017/8/3
+ * @version
+ */
+import BaseModel from "../../modules/common/base/base_model";
+import Test1Schema from "./schemas/test1";
+
+class Test1Model extends BaseModel {
+
+    /**
+     * 构造函数
+     *
+     * @return {void}
+     */
+    constructor() {
+        let parent = super();
+        parent.model = Test1Schema;
+        parent.init();
+    }
+
+    /**
+     * 初始化数据
+     *
+     * @return {Promise}
+     */
+    async test() {
+        let name = 'test1';
+        // let update = {$inc: {value: 1}};
+        let update = {value: 1};
+        let condition = {name: name};
+        let options = {new: true};
+
+        // 先查找更新
+        // let idData = await this.db.findAndModify(condition, update, options);
+        let idData = await this.db.incr(condition, update);
+
+        // return idData !== null;
+        return idData !== null && idData.ok === 1;
+    }
+
+}
+
+export default Test1Model;
+

+ 46 - 0
test/models/test2_model.js

@@ -0,0 +1,46 @@
+/**
+ * 压测模块1
+ *
+ * @author CaiAoLin
+ * @date 2017/8/3
+ * @version
+ */
+import BaseModel from "../../modules/common/base/base_model";
+import Test2Schema from "./schemas/test2";
+
+class Test2Model extends BaseModel {
+
+    /**
+     * 构造函数
+     *
+     * @return {void}
+     */
+    constructor() {
+        let parent = super();
+        parent.model = Test2Schema;
+        parent.init();
+    }
+
+    /**
+     * 初始化数据
+     *
+     * @return {Promise}
+     */
+    async test() {
+        let name = 'test2';
+        // let update = {$inc: {value: 1}};
+        let update = {value: 1};
+        let condition = {name: name};
+        let options = {new: true};
+
+        // 先查找更新
+        // let idData = await this.db.findAndModify(condition, update, options);
+        let idData = await this.db.incr(condition, update);
+
+        // return idData !== null;
+        return idData !== null && idData.ok === 1;
+    }
+}
+
+export default Test2Model;
+

+ 46 - 0
test/models/test3_model.js

@@ -0,0 +1,46 @@
+/**
+ * 压测模块1
+ *
+ * @author CaiAoLin
+ * @date 2017/8/3
+ * @version
+ */
+import BaseModel from "../../modules/common/base/base_model";
+import Test3Schema from "./schemas/test3";
+
+class Test3Model extends BaseModel {
+
+    /**
+     * 构造函数
+     *
+     * @return {void}
+     */
+    constructor() {
+        let parent = super();
+        parent.model = Test3Schema;
+        parent.init();
+    }
+
+    /**
+     * 初始化数据
+     *
+     * @return {Promise}
+     */
+    async test() {
+        let name = 'test3';
+        // let update = {$inc: {value: 1}};
+        let update = {value: 1};
+        let condition = {name: name};
+        let options = {new: true};
+
+        // 先查找更新
+        // let idData = await this.db.findAndModify(condition, update, options);
+        let idData = await this.db.incr(condition, update);
+
+        // return idData !== null;
+        return idData !== null && idData.ok === 1;
+    }
+}
+
+export default Test3Model;
+