blob: ea1db84bda2b0a05f61826b647fea64e567427b6 [file] [log] [blame]
/*
* 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 {
public static void main (String[] args) throws Exception {
vppApi api = new vppApi ("JavaTest");
System.out.printf ("Connected OK...");
String intlist;
int [] contexts;
int i, limit;
int trips;
int rv, errors, saved_error;
long before, after;
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.close();
System.out.printf ("Done...\n");
}
}