TEST_F(RestartTest, owner_tag) { const vfs::FrontendPath fname(make_volume_name("/volume")); const vfs::ObjectId oid(create_file(fname)); const vfs::ObjectRegistrationPtr reg(find_registration(oid)); { LOCKVD(); const vd::VolumeConfig cfg(api::getVolumeConfig(static_cast<vd::VolumeId>(oid))); EXPECT_EQ(reg->owner_tag, cfg.owner_tag_); } stop_fs(); start_fs(); LOCKVD(); const vd::VolumeConfig cfg(api::getVolumeConfig(static_cast<vd::VolumeId>(oid))); EXPECT_EQ(reg->owner_tag, cfg.owner_tag_); }
VolumeSCOCacheDataPoint::VolumeSCOCacheDataPoint(const vd::VolumeId& vid) : id(vid) { LOCKVD(); cache_hits = api::getCacheHits(vid); cache_misses = api::getCacheMisses(vid); }
VolumeClusterCacheDataPoint::VolumeClusterCacheDataPoint(const vd::VolumeId& vid) : id(vid.str()) { LOCKVD(); cache_hits = api::getClusterCacheHits(vid); cache_misses = api::getClusterCacheMisses(vid); }
TEST_F(RestartTest, happy_path) { const size_t vsize = 1 << 20; const vfs::FrontendPath fname1(make_volume_name("/volume1")); const vd::VolumeId vname1(create_file(fname1, vsize)); const size_t csize = get_cluster_size(vfs::ObjectId(vname1.str())); const vfs::FrontendPath fname2(make_volume_name("/volume2")); const vd::VolumeId vname2(create_file(fname2, vsize)); const vfs::FrontendPath fname3("/some.file.that.is.not.a.volume"); create_file(fname3, vsize); const std::string pattern1("Herzog"); const size_t wsize = 2 * csize; const off_t off = csize - 1; write_to_file(fname1, pattern1, wsize, off); const std::string pattern2("Springtime Epigram"); write_to_file(fname2, pattern2, wsize, off); const std::string pattern3("Ted"); write_to_file(fname3, pattern3, wsize, off); { LOCKVD(); EXPECT_NO_THROW(api::getVolumePointer(vname1)); EXPECT_NO_THROW(api::getVolumePointer(vname2)); } stop_fs(); start_fs(); { LOCKVD(); EXPECT_NO_THROW(api::getVolumePointer(vname1)); EXPECT_NO_THROW(api::getVolumePointer(vname2)); } check_file(fname1, pattern1, wsize, off); check_file(fname2, pattern2, wsize, off); check_file(fname3, pattern3, wsize, off); }
VolumeMetaDataStoreDataPoint::VolumeMetaDataStoreDataPoint(const vd::VolumeId& vid) : id(vid.str()) { LOCKVD(); const vd::MetaDataStoreStats m(api::getMetaDataStoreStats(vid)); cache_hits = m.cache_hits; cache_misses = m.cache_misses; used_clusters = m.used_clusters; cached_pages = m.cached_pages; max_pages = m.max_pages; }
SCOCacheNamespaceDataPoint::SCOCacheNamespaceDataPoint(const vd::VolumeId& vid) : id(vid.str()) { const be::Namespace ns(id); LOCKVD(); const vd::SCOCacheNamespaceInfo i(api::getVolumeSCOCacheInfo(ns)); disposable_bytes = i.disposable; non_disposable_bytes = i.nondisposable; min_bytes = i.min; max_non_disposable_bytes = i.max_non_disposable; }