load-tester
Advanced tools
+12
-10
@@ -46,3 +46,3 @@ | ||
| console.log(this.opts); | ||
| // console.log(this.opts); | ||
@@ -93,2 +93,3 @@ for(var b = 0; b < Math.min(this.opts.maxSockets, this.opts.runs); ++b) | ||
| reqObj.path = reqObj.path || ''; | ||
| reqObj.followRedirect = reqObj.followRedirect || false; | ||
@@ -113,4 +114,2 @@ var expect = reqObj.expect || { code: 200 }; | ||
| var url = this.opts.baseUrl + reqObj.path; | ||
| if(reqObj.forms && _.isArray(reqObj.forms)) | ||
@@ -122,9 +121,12 @@ reqObj.form = rand(reqObj.forms); | ||
| var url = this.opts.baseUrl + reqObj.path; | ||
| var responseTime = Date.now(); | ||
| this.request({ | ||
| method: reqObj.method, | ||
| url: url, | ||
| form: reqObj.form, | ||
| jar: jar | ||
| }, function(err, res, body) { | ||
| reqObj = _.pick(reqObj, 'method', 'form', 'followRedirect'); | ||
| reqObj.url = url; | ||
| reqObj.jar = jar; | ||
| // console.log(reqObj); | ||
| this.request(reqObj, function(err, res, body) { | ||
| if(err) | ||
@@ -137,3 +139,3 @@ err = err.toString(); | ||
| ' got: ' + res.statusCode + | ||
| ' (for ' + reqObj.method + ' ' + reqObj.path + ')'; | ||
| ' (for ' + reqObj.method + ' ' + reqObj.url + ')'; | ||
| else if(expect._re && !expect._re.test(body)) | ||
@@ -140,0 +142,0 @@ err = 'expected body to match regex: ' + expect._re; |
+2
-2
@@ -20,3 +20,3 @@ var path = require('path'); | ||
| app.post('/run', function(req, res, next) { | ||
| app.post('/job', function(req, res, next) { | ||
| var json = ''; | ||
@@ -46,3 +46,3 @@ req.on('data', function(buffer) { | ||
| app.listen(port, function() { | ||
| console.log("listening on %s...", port); | ||
| console.log("Listening on 'http://localhost:%s'...", port); | ||
| }); |
+1
-1
| { | ||
| "name": "load-tester", | ||
| "version": "0.3.0", | ||
| "version": "0.3.1", | ||
| "description": "A load testing server", | ||
@@ -5,0 +5,0 @@ "main": "server.js", |
+1
-49
@@ -1,49 +0,1 @@ | ||
| /* line 1 : /Users/jpillora/.grunt-sources/ghpages/node_modules/grunt-contrib-stylus/node_modules/stylus/lib/functions/index.styl */ | ||
| /* line 1 : /Users/jpillora/Code/Node/node-load-tester/webui/src/styles/app.styl */ | ||
| body, | ||
| html { | ||
| padding: 0; | ||
| margin: 0; | ||
| width: 100%; | ||
| height: 100%; | ||
| font-family: Courier; | ||
| overflow: hidden; | ||
| } | ||
| /* line 9 : /Users/jpillora/Code/Node/node-load-tester/webui/src/styles/app.styl */ | ||
| *, | ||
| *:before, | ||
| *:after { | ||
| box-sizing: border-box; | ||
| } | ||
| /* line 12 : /Users/jpillora/Code/Node/node-load-tester/webui/src/styles/app.styl */ | ||
| .input { | ||
| border-bottom: thin solid #000; | ||
| } | ||
| /* line 15 : /Users/jpillora/Code/Node/node-load-tester/webui/src/styles/app.styl */ | ||
| .input, | ||
| .output { | ||
| height: 50%; | ||
| } | ||
| /* line 17 : /Users/jpillora/Code/Node/node-load-tester/webui/src/styles/app.styl */ | ||
| .input textarea, | ||
| .output textarea { | ||
| font-family: Courier; | ||
| height: 100%; | ||
| width: 100%; | ||
| padding: 10px; | ||
| border: none; | ||
| } | ||
| /* line 24 : /Users/jpillora/Code/Node/node-load-tester/webui/src/styles/app.styl */ | ||
| .controls { | ||
| position: fixed; | ||
| top: 50%; | ||
| left: 10px; | ||
| margin-top: -10px; | ||
| } | ||
| body,html{padding:0;margin:0;width:100%;height:100%;font-family:Courier;overflow:hidden}*,:before,:after{box-sizing:border-box}.input{border-bottom:thin solid #000}.input,.output{height:50%}.input textarea,.output textarea{font-family:Courier;height:100%;width:100%;padding:10px;border:0}.controls{position:fixed;top:50%;left:10px;margin-top:-10px} |
+2
-23
@@ -1,23 +0,2 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <link rel="stylesheet" href="/css/app.css"> | ||
| </head> | ||
| <body> | ||
| <div class="input"> | ||
| <textarea></textarea> | ||
| </div> | ||
| <div class="output"> | ||
| <textarea readonly="true">Press 'run'</textarea> | ||
| </div> | ||
| <div class="controls"> | ||
| <button>Run</button> | ||
| </div> | ||
| <script> | ||
| var INIT = "{\n \"baseUrl\": \"http://echo.jpillora.com\",\n \"duration\": 5000,\n \"connections\": 1,\n \"sequence\": [\n { \"method\": \"GET\", \"path\": \"/\" },\n { \"method\": \"POST\", \"path\": \"/api/login\", \"form\":{\"username\":\"foo\",\"password\":\"bar\"} },\n { \"method\": \"GET\", \"path\": \"/test/user\" },\n { \"method\": \"GET\", \"path\": \"/logout\" },\n { \"method\": \"GET\", \"path\": \"/test/user\", \"expect\": { \"code\": 404 } }\n ]\n}" | ||
| </script> | ||
| <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> | ||
| <script src="/js/app.js"></script> | ||
| </body> | ||
| </html> | ||
| <!DOCTYPE html><html><head><link rel="stylesheet" href="/css/app.css"></head><body><div class="input"><textarea></textarea></div><div class="output"><textarea readonly="true">Press 'run'</textarea></div><div class="controls"><button>Run</button></div><script>var INIT = "{\n \"baseUrl\": \"http://echo.jpillora.com\",\n \"duration\": 5000,\n \"connections\": 1,\n \"sequence\": [\n { \"method\": \"GET\", \"path\": \"/\" },\n { \"method\": \"POST\", \"path\": \"/api/login\", \"form\":{\"username\":\"foo\",\"password\":\"bar\"} },\n { \"method\": \"GET\", \"path\": \"/test/user\" },\n { \"method\": \"GET\", \"path\": \"/logout\" },\n { \"method\": \"GET\", \"path\": \"/test/user\", \"expect\": { \"code\": 404 } }\n ]\n}" | ||
| </script><script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script><script src="/js/app.js"></script></body></html> |
+1
-37
@@ -1,37 +0,1 @@ | ||
| (function() { | ||
| $(function() { | ||
| var input, output, req; | ||
| input = $(".input textarea"); | ||
| output = $(".output textarea"); | ||
| input.val(INIT); | ||
| req = null; | ||
| return $("button").click(function() { | ||
| var e, json; | ||
| if (req) { | ||
| req.abort(); | ||
| } | ||
| json = input.val(); | ||
| try { | ||
| JSON.parse(json); | ||
| } catch (_error) { | ||
| e = _error; | ||
| output.val("JSON Error: " + e); | ||
| return; | ||
| } | ||
| output.val("loading..."); | ||
| req = $.ajax({ | ||
| type: 'POST', | ||
| url: '/run', | ||
| data: json | ||
| }); | ||
| return req.always(function(result, status) { | ||
| if (status === 'success') { | ||
| return output.val(JSON.stringify(result, null, 2)); | ||
| } else { | ||
| return output.val("Error: " + JSON.stringify(result, null, 2)); | ||
| } | ||
| }); | ||
| }); | ||
| }); | ||
| }).call(this); | ||
| !function(){$(function(){var a,b,c;return a=$(".input textarea"),b=$(".output textarea"),a.val(INIT),c=null,$("button").click(function(){var d,e;c&&c.abort(),e=a.val();try{JSON.parse(e)}catch(f){return d=f,b.val("JSON Error: "+d),void 0}return b.val("loading..."),c=$.ajax({type:"POST",url:"/job",data:e}),c.always(function(a,c){return"success"===c?b.val(JSON.stringify(a,null,2)):b.val("Error: "+JSON.stringify(a,null,2))})})})}.call(this); |
@@ -25,3 +25,3 @@ | ||
| type: 'POST' | ||
| url: '/run' | ||
| url: '/job' | ||
| data: json | ||
@@ -28,0 +28,0 @@ |
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
16148
-6.6%250
-23.78%4
33.33%2
100%