* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-
package rpcbenchmark.impl;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableMap.Builder;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicLong;
-
-import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
+import org.opendaylight.mdsal.binding.api.RpcService;
+import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.RoutedRpcBench;
import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.RoutedRpcBenchInput;
import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.RoutedRpcBenchInputBuilder;
import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.RoutedRpcBenchOutput;
-import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.RpcbenchPayloadService;
import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.payload.Payload;
import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.payload.PayloadBuilder;
+import org.opendaylight.yang.gen.v1.rpcbench.payload.rev150702.payload.PayloadKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RoutedBindingRTClient implements RTCClient {
- private static final Logger LOG = LoggerFactory.getLogger(GlobalBindingRTCClient.class);
- private final RpcbenchPayloadService service;
+ private static final Logger LOG = LoggerFactory.getLogger(RoutedBindingRTClient.class);
+ private final RoutedRpcBench routedRpcBench;
private final AtomicLong rpcOk = new AtomicLong(0);
private final AtomicLong rpcError = new AtomicLong(0);
- private final List<RoutedRpcBenchInput> inVal;
+ private final List<RoutedRpcBenchInput> inVal = new ArrayList<>();
private final int inSize;
- public long getRpcOk() {
- return rpcOk.get();
- }
-
- public long getRpcError() {
- return rpcError.get();
- }
-
- public RoutedBindingRTClient(RpcConsumerRegistry registry, int inSize, List<InstanceIdentifier<?>> routeIid) {
- if (registry != null) {
- this.service = registry.getRpcService(RpcbenchPayloadService.class);
- } else {
- this.service = null;
- }
+ public RoutedBindingRTClient(final RpcService rpcService, final int inSize,
+ final List<InstanceIdentifier<?>> routeIid) {
+ routedRpcBench = rpcService.getRpc(RoutedRpcBench.class);
this.inSize = inSize;
- this.inVal = new ArrayList<>();
- List<Payload> listVals = new ArrayList<>();
+ Builder<PayloadKey, Payload> listVals = ImmutableMap.builderWithExpectedSize(inSize);
for (int i = 0; i < inSize; i++) {
- listVals.add(new PayloadBuilder().setId(i).build());
+ final PayloadKey key = new PayloadKey(i);
+ listVals.put(key, new PayloadBuilder().withKey(key).build());
}
for (InstanceIdentifier<?> iid : routeIid) {
- inVal.add(new RoutedRpcBenchInputBuilder().setNode(iid).setPayload(listVals).build());
+ inVal.add(new RoutedRpcBenchInputBuilder().setNode(iid).setPayload(listVals.build()).build());
}
}
- public void runTest(int iterations) {
- int rpcOk = 0;
- int rpcError = 0;
+ @Override
+ public long getRpcOk() {
+ return rpcOk.get();
+ }
+
+ @Override
+ public long getRpcError() {
+ return rpcError.get();
+ }
+
+ @Override
+ public void runTest(final int iterations) {
+ int ok = 0;
+ int error = 0;
int rpcServerCnt = inVal.size();
for (int i = 0; i < iterations; i++) {
RoutedRpcBenchInput input = inVal.get(ThreadLocalRandom.current().nextInt(rpcServerCnt));
- Future<RpcResult<RoutedRpcBenchOutput>> output = service.routedRpcBench(input);
+ Future<RpcResult<RoutedRpcBenchOutput>> output = routedRpcBench.invoke(input);
try {
RpcResult<RoutedRpcBenchOutput> rpcResult = output.get();
if (rpcResult.isSuccessful()) {
- List<Payload> retVal = rpcResult.getResult().getPayload();
+ Map<PayloadKey, Payload> retVal = rpcResult.getResult().getPayload();
if (retVal.size() == inSize) {
- rpcOk++;
+ ok++;
}
else {
- rpcError++;
+ error++;
}
}
} catch (InterruptedException | ExecutionException e) {
- rpcError++;
+ error++;
LOG.error("Execution failed: ", e);
}
}
- this.rpcOk.addAndGet(rpcOk);
- this.rpcError.addAndGet(rpcError);
+ rpcOk.addAndGet(ok);
+ rpcError.addAndGet(error);
}
@Override
// TODO Auto-generated method stub
}
-
}