Gabe Black has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/28181 )

Change subject: util: Add a simple junit test for the gem5 ops java wrapper.
......................................................................

util: Add a simple junit test for the gem5 ops java wrapper.

If possible, this gets built into the jar which also holds the wrapper.
It can be run on its own through its own main function, or through the
junit mechanism directly.

Change-Id: Iaec7f6deb26bbad75da027c71edca50ef25697cf
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28181
Tested-by: kokoro <noreply+kok...@google.com>
Reviewed-by: Bobby R. Bruce <bbr...@ucdavis.edu>
Maintainer: Gabe Black <gabe.bl...@gmail.com>
---
M util/m5/README.md
M util/m5/src/SConscript
A util/m5/src/java/gem5/OpsTest.java
3 files changed, 63 insertions(+), 1 deletion(-)

Approvals:
  Bobby R. Bruce: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass



diff --git a/util/m5/README.md b/util/m5/README.md
index 941c499..7d2d66b 100644
--- a/util/m5/README.md
+++ b/util/m5/README.md
@@ -223,6 +223,10 @@
running these tests under gem5, set the RUNNING_IN_GEM5 environment variable
 which will tell the test to expect the trigger mechanism to actually work.

+A junit test exists for the Java jar, in a file named 'OpsTest.java'. That test
+can be run on its own through its own main function, or through the junit
+framework.
+


 # Command line utility
diff --git a/util/m5/src/SConscript b/util/m5/src/SConscript
index 70c123a..5eabcc3 100644
--- a/util/m5/src/SConscript
+++ b/util/m5/src/SConscript
@@ -97,13 +97,17 @@
     # A wrapper to make the m5 ops available in Java through the JNI.
     #
     java_env = shared_env.Clone()
+    pkg_dir = Dir('java').Dir('gem5')
+    srcs = [ pkg_dir.File('Ops.java') ]
+    if java_env['HAVE_JUNIT']:
+        srcs.append(pkg_dir.File('OpsTest.java'))
     # SCons provides Java and JavaH builders, but the JavaH builder assumes
# that the javah tool exists. Java has dropped that tool in favor of a -h # option on javac which the Java builder doesn't know how to use. To get # around this, we set up our own builder which does the "right thing" here.
     java_env.Command([ Dir('java').File('gem5_Ops.h'),
                        Dir('out').Dir('java').File('gem5Ops.jar') ],
-                     Dir('java').Dir('gem5').File('Ops.java'),
+                     srcs,
                      MakeAction([
                          '${JAVAC} ${JAVACFLAGS} -d ${OUT} '
                          '${SOURCES} -h ${JAVA_DIR}',
diff --git a/util/m5/src/java/gem5/OpsTest.java b/util/m5/src/java/gem5/OpsTest.java
new file mode 100644
index 0000000..6e855c9
--- /dev/null
+++ b/util/m5/src/java/gem5/OpsTest.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2020 Google Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package gem5;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+import org.junit.runner.JUnitCore;
+import org.junit.runner.Result;
+import org.junit.runner.notification.Failure;
+
+import gem5.Ops;
+
+public class OpsTest {
+
+    @Test
+    public void m5SumShouldReturnSum() {
+        gem5.Ops gem5_ops = new gem5.Ops();
+
+        long a = 1, b = 2, c = 3, d = 4, e = 5, f = 6;
+
+        long sum = gem5_ops.sum(a, b, c, d, e, f);
+        assertEquals(a + b + c + d + e + f, sum);
+    }
+
+    public static void main(String[] args) {
+        org.junit.runner.JUnitCore.main("gem5.OpsTest");
+    }
+}

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/28181
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Iaec7f6deb26bbad75da027c71edca50ef25697cf
Gerrit-Change-Number: 28181
Gerrit-PatchSet: 30
Gerrit-Owner: Gabe Black <gabebl...@google.com>
Gerrit-Reviewer: Bobby R. Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Earl Ou <shunhsin...@google.com>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Giacomo Travaglini <giacomo.travagl...@arm.com>
Gerrit-Reviewer: Jason Lowe-Power <power...@gmail.com>
Gerrit-Reviewer: Yu-hsin Wang <yuhsi...@google.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to