java: Get the DatabaseOptions.rootDir to work
Note that the rootDir is not exposed in the io.v.syncbase.core. The
purpose of this CL is to get all the high-level API tests from
SyncbaseTest to work. This change also adds the ability to shutdown
syncbase. The high-level API tests are reconfigured to use and empty
list of mounts points speed up the shutdown.
MultiPart: 2/3
Change-Id: Idd810de20c65dc21bac8d8841e64854abbaa4bd3
diff --git a/syncbase/src/main/java/io/v/syncbase/Syncbase.java b/syncbase/src/main/java/io/v/syncbase/Syncbase.java
index e6f7d47..f1b14e2 100644
--- a/syncbase/src/main/java/io/v/syncbase/Syncbase.java
+++ b/syncbase/src/main/java/io/v/syncbase/Syncbase.java
@@ -7,6 +7,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Timer;
@@ -38,8 +39,8 @@
public static class DatabaseOptions {
// Where data should be persisted.
public String rootDir;
- // TODO(sadovsky): Figure out what this should default to.
- public List<String> mountPoints = ImmutableList.of("/ns.dev.v.io:8101/tmp/todos/users/");
+ // We use an empty mountPoints to avoid talking to the global mounttabled.
+ public List<String> mountPoints = new ArrayList<>();
// TODO(sadovsky): Figure out how developers should specify this.
public String adminUserId = "alexfandrianto@google.com";
// TODO(sadovsky): Figure out how developers should specify this.
@@ -120,6 +121,7 @@
sSelfAndCloud = ImmutableMap.of(
Permissions.IN, ImmutableList.of(getPersonalBlessingString(),
sOpts.getCloudBlessingString()));
+ io.v.syncbase.internal.Service.Init(sOpts.rootDir);
// TODO(razvanm): Surface Cgo function to shut down syncbase.
try {
// TODO(razvanm): Use just the name after Blessings.AppBlessingFromContext starts
@@ -158,6 +160,14 @@
}
}
+ public static void shutdown() {
+ if (sDatabase == null) {
+ return;
+ }
+ io.v.syncbase.internal.Service.Shutdown();
+ sDatabase = null;
+ }
+
/**
* Returns true iff the user is currently logged in.
*/
diff --git a/syncbase/src/main/java/io/v/syncbase/internal/Service.java b/syncbase/src/main/java/io/v/syncbase/internal/Service.java
index 0a4ed82..7f1c54c 100644
--- a/syncbase/src/main/java/io/v/syncbase/internal/Service.java
+++ b/syncbase/src/main/java/io/v/syncbase/internal/Service.java
@@ -11,6 +11,9 @@
import io.v.syncbase.core.VersionedPermissions;
public class Service {
+ public static native void Init(String rootDir);
+ public static native void Shutdown();
+
public static native VersionedPermissions GetPermissions();
public static native void SetPermissions(VersionedPermissions permissions) throws VError;
diff --git a/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java b/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java
index 922eb29..46c4301 100644
--- a/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/SyncbaseTest.java
@@ -7,6 +7,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.SettableFuture;
+import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -38,6 +39,11 @@
System.loadLibrary("syncbase");
}
+ @After
+ public void tearDown() throws Exception {
+ Syncbase.shutdown();
+ }
+
private Syncbase.DatabaseOptions newDatabaseOptions() {
Syncbase.DatabaseOptions opts = new Syncbase.DatabaseOptions();
// Use a fresh rootDir for each test run.
diff --git a/syncbase/src/test/java/io/v/syncbase/core/BatchDatabaseTest.java b/syncbase/src/test/java/io/v/syncbase/core/BatchDatabaseTest.java
index 891f3cf..ea9decc 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/BatchDatabaseTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/BatchDatabaseTest.java
@@ -4,17 +4,31 @@
package io.v.syncbase.core;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.IOException;
import static io.v.syncbase.core.TestConstants.anyCollectionPermissions;
import static io.v.syncbase.core.TestConstants.anyDbPermissions;
import static org.junit.Assert.fail;
public class BatchDatabaseTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ io.v.syncbase.internal.Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ io.v.syncbase.internal.Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java b/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java
index 46daa54..0c01105 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/CollectionTest.java
@@ -4,13 +4,19 @@
package io.v.syncbase.core;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.List;
import static io.v.syncbase.core.TestConstants.anyCollectionPermissions;
import static io.v.syncbase.core.TestConstants.anyDbPermissions;
+import static io.v.syncbase.internal.Service.Init;
+import static io.v.syncbase.internal.Service.Shutdown;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
@@ -18,9 +24,18 @@
import static org.junit.Assert.fail;
public class CollectionTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ io.v.syncbase.internal.Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ io.v.syncbase.internal.Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/core/DatabaseHandleTest.java b/syncbase/src/test/java/io/v/syncbase/core/DatabaseHandleTest.java
index 08bd888..d706e32 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/DatabaseHandleTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/DatabaseHandleTest.java
@@ -4,21 +4,36 @@
package io.v.syncbase.core;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.List;
import static io.v.syncbase.core.TestConstants.anyDbPermissions;
+import static io.v.syncbase.internal.Service.Init;
+import static io.v.syncbase.internal.Service.Shutdown;
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 DatabaseHandleTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ io.v.syncbase.internal.Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ io.v.syncbase.internal.Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/core/DatabaseTest.java b/syncbase/src/test/java/io/v/syncbase/core/DatabaseTest.java
index 1ab7585..a20a67c 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/DatabaseTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/DatabaseTest.java
@@ -4,12 +4,18 @@
package io.v.syncbase.core;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.List;
import static io.v.syncbase.core.TestConstants.anyDbPermissions;
+import static io.v.syncbase.internal.Service.Init;
+import static io.v.syncbase.internal.Service.Shutdown;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
@@ -18,9 +24,18 @@
import static org.junit.Assert.fail;
public class DatabaseTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ io.v.syncbase.internal.Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ io.v.syncbase.internal.Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/core/RowTest.java b/syncbase/src/test/java/io/v/syncbase/core/RowTest.java
index 48cb8f8..f2a791d 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/RowTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/RowTest.java
@@ -4,20 +4,36 @@
package io.v.syncbase.core;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.IOException;
import static io.v.syncbase.core.TestConstants.anyCollectionPermissions;
import static io.v.syncbase.core.TestConstants.anyDbPermissions;
+import static io.v.syncbase.internal.Service.Init;
+import static io.v.syncbase.internal.Service.Shutdown;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
public class RowTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ io.v.syncbase.internal.Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ io.v.syncbase.internal.Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/core/ServiceTest.java b/syncbase/src/test/java/io/v/syncbase/core/ServiceTest.java
index ddd32ce..6cad9f0 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/ServiceTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/ServiceTest.java
@@ -4,8 +4,13 @@
package io.v.syncbase.core;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.IOException;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
@@ -14,9 +19,18 @@
import static org.junit.Assert.fail;
public class ServiceTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ io.v.syncbase.internal.Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ io.v.syncbase.internal.Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java b/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java
index 4d2fcf7..2baa848 100644
--- a/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/core/SyncgroupTest.java
@@ -4,8 +4,13 @@
package io.v.syncbase.core;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -20,6 +25,20 @@
import static org.junit.Assert.fail;
public class SyncgroupTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
+ @Before
+ public void setUp() throws IOException {
+ System.loadLibrary("syncbase");
+ io.v.syncbase.internal.Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ io.v.syncbase.internal.Service.Shutdown();
+ }
+
@Test
public void create() {
Id dbId = new Id("idp:a:angrybirds", "core_create_syncgroups");
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/BlessingsTest.java b/syncbase/src/test/java/io/v/syncbase/internal/BlessingsTest.java
index dc9aeb7..d3439e3 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/BlessingsTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/BlessingsTest.java
@@ -4,8 +4,13 @@
package io.v.syncbase.internal;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+
+import java.io.IOException;
import io.v.syncbase.core.VError;
@@ -15,9 +20,18 @@
import static org.junit.Assert.fail;
public class BlessingsTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java b/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
index 0216303..c4b7b46 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
@@ -6,13 +6,18 @@
import com.google.common.util.concurrent.SettableFuture;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
+import io.v.syncbase.Syncbase;
import io.v.syncbase.core.Id;
import io.v.syncbase.core.KeyValue;
import io.v.syncbase.core.Permissions;
@@ -28,9 +33,18 @@
import static org.junit.Assert.fail;
public class CollectionTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
index 46faeff..a7f3d1a 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
@@ -6,9 +6,13 @@
import com.google.common.util.concurrent.SettableFuture;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -17,6 +21,7 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import io.v.syncbase.Syncbase;
import io.v.syncbase.core.CollectionRowPattern;
import io.v.syncbase.core.Id;
import io.v.syncbase.core.SyncgroupMemberInfo;
@@ -37,9 +42,18 @@
import static org.junit.Assert.fail;
public class DatabaseTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/RowTest.java b/syncbase/src/test/java/io/v/syncbase/internal/RowTest.java
index a622543..263e511 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/RowTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/RowTest.java
@@ -4,11 +4,16 @@
package io.v.syncbase.internal;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.Arrays;
+import io.v.syncbase.Syncbase;
import io.v.syncbase.core.Id;
import io.v.syncbase.core.VError;
@@ -20,9 +25,18 @@
import static org.junit.Assert.fail;
public class RowTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java b/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
index 6b629fa..9a79448 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
@@ -4,9 +4,15 @@
package io.v.syncbase.internal;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
+
+import io.v.syncbase.Syncbase;
import io.v.syncbase.core.VError;
import io.v.syncbase.core.VersionedPermissions;
@@ -16,9 +22,18 @@
import static org.junit.Assert.fail;
public class ServiceTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Service.Shutdown();
}
@Test
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/UtilTest.java b/syncbase/src/test/java/io/v/syncbase/internal/UtilTest.java
index 1f6929a..d7e0209 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/UtilTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/UtilTest.java
@@ -4,9 +4,13 @@
package io.v.syncbase.internal;
+import org.junit.After;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import java.io.IOException;
import java.util.Arrays;
import io.v.syncbase.core.Id;
@@ -14,9 +18,18 @@
import static org.junit.Assert.assertEquals;
public class UtilTest {
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
@Before
- public void setUp() {
+ public void setUp() throws IOException {
System.loadLibrary("syncbase");
+ Service.Init(folder.newFolder().getAbsolutePath());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ Service.Shutdown();
}
@Test