diff --git a/producer/event_monitor_producer/CMakeLists.txt b/producer/event_monitor_producer/CMakeLists.txt index 1cfcdbed87e6ebe8a37bb711157b27bc617220ee..3e6f92c394e609702c103ede3892cb73ecd1f03e 100644 --- a/producer/event_monitor_producer/CMakeLists.txt +++ b/producer/event_monitor_producer/CMakeLists.txt @@ -1,10 +1,17 @@ set(TARGET_NAME event-monitor-producer) set(SOURCE_FILES - src/event_detector.cpp src/eventmon_config.cpp src/eventmon_logger.cpp src/event_detector_factory.cpp - src/inotify_event_detector.cpp) + src/folder_event_detector.cpp +) + +IF(WIN32) + set(SOURCE_FILES ${SOURCE_FILES} src/system_folder_watch_windows.cpp) +ELSEIF(UNIX) + set(SOURCE_FILES ${SOURCE_FILES} src/system_folder_watch_linux.cpp) +ENDIF(WIN32) + ################################ @@ -43,6 +50,7 @@ set(TEST_SOURCE_FILES unittests/test_eventmon_config.cpp unittests/mock_eventmon_config.cpp unittests/test_event_detector_factory.cpp + unittests/test_folder_event_detector.cpp ) set(TEST_LIBRARIES "${TARGET_NAME}") diff --git a/producer/event_monitor_producer/src/event_detector.cpp b/producer/event_monitor_producer/src/event_detector.cpp deleted file mode 100644 index f667dbbb4c1d49cb16bf9d59d497398dd56737d5..0000000000000000000000000000000000000000 --- a/producer/event_monitor_producer/src/event_detector.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "event_detector.h" - -namespace asapo { - -} \ No newline at end of file diff --git a/producer/event_monitor_producer/src/event_detector_factory.cpp b/producer/event_monitor_producer/src/event_detector_factory.cpp index 8933c2cb772504d8f888037bb20c5fc884f71a3c..4658cbc8a168de385ebe27064dd5396b9bae5d13 100644 --- a/producer/event_monitor_producer/src/event_detector_factory.cpp +++ b/producer/event_monitor_producer/src/event_detector_factory.cpp @@ -1,13 +1,13 @@ #include "event_detector_factory.h" #include "eventmon_config.h" -#include "inotify_event_detector.h" +#include "folder_event_detector.h" namespace asapo { EventDetector EventDetectorFactory::CreateEventDetector() { auto config = GetEventMonConfig(); - return EventDetector{new InotifyEventDetector(config)}; + return EventDetector{new FolderEventDetector(config)}; } } \ No newline at end of file diff --git a/producer/event_monitor_producer/src/folder_event_detector.cpp b/producer/event_monitor_producer/src/folder_event_detector.cpp new file mode 100644 index 0000000000000000000000000000000000000000..833d508b4f3c7aa23f9453262c83f134bae48f0b --- /dev/null +++ b/producer/event_monitor_producer/src/folder_event_detector.cpp @@ -0,0 +1,15 @@ +#include "folder_event_detector.h" +#include "io/io_factory.h" +#include "eventmon_logger.h" + +namespace asapo { + +Error FolderEventDetector::GetNextEvent(EventHeader* event_header) { + return nullptr; +} +FolderEventDetector::FolderEventDetector(const EventMonConfig* config) : system_folder_watch__{new SystemFolderWatch()}, +log__{GetDefaultEventMonLogger()}, config_{config}{ + +} + +} \ No newline at end of file diff --git a/producer/event_monitor_producer/src/inotify_event_detector.h b/producer/event_monitor_producer/src/folder_event_detector.h similarity index 52% rename from producer/event_monitor_producer/src/inotify_event_detector.h rename to producer/event_monitor_producer/src/folder_event_detector.h index 37bd1f2ec6a93c9a09c62f6ab030f032983af13c..1d0901e582c48b8529b7cf66e5752ea8ec6ba380 100644 --- a/producer/event_monitor_producer/src/inotify_event_detector.h +++ b/producer/event_monitor_producer/src/folder_event_detector.h @@ -3,13 +3,19 @@ #include "event_detector.h" #include "eventmon_config.h" +#include "io/io.h" +#include "logger/logger.h" + +#include "system_folder_watch.h" namespace asapo { -class InotifyEventDetector : public AbstractEventDetector { +class FolderEventDetector : public AbstractEventDetector { public: Error GetNextEvent(EventHeader* event_header) override; - InotifyEventDetector(const EventMonConfig* config); + FolderEventDetector(const EventMonConfig* config); + std::unique_ptr<SystemFolderWatch> system_folder_watch__; + const AbstractLogger* log__; private: const EventMonConfig* config_; }; diff --git a/producer/event_monitor_producer/src/inotify_event_detector.cpp b/producer/event_monitor_producer/src/inotify_event_detector.cpp deleted file mode 100644 index 7806035c608e07e4137b3fabc3193086197040a2..0000000000000000000000000000000000000000 --- a/producer/event_monitor_producer/src/inotify_event_detector.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "inotify_event_detector.h" - -namespace asapo { - -Error InotifyEventDetector::GetNextEvent(EventHeader* event_header) { - return nullptr; -} -InotifyEventDetector::InotifyEventDetector(const EventMonConfig* config) : config_{config} { -} - -} \ No newline at end of file diff --git a/producer/event_monitor_producer/src/system_folder_watch.h b/producer/event_monitor_producer/src/system_folder_watch.h new file mode 100644 index 0000000000000000000000000000000000000000..e81687f5cccaeb10620a61514c10d8af734385af --- /dev/null +++ b/producer/event_monitor_producer/src/system_folder_watch.h @@ -0,0 +1,13 @@ +#ifndef ASAPO_SYSTEM_FODLER_WATCH_H +#define ASAPO_SYSTEM_FODLER_WATCH_H + +#ifdef _WIN32 +#include "system_folder_watch_windows.h" +#endif + +#if defined(__linux__) || defined (__APPLE__) +#include "system_folder_watch_linux.h" +#endif + + +#endif //ASAPO_SYSTEM_FODLER_WATCH_H diff --git a/producer/event_monitor_producer/src/system_folder_watch_linux.cpp b/producer/event_monitor_producer/src/system_folder_watch_linux.cpp new file mode 100644 index 0000000000000000000000000000000000000000..57291cf353d74f5d4c06fc8b314f05eb0d5f9a50 --- /dev/null +++ b/producer/event_monitor_producer/src/system_folder_watch_linux.cpp @@ -0,0 +1,5 @@ +#include "system_folder_watch_linux.h" + +namespace asapo { + +} \ No newline at end of file diff --git a/producer/event_monitor_producer/src/system_folder_watch_linux.h b/producer/event_monitor_producer/src/system_folder_watch_linux.h new file mode 100644 index 0000000000000000000000000000000000000000..e948f1aa3d73c647c3d856d922d8b21bba4ae8fc --- /dev/null +++ b/producer/event_monitor_producer/src/system_folder_watch_linux.h @@ -0,0 +1,12 @@ +#ifndef ASAPO_SYSTEM_FOLDER_WATCH_LINUX_H +#define ASAPO_SYSTEM_FOLDER_WATCH_LINUX_H + +namespace asapo { + +class SystemFolderWatch { + +}; + +} + +#endif //ASAPO_SYSTEM_FOLDER_WATCH_LINUX_H diff --git a/producer/event_monitor_producer/src/system_folder_watch_windows.cpp b/producer/event_monitor_producer/src/system_folder_watch_windows.cpp new file mode 100644 index 0000000000000000000000000000000000000000..57291cf353d74f5d4c06fc8b314f05eb0d5f9a50 --- /dev/null +++ b/producer/event_monitor_producer/src/system_folder_watch_windows.cpp @@ -0,0 +1,5 @@ +#include "system_folder_watch_linux.h" + +namespace asapo { + +} \ No newline at end of file diff --git a/producer/event_monitor_producer/src/system_folder_watch_windows.h b/producer/event_monitor_producer/src/system_folder_watch_windows.h new file mode 100644 index 0000000000000000000000000000000000000000..655b402bd84663c5244526bd6d2cef232acdea5a --- /dev/null +++ b/producer/event_monitor_producer/src/system_folder_watch_windows.h @@ -0,0 +1,12 @@ +#ifndef ASAPO_SYSTEM_FOLDER_WATCH_WINDOWS_H +#define ASAPO_SYSTEM_FOLDER_WATCH_WINDOWS_H + +namespace asapo { + +class SystemFolderWatch { + +}; + +} + +#endif //ASAPO_SYSTEM_FOLDER_WATCH_WINDOWS_H diff --git a/producer/event_monitor_producer/unittests/MockSystemFolderWatch.h b/producer/event_monitor_producer/unittests/MockSystemFolderWatch.h new file mode 100644 index 0000000000000000000000000000000000000000..e79d9951d532b7a4b2e790e75417255ce22248fe --- /dev/null +++ b/producer/event_monitor_producer/unittests/MockSystemFolderWatch.h @@ -0,0 +1,17 @@ +#ifndef ASAPO_MOCKSYSTEMFOLDERWATCH_H +#define ASAPO_MOCKSYSTEMFOLDERWATCH_H + +#include <gtest/gtest.h> +#include <gmock/gmock.h> + +#include "../src/system_folder_watch.h" + +namespace asapo { + +class MockSystemFolderWatch : public SystemFolderWatch { +}; + +} + + +#endif //ASAPO_MOCKSYSTEMFOLDERWATCH_H diff --git a/producer/event_monitor_producer/unittests/test_event_detector_factory.cpp b/producer/event_monitor_producer/unittests/test_event_detector_factory.cpp index da5b075e79ea14bbf538dc5db9e48370ba725eb1..cbc59002933a3b78f56bae01b71de93e1206e0ec 100644 --- a/producer/event_monitor_producer/unittests/test_event_detector_factory.cpp +++ b/producer/event_monitor_producer/unittests/test_event_detector_factory.cpp @@ -4,7 +4,7 @@ #include "eventmon_mocking.h" #include "mock_eventmon_config.h" #include "../src/event_detector_factory.h" -#include "../src/inotify_event_detector.h" +#include "../src/folder_event_detector.h" using ::testing::Test; using ::testing::_; @@ -34,7 +34,7 @@ class FactoryTests : public Test { TEST_F(FactoryTests, CreateDetector) { auto event_detector = factory.CreateEventDetector(); - ASSERT_THAT(dynamic_cast<asapo::InotifyEventDetector*>(event_detector.get()), Ne(nullptr)); + ASSERT_THAT(dynamic_cast<asapo::FolderEventDetector*>(event_detector.get()), Ne(nullptr)); } } diff --git a/producer/event_monitor_producer/unittests/test_folder_event_detector.cpp b/producer/event_monitor_producer/unittests/test_folder_event_detector.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d8d0e2ff67f2eee280ddd1a5cda9f36266e750ce --- /dev/null +++ b/producer/event_monitor_producer/unittests/test_folder_event_detector.cpp @@ -0,0 +1,79 @@ +#include <gtest/gtest.h> +#include <gmock/gmock.h> + +#include "../src/folder_event_detector.h" + +#include "unittests/MockIO.h" +#include "unittests/MockLogger.h" + +#include "MockSystemFolderWatch.h" + + + +using ::testing::Return; +using ::testing::_; +using ::testing::DoAll; +using ::testing::SetArgReferee; +using ::testing::SetArgPointee; +using ::testing::Gt; +using ::testing::Eq; +using ::testing::Ne; +using ::testing::Mock; +using ::testing::InSequence; +using ::testing::HasSubstr; + + +using ::asapo::Error; +using ::asapo::FileDescriptor; +using ::asapo::ErrorInterface; + +using asapo::FolderEventDetector; + +namespace { + + +TEST(FolderEventDetector, Constructor) { + asapo::EventMonConfig test_config; + FolderEventDetector detector{&test_config}; + ASSERT_THAT(dynamic_cast<asapo::SystemFolderWatch*>(detector.system_folder_watch__.get()), Ne(nullptr)); +} + + +class FolderEventDetectorTests : public testing::Test { + public: + Error err; + ::testing::NiceMock<asapo::MockLogger> mock_logger; + ::testing::NiceMock<asapo::MockSystemFolderWatch> mock_system_folder_watch; + asapo::EventMonConfig test_config; + FolderEventDetector detector{&test_config}; + std::vector<std::string> expected_folders{"test1","test2"}; + void SetUp() override { +// test_config.expected_folders = expected_folders; + err = nullptr; + detector.system_folder_watch__ = std::unique_ptr<asapo::SystemFolderWatch> {&mock_system_folder_watch}; + detector.log__ = &mock_logger; + } + void TearDown() override { + detector.system_folder_watch__.release(); + } + + +}; + +TEST_F(FolderEventDetectorTests, GetNextEventCallsGetFolderEvents) { + +// EXPECT_CALL(mock_system_folder_watch, StartFolderMonitor_t(expected_folders, receiver.kMaxUnacceptedConnectionsBacklog, _)) +// .WillOnce(DoAll( +// SetArgPointee<2>(asapo::IOErrorTemplates::kUnknownIOError.Generate().release()), +// Return(0) +// )); + + //EXPECT_CALL(mock_logger, Error(HasSubstr("prepare listener"))); + + +// ASSERT_THAT(err, Eq(asapo::IOErrorTemplates::kUnknownIOError)); +} + +} + +