cb9cadad57
Change-Id: Ib246f1fbfce93274020ee93ce461e3d8bd8b9f17 Signed-off-by: Ed Warnicke <eaw@cisco.com>
178 lines
5.3 KiB
Java
178 lines
5.3 KiB
Java
/*
|
|
* Copyright (c) 2015 Cisco and/or its affiliates.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import org.openvpp.vppjapi.*;
|
|
|
|
public class demo extends vppApi {
|
|
public static void main (String[] args) throws Exception {
|
|
vppApi api = new vppApi ();
|
|
String intlist;
|
|
int [] contexts;
|
|
int i, limit;
|
|
int trips;
|
|
int rv, errors, saved_error;
|
|
long before, after;
|
|
|
|
rv = api.clientConnect ("JavaTest");
|
|
if (rv == 0)
|
|
System.out.printf ("Connected OK...");
|
|
else
|
|
{
|
|
System.out.printf ("clientConnect returned %d\n", rv);
|
|
System.exit (1);
|
|
}
|
|
|
|
if (false)
|
|
{
|
|
intlist = api.getInterfaceList ("");
|
|
System.out.printf ("Unfiltered interface list:\n%s", intlist);
|
|
|
|
trips = 0;
|
|
|
|
contexts = new int[6];
|
|
|
|
for (i = 0; i < 6; i++)
|
|
{
|
|
contexts[i] = api.swInterfaceSetFlags
|
|
(5 + i /* sw_if_index */,
|
|
(byte)1 /* admin_up */,
|
|
(byte)1 /* link_up (ignored) */,
|
|
(byte)0 /* deleted */);
|
|
}
|
|
|
|
/* Thread.sleep (1); */
|
|
errors = 0;
|
|
saved_error = 0;
|
|
|
|
for (i = 0; i < 6; i ++)
|
|
{
|
|
while (true)
|
|
{
|
|
rv = api.getRetval (contexts[i], 1 /* release */);
|
|
if (rv != -77)
|
|
break;
|
|
Thread.sleep (1);
|
|
trips++;
|
|
}
|
|
if (rv < 0)
|
|
{
|
|
saved_error = rv;
|
|
errors++;
|
|
}
|
|
}
|
|
|
|
if (errors == 0)
|
|
System.out.printf ("intfcs up...\n");
|
|
else
|
|
System.out.printf
|
|
("%d errors, last error %d...\n", errors, saved_error);
|
|
}
|
|
|
|
limit = 250000;
|
|
saved_error = 0;
|
|
errors = 0;
|
|
contexts = new int [limit];
|
|
byte [] address = new byte [4];
|
|
byte [] zeros = new byte [4];
|
|
|
|
address[0] = (byte)192;
|
|
address[1] = (byte)168;
|
|
address[2] = (byte)2;
|
|
address[3] = (byte)1;
|
|
|
|
for (i = 0; i < 4; i++)
|
|
zeros[i] = 0;
|
|
|
|
System.out.printf ("start %d route ops ...", limit);
|
|
|
|
before = System.currentTimeMillis();
|
|
|
|
for (i = 0; i < limit; i++) {
|
|
contexts[i] = api.ipAddDelRoute
|
|
(0 /* int nextHopSwIfIndex */,
|
|
0 /* int vrfId */,
|
|
0 /* int lookupInVrf */,
|
|
0 /* int resolveAttempts */,
|
|
0 /* int classifyTableIndex */,
|
|
(byte)0 /* byte createVrfIfNeeded */,
|
|
(byte)0 /* byte resolveIfNeeded */,
|
|
(byte)1 /* byte isAdd */,
|
|
(byte)1 /* byte isDrop */,
|
|
(byte)0 /* byte isIpv6 */,
|
|
(byte)0 /* byte isLocal */,
|
|
(byte)0 /* byte isClassify */,
|
|
(byte)0 /* byte isMultipath */,
|
|
(byte)0 /* byte notLast */,
|
|
(byte)0 /* byte nextHopWeight */,
|
|
(byte)32 /* byte dstAddressLength */,
|
|
address,
|
|
zeros);
|
|
|
|
address[3] += 1;
|
|
if (address[3] == 0)
|
|
{
|
|
address[2] += 1;
|
|
if (address[2] == 0)
|
|
{
|
|
address[1] += 1;
|
|
{
|
|
if (address[1] == 0)
|
|
{
|
|
address[0] += 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
trips = 0;
|
|
|
|
for (i = 0; i < limit; i++)
|
|
{
|
|
while (true)
|
|
{
|
|
rv = api.getRetval (contexts[i], 1 /* release */);
|
|
if (rv != -77)
|
|
break;
|
|
Thread.sleep (1);
|
|
trips++;
|
|
}
|
|
if (rv < 0)
|
|
{
|
|
saved_error = rv;
|
|
errors++;
|
|
}
|
|
}
|
|
|
|
after = System.currentTimeMillis();
|
|
|
|
|
|
if (errors == 0)
|
|
System.out.printf ("done %d route ops (all OK)...\n", limit);
|
|
else
|
|
System.out.printf
|
|
("%d errors, last error %d...\n", errors, saved_error);
|
|
|
|
System.out.printf ("result in %d trips\n", trips);
|
|
|
|
System.out.printf ("%d routes in %d milliseconds, %d routes/msec\n",
|
|
limit, after - before,
|
|
limit / (after - before));
|
|
|
|
api.clientDisconnect();
|
|
System.out.printf ("Done...\n");
|
|
}
|
|
}
|