mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	adding function timeout to settings file
adding function timeout to settings file
This commit is contained in:
		
							
								
								
									
										10160
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										10160
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -365,7 +365,7 @@ | |||||||
|             name: {value:"_DEFAULT_"}, |             name: {value:"_DEFAULT_"}, | ||||||
|             func: {value:"\nreturn msg;"}, |             func: {value:"\nreturn msg;"}, | ||||||
|             outputs: {value:1}, |             outputs: {value:1}, | ||||||
|             timeout:{value:0}, |             timeout:{value:RED.settings.functionTimeout}, | ||||||
|             noerr: {value:0,required:true, |             noerr: {value:0,required:true, | ||||||
|                     validate: function(v, opt) { |                     validate: function(v, opt) { | ||||||
|                         if (!v) { |                         if (!v) { | ||||||
|   | |||||||
| @@ -521,7 +521,8 @@ module.exports = function(RED) { | |||||||
|     RED.nodes.registerType("function",FunctionNode, { |     RED.nodes.registerType("function",FunctionNode, { | ||||||
|         dynamicModuleList: "libs", |         dynamicModuleList: "libs", | ||||||
|         settings: { |         settings: { | ||||||
|             functionExternalModules: { value: true, exportable: true } |             functionExternalModules: { value: true, exportable: true }, | ||||||
|  |             functionTimeout: { value:0, exportable: true } | ||||||
|         } |         } | ||||||
|     }); |     }); | ||||||
|     RED.library.register("functions"); |     RED.library.register("functions"); | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								packages/node_modules/node-red/settings.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								packages/node_modules/node-red/settings.js
									
									
									
									
										vendored
									
									
								
							| @@ -468,6 +468,8 @@ module.exports = { | |||||||
|     /** Allow the Function node to load additional npm modules directly */ |     /** Allow the Function node to load additional npm modules directly */ | ||||||
|     functionExternalModules: true, |     functionExternalModules: true, | ||||||
|  |  | ||||||
|  |     /** Default timeout fir function node */ | ||||||
|  |     functionTimeout:0, | ||||||
|     /** The following property can be used to set predefined values in Global Context. |     /** The following property can be used to set predefined values in Global Context. | ||||||
|      * This allows extra node modules to be made available with in Function node. |      * This allows extra node modules to be made available with in Function node. | ||||||
|      * For example, the following: |      * For example, the following: | ||||||
|   | |||||||
| @@ -1449,6 +1449,34 @@ describe('function node', function() { | |||||||
|         }); |         }); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     it('check if default function timeout settings are recognized', function (done) { | ||||||
|  |         RED.settings.functionTimeout = 0.01; | ||||||
|  |         var flow = [{id: "n1",type: "function",timeout: RED.settings.functionTimeout,wires: [["n2"]],func: "while(1==1){};\nreturn msg;"}]; | ||||||
|  |         helper.load(functionNode, flow, function () { | ||||||
|  |             var n1 = helper.getNode("n1"); | ||||||
|  |             n1.receive({ payload: "foo", topic: "bar" }); | ||||||
|  |             setTimeout(function () { | ||||||
|  |                 try { | ||||||
|  |                     helper.log().called.should.be.true(); | ||||||
|  |                     var logEvents = helper.log().args.filter(function (evt) { | ||||||
|  |                         return evt[0].type == "function"; | ||||||
|  |                     }); | ||||||
|  |                     logEvents.should.have.length(1); | ||||||
|  |                     var msg = logEvents[0][0]; | ||||||
|  |                     msg.should.have.property('level', helper.log().ERROR); | ||||||
|  |                     msg.should.have.property('id', 'n1'); | ||||||
|  |                     msg.should.have.property('type', 'function'); | ||||||
|  |                     should.equal(RED.settings.functionTimeout, 0.01); | ||||||
|  |                     should.equal(msg.msg.message, 'Script execution timed out after 10ms'); | ||||||
|  |                     delete RED.settings.functionTimeout; | ||||||
|  |                     done(); | ||||||
|  |                 } catch (err) { | ||||||
|  |                     done(err); | ||||||
|  |                 } | ||||||
|  |             }, 500); | ||||||
|  |         }); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|     describe("finalize function", function() { |     describe("finalize function", function() { | ||||||
|  |  | ||||||
|         it('should execute', function(done) { |         it('should execute', function(done) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user