aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/RPCSession.cpp12
-rw-r--r--test/RPCSession.h1
2 files changed, 9 insertions, 4 deletions
diff --git a/test/RPCSession.cpp b/test/RPCSession.cpp
index c27e73d4..613d042a 100644
--- a/test/RPCSession.cpp
+++ b/test/RPCSession.cpp
@@ -248,22 +248,26 @@ void RPCSession::test_mineBlocks(int _number)
// We auto-calibrate the time it takes to mine the transaction.
// It would be better to go without polling, but that would probably need a change to the test client
+ unsigned startTime = boost::posix_time::microsec_clock::local_time();
unsigned sleepTime = m_sleepTime;
- size_t polls = 0;
- for (; polls < 14 && !mined; ++polls)
+ size_t tries = 0;
+ for (; !mined; ++tries)
{
std::this_thread::sleep_for(chrono::milliseconds(sleepTime));
+ boost::posix_time::time_duration timeSpent = boost::posix_time::microsec_clock::local_time() - startTime;
+ if (timeSpent > m_maxMiningTime)
+ break;
if (fromBigEndian<u256>(fromHex(rpcCall("eth_blockNumber").asString())) >= startBlock + _number)
mined = true;
else
sleepTime *= 2;
}
- if (polls > 1)
+ if (tries > 1)
{
m_successfulMineRuns = 0;
m_sleepTime += 2;
}
- else if (polls == 1)
+ else if (tries == 1)
{
m_successfulMineRuns++;
if (m_successfulMineRuns > 5)
diff --git a/test/RPCSession.h b/test/RPCSession.h
index 105ba378..a0b1e9ef 100644
--- a/test/RPCSession.h
+++ b/test/RPCSession.h
@@ -126,6 +126,7 @@ private:
IPCSocket m_ipcSocket;
size_t m_rpcSequence = 1;
+ unsigned m_maxMiningTime = 15000; // 15 seconds
unsigned m_sleepTime = 10;
unsigned m_successfulMineRuns = 0;