Skip to content
This repository was archived by the owner on Apr 22, 2025. It is now read-only.

Commit d75fe66

Browse files
committed
FAB-9489 Network Config property overrides
Minor fix and some more testing. Change-Id: I983ee96c1619da58e0e2f8d3f5609acbc0f5e0b5 Signed-off-by: rickr <cr22rc@gmail.com>
1 parent 479b498 commit d75fe66

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

src/main/java/org/hyperledger/fabric/sdk/NetworkConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ public Properties getPeerProperties(String name) throws InvalidArgumentException
173173
* @return The orderer's properties.
174174
* @throws InvalidArgumentException
175175
*/
176-
public Properties getOrderProperties(String name) throws InvalidArgumentException {
176+
public Properties getOrdererProperties(String name) throws InvalidArgumentException {
177177
return getNodeProperties("Orderer", name, orderers);
178178

179179
}

src/test/java/org/hyperledger/fabric/sdk/NetworkConfigTest.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
package org.hyperledger.fabric.sdk;
1616

17-
1817
import java.io.File;
1918
import java.io.FileNotFoundException;
2019
import java.io.InputStream;
@@ -29,6 +28,7 @@
2928
import javax.json.JsonObjectBuilder;
3029
import javax.json.JsonValue;
3130

31+
import io.grpc.ManagedChannelBuilder;
3232
import org.hyperledger.fabric.sdk.exception.InvalidArgumentException;
3333
import org.hyperledger.fabric.sdk.exception.NetworkConfigurationException;
3434
import org.hyperledger.fabric.sdk.security.CryptoSuite;
@@ -39,6 +39,8 @@
3939
import org.junit.Test;
4040
import org.junit.rules.ExpectedException;
4141

42+
import static org.hyperledger.fabric.sdk.testutils.TestUtils.getField;
43+
import static org.junit.Assert.assertEquals;
4244
import static org.junit.Assert.assertNotNull;
4345
import static org.junit.Assert.assertNull;
4446
import static org.junit.Assert.assertTrue;
@@ -342,6 +344,13 @@ public void testLoadFromConfigFileYamlOverrides() throws Exception {
342344
config.setPeerProperties(peerName, peerProperties);
343345
}
344346

347+
for (String orderName : config.getOrdererNames()) {
348+
Properties ordererProperties = config.getOrdererProperties(orderName);
349+
ordererProperties.put("grpc.NettyChannelBuilderOption.maxInboundMessageSize", 9000000);
350+
ordererProperties.put("grpc.NettyChannelBuilderOption.keepAliveWithoutCalls", new Object[] {false});
351+
config.setOrdererProperties(orderName, ordererProperties);
352+
}
353+
345354
//HFClient client = HFClient.loadFromConfig(f);
346355
assertNotNull(config);
347356

@@ -363,6 +372,27 @@ public void testLoadFromConfigFileYamlOverrides() throws Exception {
363372
assertNotNull(properties.get("grpc.NettyChannelBuilderOption.keepAliveTimeout"));
364373
assertNotNull(properties.get("grpc.NettyChannelBuilderOption.keepAliveWithoutCalls"));
365374

375+
Endpoint ep = new Endpoint(peer.getUrl(), properties);
376+
ManagedChannelBuilder<?> channelBuilder = ep.getChannelBuilder();
377+
378+
assertEquals(5L * 60L * 1000000000L, getField(channelBuilder, "keepAliveTimeNanos"));
379+
assertEquals(8L * 1000000000L, getField(channelBuilder, "keepAliveTimeoutNanos"));
380+
assertEquals(true, getField(channelBuilder, "keepAliveWithoutCalls"));
381+
}
382+
383+
for (Orderer orderer : channel.getOrderers()) {
384+
385+
Properties properties = orderer.getProperties();
386+
387+
assertNotNull(properties);
388+
assertNotNull(properties.get("grpc.NettyChannelBuilderOption.maxInboundMessageSize"));
389+
assertNotNull(properties.get("grpc.NettyChannelBuilderOption.keepAliveWithoutCalls"));
390+
391+
Endpoint ep = new Endpoint(orderer.getUrl(), properties);
392+
ManagedChannelBuilder<?> channelBuilder = ep.getChannelBuilder();
393+
394+
assertEquals(9000000, getField(channelBuilder, "maxInboundMessageSize"));
395+
assertEquals(false, getField(channelBuilder, "keepAliveWithoutCalls"));
366396
}
367397

368398
}

src/test/java/org/hyperledger/fabric/sdk/testutils/TestUtils.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,14 +128,33 @@ public static Object invokeMethod(Object o, String methodName, Object... args) t
128128
public static Object getField(Object o, String fieldName) {
129129

130130
try {
131-
final Field field = o.getClass().getDeclaredField(fieldName);
132-
field.setAccessible(true);
131+
final Field field = getFieldInt(o.getClass(), fieldName);
132+
133133
return field.get(o);
134134
} catch (Exception e) {
135135
throw new RuntimeException("Cannot get value of field " + fieldName, e);
136136
}
137137
}
138138

139+
private static Field getFieldInt(Class o, String name) throws NoSuchFieldException {
140+
Field ret;
141+
try {
142+
ret = o.getDeclaredField(name);
143+
} catch (NoSuchFieldException e) {
144+
145+
Class superclass = o.getSuperclass();
146+
if (null != superclass) {
147+
ret = getFieldInt(superclass, name);
148+
149+
} else {
150+
throw e;
151+
}
152+
153+
}
154+
ret.setAccessible(true);
155+
return ret;
156+
}
157+
139158
/**
140159
* Reset config.
141160
*/

0 commit comments

Comments
 (0)