55
66package org .opensearch .dataprepper .plugins .source .loghttp ;
77
8- import com .linecorp .armeria .server .ServiceRequestContext ;
9- import org .junit .jupiter .api .Nested ;
10- import org .opensearch .dataprepper .metrics .PluginMetrics ;
11- import org .opensearch .dataprepper .model .buffer .Buffer ;
12- import org .opensearch .dataprepper .model .buffer .SizeOverflowException ;
13- import org .opensearch .dataprepper .model .log .Log ;
14- import org .opensearch .dataprepper .model .record .Record ;
158import com .fasterxml .jackson .core .JsonProcessingException ;
169import com .fasterxml .jackson .databind .ObjectMapper ;
1710import com .linecorp .armeria .common .AggregatedHttpRequest ;
2316import com .linecorp .armeria .common .HttpStatus ;
2417import com .linecorp .armeria .common .MediaType ;
2518import com .linecorp .armeria .common .RequestHeaders ;
19+ import com .linecorp .armeria .server .ServiceRequestContext ;
2620import io .micrometer .core .instrument .Counter ;
2721import io .micrometer .core .instrument .DistributionSummary ;
2822import io .micrometer .core .instrument .Timer ;
2923import org .junit .jupiter .api .BeforeEach ;
24+ import org .junit .jupiter .api .Nested ;
3025import org .junit .jupiter .api .Test ;
3126import org .junit .jupiter .api .extension .ExtendWith ;
3227import org .mockito .ArgumentCaptor ;
3328import org .mockito .ArgumentMatchers ;
3429import org .mockito .Mock ;
3530import org .mockito .junit .jupiter .MockitoExtension ;
3631import org .mockito .stubbing .Answer ;
32+ import org .opensearch .dataprepper .metrics .PluginMetrics ;
33+ import org .opensearch .dataprepper .model .buffer .Buffer ;
34+ import org .opensearch .dataprepper .model .buffer .SizeOverflowException ;
35+ import org .opensearch .dataprepper .model .codec .InputCodec ;
36+ import org .opensearch .dataprepper .model .log .Log ;
37+ import org .opensearch .dataprepper .model .record .Record ;
3738import org .opensearch .dataprepper .plugins .buffer .blockingbuffer .BlockingBuffer ;
3839
40+ import java .io .ByteArrayInputStream ;
3941import java .io .IOException ;
42+ import java .io .InputStream ;
43+ import java .nio .charset .StandardCharsets ;
4044import java .util .ArrayList ;
4145import java .util .Collections ;
4246import java .util .List ;
4650import java .util .concurrent .Callable ;
4751import java .util .concurrent .ExecutionException ;
4852import java .util .concurrent .TimeoutException ;
49- import java .nio .charset .StandardCharsets ;
50- import java .io .ByteArrayInputStream ;
51- import java .io .InputStream ;
5253
5354import static org .hamcrest .CoreMatchers .containsString ;
5455import static org .hamcrest .CoreMatchers .equalTo ;
5556import static org .hamcrest .MatcherAssert .assertThat ;
5657import static org .junit .jupiter .api .Assertions .assertEquals ;
5758import static org .junit .jupiter .api .Assertions .assertThrows ;
59+ import static org .mockito .ArgumentMatchers .any ;
60+ import static org .mockito .ArgumentMatchers .anyString ;
5861import static org .mockito .ArgumentMatchers .eq ;
62+ import static org .mockito .ArgumentMatchers .isNull ;
63+ import static org .mockito .Mockito .lenient ;
64+ import static org .mockito .Mockito .mock ;
5965import static org .mockito .Mockito .never ;
6066import static org .mockito .Mockito .times ;
6167import static org .mockito .Mockito .verify ;
6268import static org .mockito .Mockito .when ;
63- import static org .mockito .Mockito .lenient ;
64- import static org .mockito .Mockito .mock ;
65- import static org .mockito .ArgumentMatchers .any ;
66- import static org .mockito .ArgumentMatchers .anyString ;
67- import static org .mockito .ArgumentMatchers .isNull ;
6869
6970@ ExtendWith (MockitoExtension .class )
7071class LogHTTPServiceTest {
@@ -95,6 +96,9 @@ class LogHTTPServiceTest {
9596 @ Mock
9697 private Buffer <Record <Log >> byteBuffer ;
9798
99+ @ Mock
100+ private InputCodec codec ;
101+
98102 @ BeforeEach
99103 public void setUp () throws Exception {
100104 when (pluginMetrics .counter (LogHTTPService .REQUESTS_RECEIVED )).thenReturn (requestsReceivedCounter );
@@ -112,7 +116,7 @@ public void setUp() throws Exception {
112116 );
113117
114118 Buffer <Record <Log >> blockingBuffer = new BlockingBuffer <>(TEST_BUFFER_CAPACITY , 8 , "test-pipeline" );
115- logHTTPService = new LogHTTPService (TEST_TIMEOUT_IN_MILLIS , blockingBuffer , pluginMetrics );
119+ logHTTPService = new LogHTTPService (TEST_TIMEOUT_IN_MILLIS , blockingBuffer , pluginMetrics , null );
116120 }
117121
118122 @ Test
@@ -150,6 +154,26 @@ public void testHTTPRequestBadRequest() throws Exception {
150154 verify (requestProcessDuration , times (1 )).recordCallable (ArgumentMatchers .<Callable <HttpResponse >>any ());
151155 }
152156
157+ @ Test
158+ public void testHTTPRequestSuccessWithCodec () throws Exception {
159+ // Prepare
160+ Buffer <Record <Log >> blockingBuffer = new BlockingBuffer <>(TEST_BUFFER_CAPACITY , 8 , "test-pipeline" );
161+ logHTTPService = new LogHTTPService (TEST_TIMEOUT_IN_MILLIS , blockingBuffer , pluginMetrics , codec );
162+ AggregatedHttpRequest testRequest = generateRandomValidHTTPRequest (2 );
163+
164+ // When
165+ AggregatedHttpResponse postResponse = logHTTPService .doPost (serviceRequestContext , testRequest ).aggregate ().get ();
166+
167+ // Then
168+ assertEquals (HttpStatus .OK , postResponse .status ());
169+ verify (requestsReceivedCounter , times (1 )).increment ();
170+ verify (successRequestsCounter , times (1 )).increment ();
171+ final ArgumentCaptor <Double > payloadLengthCaptor = ArgumentCaptor .forClass (Double .class );
172+ verify (payloadSizeSummary , times (1 )).record (payloadLengthCaptor .capture ());
173+ assertEquals (testRequest .content ().length (), Math .round (payloadLengthCaptor .getValue ()));
174+ verify (requestProcessDuration , times (1 )).recordCallable (ArgumentMatchers .<Callable <HttpResponse >>any ());
175+ }
176+
153177 @ Test
154178 public void testHTTPRequestEntityTooLarge () throws Exception {
155179 // Prepare
@@ -204,7 +228,7 @@ void setUp() {
204228 aggregatedHttpRequest = mock (AggregatedHttpRequest .class );
205229 httpData = mock (HttpData .class );
206230
207- logHTTPService = new LogHTTPService (TEST_TIMEOUT_IN_MILLIS , byteBuffer , pluginMetrics );
231+ logHTTPService = new LogHTTPService (TEST_TIMEOUT_IN_MILLIS , byteBuffer , pluginMetrics , codec );
208232
209233 StringBuilder sb = new StringBuilder (1024 * 1024 + 10240 );
210234 for (int i = 0 ; i < 12500 ; i ++) {
@@ -303,7 +327,7 @@ void setUp() {
303327 aggregatedHttpRequest = mock (AggregatedHttpRequest .class );
304328 httpData = mock (HttpData .class );
305329
306- logHTTPService = new LogHTTPService (TEST_TIMEOUT_IN_MILLIS , byteBuffer , pluginMetrics );
330+ logHTTPService = new LogHTTPService (TEST_TIMEOUT_IN_MILLIS , byteBuffer , pluginMetrics , codec );
307331
308332 StringBuilder sb = new StringBuilder (1024 * 1024 + 10240 );
309333 for (int i = 0 ; i < 12500 ; i ++) {
0 commit comments