osquery-1/osquery/events/events_database_tests.cpp
2014-10-03 11:30:51 -07:00

77 lines
2.2 KiB
C++

// Copyright 2004-present Facebook. All Rights Reserved.
#include <boost/filesystem/operations.hpp>
#include <gtest/gtest.h>
#include "osquery/events.h"
#include "osquery/core/test_util.h"
const std::string kTestingEventsDBPath = "/tmp/rocksdb-osquery-testevents";
namespace osquery {
class EventsDatabaseTests : public ::testing::Test {
public:
void SetUp() {
// Setup a testing DB instance
DBHandle::getInstanceAtPath(kTestingEventsDBPath);
}
};
class FakeEventSubscriber : public EventSubscriber {
DECLARE_EVENTSUBSCRIBER(FakeEventSubscriber, FakeEventPublisher);
public:
Status testAdd(int i) {
Row r;
r["testing"] = "hello from space";
return add(r, i);
}
};
class FakeEventPublisher : public EventPublisher {
DECLARE_EVENTPUBLISHER(FakeEventPublisher, SubscriptionContext, EventContext);
};
class AnotherFakeEventSubscriber : public EventSubscriber {
DECLARE_EVENTSUBSCRIBER(AnotherFakeEventSubscriber, FakeEventPublisher);
};
TEST_F(EventsDatabaseTests, test_event_module_id) {
auto fake_event_module = FakeEventSubscriber::getInstance();
// Not normally available outside of EventSubscriber->Add().
auto event_id1 = fake_event_module->getEventID();
EXPECT_EQ(event_id1, "1");
auto event_id2 = fake_event_module->getEventID();
EXPECT_EQ(event_id2, "2");
}
TEST_F(EventsDatabaseTests, test_unique_event_module_id) {
auto fake_event_module = FakeEventSubscriber::getInstance();
auto another_fake_event_module = AnotherFakeEventSubscriber::getInstance();
// Not normally available outside of EventSubscriber->Add().
auto event_id1 = fake_event_module->getEventID();
EXPECT_EQ(event_id1, "3");
auto event_id2 = another_fake_event_module->getEventID();
EXPECT_EQ(event_id2, "1");
}
TEST_F(EventsDatabaseTests, test_event_add) {
Row r;
r["testing"] = std::string("hello from space");
size_t event_time = 10;
auto fake_event_module = FakeEventSubscriber::getInstance();
auto status = fake_event_module->testAdd(1);
EXPECT_TRUE(status.ok());
}
}
int main(int argc, char* argv[]) {
testing::InitGoogleTest(&argc, argv);
int status = RUN_ALL_TESTS();
boost::filesystem::remove_all(kTestingEventsDBPath);
return status;
}