UNPKG

rrestjs

Version:

HIgh performance node.js ROA & RESTFUL web framework.

121 lines (103 loc) 3.33 kB
/* 基本测试, sep_session 例子 对于有时间限制的session只能手动浏览器测试了 */ var should = require('should'); var path = require('path'); module.exports.conf = { listenPort:3000, baseDir: path.join(__dirname), //cluster配置 isCluster:true, //是否开启多进程集群 ClusterNum:4, //开启的进程数 //session配置 isSession:true, //是否开启session,开启会影响性能。 syncSession:true,//当多进程时是否开启session同步,开启会影响性能。 sessionName:'rrSid', //保存session id 的cookie 的name sessionExpire:false, //false表示会话session,否则填入1000*60,表示session有效1分钟 clearSessionSetInteval:1000*60*60, //自动清理垃圾session时间,建设设置为1小时 clearSessionTime:1000*60*60*24,//会话session超时,建议设置为1天 sepSession:['/user','/pay','/game'] }; var http = require('http'), rrest = require('../../'), loop = 1; server = http.createServer(function (req, res){ //console.log(req.pathname); if(loop>=5) return res.send('done'); if(req.session.count>100){ req.delsession(); ++loop; return res.send('del'); } if(!req.session.count) req.session.count = 0; res.send(++req.session.count); }).listen(rrest.config.listenPort); http.globalAgent.maxSockets = 20; if(rrest.forkid == 'master'){ /*test sep session client*/ var count = 0; var overfunc = function(){//结束函数 count++; if(count>=4){ console.log('sep session all test done') process.exit(); } } var http = require('http'); var should = require('should'); var testconf = require('../testconf.js'); var cookies = ''; var obj = { i1:0, i2:0, i3:0, i4:0 } var gorequest= function(param_cookie,pathurl,counti){ var me = arguments.callee; var request = http.request({ host:testconf.hostname, port:3000, path:pathurl || '/', method:'GET', headers:{'Accept':'text/html', 'Content-Type':'application/x-www-form-urlencoded', 'Content-Length':'19', 'User-Agent':'node.js-v0.8.8', 'cookie':param_cookie||'', 'X-Requested-With':'xmlhttprequest', 'Connection':'keep-alive', 'Referer':'http://www.cnodejs.org/'} }, function(res){ var body = ''; res.on('data', function (chunk) { body += chunk; }).on('end', function(){ if(body == 'done') return console.log('sep session '+pathurl+' test done!') || overfunc(); if(body == 'del'){ counti=0; console.log('100 request '+pathurl+' has complete!') return me(null,pathurl,counti); } var session_i = ++counti; var session_count = body - 0; should.strictEqual(session_i, session_count); var setcookie = res.headers['set-cookie']; process.nextTick(function(){ setTimeout(function(){me(setcookie, pathurl,counti);},400); }); }) }).on('err', function(e){ throw e; }); request.end(); return me; } setTimeout(function(){ gorequest(null,'/',obj.i1); gorequest(null,'/user',obj.i2); gorequest(null,'/pay/pay/aaa',obj.i3); gorequest(null,'/game/aaa/aaa',obj.i4); },8000) }