TEST(ConsistentHashMapTest, TestGetRange) {
  TestMap test_map;
  typedef std::pair<string, Range<size_t>> node_range_type;
  const string node1("node1");
  test_map.insert(0, node1);
  size_t range = numeric_limits<size_t>::max() / test_map.num_partitions();
  vector<size_t> expected_parts;
  for (unsigned int i = 0; i < test_map.num_partitions(); i++) {
    expected_parts.push_back(range*i);
  }
  vector<size_t> actual_parts = test_map.get_partitions();
  EXPECT_THAT(actual_parts, ContainerEq(expected_parts));

  Range<size_t> range1(0, range - 1);
  Range<size_t> range2(range, range*2 - 1);
  Range<size_t> range3(range*2, range*3 - 1);
  Range<size_t> range4(range*3, numeric_limits<size_t>::max());
  node_range_type range1_node1 = std::make_pair(node1, range1);
  node_range_type range2_node1 = std::make_pair(node1, range2);
  node_range_type range3_node1 = std::make_pair(node1, range3);
  node_range_type range4_node1 = std::make_pair(node1, range4);
  node_range_type tmp;
  EXPECT_TRUE(test_map.get_range(range/2, &tmp).ok());
  EXPECT_EQ(range1_node1, tmp);
  EXPECT_TRUE(test_map.get_range(range + range/2, &tmp).ok());
  EXPECT_EQ(range2_node1, tmp);
  EXPECT_TRUE(test_map.get_range(range*2 + range/2, &tmp).ok());
  EXPECT_EQ(range3_node1, tmp);
  EXPECT_TRUE(test_map.get_range(range*3 + range/2, &tmp).ok());
  EXPECT_EQ(range4_node1, tmp);
}
Beispiel #2
0
TEST_F(ClientMetadataTest, TestSearchSuccess) {
  start(4, 4);
  create_index("/foo/bar", "dog");
  create_directories("/foo/bar/zoo");
  create_directories("/foo/bar/dogs");
  create_directories("/foo/bar/cat");

  for (int i = 0; i < 100; i++) {
    ObjectId oid;
    client_->create("/foo/bar/zoo/zoo" + to_string(i), 0644, 100, 100, &oid);
    client_->create("/foo/bar/dogs/dog" + to_string(i), 0644, 100, 100, &oid);
    client_->create("/foo/bar/cat/cat" + to_string(i), 0644, 100, 100, &oid);
  }

  vector<VSFSRpcClient::IndexUpdateRequest> requests;
  for (int i = 0; i < 100; i++) {
    requests.emplace_back(VSFSRpcClient::IndexUpdateRequest::INSERT,
                          "/foo/bar/dogs/dog" + to_string(i),
                          "dog",
                          to_string(i));
  }
  EXPECT_TRUE(client_->update(requests).ok());

  vector<string> expected_files;
  for (int i = 51; i < 100; i++) {
    expected_files.push_back("/foo/bar/dogs/dog" + to_string(i));
  }

  ComplexQuery query;
  query.parse("/foo?dog>50");
  vector<string> actual_files;
  EXPECT_TRUE(client_->search(query, &actual_files).ok());
  sort(actual_files.begin(), actual_files.end());
  EXPECT_THAT(actual_files, ContainerEq(expected_files));
}
TEST(ConsistentHashMapTest, TestGetValues) {
  TestMap test_map;
  vector<string> expected_nodes;
  for (int i = 0; i < 10; ++i) {
    string node_name = string("node") + to_string(i);
    test_map.insert(i * 1000, node_name);
    expected_nodes.push_back(node_name);
  }
  vector<string> actual_nodes = test_map.get_values();
  EXPECT_THAT(actual_nodes, ContainerEq(expected_nodes));
}
TEST(ConsistentHashMapTest, TestGetPartitionOneNode) {
  TestMap test_map;
  const string node1("node1");
  test_map.insert(0, node1);
  vector<size_t> expected_parts;
  size_t range = numeric_limits<size_t>::max() / test_map.num_partitions();
  for (unsigned int i = 0; i < test_map.num_partitions(); i++) {
    expected_parts.push_back(range*i);
  }
  vector<size_t> actual_parts = test_map.get_partitions();
  EXPECT_THAT(actual_parts, ContainerEq(expected_parts));
}
Beispiel #5
0
TEST(ServerMapTest, TestGetChRingAsMap) {
  ServerMap test_sm;
  map<HashValueType, NodeInfo> expected_map;
  for (int i = 0; i < 10; i++) {
    NodeInfo node;
    node.server_id = string("node") + to_string(i);
    test_sm.add(i * 1000, node);
    expected_map[i * 1000] = node;
  }

  auto actual_map = test_sm.get_ch_ring_as_map();
  EXPECT_THAT(actual_map, ContainerEq(expected_map));
}
Beispiel #6
0
TEST_F(ClientMetadataTest, TestLocateIndicesForSearch) {
  start(2, 1);
  create_index("/foo/bar/test", "blue");
  create_index("/foo/bar/test", "red");
  create_index("/foo/bar/zoo", "blue");

  ComplexQuery query;
  query.parse("/foo/bar?blue>100");

  vector<string> expected_indices = { "/foo/bar/test/.vsfs/blue",
                                      "/foo/bar/zoo/.vsfs/blue" };
  vector<string> actual_indices;
  EXPECT_TRUE(client_->locate_index_for_search(query, &actual_indices).ok());
  EXPECT_THAT(actual_indices, ContainerEq(expected_indices));
}
Beispiel #7
0
TEST_F(ClientMetadataTest, TestMakeDirs) {
  start(4, 2);

  create_directories("/test");

  set<string> expected_files;
  for (int i = 0; i < 100; i++) {
    EXPECT_TRUE(client_->mkdir("/test/dir" + to_string(i),
                               0755, 100, 100).ok());
    expected_files.insert("dir" + to_string(i));
  }

  vector<string> files;
  EXPECT_TRUE(client_->readdir("/test", &files).ok());
  set<string> actual_files(files.begin(), files.end());
  EXPECT_THAT(actual_files, ContainerEq(expected_files));
}
Beispiel #8
0
TEST(HashIndexTest, TestInsertUint64) {
  unique_ptr<HashIndexInterface> idx(new HashIndex<int>);

  FileIdVector ids = {10, 11, 12};
  for (auto id : ids) {
    idx->insert(4, id);
  }

  FileIdVector actual_ids;
  idx->search(4, &actual_ids);
  sort(actual_ids.begin(), actual_ids.end());
  EXPECT_THAT(actual_ids, ContainerEq(ids));

  actual_ids.clear();
  idx->search(5, &actual_ids);
  EXPECT_EQ(0, actual_ids.size());
}
    TEST(test_TestWithCorrectTransportAdapter, CorrectTransportAdapterBehavior)
    {
        Logger logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("TransportManagerTest"));

        LOG4CPLUS_INFO_EXT(logger, "*************************** Starting test *****************************");
        // All expectations must be sequenced
        //InSequence dummy;

        // Creating transport manager
        TestTransportManager *pTm = new TestTransportManager();

        // Preparing transport manage client
        MockTransportManagerClient tmClient(*pTm);

        // Expected device list
        SDeviceInfo deviceInfo;
        deviceInfo.mDeviceHandle = Data::DeviceHandle;
        deviceInfo.mUniqueDeviceId = Data::UniqueDeviceId;
        deviceInfo.mUserFriendlyName = Data::UserFriendlyName;
        tDeviceList deviceList;
        deviceList.push_back(deviceInfo);

        EXPECT_CALL(tmClient, onDeviceListUpdated(ContainerEq(deviceList)))
            .Times(1)
            .WillOnce(Invoke(&tmClient, &MockTransportManagerClient::doDeviceListUpdated))
        ;

        EXPECT_CALL(tmClient, onApplicationConnected(deviceInfo, Data::ConnectionHandle))
            .Times(1)
        ;

        EXPECT_CALL(tmClient, onFrameReceived(Data::ConnectionHandle, _, 212))
            .Times(1)
            .WillOnce(Invoke(&tmClient, &MockTransportManagerClient::doFrameReceived))
        ;

        EXPECT_CALL(tmClient, onFrameSendCompleted(Data::ConnectionHandle, Data::UserData, SendStatusOK))
            .Times(1)
            .WillOnce(Invoke(&tmClient, &MockTransportManagerClient::doFrameSendCompleted))
        ;

        EXPECT_CALL(tmClient, onApplicationDisconnected(deviceInfo, Data::ConnectionHandle))
            .Times(1)
        ;



        // Running test

        pTm->addDataListener(&tmClient);
        pTm->addDeviceListener(&tmClient); 

        LOG4CPLUS_INFO_EXT(logger, "*************************** Calling RUN *****************************");
        pTm->run();

        sleep(1);

        LOG4CPLUS_INFO_EXT(logger, "*************************** Calling SCAN FOR DEVICES *****************************");
        pTm->scanForNewDevices();

        sleep(2);

        LOG4CPLUS_INFO_EXT(logger, "*************************** Deleting TM and shutting down *****************************");

        // Shutdown transport manager
        delete pTm;
        pTm = 0;

    }