| /** @file |
| |
| A test plugin header for testing Plugin's Dynamic Shared Objects (DSO) |
| |
| @section license License |
| |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| @section details Details |
| |
| Implements code necessary for Reverse Proxy which mostly consists of |
| general purpose hostname substitution in URLs. |
| |
| */ |
| |
| #pragma once |
| |
| #include <map> |
| #include <string> |
| #include <iostream> |
| |
| #include <stdio.h> |
| #include <stdarg.h> |
| |
| #include "../PluginFactory.h" |
| |
| extern thread_local PluginThreadContext *pluginThreadContext; |
| |
| /* A temp sandbox to play with our toys used for all fun with this test-bench */ |
| fs::path getTemporaryDir(); |
| |
| class PluginDebugObject |
| { |
| public: |
| PluginDebugObject() { clear(); } |
| |
| void |
| clear() |
| { |
| contextInit = nullptr; |
| contextInitInstance = nullptr; |
| doRemapCalled = 0; |
| initCalled = 0; |
| doneCalled = 0; |
| initInstanceCalled = 0; |
| deleteInstanceCalled = 0; |
| preReloadConfigCalled = 0; |
| postReloadConfigCalled = 0; |
| postReloadConfigStatus = TSREMAP_CONFIG_RELOAD_FAILURE; |
| ih = nullptr; |
| argc = 0; |
| argv = nullptr; |
| } |
| |
| /* Input fields used to set the test behavior of the plugin call-backs */ |
| bool fail = false; /* tell the plugin call-back to fail for testing purposuses */ |
| void *input_ih; /* the value to be returned by the plugin instance init function */ |
| |
| /* Output fields showing what happend during the test */ |
| const PluginThreadContext *contextInit = nullptr; /* plugin initialization context */ |
| const PluginThreadContext *contextInitInstance = nullptr; /* plugin instance initialization context */ |
| int doRemapCalled = 0; /* mark if remap was called */ |
| int initCalled = 0; /* mark if plugin init was called */ |
| int doneCalled = 0; /* mark if done was called */ |
| int initInstanceCalled = 0; /* mark if instance init was called */ |
| int deleteInstanceCalled = 0; /* mark if delete instance was called */ |
| int preReloadConfigCalled = 0; /* mark if pre-reload config was called */ |
| int postReloadConfigCalled = 0; /* mark if post-reload config was called */ |
| TSRemapReloadStatus postReloadConfigStatus = TSREMAP_CONFIG_RELOAD_FAILURE; /* mark if plugin reload status is passed correctly */ |
| void *ih = nullptr; /* instance handler */ |
| int argc = 0; /* number of plugin instance parameters received by the plugin */ |
| char **argv = nullptr; /* plugin instance parameters received by the plugin */ |
| }; |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| typedef void *GetPluginDebugObjectFunction(void); |
| GetPluginDebugObjectFunction getPluginDebugObjectTest; |
| |
| #define Debug(category, fmt, ...) PrintToStdErr("(%s) %s:%d:%s() " fmt "\n", category, __FILE__, __LINE__, __func__, ##__VA_ARGS__) |
| #define Error(fmt, ...) PrintToStdErr("%s:%d:%s() " fmt "\n", __FILE__, __LINE__, __func__, ##__VA_ARGS__) |
| void PrintToStdErr(const char *fmt, ...); |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |