2727import org .apache .hugegraph .config .ServerOptions ;
2828import org .apache .hugegraph .define .WorkLoad ;
2929import org .apache .hugegraph .testutil .Assert ;
30+ import org .apache .hugegraph .testutil .Whitebox ;
3031import org .apache .hugegraph .unit .BaseUnitTest ;
3132import org .junit .Before ;
3233import org .junit .Test ;
@@ -55,9 +56,8 @@ public void setup() {
5556 Mockito .when (this .requestContext .getMethod ()).thenReturn ("GET" );
5657
5758 this .loadDetectFilter = new LoadDetectFilter ();
58- injectProvider (this .loadDetectFilter , "loadProvider" , () -> this .workLoad );
59- injectProvider (this .loadDetectFilter , "configProvider" ,
60- () -> createConfig (8 , 0 ));
59+ this .setLoadProvider (this .workLoad );
60+ this .setConfigProvider (createConfig (8 , 0 ));
6161 }
6262
6363 @ Test
@@ -74,8 +74,7 @@ public void testFilter_WhiteListPathIgnored() {
7474 public void testFilter_RejectsWhenWorkerLoadIsTooHigh () {
7575 setupPath ("graphs/hugegraph/vertices" ,
7676 List .of ("graphs" , "hugegraph" , "vertices" ));
77- injectProvider (this .loadDetectFilter , "configProvider" ,
78- () -> createConfig (2 , 0 ));
77+ this .setConfigProvider (createConfig (2 , 0 ));
7978 this .workLoad .incrementAndGet ();
8079
8180 ServiceUnavailableException exception = (ServiceUnavailableException ) Assert .assertThrows (
@@ -92,8 +91,7 @@ public void testFilter_RejectsWhenWorkerLoadIsTooHigh() {
9291 public void testFilter_RejectsWhenFreeMemoryIsTooLow () {
9392 setupPath ("graphs/hugegraph/vertices" ,
9493 List .of ("graphs" , "hugegraph" , "vertices" ));
95- injectProvider (this .loadDetectFilter , "configProvider" ,
96- () -> createConfig (8 , Integer .MAX_VALUE ));
94+ this .setConfigProvider (createConfig (8 , Integer .MAX_VALUE ));
9795
9896 ServiceUnavailableException exception = (ServiceUnavailableException ) Assert .assertThrows (
9997 ServiceUnavailableException .class ,
@@ -109,8 +107,7 @@ public void testFilter_RejectsWhenFreeMemoryIsTooLow() {
109107 public void testFilter_AllowsRequestWhenLoadAndMemoryAreHealthy () {
110108 setupPath ("graphs/hugegraph/vertices" ,
111109 List .of ("graphs" , "hugegraph" , "vertices" ));
112- injectProvider (this .loadDetectFilter , "configProvider" ,
113- () -> createConfig (8 , 0 ));
110+ this .setConfigProvider (createConfig (8 , 0 ));
114111
115112 this .loadDetectFilter .filter (this .requestContext );
116113
@@ -138,14 +135,13 @@ private PathSegment createPathSegment(String path) {
138135 return segment ;
139136 }
140137
141- private <T > void injectProvider (LoadDetectFilter filter , String fieldName ,
142- Provider <T > provider ) {
143- try {
144- java .lang .reflect .Field field = LoadDetectFilter .class .getDeclaredField (fieldName );
145- field .setAccessible (true );
146- field .set (filter , provider );
147- } catch (Exception e ) {
148- throw new RuntimeException ("Failed to inject provider: " + fieldName , e );
149- }
138+ private void setLoadProvider (WorkLoad workLoad ) {
139+ Whitebox .setInternalState (this .loadDetectFilter , "loadProvider" ,
140+ (Provider <WorkLoad >) () -> workLoad );
141+ }
142+
143+ private void setConfigProvider (HugeConfig config ) {
144+ Whitebox .setInternalState (this .loadDetectFilter , "configProvider" ,
145+ (Provider <HugeConfig >) () -> config );
150146 }
151147}
0 commit comments