public object Post([FromBody] object data) { if (Request.Body.CanSeek) { Request.Body.Position = 0; } return(_invoker.Execute(_function, Request)); }
public object Execute() { logger.LogInformation("{0}: Function Started. HTTP Method: {1}, Path: {2}.", DateTime.Now.ToString(), Request.Method, Request.Path); Event @event = null; Context context = null; try { (@event, context) = parameterHandler.GetFunctionParameters(Request); var cancellationSource = new CancellationTokenSource(); var output = invoker.Execute(cancellationSource, @event, context); logger.LogInformation("{0}: Function Executed. HTTP response: {1}.", DateTime.Now.ToString(), 200); LogMetrics(context, 200); return(output); } catch (OperationCanceledException exception) { logger.LogError(exception, "{0}: Function Cancelled. HTTP Response: {1}. Reason: {2}.", DateTime.Now.ToString(), 408, "Timeout"); LogMetrics(context, 408); return(new StatusCodeResult(408)); } catch (Exception exception) { logger.LogCritical(exception, "{0}: Function Corrupted. HTTP Response: {1}. Reason: {2}.", DateTime.Now.ToString(), 500, exception.Message); LogMetrics(context, 500); return(new StatusCodeResult(500)); } }
public object Execute() { Console.WriteLine("{0}: Function Started. HTTP Method: {1}, Path: {2}.", DateTime.Now.ToString(), Request.Method, Request.Path); try { (Event _event, Context _context) = _parameterManager.GetFunctionParameters(Request); CancellationTokenSource _cancellationSource = new CancellationTokenSource(); var output = _invoker.Execute(_function, _cancellationSource, _event, _context); Console.WriteLine("{0}: Function Executed. HTTP response: {1}.", DateTime.Now.ToString(), 200); return(output); } catch (OperationCanceledException) { Console.WriteLine("{0}: Function Cancelled. HTTP Response: {1}. Reason: {2}.", DateTime.Now.ToString(), 408, "Timeout"); return(new StatusCodeResult(408)); } catch (Exception ex) { Console.WriteLine("{0}: Function Corrupted. HTTP Response: {1}. Reason: {2}.", DateTime.Now.ToString(), 500, ex.Message); throw; } }
public async Task <object> Execute() { _logger.LogInformation($"{DateTime.Now}: Function Started. HTTP Method: {Request.Method}, Path: {Request.Path}."); Event @event = null; Context context = null; try { (@event, context) = await _parameterHandler.GetFunctionParameters(Request); object output; var durationMetrics = DurationSeconds.WithLabels(context.ModuleName, context.FunctionName, context.Runtime); using (durationMetrics.NewTimer()) { output = await _invoker.Execute(@event, context); } _logger.LogInformation($"{DateTime.Now}: Function Executed. HTTP response: 200."); LogMetrics(context, 200); return(output); } catch (OperationCanceledException exception) { _logger.LogError(exception, $"{DateTime.Now}: Function Cancelled. HTTP Response: 408. Reason: Timeout."); LogMetrics(context, 408); return(new StatusCodeResult(408)); } catch (Exception exception) { _logger.LogCritical(exception, $"{DateTime.Now}: Function Corrupted. HTTP Response: 500. Reason: {exception.Message}."); LogMetrics(context, 500); return(new StatusCodeResult(500)); } }
private object CallFunction() { if (!_function.IsCompiled()) { _compiler.Compile(_function); } return(_invoker.Execute(_function, Request)); }
public void RunWithExecutionTimeGreaterThanTimeout(string language, string functionFileName, string moduleName, string functionHandler, int durationTime, int timeout) { // Arrange IInvoker invoker = InvokerFactory.GetFunctionInvoker(language, functionFileName, moduleName, functionHandler, timeout); Event @event = new Event(durationTime); Context context = new Context(); //Assert Assert.ThrowsAsync <OperationCanceledException>(async() => await invoker.Execute(@event, context)); }
public void InvokeRegularFunction(string language, string functionFileName, string moduleName, string functionHandler) { // Arrange IInvoker invoker = InvokerFactory.GetFunctionInvoker(language, functionFileName, moduleName, functionHandler); Event @event = new Event(); Context context = new Context(); CancellationTokenSource token = new CancellationTokenSource(); // Act object result = invoker.Execute(token, @event, context); // Assert }
public async void RunWithoutTimeout(string language, string functionFileName, string moduleName, string functionHandler, int durationTime, int timeout) { // Arrange IInvoker invoker = InvokerFactory.GetFunctionInvoker(language, functionFileName, moduleName, functionHandler, timeout); Event @event = new Event(durationTime); Context context = new Context(); // Act object result = await invoker.Execute(@event, context); // Assert Assert.Equal("This is a long run!", result.ToString()); }
public void InvokeRegularFunctionWithData(string language, string functionFileName, string moduleName, string functionHandler) { // Arrange string inputData = "expected returned message"; IInvoker invoker = InvokerFactory.GetFunctionInvoker(language, functionFileName, moduleName, functionHandler); Event @event = new Event(inputData); Context context = new Context(); CancellationTokenSource token = new CancellationTokenSource(); // Act object result = invoker.Execute(token, @event, context); // Assert Assert.Equal(inputData, result.ToString()); }
public void RunWithoutTimeout(string language, string functionFileName, string moduleName, string functionHandler, int durationTime, int timeoutSeconds) { // Arrange int sleepTime = durationTime; int timeout = timeoutSeconds * 1000; IInvoker invoker = InvokerFactory.GetFunctionInvoker(language, functionFileName, moduleName, functionHandler, timeout); Event @event = new Event(sleepTime); Context context = new Context(); CancellationTokenSource token = new CancellationTokenSource(); // Act object result = invoker.Execute(token, @event, context); // Assert Assert.Equal("This is a long run!", result.ToString()); }
public void RunWithExecutionTimeGreaterThanTimeout(string language, string functionFileName, string moduleName, string functionHandler, int durationTime, int timeoutSeconds) { // Arrange int sleepTime = durationTime * 1000; int timeout = timeoutSeconds * 1000; IInvoker invoker = InvokerFactory.GetFunctionInvoker(language, functionFileName, moduleName, functionHandler, timeout); Event @event = new Event(sleepTime); Context context = new Context(); CancellationTokenSource token = new CancellationTokenSource(); // Act Action timeoutAction = () => { object result = invoker.Execute(token, @event, context); }; //Assert Assert.Throws <OperationCanceledException>(timeoutAction); }