summaryrefslogtreecommitdiffstats
path: root/java/jvpp-stats/io/fd
diff options
context:
space:
mode:
Diffstat (limited to 'java/jvpp-stats/io/fd')
-rw-r--r--java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java50
-rw-r--r--java/jvpp-stats/io/fd/jvpp/stats/dto/InterfaceStatistics.java111
-rw-r--r--java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java43
-rw-r--r--java/jvpp-stats/io/fd/jvpp/stats/test/Readme.txt5
4 files changed, 209 insertions, 0 deletions
diff --git a/java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java b/java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java
new file mode 100644
index 0000000..821373a
--- /dev/null
+++ b/java/jvpp-stats/io/fd/jvpp/stats/JVppClientStatsImpl.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2019 PANTHEON.tech.
+ *
+ * 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.
+ */
+
+package io.fd.jvpp.stats;
+
+import static io.fd.jvpp.NativeLibraryLoader.loadLibrary;
+import static java.lang.String.format;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardCopyOption;
+import java.nio.file.attribute.PosixFilePermission;
+import java.nio.file.attribute.PosixFilePermissions;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import io.fd.jvpp.stats.dto.InterfaceStatistics;
+
+public class JVppClientStatsImpl {
+
+ private static final Logger LOG = Logger.getLogger(JVppClientStatsImpl.class.getName());
+
+ static {
+ final String libName = "libjvpp_stats.so";
+ try {
+ loadLibrary(libName, JVppClientStatsImpl.class);
+ } catch (IOException e) {
+ LOG.log(Level.SEVERE, format("Can't find vpp jni library: %s", libName), e);
+ throw new ExceptionInInitializerError(e);
+ }
+ }
+
+ public static native InterfaceStatistics[] interfaceStatisticsDump();
+}
diff --git a/java/jvpp-stats/io/fd/jvpp/stats/dto/InterfaceStatistics.java b/java/jvpp-stats/io/fd/jvpp/stats/dto/InterfaceStatistics.java
new file mode 100644
index 0000000..49486a1
--- /dev/null
+++ b/java/jvpp-stats/io/fd/jvpp/stats/dto/InterfaceStatistics.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2019 PANTHEON.tech.
+ *
+ * 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.
+ */
+
+package io.fd.jvpp.stats.dto;
+
+public class InterfaceStatistics {
+
+ private int swIfIndex;
+ private int outErrors;
+ private int outMulticastPkts;
+ private int outUnicastPkts;
+ private int outBroadcastPkts;
+ private int outBytes;
+ private int inErrors;
+ private int inMulticastPkts;
+ private int inUnicastPkts;
+ private int inBroadcastPkts;
+ private int inBytes;
+
+ public InterfaceStatistics(final int swIfIndex, final int outErrors, final int outMulticastPkts,
+ final int outUnicastPkts,
+ final int outBroadcastPkts, final int outBytes, final int inErrors,
+ final int inMulticastPkts, final int inUnicastPkts,
+ final int inBroadcastPkts, final int inBytes) {
+ this.swIfIndex = swIfIndex;
+ this.outErrors = outErrors;
+ this.outMulticastPkts = outMulticastPkts;
+ this.outUnicastPkts = outUnicastPkts;
+ this.outBroadcastPkts = outBroadcastPkts;
+ this.outBytes = outBytes;
+ this.inErrors = inErrors;
+ this.inMulticastPkts = inMulticastPkts;
+ this.inUnicastPkts = inUnicastPkts;
+ this.inBroadcastPkts = inBroadcastPkts;
+ this.inBytes = inBytes;
+ }
+
+ public int getSwIfIndex() {
+ return swIfIndex;
+ }
+
+ public int getOutErrors() {
+ return outErrors;
+ }
+
+ public int getOutMulticastPkts() {
+ return outMulticastPkts;
+ }
+
+ public int getOutUnicastPkts() {
+ return outUnicastPkts;
+ }
+
+ public int getOutBroadcastPkts() {
+ return outBroadcastPkts;
+ }
+
+ public int getOutBytes() {
+ return outBytes;
+ }
+
+ public int getInErrors() {
+ return inErrors;
+ }
+
+ public int getInMulticastPkts() {
+ return inMulticastPkts;
+ }
+
+ public int getInUnicastPkts() {
+ return inUnicastPkts;
+ }
+
+ public int getInBroadcastPkts() {
+ return inBroadcastPkts;
+ }
+
+ public int getInBytes() {
+ return inBytes;
+ }
+
+ @java.lang.Override
+ public java.lang.String toString() {
+ return "InterfaceStatistics{" +
+ "swIfIndex=" + swIfIndex +
+ ", outErrors=" + outErrors +
+ ", outMulticastPkts=" + outMulticastPkts +
+ ", outUnicastPkts=" + outUnicastPkts +
+ ", outBroadcastPkts=" + outBroadcastPkts +
+ ", outBytes=" + outBytes +
+ ", inErrors=" + inErrors +
+ ", inMulticastPkts=" + inMulticastPkts +
+ ", inUnicastPkts=" + inUnicastPkts +
+ ", inBroadcastPkts=" + inBroadcastPkts +
+ ", inBytes=" + inBytes +
+ '}';
+ }
+}
diff --git a/java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java b/java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java
new file mode 100644
index 0000000..5077509
--- /dev/null
+++ b/java/jvpp-stats/io/fd/jvpp/stats/test/JvppStatsApiTest.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2019 PANTHEON.tech.
+ *
+ * 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.
+ */
+
+package io.fd.jvpp.stats.test;
+
+import io.fd.jvpp.stats.JVppClientStatsImpl;
+import io.fd.jvpp.stats.dto.InterfaceStatistics;
+
+class JvppStatsApiTest {
+
+ public static void main(String[] args) {
+
+ JVppClientStatsImpl myImpl = new JVppClientStatsImpl();
+ InterfaceStatistics[] statistics = myImpl.interfaceStatisticsDump();
+
+ if (statistics == null) {
+ System.out.println("in java - dump was null");
+ return;
+ }
+
+ if (statistics.length == 0) {
+ System.out.println("in java - dump was empty");
+ return;
+ }
+
+ for (int i = 0; i < statistics.length; i++) {
+ System.out.println(statistics[i].toString());
+ }
+ }
+}
diff --git a/java/jvpp-stats/io/fd/jvpp/stats/test/Readme.txt b/java/jvpp-stats/io/fd/jvpp/stats/test/Readme.txt
new file mode 100644
index 0000000..cda9ed2
--- /dev/null
+++ b/java/jvpp-stats/io/fd/jvpp/stats/test/Readme.txt
@@ -0,0 +1,5 @@
+This package contains basic tests for jvpp. To run the tests:
+
+- Make sure VPP is running
+- From JVPP's java/ folder execute:
+ - sudo java -cp jvpp-registry-19.04.jar:jvpp-stats-19.04.jar io.fd.jvpp.stats.test.JvppStatsApiTest