@@ -574,4 +574,140 @@ public void testRemoteAddress() {
574574 CompletableFuture .allOf (stage .toCompletableFuture ()).join ();
575575 Assert .assertNull (errorRef .get ());
576576 }
577+
578+ @ Test
579+ public void testSpringHeaders () throws Exception {
580+ PolarisSelector clusterNaming = new PolarisSelector ();
581+ clusterNaming .setPluginConfig (selectorConfig );
582+ clusterNaming .init ();
583+
584+ ServiceId serviceId = DataTest .newServiceId ();
585+ Request request = DataTest .mockRequest ();
586+ RpcClientContext context = new RpcClientContext ();
587+
588+ Object mockHeaders = new Object () {
589+ public String getFirst (String headerName ) {
590+ return "header-value" ;
591+ }
592+ };
593+ context .getReqAttachMap ().put ("headers" , mockHeaders );
594+ Mockito .when (request .getContext ()).thenReturn (context );
595+
596+ CompletionStage <ServiceInstance > future = clusterNaming .asyncSelectOne (serviceId , request );
597+ AtomicReference <Throwable > errorRef = new AtomicReference <>();
598+ CompletionStage <ServiceInstance > stage = future .whenComplete ((res , err ) -> {
599+ if (err != null ) {
600+ errorRef .set (err );
601+ }
602+ });
603+ CompletableFuture .allOf (stage .toCompletableFuture ()).join ();
604+ Assert .assertNull (errorRef .get ());
605+ }
606+
607+ @ Test
608+ public void testHeadersException () {
609+ PolarisSelector clusterNaming = new PolarisSelector ();
610+ clusterNaming .setPluginConfig (selectorConfig );
611+ clusterNaming .init ();
612+
613+ ServiceId serviceId = DataTest .newServiceId ();
614+ Request request = DataTest .mockRequest ();
615+ RpcClientContext context = new RpcClientContext ();
616+
617+ Object mockHeaders = new Object ();
618+ context .getReqAttachMap ().put ("headers" , mockHeaders );
619+ Mockito .when (request .getContext ()).thenReturn (context );
620+
621+ CompletionStage <ServiceInstance > future = clusterNaming .asyncSelectOne (serviceId , request );
622+ AtomicReference <Throwable > errorRef = new AtomicReference <>();
623+ CompletionStage <ServiceInstance > stage = future .whenComplete ((res , err ) -> {
624+ if (err != null ) {
625+ errorRef .set (err );
626+ }
627+ });
628+ CompletableFuture .allOf (stage .toCompletableFuture ()).join ();
629+ Assert .assertNull (errorRef .get ());
630+ }
631+
632+ @ Test
633+ public void testNoCriteria () {
634+ PolarisSelector clusterNaming = new PolarisSelector ();
635+ clusterNaming .setPluginConfig (selectorConfig );
636+ clusterNaming .init ();
637+
638+ ServiceId serviceId = DataTest .newServiceId ();
639+ Request request = DataTest .mockRequest ();
640+ RequestMeta meta = new RequestMeta ();
641+ Mockito .when (request .getMeta ()).thenReturn (meta );
642+
643+ CompletionStage <ServiceInstance > future = clusterNaming .asyncSelectOne (serviceId , request );
644+ AtomicReference <Throwable > errorRef = new AtomicReference <>();
645+ CompletionStage <ServiceInstance > stage = future .whenComplete ((res , err ) -> {
646+ if (err != null ) {
647+ errorRef .set (err );
648+ }
649+ });
650+ CompletableFuture .allOf (stage .toCompletableFuture ()).join ();
651+ Assert .assertNull (errorRef .get ());
652+ }
653+
654+ @ Test
655+ public void testWithExtMap () {
656+ Map <String , Object > extMap = new HashMap <>();
657+ extMap .put ("worker_pool" , "selector_pool1" );
658+ extMap .put ("test_key" , "test_value" );
659+ PluginConfig config = new PluginConfig ("selector_ext" , PolarisSelector .class , extMap );
660+
661+ PolarisSelector selector = new PolarisSelector ();
662+ selector .setPluginConfig (config );
663+ selector .init ();
664+ Assert .assertNotNull (selector .getPolarisAPI ());
665+ selector .destroy ();
666+ }
667+
668+ @ Test
669+ public void testReqNoNamespace () {
670+ PolarisSelector clusterNaming = new PolarisSelector ();
671+ clusterNaming .setPluginConfig (selectorConfig );
672+ clusterNaming .init ();
673+
674+ ServiceId serviceId = new ServiceId ();
675+ serviceId .setServiceName (DataTest .getService ());
676+ serviceId .setVersion ("1.0" );
677+ serviceId .setGroup ("group" );
678+ serviceId .setParameters (new HashMap <>());
679+
680+ CompletionStage <ServiceInstance > future = clusterNaming .asyncSelectOne (serviceId , DataTest .request );
681+ AtomicReference <Throwable > errorRef = new AtomicReference <>();
682+ CompletionStage <ServiceInstance > stage = future .whenComplete ((res , err ) -> {
683+ if (err != null ) {
684+ errorRef .set (err );
685+ }
686+ });
687+ CompletableFuture .allOf (stage .toCompletableFuture ()).join ();
688+ Assert .assertNull (errorRef .get ());
689+ }
690+
691+ @ Test
692+ public void testAllReqNoNamespace () {
693+ PolarisSelector clusterNaming = new PolarisSelector ();
694+ clusterNaming .setPluginConfig (selectorConfig );
695+ clusterNaming .init ();
696+
697+ ServiceId serviceId = new ServiceId ();
698+ serviceId .setServiceName (DataTest .getService ());
699+ serviceId .setVersion ("1.0" );
700+ serviceId .setGroup ("group" );
701+ serviceId .setParameters (new HashMap <>());
702+
703+ CompletionStage <List <ServiceInstance >> future = clusterNaming .asyncSelectAll (serviceId , DataTest .request );
704+ AtomicReference <Throwable > errorRef = new AtomicReference <>();
705+ CompletionStage <List <ServiceInstance >> stage = future .whenComplete ((res , err ) -> {
706+ if (err != null ) {
707+ errorRef .set (err );
708+ }
709+ });
710+ CompletableFuture .allOf (stage .toCompletableFuture ()).join ();
711+ Assert .assertNull (errorRef .get ());
712+ }
577713}
0 commit comments