2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.protocol.bmp.mock;
11 import com.google.common.net.InetAddresses;
12 import io.netty.channel.Channel;
13 import java.net.InetAddress;
14 import java.net.InetSocketAddress;
15 import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext;
16 import org.opendaylight.protocol.bmp.api.BmpSession;
17 import org.opendaylight.protocol.bmp.api.BmpSessionFactory;
18 import org.opendaylight.protocol.bmp.api.BmpSessionListenerFactory;
19 import org.opendaylight.protocol.bmp.impl.BmpActivator;
20 import org.opendaylight.protocol.bmp.spi.registry.BmpExtensionProviderActivator;
21 import org.opendaylight.protocol.bmp.spi.registry.BmpExtensionProviderContext;
22 import org.opendaylight.protocol.bmp.spi.registry.SimpleBmpExtensionProviderContext;
23 import org.opendaylight.protocol.util.LoggerUtil;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
27 public final class BmpMock {
29 private static final Logger LOG = LoggerFactory.getLogger(BmpMock.class);
32 throw new UnsupportedOperationException();
35 public static void main(final String[] args) {
36 LOG.info("Starting BMP test tool.");
37 final BmpMockArguments arguments = BmpMockArguments.parseArguments(args);
38 LoggerUtil.initiateLogger(arguments);
40 final BmpMockDispatcher dispatcher = initiateMock(arguments);
41 // now start the server / client
42 if (arguments.isOnPassiveMode()) {
43 deployServers(dispatcher, arguments);
45 deployClients(dispatcher, arguments);
50 private static BmpMockDispatcher initiateMock(final BmpMockArguments arguments) {
51 final BmpExtensionProviderContext ctx = new SimpleBmpExtensionProviderContext();
52 final BmpExtensionProviderActivator bmpActivator = new BmpActivator(
53 ServiceLoaderBGPExtensionProviderContext.getSingletonInstance());
54 bmpActivator.start(ctx);
56 return new BmpMockDispatcher(ctx.getBmpMessageRegistry(),
57 new BmpSessionFactory() {
59 public BmpSession getSession(final Channel channel,
60 final BmpSessionListenerFactory sessionListenerFactory) {
61 return new BmpMockSession(arguments.getPeersCount(), arguments.getPrePolicyRoutesCount(), arguments.getPostPolicyRoutesCount());
66 private static void deployClients(final BmpMockDispatcher dispatcher, final BmpMockArguments arguments) {
67 final InetSocketAddress localAddress = arguments.getLocalAddress();
68 final InetSocketAddress remoteAddress = arguments.getRemoteAddress();
69 InetAddress currentLocal = localAddress.getAddress();
70 final int port = localAddress.getPort();
71 for (int i = 0; i < arguments.getRoutersCount(); i++) {
72 dispatcher.createClient(new InetSocketAddress(currentLocal, port), remoteAddress);
73 currentLocal = InetAddresses.increment(currentLocal);
77 private static void deployServers(final BmpMockDispatcher dispatcher, final BmpMockArguments arguments) {
78 final InetSocketAddress localAddress = arguments.getLocalAddress();
79 InetAddress currentLocal = localAddress.getAddress();
80 final int port = localAddress.getPort();
81 for (int i = 0; i < arguments.getRoutersCount(); i++) {
82 dispatcher.createServer(new InetSocketAddress(currentLocal, port));
83 currentLocal = InetAddresses.increment(currentLocal);