blob: 8672a362e5cc154aa8671d2e86a7dd5ab554b3b4 [file] [log] [blame]
/**
* 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.
*/
#ifndef APACHE_HTRACE_TEST_MINI_HTRACED_H
#define APACHE_HTRACE_TEST_MINI_HTRACED_H
/**
* @file mini_htraced.h
*
* Implements a mini htraced cluster which can be used in unit tests.
*
* This is useful for testing the htraced trace sink of the native client.
*
* This is an internal header, not intended for external use.
*/
#include <stdint.h> /* for uint64_t, etc. */
#include <unistd.h> /* for pid_t and size_t */
struct htrace_conf;
#define NUM_DATA_DIRS 2
struct mini_htraced_params {
/**
* The name of the mini htraced process to start.
* This shows up in the test directory name and some other places.
* The memory should be managed by the caller.
*/
const char *name;
/**
* The configuration to use, in string form.
* The memory should be managed by the caller.
*/
const char *confstr;
};
struct mini_htraced {
/**
* The process ID of the mini htraced.
*/
int pid;
/**
* The path to the root directory that all the state associated with this
* mini_htraced will be placed under. Malloced.
*/
char *root_dir;
/**
* Paths to the data directories to use for htraced. Malloced.
*/
char *data_dir[NUM_DATA_DIRS];
/**
* Path to the server's log file. Malloced.
*/
char *htraced_log_path;
/**
* Path to the server's conf file. Malloced.
*/
char *htraced_conf_path;
/**
* The client configuration defaults. Malloced.
*/
char *client_conf_defaults;
/**
* The startup notification port.
*/
int snport;
/**
* The startup notification socket, or -1 if the socket has been closed.
*/
int snsock;
/**
* Nonzero if the htraced pid is valid.
*/
int htraced_pid_valid;
/**
* The process ID of the htraced pid.
*/
pid_t htraced_pid;
/**
* The HTTP address of the htraced, in hostname:port format.
*/
char *htraced_http_addr;
/**
* The HRPC address of the htraced, in hostname:port format.
*/
char *htraced_hrpc_addr;
/**
* The number of htrace commands that have been run.
*/
uint64_t num_htrace_commands_run;
};
/**
* Build the mini HTraced cluster.
*
* @param params The parameters to use.
* @param ht (out param) The mini htraced object on success.
* @param err (out param) The error message if there was an
* error.
* @param err_len The length of the error buffer provided by the
* caller.
*/
void mini_htraced_build(const struct mini_htraced_params *params, struct mini_htraced **ht,
char *err, size_t err_len);
/**
* Stop the htraced process.
*
* @param ht The mini htraced object.
*/
void mini_htraced_stop(struct mini_htraced *ht);
/**
* Free the memory associated with the mini htraced object.
*
* @param ht The mini htraced object.
*/
void mini_htraced_free(struct mini_htraced *ht);
/**
* Dump the spans contained in this htraced instance to a file.
*
* @param ht The mini htraced object.
* @param err (out param) The error message if there was an
* error.
* @param err_len The length of the error buffer provided by the
* caller.
* @param path The path to dump the spans to, in json form.
*/
void mini_htraced_dump_spans(struct mini_htraced *ht,
char *err, size_t err_len,
const char *path);
#endif
// vim: ts=4:sw=4:tw=79:et