Ejemplo n.º 1
0
TEST_F(INotifyTests, test_inotify_recursion) {
  // Create a non-registered publisher and subscriber.
  auto pub = std::make_shared<INotifyEventPublisher>(true);
  EventFactory::registerEventPublisher(pub);
  auto sub = std::make_shared<TestINotifyEventSubscriber>();

  // Create a mock directory structure.
  createMockFileStructure();

  // Create and test several subscriptions.
  auto sc = sub->createSubscriptionContext();

  sc->path = kFakeDirectory + "/*";
  sub->subscribe(&TestINotifyEventSubscriber::Callback, sc);
  // Trigger a configure step manually.
  pub->configure();

  // Expect a single monitor on the root of the fake tree.
  EXPECT_EQ(pub->path_descriptors_.size(), 1U);
  EXPECT_EQ(pub->path_descriptors_.count(kFakeDirectory + "/"), 1U);
  RemoveAll(pub);

  // Make sure monitors are empty.
  EXPECT_EQ(pub->numDescriptors(), 0U);

  auto sc2 = sub->createSubscriptionContext();
  sc2->path = kFakeDirectory + "/**";
  sub->subscribe(&TestINotifyEventSubscriber::Callback, sc2);
  pub->configure();

  // Expect only the directories to be monitored.
  EXPECT_EQ(pub->path_descriptors_.size(), 11U);
  RemoveAll(pub);

  // Use a directory structure that includes a loop.
  boost::system::error_code ec;
  fs::create_symlink(kFakeDirectory, kFakeDirectory + "/link", ec);

  auto sc3 = sub->createSubscriptionContext();
  sc3->path = kFakeDirectory + "/**";
  sub->subscribe(&TestINotifyEventSubscriber::Callback, sc3);
  pub->configure();

  // Also expect canonicalized resolution (to prevent loops).
  EXPECT_EQ(pub->path_descriptors_.size(), 11U);
  RemoveAll(pub);

  // Remove mock directory structure.
  tearDownMockFileStructure();
  EventFactory::deregisterEventPublisher("inotify");
}
Ejemplo n.º 2
0
 void TearDown() { tearDownMockFileStructure(); }
Ejemplo n.º 3
0
TEST_F(ExtensionsTest, test_extension_module_search) {
  createMockFileStructure();
  EXPECT_FALSE(loadModules(kFakeDirectory + "/root.txt"));
  EXPECT_FALSE(loadModules("/dir/does/not/exist"));
  tearDownMockFileStructure();
}
Ejemplo n.º 4
0
 void TearDown() override { tearDownMockFileStructure(); }
Ejemplo n.º 5
0
TEST_F(ExtensionsTest, test_extension_module_search) {
  createMockFileStructure();
  tearDownMockFileStructure();
}