@@ -113,8 +113,10 @@ template CAddress::SerParams ConsumeDeserializationParams(FuzzedDataProvider&) n
113113FuzzedSock::FuzzedSock (FuzzedDataProvider& fuzzed_data_provider)
114114 : Sock{fuzzed_data_provider.ConsumeIntegralInRange <SOCKET>(INVALID_SOCKET - 1 , INVALID_SOCKET)},
115115 m_fuzzed_data_provider{fuzzed_data_provider},
116- m_selectable{fuzzed_data_provider.ConsumeBool ()}
116+ m_selectable{fuzzed_data_provider.ConsumeBool ()},
117+ m_time{MockableSteadyClock::INITIAL_MOCK_TIME}
117118{
119+ ElapseTime (std::chrono::seconds (0 )); // start mocking the steady clock.
118120}
119121
120122FuzzedSock::~FuzzedSock ()
@@ -126,6 +128,12 @@ FuzzedSock::~FuzzedSock()
126128 m_socket = INVALID_SOCKET;
127129}
128130
131+ void FuzzedSock::ElapseTime (std::chrono::milliseconds duration) const
132+ {
133+ m_time += duration;
134+ MockableSteadyClock::SetMockTime (m_time);
135+ }
136+
129137FuzzedSock& FuzzedSock::operator =(Sock&& other)
130138{
131139 assert (false && " Move of Sock into FuzzedSock not allowed." );
@@ -388,6 +396,7 @@ bool FuzzedSock::Wait(std::chrono::milliseconds timeout, Event requested, Event*
388396 // FuzzedDataProvider runs out of data.
389397 *occurred = m_fuzzed_data_provider.ConsumeBool () ? 0 : requested;
390398 }
399+ ElapseTime (timeout);
391400 return true ;
392401}
393402
@@ -400,6 +409,7 @@ bool FuzzedSock::WaitMany(std::chrono::milliseconds timeout, EventsPerSock& even
400409 // FuzzedDataProvider runs out of data.
401410 events.occurred = m_fuzzed_data_provider.ConsumeBool () ? 0 : events.requested ;
402411 }
412+ ElapseTime (timeout);
403413 return true ;
404414}
405415
0 commit comments