blob: f96c42031cfd22bc112560bf11efd2f5e907bdfa [file] [log] [blame]
/** @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 */