//test getUrl gives valid provider when all old providers have expired (requests new providers) TEST(ProviderManager, ProvExpireWithNewProviders) { auto pc = std::make_shared<const DownloadProvider>("a1", "a2", "a3", "a4"); DownloadProvider *p = const_cast<DownloadProvider*>(&*pc); p->setType(DownloadProviderType::Cdn); p->setExpireTime(gcTime() + std::chrono::minutes(1)); auto dp = std::make_shared<TestDownloadProvidersPM>(); dp->m_vDownloadProviders.push_back(pc); ProviderManager pm(dp); { auto res = pm.getUrl(1); ASSERT_TRUE(!!res.get()); ASSERT_STREQ("a1", res->getName()); } p->setExpireTime(gcTime() - std::chrono::minutes(1)); dp->m_vDownloadProviders.clear(); dp->m_vDownloadProviders.push_back(std::make_shared<const DownloadProvider>("b1", "b2", "b3", "b4")); //Getting it a second time should return same provider { auto res = pm.getUrl(1); ASSERT_TRUE(!!res.get()); ASSERT_STREQ("b1", res->getName()); } }
void UpdateProgThread::run() { m_tStartTime = gcTime(); m_tLastUpdateTime = gcTime(); for (uint8 x=0; x<m_pCount; x++) m_vProgInfo.push_back(0); while (!isStopped()) { doPause(); gcSleep(500); calcResults(); } }
void setTimeOut() { m_iOwner = -1; m_uiErrCount++; m_tExpTime = gcTime() + std::chrono::seconds(getTimeOut()); gcAssert(isInTimeOut()); }
TEST(UtilDateTime, BadTimeT) { auto out = gcTime((time_t) -1).to_iso_string(); std::string expected = ""; ASSERT_EQ(expected, out); }
void UpdateProgThread::reportProg(uint32 id, uint64 ammount) { if (id >= m_vProgInfo.size()) return; std::lock_guard<std::mutex> guard(m_pProgMutex); m_vProgInfo[id] = ammount; m_tLastUpdateTime = gcTime(); }
uint32 DPProvider::getLastRate() const { if (m_ullAmmount < 1) return 0; auto total = gcTime() - m_tStart; if (total.seconds() == 0) return 0; double avgRate = ((double)m_ullAmmount) / ((double)total.seconds()); return (uint32)(avgRate/1024.0); }
bool isInTimeOut() { return gcTime() < m_tExpTime; }
ProviderInfo(std::shared_ptr<const MCFCore::Misc::DownloadProvider> &pProvider) : m_pProvider(pProvider) , m_tExpTime(gcTime() - std::chrono::seconds(getTimeOut())) { }
void UpdateProgThread::onUnpause() { m_tTotPauseTime += gcTime() - m_tPauseStartTime; }
void UpdateProgThread::onPause() { m_tPauseStartTime = gcTime(); }
const std::string getNowAsDateTime() { return gcTime().to_iso_string(); }
void DPProvider::reportProgress(uint32 prog) { m_ullAmmount += prog; m_tLastUpdate = gcTime(); }