Auto merge of #4616 - daira:4615/hashrate-display, r=daira
Use SI prefixes for hash rates on the metrics screen fixes #4615
This commit is contained in:
commit
6631f218d3
|
@ -134,3 +134,45 @@ TEST(Metrics, NextUpgrade) {
|
|||
|
||||
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_TESTDUMMY, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT);
|
||||
}
|
||||
|
||||
TEST(Metrics, DisplayFunctions) {
|
||||
EXPECT_EQ(DisplayDuration(0, DurationFormat::REDUCED), "0 seconds");
|
||||
EXPECT_EQ(DisplayDuration(59, DurationFormat::REDUCED), "59 seconds");
|
||||
EXPECT_EQ(DisplayDuration(60, DurationFormat::REDUCED), "1 minutes");
|
||||
EXPECT_EQ(DisplayDuration(61, DurationFormat::REDUCED), "1 minutes");
|
||||
EXPECT_EQ(DisplayDuration(3599, DurationFormat::REDUCED), "59 minutes");
|
||||
EXPECT_EQ(DisplayDuration(3600, DurationFormat::REDUCED), "1 hours");
|
||||
EXPECT_EQ(DisplayDuration(86399, DurationFormat::REDUCED), "23 hours");
|
||||
EXPECT_EQ(DisplayDuration(86400, DurationFormat::REDUCED), "1 days");
|
||||
EXPECT_EQ(DisplayDuration(8640000, DurationFormat::REDUCED), "100 days");
|
||||
EXPECT_EQ(DisplayDuration(185542587100800, DurationFormat::REDUCED), "2147483647 days");
|
||||
EXPECT_EQ(DisplayDuration(185542587187199, DurationFormat::REDUCED), "2147483647 days");
|
||||
|
||||
EXPECT_EQ(DisplayDuration(0, DurationFormat::FULL), "0 seconds");
|
||||
EXPECT_EQ(DisplayDuration(59, DurationFormat::FULL), "59 seconds");
|
||||
EXPECT_EQ(DisplayDuration(60, DurationFormat::FULL), "1 minutes, 0 seconds");
|
||||
EXPECT_EQ(DisplayDuration(61, DurationFormat::FULL), "1 minutes, 1 seconds");
|
||||
EXPECT_EQ(DisplayDuration(3599, DurationFormat::FULL), "59 minutes, 59 seconds");
|
||||
EXPECT_EQ(DisplayDuration(3600, DurationFormat::FULL), "1 hours, 0 minutes, 0 seconds");
|
||||
EXPECT_EQ(DisplayDuration(86399, DurationFormat::FULL), "23 hours, 59 minutes, 59 seconds");
|
||||
EXPECT_EQ(DisplayDuration(86400, DurationFormat::FULL), "1 days, 0 hours, 0 minutes, 0 seconds");
|
||||
EXPECT_EQ(DisplayDuration(8640000, DurationFormat::FULL), "100 days, 0 hours, 0 minutes, 0 seconds");
|
||||
EXPECT_EQ(DisplayDuration(185542587100800, DurationFormat::FULL), "2147483647 days, 0 hours, 0 minutes, 0 seconds");
|
||||
EXPECT_EQ(DisplayDuration(185542587187199, DurationFormat::FULL), "2147483647 days, 23 hours, 59 minutes, 59 seconds");
|
||||
|
||||
EXPECT_EQ(DisplaySize(0), "0 Bytes");
|
||||
EXPECT_EQ(DisplaySize(123), "123 Bytes");
|
||||
EXPECT_EQ(DisplaySize(123456), "120.56 KiB");
|
||||
EXPECT_EQ(DisplaySize(123456789), "117.74 MiB");
|
||||
EXPECT_EQ(DisplaySize(123456789012), "114.98 GiB");
|
||||
EXPECT_EQ(DisplaySize(1234567890123), "1.12 TiB");
|
||||
EXPECT_EQ(DisplaySize(INT64_MAX), "8388608.00 TiB");
|
||||
|
||||
EXPECT_EQ(DisplayHashRate(0.0), "0.000 Sol/s");
|
||||
EXPECT_EQ(DisplayHashRate(0.1234), "0.123 Sol/s");
|
||||
EXPECT_EQ(DisplayHashRate(123.45), "123.450 Sol/s");
|
||||
EXPECT_EQ(DisplayHashRate(1234.5), "1.234 kSol/s");
|
||||
EXPECT_EQ(DisplayHashRate(1234567.8), "1.235 MSol/s");
|
||||
EXPECT_EQ(DisplayHashRate(1234567890.1), "1.235 GSol/s");
|
||||
EXPECT_EQ(DisplayHashRate(1234567890123.4), "1.235 TSol/s");
|
||||
}
|
||||
|
|
|
@ -242,20 +242,38 @@ std::string DisplaySize(size_t value)
|
|||
{
|
||||
double coef = 1.0;
|
||||
if (value < 1024.0 * coef)
|
||||
return strprintf(_("%d Bytes"), value);
|
||||
return strprintf(_("%d Bytes"), value);
|
||||
coef *= 1024.0;
|
||||
if (value < 1024.0 * coef)
|
||||
return strprintf(_("%.2f KiB"), value / coef);
|
||||
return strprintf(_("%.2f KiB"), value / coef);
|
||||
coef *= 1024.0;
|
||||
if (value < 1024.0 * coef)
|
||||
return strprintf(_("%.2f MiB"), value / coef);
|
||||
return strprintf(_("%.2f MiB"), value / coef);
|
||||
coef *= 1024.0;
|
||||
if (value < 1024.0 * coef)
|
||||
return strprintf(_("%.2f GiB"), value / coef);
|
||||
return strprintf(_("%.2f GiB"), value / coef);
|
||||
coef *= 1024.0;
|
||||
return strprintf(_("%.2f TiB"), value / coef);
|
||||
}
|
||||
|
||||
std::string DisplayHashRate(double value)
|
||||
{
|
||||
double coef = 1.0;
|
||||
if (value < 1000.0 * coef)
|
||||
return strprintf(_("%.3f Sol/s"), value);
|
||||
coef *= 1000.0;
|
||||
if (value < 1000.0 * coef)
|
||||
return strprintf(_("%.3f kSol/s"), value / coef);
|
||||
coef *= 1000.0;
|
||||
if (value < 1000.0 * coef)
|
||||
return strprintf(_("%.3f MSol/s"), value / coef);
|
||||
coef *= 1000.0;
|
||||
if (value < 1000.0 * coef)
|
||||
return strprintf(_("%.3f GSol/s"), value / coef);
|
||||
coef *= 1000.0;
|
||||
return strprintf(_("%.3f TSol/s"), value / coef);
|
||||
}
|
||||
|
||||
boost::optional<int64_t> SecondsLeftToNextEpoch(const Consensus::Params& params, int currentHeight)
|
||||
{
|
||||
auto nextHeight = NextActivationHeight(currentHeight, params);
|
||||
|
@ -276,7 +294,6 @@ int printStats(bool isScreen, bool mining)
|
|||
int64_t currentHeadersTime;
|
||||
size_t connections;
|
||||
int64_t netsolps;
|
||||
double netsolpsLog = 1.0;
|
||||
const Consensus::Params& params = Params().GetConsensus();
|
||||
{
|
||||
LOCK2(cs_main, cs_vNodes);
|
||||
|
@ -285,12 +302,8 @@ int printStats(bool isScreen, bool mining)
|
|||
currentHeadersTime = pindexBestHeader ? pindexBestHeader->nTime : 0;
|
||||
connections = vNodes.size();
|
||||
netsolps = GetNetworkHashPS(120, -1);
|
||||
netsolpsLog = std::log2(netsolps);
|
||||
}
|
||||
auto localsolps = GetLocalSolPS();
|
||||
double localsolpsLog = 0.0;
|
||||
if (localsolps > 0)
|
||||
localsolpsLog = std::log2(localsolps);
|
||||
|
||||
if (IsInitialBlockDownload(Params())) {
|
||||
if (fReindex) {
|
||||
|
@ -347,9 +360,9 @@ int printStats(bool isScreen, bool mining)
|
|||
}
|
||||
std::cout << " " << _("Next upgrade") << " | " << strUpgradeTime << std::endl;
|
||||
std::cout << " " << _("Connections") << " | " << connections << std::endl;
|
||||
std::cout << " " << _("Network solution rate") << " | " << strprintf("~ 2^%.4f Sol/s", netsolpsLog) << std::endl;
|
||||
std::cout << " " << _("Network solution rate") << " | " << DisplayHashRate(netsolps) << std::endl;
|
||||
if (mining && miningTimer.running()) {
|
||||
std::cout << " " << _("Local solution rate") << " | " << strprintf("~ 2^%.4f Sol/s", localsolpsLog) << std::endl;
|
||||
std::cout << " " << _("Local solution rate") << " | " << DisplayHashRate(localsolps) << std::endl;
|
||||
lines++;
|
||||
}
|
||||
std::cout << std::endl;
|
||||
|
|
|
@ -74,6 +74,8 @@ double GetLocalSolPS();
|
|||
int EstimateNetHeight(const Consensus::Params& params, int currentBlockHeight, int64_t currentBlockTime);
|
||||
boost::optional<int64_t> SecondsLeftToNextEpoch(const Consensus::Params& params, int currentHeight);
|
||||
std::string DisplayDuration(int64_t time, DurationFormat format);
|
||||
std::string DisplaySize(size_t value);
|
||||
std::string DisplayHashRate(double value);
|
||||
|
||||
void TriggerRefresh();
|
||||
|
||||
|
|
Loading…
Reference in New Issue