@@ -64,7 +64,6 @@ class HttpRequestServiceTest {
6464 private static final Duration RETRY_DELAY = Duration .ofSeconds (5 );
6565
6666 @ Mock private RequestService .Callback callback ;
67- @ Mock private Supplier <Request > requestSupplier ;
6867 private final List <ScheduledTask > scheduledTasks = new ArrayList <>();
6968 private ScheduledExecutorService executorService ;
7069 private TestHttpSender requestSender ;
@@ -86,8 +85,7 @@ void setUp() {
8685 periodicRequestDelay ,
8786 periodicRetryDelay ,
8887 RetryAfterParser .getInstance ());
89- httpRequestService .start (callback , requestSupplier );
90- prepareRequest ();
88+ httpRequestService .start (callback , createRequestSupplier ());
9189 }
9290
9391 @ AfterEach
@@ -98,6 +96,26 @@ void tearDown() {
9896 verifyNoMoreInteractions (executorService );
9997 }
10098
99+ @ Test
100+ void verifyStart_scheduledFirstTask () {
101+ assertThat (scheduledTasks ).hasSize (1 );
102+ ScheduledTask firstTask = scheduledTasks .get (0 );
103+ assertThat (firstTask .delay ).isEqualTo (REGULAR_DELAY );
104+
105+ // Verify initial task creates next one
106+ scheduledTasks .clear ();
107+ requestSender .enqueueResponse (createSuccessfulResponse (new ServerToAgent .Builder ().build ()));
108+ firstTask .runnable .run ();
109+
110+ assertThat (scheduledTasks ).hasSize (1 );
111+
112+ // Check on-demand requests don't create subsequent tasks
113+ requestSender .enqueueResponse (createSuccessfulResponse (new ServerToAgent .Builder ().build ()));
114+ httpRequestService .sendRequest ();
115+
116+ assertThat (scheduledTasks ).hasSize (1 );
117+ }
118+
101119 @ Test
102120 void verifySendingRequest_happyPath () {
103121 ServerToAgent serverToAgent = new ServerToAgent .Builder ().build ();
@@ -282,11 +300,11 @@ private void enableRetryMode() {
282300 httpRequestService .sendRequest ();
283301 }
284302
285- private void prepareRequest () {
303+ private Supplier < Request > createRequestSupplier () {
286304 AgentToServer agentToServer = new AgentToServer .Builder ().sequence_num (10 ).build ();
287305 requestSize = agentToServer .encodeByteString ().size ();
288306 Request request = Request .create (agentToServer );
289- when ( requestSupplier . get ()). thenReturn ( request ) ;
307+ return () -> request ;
290308 }
291309
292310 private ScheduledTask getCurrentScheduledTask () {
@@ -434,7 +452,6 @@ private RequestParams(int contentLength) {
434452 }
435453 }
436454
437- @ SuppressWarnings ("UnusedVariable" )
438455 private static class ScheduledTask {
439456 private final ScheduledFuture <?> future ;
440457 private final Runnable runnable ;
0 commit comments