Initial commit of vpp code.

Change-Id: Ib246f1fbfce93274020ee93ce461e3d8bd8b9f17
Signed-off-by: Ed Warnicke <eaw@cisco.com>
diff --git a/vpp-japi/japi/test/demo.java b/vpp-japi/japi/test/demo.java
new file mode 100644
index 0000000..ef419d7
--- /dev/null
+++ b/vpp-japi/japi/test/demo.java
@@ -0,0 +1,177 @@
+/*
+ * 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");
+    }
+}