55
66package org .opensearch .dataprepper .peerforwarder ;
77
8- import org .junit .jupiter .params .ParameterizedTest ;
9- import org .junit .jupiter .params .provider .ValueSource ;
10- import org .opensearch .dataprepper .metrics .PluginMetrics ;
11- import org .opensearch .dataprepper .model .CheckpointState ;
12- import org .opensearch .dataprepper .model .event .Event ;
13- import org .opensearch .dataprepper .model .event .JacksonEvent ;
14- import org .opensearch .dataprepper .model .record .Record ;
158import com .fasterxml .jackson .databind .ObjectMapper ;
16- import com .fasterxml .jackson .datatype .jsr310 .JavaTimeModule ;
179import com .linecorp .armeria .client .UnprocessedRequestException ;
1810import com .linecorp .armeria .common .AggregatedHttpResponse ;
1911import com .linecorp .armeria .common .ClosedSessionException ;
2214import org .junit .jupiter .api .AfterEach ;
2315import org .junit .jupiter .api .BeforeEach ;
2416import org .junit .jupiter .api .Nested ;
17+ import org .junit .jupiter .params .ParameterizedTest ;
18+ import org .junit .jupiter .params .provider .ValueSource ;
19+ import org .opensearch .dataprepper .metrics .PluginMetrics ;
20+ import org .opensearch .dataprepper .model .CheckpointState ;
21+ import org .opensearch .dataprepper .model .event .Event ;
22+ import org .opensearch .dataprepper .model .event .JacksonEvent ;
23+ import org .opensearch .dataprepper .model .record .Record ;
2524import org .opensearch .dataprepper .peerforwarder .certificate .CertificateProviderFactory ;
2625import org .opensearch .dataprepper .peerforwarder .client .PeerForwarderClient ;
26+ import org .opensearch .dataprepper .peerforwarder .codec .PeerForwarderCodecAppConfig ;
2727import org .opensearch .dataprepper .peerforwarder .codec .JacksonPeerForwarderCodec ;
2828import org .opensearch .dataprepper .peerforwarder .codec .JavaPeerForwarderCodec ;
2929import org .opensearch .dataprepper .peerforwarder .codec .PeerForwarderCodec ;
3333import org .opensearch .dataprepper .peerforwarder .server .PeerForwarderServer ;
3434import org .opensearch .dataprepper .peerforwarder .server .RemotePeerForwarderServer ;
3535import org .opensearch .dataprepper .peerforwarder .server .ResponseHandler ;
36+ import org .springframework .context .annotation .AnnotationConfigApplicationContext ;
3637
3738import javax .net .ssl .SSLHandshakeException ;
3839import java .util .Collection ;
@@ -71,18 +72,16 @@ class PeerForwarder_ClientServerIT {
7172 private ObjectMapper objectMapper ;
7273 private JavaPeerForwarderCodec javaPeerForwarderCodec ;
7374 private JacksonPeerForwarderCodec jacksonPeerForwarderCodec ;
75+ private PeerForwarderConfiguration peerForwarderConfiguration ;
7476 private String pipelineName ;
7577 private String pluginId ;
7678 private List <Record <Event >> outgoingRecords ;
7779 private Set <String > expectedMessages ;
7880 private PluginMetrics pluginMetrics ;
81+ private AnnotationConfigApplicationContext applicationContext ;
7982
8083 @ BeforeEach
8184 void setUp () {
82- objectMapper = new ObjectMapper ().registerModule (new JavaTimeModule ());
83- javaPeerForwarderCodec = new JavaPeerForwarderCodec ();
84- jacksonPeerForwarderCodec = new JacksonPeerForwarderCodec (objectMapper );
85-
8685 outgoingRecords = IntStream .range (0 , 5 )
8786 .mapToObj (i -> UUID .randomUUID ().toString ())
8887 .map (JacksonEvent ::fromMessage )
@@ -99,12 +98,20 @@ void setUp() {
9998 .collect (Collectors .toSet ());
10099 }
101100
101+ private void setupApplicationContext () {
102+ applicationContext = new AnnotationConfigApplicationContext ();
103+
104+ applicationContext .scan (PeerForwarderCodecAppConfig .class .getPackage ().getName ());
105+ applicationContext .registerBean ("peerForwarderConfiguration" , PeerForwarderConfiguration .class , () -> peerForwarderConfiguration );
106+ applicationContext .refresh ();
107+ }
108+
109+
102110 private PeerForwarderServer createServer (
103111 final PeerForwarderConfiguration peerForwarderConfiguration ,
104112 final CertificateProviderFactory certificateProviderFactory ,
105113 final PeerForwarderProvider peerForwarderProvider ) {
106- final PeerForwarderCodec peerForwarderCodec = peerForwarderConfiguration .getBinaryCodec ()?
107- javaPeerForwarderCodec : jacksonPeerForwarderCodec ;
114+ final PeerForwarderCodec peerForwarderCodec = applicationContext .getBean (PeerForwarderCodec .class );
108115 final PeerForwarderHttpService peerForwarderHttpService = new PeerForwarderHttpService (new ResponseHandler (pluginMetrics ), peerForwarderProvider , peerForwarderConfiguration ,
109116 peerForwarderCodec , pluginMetrics );
110117 Objects .requireNonNull (peerForwarderConfiguration , "Nested classes must supply peerForwarderConfiguration" );
@@ -133,8 +140,7 @@ private PeerForwarderClient createClient(
133140 final PeerClientPool peerClientPool = new PeerClientPool ();
134141 final PeerForwarderClientFactory peerForwarderClientFactory = new PeerForwarderClientFactory (peerForwarderConfiguration , peerClientPool , certificateProviderFactory , pluginMetrics );
135142 peerForwarderClientFactory .setPeerClientPool ();
136- final PeerForwarderCodec peerForwarderCodec = peerForwarderConfiguration .getBinaryCodec ()?
137- javaPeerForwarderCodec : jacksonPeerForwarderCodec ;
143+ final PeerForwarderCodec peerForwarderCodec = applicationContext .getBean (PeerForwarderCodec .class );
138144 return new PeerForwarderClient (peerForwarderConfiguration , peerForwarderClientFactory , peerForwarderCodec , pluginMetrics );
139145 }
140146
@@ -149,14 +155,14 @@ private Collection<Record<Event>> getServerSideRecords(final PeerForwarderProvid
149155
150156 @ Nested
151157 class WithSSL {
152-
153- private PeerForwarderConfiguration peerForwarderConfiguration ;
154158 private PeerForwarderServer server ;
155159 private PeerForwarderProvider peerForwarderProvider ;
156160
157161 void setUpServer (final boolean binaryCodec ) {
158162 peerForwarderConfiguration = createConfiguration (true , ForwardingAuthentication .UNAUTHENTICATED , binaryCodec );
159163
164+ setupApplicationContext ();
165+
160166 final CertificateProviderFactory certificateProviderFactory = new CertificateProviderFactory (peerForwarderConfiguration );
161167 peerForwarderProvider = createPeerForwarderProvider (peerForwarderConfiguration , certificateProviderFactory );
162168 peerForwarderProvider .register (pipelineName , pluginId , Collections .singleton (UUID .randomUUID ().toString ()), PIPELINE_WORKER_THREADS );
@@ -269,14 +275,14 @@ void send_Events_with_fingerprint_verification_to_unknown_server_should_throw(fi
269275
270276 @ Nested
271277 class WithoutSSL {
272-
273- private PeerForwarderConfiguration peerForwarderConfiguration ;
274278 private PeerForwarderServer server ;
275279 private PeerForwarderProvider peerForwarderProvider ;
276280
277281 void setUpServer (final boolean binaryCodec ) {
278282 peerForwarderConfiguration = createConfiguration (false , ForwardingAuthentication .UNAUTHENTICATED , binaryCodec );
279283
284+ setupApplicationContext ();
285+
280286 final CertificateProviderFactory certificateProviderFactory = new CertificateProviderFactory (peerForwarderConfiguration );
281287 peerForwarderProvider = createPeerForwarderProvider (peerForwarderConfiguration , certificateProviderFactory );
282288 peerForwarderProvider .register (pipelineName , pluginId , Collections .singleton (UUID .randomUUID ().toString ()), PIPELINE_WORKER_THREADS );
@@ -328,14 +334,14 @@ void send_Events_to_server_when_expecting_SSL_should_throw(final boolean binaryC
328334
329335 @ Nested
330336 class WithMutualTls {
331-
332- private PeerForwarderConfiguration peerForwarderConfiguration ;
333337 private PeerForwarderServer server ;
334338 private PeerForwarderProvider peerForwarderProvider ;
335339
336340 void setUpServer (final boolean binaryCodec ) {
337341 peerForwarderConfiguration = createConfiguration (true , ForwardingAuthentication .MUTUAL_TLS , binaryCodec );
338342
343+ setupApplicationContext ();
344+
339345 final CertificateProviderFactory certificateProviderFactory = new CertificateProviderFactory (peerForwarderConfiguration );
340346 peerForwarderProvider = createPeerForwarderProvider (peerForwarderConfiguration , certificateProviderFactory );
341347 peerForwarderProvider .register (pipelineName , pluginId , Collections .singleton (UUID .randomUUID ().toString ()), PIPELINE_WORKER_THREADS );
0 commit comments