osquery-1/tests/test_util.h

77 lines
2.5 KiB
C
Raw Normal View History

/**
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under both the Apache 2.0 license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
* You may select, at your option, one of the above-listed licenses.
*/
#pragma once
#include <string>
#include <utility>
#include <vector>
#include <osquery/config/config.h>
#include <osquery/core.h>
#include <osquery/database.h>
#include <osquery/events.h>
#include <osquery/filesystem/filesystem.h>
namespace osquery {
/// The following codes are specifically for checking whether the child worker
/// or extension process ran successfully. These values should be the values
/// captured as exit codes if all the child process checks complete without
/// deviation.
#define EXTENSION_SUCCESS_CODE 0x45
#define WORKER_SUCCESS_CODE 0x57
/// The following are error codes returned by the child process.
#define ERROR_COMPARE_ARGUMENT (-1)
#define ERROR_LAUNCHER_PROCESS (-2)
#define ERROR_QUERY_PROCESS_IMAGE (-3)
#define ERROR_IMAGE_NAME_LENGTH (-4)
#define ERROR_LAUNCHER_MISMATCH (-5)
/// Init function for tests and benchmarks.
void initTesting();
/// Cleanup/stop function for tests and benchmarks.
void shutdownTesting();
/// A fake directory tree should be used for filesystem iterator testing.
const std::string kFakeDirectoryName{"fstree"};
/// Tests can be run from within the source or build directory.
/// The test initializer will attempt to discovery the current working path.
extern std::string kTestDataPath;
/// Tests should limit intermediate input/output to a working directory.
/// Config data, logging results, and intermediate database/caching usage.
extern std::string kTestWorkingDirectory;
extern std::string kFakeDirectory;
/// Stores the path of the currently executing executable
extern std::string kProcessTestExecPath;
/// This is the expected module name of the launcher process.
extern const char* kOsqueryTestModuleName;
/// These are the expected arguments for our test worker process.
extern const char* kExpectedWorkerArgs[];
extern const size_t kExpectedWorkerArgsCount;
/// These are the expected arguments for our test extensions process.
extern const char* kExpectedExtensionArgs[];
extern const size_t kExpectedExtensionArgsCount;
ScheduledQuery getOsqueryScheduledQuery();
// Helper function to generate all rows from a generator-based table.
TableRows genRows(EventSubscriberPlugin* sub);
} // namespace osquery