X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=benchmark%2Frpcbenchmark%2Fsrc%2Fmain%2Fjava%2Frpcbenchmark%2Fimpl%2FRoutedBindingRTClient.java;h=bd5e83e8bf511286f0ff7f56c6042f8b64c0ce98;hb=HEAD;hp=201ed2dc15053857dc7416c408ace49693109f61;hpb=f1df4d4b606bd729b9f13b7ed19e35203708645d;p=controller.git diff --git a/benchmark/rpcbenchmark/src/main/java/rpcbenchmark/impl/RoutedBindingRTClient.java b/benchmark/rpcbenchmark/src/main/java/rpcbenchmark/impl/RoutedBindingRTClient.java index 201ed2dc15..bd5e83e8bf 100644 --- a/benchmark/rpcbenchmark/src/main/java/rpcbenchmark/impl/RoutedBindingRTClient.java +++ b/benchmark/rpcbenchmark/src/main/java/rpcbenchmark/impl/RoutedBindingRTClient.java @@ -5,92 +5,94 @@ * 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 inVal; + private final List 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> routeIid) { - if (registry != null) { - this.service = registry.getRpcService(RpcbenchPayloadService.class); - } else { - this.service = null; - } + public RoutedBindingRTClient(final RpcService rpcService, final int inSize, + final List> routeIid) { + routedRpcBench = rpcService.getRpc(RoutedRpcBench.class); this.inSize = inSize; - this.inVal = new ArrayList<>(); - List listVals = new ArrayList<>(); + Builder 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> output = service.routedRpcBench(input); + Future> output = routedRpcBench.invoke(input); try { RpcResult rpcResult = output.get(); if (rpcResult.isSuccessful()) { - List retVal = rpcResult.getResult().getPayload(); + Map 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 @@ -98,5 +100,4 @@ public class RoutedBindingRTClient implements RTCClient { // TODO Auto-generated method stub } - }