def before_request(self, request, req_body): execution_context = wrapper_utils.create_execution_context() execution_context.platform_data["request"] = request execution_context.platform_data["request"]["body"] = req_body self.plugin_context.request_count += 1 self.execute_hook("before:invocation", execution_context) return execution_context
def before_request(self, request): # Execution context initialization execution_context = wrapper_utils.create_execution_context() execution_context.platform_data['request'] = request # Execute plugin hooks before running user's handler self.plugin_context.request_count += 1 self.execute_hook('before:invocation', execution_context) return execution_context
def mock_before_request(self, request, req_body): ExecutionContextManager.set_provider(TracingExecutionContextProvider()) execution_context = wrapper_utils.create_execution_context() execution_context.platform_data["request"] = request execution_context.platform_data["request"]["body"] = req_body self.plugin_context.request_count += 1 self.execute_hook("before:invocation", execution_context) assert execution_context.root_span.operation_name == '/1' assert execution_context.root_span.get_tag('http.method') == 'GET' assert execution_context.root_span.get_tag('http.host') == 'testserver' assert execution_context.root_span.get_tag('http.query_params') == b'' assert execution_context.root_span.get_tag('http.path') == '/1' assert execution_context.root_span.class_name == constants.ClassNames[ 'FASTAPI'] assert execution_context.root_span.domain_name == 'API' return execution_context
def wrapper(event, context): application_name = self.plugin_context.application_info.get( 'applicationName') self.application_info_provider.update({ 'applicationId': LambdaApplicationInfoProvider.get_application_id( context, application_name=application_name) }) # Execution context initialization execution_context = wrapper_utils.create_execution_context() try: execution_context.platform_data[ 'originalEvent'] = copy.deepcopy(event) except: execution_context.platform_data['originalEvent'] = event execution_context.platform_data['originalContext'] = context ExecutionContextManager.set(execution_context) # Before running user's handler try: if ConfigProvider.get( config_names.THUNDRA_LAMBDA_WARMUP_WARMUPAWARE, False) and self.check_and_handle_warmup_request(event): return None self.plugin_context.request_count += 1 self.execute_hook('before:invocation', execution_context) timeout_duration = self.get_timeout_duration(context) except Exception as e: logger.error( "Error during the before part of Thundra: {}".format(e)) return original_func(event, context) # Invoke user handler try: response = None with Timeout(timeout_duration, self.timeout_handler, execution_context): if ConfigProvider.get( config_names.THUNDRA_LAMBDA_DEBUGGER_ENABLE, ConfigProvider.get( config_names.THUNDRA_LAMBDA_DEBUGGER_AUTH_TOKEN )) and self.ptvsd_imported: self.start_debugger_tracing(context) response = original_func(event, context) execution_context.response = response except Exception as e: try: execution_context.error = { 'type': type(e).__name__, 'message': str(e), 'traceback': traceback.format_exc() } self.prepare_and_send_reports(execution_context) except Exception as e_in: logger.error( "Error during the after part of Thundra: {}".format( e_in)) pass raise e finally: if ConfigProvider.get( config_names.THUNDRA_LAMBDA_DEBUGGER_ENABLE, ConfigProvider.get( config_names.THUNDRA_LAMBDA_DEBUGGER_AUTH_TOKEN) ) and self.ptvsd_imported: self.stop_debugger_tracing() # After having run the user's handler try: self.prepare_and_send_reports(execution_context) except Exception as e: logger.error( "Error during the after part of Thundra: {}".format(e)) ExecutionContextManager.clear() return response