java: Hook and test the Service.ListDatabases and Database.Create
The listing of databases doesn't work properly so the test doesn't
attempt to list the databases after creating a database.
MultiPart: 1/2
Change-Id: Id8471545d1eef90fe2051b0ebba77f19b394a027
diff --git a/syncbase/src/main/java/io/v/syncbase/internal/Id.java b/syncbase/src/main/java/io/v/syncbase/internal/Id.java
index c9afdd7..34e912b 100644
--- a/syncbase/src/main/java/io/v/syncbase/internal/Id.java
+++ b/syncbase/src/main/java/io/v/syncbase/internal/Id.java
@@ -7,4 +7,20 @@
public class Id {
String blessing;
String name;
+
+ public Id() {
+ // This empty constructor makes the JNI code a little bit simpler by making this class
+ // similar to other classes for which we cache class/method/field IDs.
+ }
+
+ public Id(String blessing, String name) {
+ this.blessing = blessing;
+ this.name = name;
+ }
+
+ // TODO(razvanm): Switch to v23_syncbase_EncodeId.
+ // Reference: https://github.com/vanadium/go.v23/blob/master/syncbase/util/util.go
+ public String toString() {
+ return blessing + "," + name;
+ }
}
diff --git a/syncbase/src/main/java/io/v/syncbase/internal/VError.java b/syncbase/src/main/java/io/v/syncbase/internal/VError.java
index c6e9192..721c2ca 100644
--- a/syncbase/src/main/java/io/v/syncbase/internal/VError.java
+++ b/syncbase/src/main/java/io/v/syncbase/internal/VError.java
@@ -9,4 +9,9 @@
long actionCode;
String message;
String stack;
+
+ public String toString() {
+ return String.format("{\n id: \"%s\"\n actionCode: %d\n message: \"%s\"\n stack: \"%s\"}",
+ id, actionCode, message, stack);
+ }
}
\ No newline at end of file
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
new file mode 100644
index 0000000..6c5baa4
--- /dev/null
+++ b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
@@ -0,0 +1,44 @@
+// Copyright 2016 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package io.v.syncbase.internal;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+public class DatabaseTest {
+ @Before
+ public void setUp() {
+ System.loadLibrary("syncbase");
+ }
+
+ @Test
+ public void createDatabase() {
+ Id dbId = new Id("blessing", "db");
+ // The instance is empty so creating of a database should succeed.
+ try {
+ Database.Create(dbId.toString(), null);
+ } catch (VError vError) {
+ fail();
+ }
+
+ // Creating the same database should raise an exception.
+ boolean exceptionThrown = false;
+ try {
+ Database.Create(dbId.toString(), null);
+ } catch (VError vError) {
+ assertEquals("v.io/v23/verror.Exist", vError.id);
+ assertNotNull(vError.message);
+ assertNotNull(vError.stack);
+ assertEquals(0, vError.actionCode);
+ exceptionThrown = true;
+ }
+ assertTrue(exceptionThrown);
+ }
+}
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java b/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
new file mode 100644
index 0000000..58e5ebb
--- /dev/null
+++ b/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
@@ -0,0 +1,22 @@
+// Copyright 2016 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package io.v.syncbase.internal;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.assertTrue;
+
+public class ServiceTest {
+ @Before
+ public void setUp() {
+ System.loadLibrary("syncbase");
+ }
+
+ @Test
+ public void listDatabases() {
+ assertTrue(Service.ListDatabases().isEmpty());
+ }
+}