diff --git a/.classpath b/.classpath index 1acd76836..1e8fddb84 100644 --- a/.classpath +++ b/.classpath @@ -52,7 +52,7 @@ - + @@ -85,7 +85,10 @@ - + + + + @@ -105,6 +108,6 @@ - + diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1b26b691f..aab241b1a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -46,7 +46,7 @@ jobs: matrix: include: - java: '11' - mongo: 'mongodb-linux-x86_64-3.6.23' + mongo: 'mongodb-linux-x86_64-ubuntu2204-7.0.4' minio: '2019-05-23T00-29-34Z' wired_tiger: 'true' ant_test: 'test_quick_coverage' diff --git a/build.xml b/build.xml index 37b8e5219..5b3af13f7 100644 --- a/build.xml +++ b/build.xml @@ -24,7 +24,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -62,7 +62,10 @@ - + + + + @@ -101,7 +104,6 @@ - @@ -109,6 +111,8 @@ + + diff --git a/docsource/conf.py b/docsource/conf.py index d20766337..62b8d1086 100644 --- a/docsource/conf.py +++ b/docsource/conf.py @@ -52,7 +52,7 @@ # The short X.Y version. version = '0.14' # The full version, including alpha/beta/rc tags. -release = '0.14.2' +release = '0.14.3' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docsource/releasenotes.rst b/docsource/releasenotes.rst index 5dc51ea7e..6d67c630c 100644 --- a/docsource/releasenotes.rst +++ b/docsource/releasenotes.rst @@ -3,6 +3,14 @@ Workspace service release notes =============================== +VERSION: 0.14.3 (Released 2/22/2024) +------------------------------------ + +UPDATES: + +* The MongoDB clients have been updated to the most recent version and the service tested against Mongo 7. + + VERSION: 0.14.2 (Released 11/9/2023) ------------------------------------ diff --git a/scripts/workspace_container_test.py b/scripts/workspace_container_test.py index fb3d53be3..f2b45847c 100644 --- a/scripts/workspace_container_test.py +++ b/scripts/workspace_container_test.py @@ -16,7 +16,7 @@ """ -WORKSPACE_VERSION = "0.14.2" +WORKSPACE_VERSION = "0.14.3" AUTH_URL = "http://localhost:8080" WS_URL = "http://localhost:7058" diff --git a/src/us/kbase/typedobj/db/test/MongoTypeStorageTest.java b/src/us/kbase/typedobj/db/test/MongoTypeStorageTest.java index 384abea41..e3a5afb04 100644 --- a/src/us/kbase/typedobj/db/test/MongoTypeStorageTest.java +++ b/src/us/kbase/typedobj/db/test/MongoTypeStorageTest.java @@ -12,7 +12,8 @@ import org.junit.BeforeClass; import org.junit.Test; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import us.kbase.common.test.TestCommon; @@ -43,7 +44,7 @@ public static void setUp() throws Exception { MONGO.getServerPort()); @SuppressWarnings("resource") - final MongoClient mc = new MongoClient("localhost:" + MONGO.getServerPort()); + final MongoClient mc = MongoClients.create("mongodb://localhost:" + MONGO.getServerPort()); MONGO_DB = mc.getDatabase("test_" + MongoTypeStorageTest.class.getSimpleName()); } diff --git a/src/us/kbase/typedobj/db/test/TypeRegisteringTest.java b/src/us/kbase/typedobj/db/test/TypeRegisteringTest.java index d51513fc1..a71f7cd7a 100644 --- a/src/us/kbase/typedobj/db/test/TypeRegisteringTest.java +++ b/src/us/kbase/typedobj/db/test/TypeRegisteringTest.java @@ -33,7 +33,8 @@ import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import us.kbase.common.test.TestCommon; @@ -144,7 +145,7 @@ public static MongoDatabase createMongoDbConnection() throws Exception { mongo.getTempDir()); } @SuppressWarnings("resource") - final MongoClient mcli = new MongoClient("localhost:" + mongo.getServerPort()); + final MongoClient mcli = MongoClients.create("mongodb://localhost:" + mongo.getServerPort()); final MongoDatabase mdb = mcli.getDatabase("TypeRegisteringTest"); TestCommon.destroyDB(mdb); return mdb; diff --git a/src/us/kbase/workspace/kbase/InitWorkspaceServer.java b/src/us/kbase/workspace/kbase/InitWorkspaceServer.java index 8c69fb9ba..6d4f66cdb 100644 --- a/src/us/kbase/workspace/kbase/InitWorkspaceServer.java +++ b/src/us/kbase/workspace/kbase/InitWorkspaceServer.java @@ -22,11 +22,12 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.slf4j.LoggerFactory; -import com.mongodb.MongoClient; -import com.mongodb.MongoClientOptions; import com.mongodb.MongoCredential; import com.mongodb.MongoException; import com.mongodb.ServerAddress; +import com.mongodb.MongoClientSettings; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import us.kbase.abstracthandle.AbstractHandleClient; @@ -411,16 +412,18 @@ private static SampleIdHandlerFactory getSampleIdHandlerFactory( public static MongoClient buildMongo(final KBaseWorkspaceConfig c, final String dbName) throws WorkspaceInitException { //TODO ZLATER MONGO handle shards & replica sets - final MongoClientOptions opts = MongoClientOptions.builder() - .retryWrites(c.getMongoRetryWrites()).build(); + final MongoClientSettings.Builder mongoBuilder = MongoClientSettings.builder() + .retryWrites(c.getMongoRetryWrites()) + .applyToClusterSettings(builder -> builder.hosts( + Arrays.asList(new ServerAddress(c.getHost())))); try { if (c.getMongoUser() != null) { final MongoCredential creds = MongoCredential.createCredential( c.getMongoUser(), dbName, c.getMongoPassword().toCharArray()); // unclear if and when it's safe to clear the password - return new MongoClient(new ServerAddress(c.getHost()), creds, opts); + return MongoClients.create(mongoBuilder.credential(creds).build()); } else { - return new MongoClient(new ServerAddress(c.getHost()), opts); + return MongoClients.create(mongoBuilder.build()); } } catch (MongoException e) { LoggerFactory.getLogger(InitWorkspaceServer.class).error( diff --git a/src/us/kbase/workspace/kbase/SchemaUpdaterCLI.java b/src/us/kbase/workspace/kbase/SchemaUpdaterCLI.java index e33573052..0453d85bb 100644 --- a/src/us/kbase/workspace/kbase/SchemaUpdaterCLI.java +++ b/src/us/kbase/workspace/kbase/SchemaUpdaterCLI.java @@ -9,7 +9,7 @@ import org.slf4j.LoggerFactory; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; import ch.qos.logback.classic.Level; diff --git a/src/us/kbase/workspace/test/WorkspaceMongoIndex.java b/src/us/kbase/workspace/test/WorkspaceMongoIndex.java new file mode 100644 index 000000000..78959c14f --- /dev/null +++ b/src/us/kbase/workspace/test/WorkspaceMongoIndex.java @@ -0,0 +1,25 @@ +package us.kbase.workspace.test; + +import com.mongodb.client.MongoDatabase; +import org.bson.Document; + +import java.util.HashSet; +import java.util.Set; + +public class WorkspaceMongoIndex { + + public static Set getAndNormalizeIndexes(final MongoDatabase db, final String collectionName) { + final Set indexes = new HashSet<>(); + for (final Document index: db.getCollection(collectionName).listIndexes()) { + // In MongoDB 4.4, the listIndexes and the mongo shell helper method db.collection.getIndexes() + // no longer returns the namespace ns field in the index specification documents. + index.remove("ns"); + // some versions of Mongo return ints, some longs. Convert all to longs. + if (index.containsKey("expireAfterSeconds")) { + index.put("expireAfterSeconds", ((Number) index.get("expireAfterSeconds")).longValue()); + } + indexes.add(index); + } + return indexes; + } +} diff --git a/src/us/kbase/workspace/test/controllers/handle/HandleServiceController.java b/src/us/kbase/workspace/test/controllers/handle/HandleServiceController.java index 1e348def6..e38d10008 100644 --- a/src/us/kbase/workspace/test/controllers/handle/HandleServiceController.java +++ b/src/us/kbase/workspace/test/controllers/handle/HandleServiceController.java @@ -9,17 +9,14 @@ import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.LinkedList; import java.util.Map; -import java.util.Scanner; import org.apache.commons.io.FileUtils; import org.ini4j.Ini; import org.ini4j.Profile.Section; import us.kbase.auth.AuthToken; import us.kbase.common.test.controllers.mongo.MongoController; -import us.kbase.common.test.controllers.shock.ShockController; /** Q&D Utility to run the Handle Service for the purposes of testing from Java. @@ -137,36 +134,4 @@ public void destroy(final boolean deleteTempFiles, final boolean dumpLogToStdOut FileUtils.deleteDirectory(tempDir.toFile()); } } - - public static void main(String[] args) throws Exception { - MongoController monc = new MongoController( - "/kb/runtime/bin/mongod", - Paths.get("workspacetesttemp"), false); - ShockController sc = new ShockController( - "/kb/deployment/bin/shock-server", - "0.9.6", - Paths.get("workspacetesttemp"), - System.getProperty("test.user1"), - "localhost:" + monc.getServerPort(), - "shockdb", "foo", "foo", new URL("http://foo.com")); - HandleServiceController hsc = new HandleServiceController( - monc, - "http://localhost:" + sc.getServerPort(), - null, //this will break the hm, need a token - Paths.get("workspacetesttemp"), - new URL("http://foo.com"), - "KBASE_ADMIN", - "/kb/deployment/lib", - "handle_controller_test_handle_db"); - System.out.println("handlesrv: " + hsc.getHandleServerPort()); - System.out.println(hsc.getTempDir()); - Scanner reader = new Scanner(System.in); - System.out.println("any char to shut down"); - //get user input for a - reader.next(); - hsc.destroy(false); - sc.destroy(false); - monc.destroy(false); - reader.close(); - } } diff --git a/src/us/kbase/workspace/test/database/mongo/GridFSBlobStoreTest.java b/src/us/kbase/workspace/test/database/mongo/GridFSBlobStoreTest.java index 8b960273d..4a0f308cd 100644 --- a/src/us/kbase/workspace/test/database/mongo/GridFSBlobStoreTest.java +++ b/src/us/kbase/workspace/test/database/mongo/GridFSBlobStoreTest.java @@ -24,7 +24,9 @@ import com.github.zafarkhaja.semver.Version; import com.google.common.collect.ImmutableMap; -import com.mongodb.MongoClient; + +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import com.mongodb.client.gridfs.GridFSBucket; import com.mongodb.client.gridfs.GridFSBuckets; @@ -58,7 +60,7 @@ public static void setUpClass() throws Exception { mongo.getTempDir()); TestCommon.stfuLoggers(); @SuppressWarnings("resource") - final MongoClient mongoClient = new MongoClient("localhost:" + mongo.getServerPort()); + final MongoClient mongoClient = MongoClients.create("mongodb://localhost:" + mongo.getServerPort()); final MongoDatabase db = mongoClient.getDatabase("GridFSBackendTest"); gfs = GridFSBuckets.create(db); gfsb = new GridFSBlobStore(db); diff --git a/src/us/kbase/workspace/test/database/mongo/MongoInternalsTest.java b/src/us/kbase/workspace/test/database/mongo/MongoInternalsTest.java index 6e92b71b7..d2fe6af53 100644 --- a/src/us/kbase/workspace/test/database/mongo/MongoInternalsTest.java +++ b/src/us/kbase/workspace/test/database/mongo/MongoInternalsTest.java @@ -85,7 +85,9 @@ import us.kbase.workspace.test.workspace.WorkspaceTester; import com.google.common.collect.ImmutableMap; -import com.mongodb.MongoClient; + +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -125,8 +127,7 @@ public static void setUpClass() throws Exception { System.out.println("Using mongo temp dir " + mongo.getTempDir()); TestCommon.stfuLoggers(); - String mongohost = "localhost:" + mongo.getServerPort(); - mongoClient = new MongoClient(mongohost); + mongoClient = MongoClients.create("mongodb://localhost:" + mongo.getServerPort()); db = mongoClient.getDatabase("MongoInternalsTest"); final MongoDatabase tdb = mongoClient.getDatabase("MongoInternalsTest_types"); TestCommon.destroyDB(db); diff --git a/src/us/kbase/workspace/test/database/mongo/MongoStartUpTest.java b/src/us/kbase/workspace/test/database/mongo/MongoStartUpTest.java index 39c99ca5f..eb0386947 100644 --- a/src/us/kbase/workspace/test/database/mongo/MongoStartUpTest.java +++ b/src/us/kbase/workspace/test/database/mongo/MongoStartUpTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.fail; import static us.kbase.common.test.TestCommon.assertExceptionCorrect; import static us.kbase.common.test.TestCommon.set; +import static us.kbase.workspace.test.WorkspaceMongoIndex.getAndNormalizeIndexes; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -23,7 +24,8 @@ import org.junit.BeforeClass; import org.junit.Test; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; @@ -65,8 +67,7 @@ public static void setUpClass() throws Exception { TestCommon.useWiredTigerEngine()); System.out.println("Using mongo temp dir " + mongo.getTempDir()); TestCommon.stfuLoggers(); - String mongohost = "localhost:" + mongo.getServerPort(); - mongoClient = new MongoClient(mongohost); + mongoClient = MongoClients.create("mongodb://localhost:" + mongo.getServerPort()); final MongoDatabase mdb = mongoClient.getDatabase("MongoStartUpTest"); db = mongoClient.getDatabase("MongoStartUpTest"); @@ -297,35 +298,22 @@ private void createIndexes(final String dbname) throws Exception { method.invoke(null, wsdb); } - private Set getIndexes(final MongoDatabase db, final String collection) { - final Set indexes = new HashSet<>(); - db.getCollection(collection).listIndexes().forEach((Consumer) indexes::add); - return indexes; - } - - private void setNamespace(final Set toBeModified, final String namespace) { - toBeModified.forEach(d -> d.append("ns", namespace)); - } - @Test public void indexesConfig() throws Exception { final Set expectedIndexes = set( new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("config", 1)) - .append("name", "config_1") - .append("ns", "MongoStartUpTest.config"), + .append("name", "config_1"), new Document("v", INDEX_VER) .append("key", new Document("_id", 1)) .append("name", "_id_") - .append("ns", "MongoStartUpTest.config") ); - assertThat("incorrect indexes", getIndexes(db, "config"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(db, "config"), is(expectedIndexes)); final MongoDatabase wsdb = mongoClient.getDatabase("indexesConfig"); createIndexes("indexesConfig"); - setNamespace(expectedIndexes, "indexesConfig.config"); - assertThat("incorrect indexes", getIndexes(wsdb, "config"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(wsdb, "config"), is(expectedIndexes)); } @Test @@ -334,19 +322,16 @@ public void indexesDynamicConfig() throws Exception { new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("key", 1)) - .append("name", "key_1") - .append("ns", "MongoStartUpTest.dyncfg"), + .append("name", "key_1"), new Document("v", INDEX_VER) .append("key", new Document("_id", 1)) .append("name", "_id_") - .append("ns", "MongoStartUpTest.dyncfg") ); - assertThat("incorrect indexes", getIndexes(db, "dyncfg"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(db, "dyncfg"), is(expectedIndexes)); final MongoDatabase wsdb = mongoClient.getDatabase("indexesDynConfig"); createIndexes("indexesDynConfig"); - setNamespace(expectedIndexes, "indexesDynConfig.dyncfg"); - assertThat("incorrect indexes", getIndexes(wsdb, "dyncfg"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(wsdb, "dyncfg"), is(expectedIndexes)); } @Test @@ -355,34 +340,28 @@ public void indexesWorkspaces() throws Exception { new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("ws", 1)) - .append("name", "ws_1") - .append("ns", "MongoStartUpTest.workspaces"), + .append("name", "ws_1"), new Document("v", INDEX_VER) .append("unique", true) .append("sparse", true) .append("key", new Document("name", 1)) - .append("name", "name_1") - .append("ns", "MongoStartUpTest.workspaces"), + .append("name", "name_1"), new Document("v", INDEX_VER) .append("key", new Document("owner", 1)) - .append("name", "owner_1") - .append("ns", "MongoStartUpTest.workspaces"), + .append("name", "owner_1"), new Document("v", INDEX_VER) .append("sparse", true) .append("key", new Document("meta", 1)) - .append("name", "meta_1") - .append("ns", "MongoStartUpTest.workspaces"), + .append("name", "meta_1"), new Document("v", INDEX_VER) .append("key", new Document("_id", 1)) .append("name", "_id_") - .append("ns", "MongoStartUpTest.workspaces") ); - assertThat("incorrect indexes", getIndexes(db, "workspaces"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(db, "workspaces"), is(expectedIndexes)); final MongoDatabase wsdb = mongoClient.getDatabase("indexesWorkspaces"); createIndexes("indexesWorkspaces"); - setNamespace(expectedIndexes, "indexesWorkspaces.workspaces"); - assertThat("incorrect indexes", getIndexes(wsdb, "workspaces"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(wsdb, "workspaces"), is(expectedIndexes)); } @Test @@ -391,23 +370,19 @@ public void indexesWorkspaceACLs() throws Exception { new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("id", 1).append("user", 1).append("perm", 1)) - .append("name", "id_1_user_1_perm_1") - .append("ns", "MongoStartUpTest.workspaceACLs"), + .append("name", "id_1_user_1_perm_1"), new Document("v", INDEX_VER) .append("key", new Document("user", 1).append("perm", 1).append("id", 1)) - .append("name", "user_1_perm_1_id_1") - .append("ns", "MongoStartUpTest.workspaceACLs"), + .append("name", "user_1_perm_1_id_1"), new Document("v", INDEX_VER) .append("key", new Document("_id", 1)) .append("name", "_id_") - .append("ns", "MongoStartUpTest.workspaceACLs") ); - assertThat("incorrect indexes", getIndexes(db, "workspaceACLs"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(db, "workspaceACLs"), is(expectedIndexes)); final MongoDatabase wsdb = mongoClient.getDatabase("indexesWorkspaceACLs"); createIndexes("indexesWorkspaceACLs"); - setNamespace(expectedIndexes, "indexesWorkspaceACLs.workspaceACLs"); - assertThat("incorrect indexes", getIndexes(wsdb, "workspaceACLs"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(wsdb, "workspaceACLs"), is(expectedIndexes)); } @Test @@ -416,32 +391,26 @@ public void indexesWorkspaceObjects() throws Exception { new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("ws", 1).append("name", 1)) - .append("name", "ws_1_name_1") - .append("ns", "MongoStartUpTest.workspaceObjects"), + .append("name", "ws_1_name_1"), new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("ws", 1).append("id", 1)) - .append("name", "ws_1_id_1") - .append("ns", "MongoStartUpTest.workspaceObjects"), + .append("name", "ws_1_id_1"), new Document("v", INDEX_VER) .append("key", new Document("moddate", 1)) - .append("name", "moddate_1") - .append("ns", "MongoStartUpTest.workspaceObjects"), + .append("name", "moddate_1"), new Document("v", INDEX_VER) .append("key", new Document("del", 1).append("refcnt", 1)) - .append("name", "del_1_refcnt_1") - .append("ns", "MongoStartUpTest.workspaceObjects"), + .append("name", "del_1_refcnt_1"), new Document("v", INDEX_VER) .append("key", new Document("_id", 1)) .append("name", "_id_") - .append("ns", "MongoStartUpTest.workspaceObjects") ); - assertThat("incorrect indexes", getIndexes(db, "workspaceObjects"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(db, "workspaceObjects"), is(expectedIndexes)); final MongoDatabase wsdb = mongoClient.getDatabase("indexesWorkspaceObjects"); createIndexes("indexesWorkspaceObjects"); - setNamespace(expectedIndexes, "indexesWorkspaceObjects.workspaceObjects"); - assertThat("incorrect indexes", getIndexes(wsdb, "workspaceObjects"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(wsdb, "workspaceObjects"), is(expectedIndexes)); } @Test @@ -450,68 +419,55 @@ public void indexesWorkspaceObjectVersions() throws Exception { new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("ws", 1).append("id", 1).append("ver", 1)) - .append("name", "ws_1_id_1_ver_1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "ws_1_id_1_ver_1"), new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("ws", 1).append("id", 1).append("ver", -1)) - .append("name", "ws_1_id_1_ver_-1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "ws_1_id_1_ver_-1"), new Document("v", INDEX_VER) .append("key", new Document("tyname", 1) .append("tymaj", 1).append("tymin", 1) .append("ws", 1).append("id", 1).append("ver", -1)) - .append("name", "tyname_1_tymaj_1_tymin_1_ws_1_id_1_ver_-1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "tyname_1_tymaj_1_tymin_1_ws_1_id_1_ver_-1"), new Document("v", INDEX_VER) .append("key", new Document("tyname", 1).append("tymaj", 1) .append("ws", 1).append("id", 1).append("ver", -1)) - .append("name", "tyname_1_tymaj_1_ws_1_id_1_ver_-1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "tyname_1_tymaj_1_ws_1_id_1_ver_-1"), new Document("v", INDEX_VER) .append("key", new Document("tyname", 1) .append("ws", 1).append("id", 1).append("ver", -1)) - .append("name", "tyname_1_ws_1_id_1_ver_-1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "tyname_1_ws_1_id_1_ver_-1"), new Document("v", INDEX_VER) .append("key", new Document("provenance", 1)) - .append("name", "provenance_1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "provenance_1"), new Document("v", INDEX_VER) .append("key", new Document("savedby", 1)) - .append("name", "savedby_1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "savedby_1"), new Document("v", INDEX_VER) .append("sparse", true) .append("key", new Document("provrefs", 1)) - .append("name", "provrefs_1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "provrefs_1"), new Document("v", INDEX_VER) .append("sparse", true) .append("key", new Document("refs", 1)) - .append("name", "refs_1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "refs_1"), new Document("v", INDEX_VER) .append("key", new Document("savedate", 1)) - .append("name", "savedate_1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "savedate_1"), new Document("v", INDEX_VER) .append("sparse", true) .append("key", new Document("meta", 1)) - .append("name", "meta_1") - .append("ns", "MongoStartUpTest.workspaceObjVersions"), + .append("name", "meta_1"), new Document("v", INDEX_VER) .append("key", new Document("_id", 1)) .append("name", "_id_") - .append("ns", "MongoStartUpTest.workspaceObjVersions") ); - assertThat("incorrect indexes", getIndexes(db, "workspaceObjVersions"), + assertThat("incorrect indexes", getAndNormalizeIndexes(db, "workspaceObjVersions"), is(expectedIndexes)); final MongoDatabase wsdb = mongoClient.getDatabase("indexesWorkspaceObjectVersions"); createIndexes("indexesWorkspaceObjectVersions"); - setNamespace(expectedIndexes, "indexesWorkspaceObjectVersions.workspaceObjVersions"); - assertThat("incorrect indexes", getIndexes(wsdb, "workspaceObjVersions"), + assertThat("incorrect indexes", getAndNormalizeIndexes(wsdb, "workspaceObjVersions"), is(expectedIndexes)); } @@ -521,19 +477,16 @@ public void indexesAdmins() throws Exception { new Document("v", INDEX_VER) .append("unique", true) .append("key", new Document("user", 1)) - .append("name", "user_1") - .append("ns", "MongoStartUpTest.admins"), + .append("name", "user_1"), new Document("v", INDEX_VER) .append("key", new Document("_id", 1)) .append("name", "_id_") - .append("ns", "MongoStartUpTest.admins") ); - assertThat("incorrect indexes", getIndexes(db, "admins"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(db, "admins"), is(expectedIndexes)); final MongoDatabase wsdb = mongoClient.getDatabase("indexesAdmins"); createIndexes("indexesAdmins"); - setNamespace(expectedIndexes, "indexesAdmins.admins"); - assertThat("incorrect indexes", getIndexes(wsdb, "admins"), is(expectedIndexes)); + assertThat("incorrect indexes", getAndNormalizeIndexes(wsdb, "admins"), is(expectedIndexes)); } } diff --git a/src/us/kbase/workspace/test/database/mongo/MongoWorkspaceDBTest.java b/src/us/kbase/workspace/test/database/mongo/MongoWorkspaceDBTest.java index 919988222..c0242c697 100644 --- a/src/us/kbase/workspace/test/database/mongo/MongoWorkspaceDBTest.java +++ b/src/us/kbase/workspace/test/database/mongo/MongoWorkspaceDBTest.java @@ -38,7 +38,9 @@ import org.junit.Test; import com.google.common.collect.ImmutableMap; -import com.mongodb.MongoClient; + +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import us.kbase.common.service.UObject; @@ -116,7 +118,7 @@ public static void setup() throws Exception { MONGO.getServerPort()); @SuppressWarnings("resource") - final MongoClient mc = new MongoClient("localhost:" + MONGO.getServerPort()); + final MongoClient mc = MongoClients.create("mongodb://localhost:" + MONGO.getServerPort()); MONGO_DB = mc.getDatabase("test_" + MongoWorkspaceDBTest.class.getSimpleName()); } diff --git a/src/us/kbase/workspace/test/database/mongo/S3BlobStoreIntegrationTest.java b/src/us/kbase/workspace/test/database/mongo/S3BlobStoreIntegrationTest.java index 61ed84ae7..8c3a3c1f4 100644 --- a/src/us/kbase/workspace/test/database/mongo/S3BlobStoreIntegrationTest.java +++ b/src/us/kbase/workspace/test/database/mongo/S3BlobStoreIntegrationTest.java @@ -17,7 +17,8 @@ import org.junit.BeforeClass; import org.junit.Test; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import software.amazon.awssdk.regions.Region; @@ -67,9 +68,8 @@ public static void setUpClass() throws Exception { System.out.println("Using Mongo temp dir " + mongoCon.getTempDir()); System.out.println("Started mongo server at localhost:" + mongoCon.getServerPort()); - String mongohost = "localhost:" + mongoCon.getServerPort(); @SuppressWarnings("resource") - MongoClient mongoClient = new MongoClient(mongohost); + MongoClient mongoClient = MongoClients.create("mongodb://localhost:" + mongoCon.getServerPort()); mongo = mongoClient.getDatabase("MinioBackendTest"); minio = new MinioController( diff --git a/src/us/kbase/workspace/test/database/mongo/SchemaUpdaterTest.java b/src/us/kbase/workspace/test/database/mongo/SchemaUpdaterTest.java index e758c7ff8..5fec5968e 100644 --- a/src/us/kbase/workspace/test/database/mongo/SchemaUpdaterTest.java +++ b/src/us/kbase/workspace/test/database/mongo/SchemaUpdaterTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.fail; import static org.mockito.Mockito.when; import static us.kbase.workspace.test.WorkspaceTestCommon.basicProv; +import static us.kbase.workspace.test.WorkspaceMongoIndex.getAndNormalizeIndexes; import java.nio.file.Paths; import java.time.Instant; @@ -23,7 +24,8 @@ import org.junit.BeforeClass; import org.junit.Test; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; @@ -72,7 +74,7 @@ public static void setup() throws Exception { System.out.println("Started test mongo instance at localhost:" + MONGO.getServerPort()); - MC = new MongoClient("localhost:" + MONGO.getServerPort()); + MC = MongoClients.create("mongodb://localhost:" + MONGO.getServerPort()); setUpTestDB(); } @@ -255,23 +257,18 @@ private void assertIndexesCreated(final MongoDatabase db, final boolean oldTypeI * MongoWorkspaceDB method is already thoroughly tested elsewhere we just check a single * index. */ - final String ns = db.getName() + "." + COL_WS_VER; final Document currentIndex = new Document("v", 2) .append("key", new Document("tyname", 1) .append("tymaj", 1).append("tymin", 1) .append("ws", 1).append("id", 1).append("ver", -1)) - .append("name", "tyname_1_tymaj_1_tymin_1_ws_1_id_1_ver_-1") - .append("ns", ns); - final Set indexes = new HashSet<>(); - db.getCollection("workspaceObjVersions").listIndexes() - .forEach((Consumer) indexes::add); + .append("name", "tyname_1_tymaj_1_tymin_1_ws_1_id_1_ver_-1"); + final Set indexes = getAndNormalizeIndexes(db, "workspaceObjVersions"); assertThat("incorrect current index", indexes.contains(currentIndex), is(true)); if (oldTypeIndex) { final Document typeIndex = new Document("v", 2) .append("key", new Document("type", 1).append("chksum", 1)) - .append("name", "type_1_chksum_1") - .append("ns", ns); + .append("name", "type_1_chksum_1"); assertThat("incorrect old index", indexes.contains(typeIndex), is(true)); } } diff --git a/src/us/kbase/workspace/test/kbase/HandleAndBytestreamIntegrationTest.java b/src/us/kbase/workspace/test/kbase/HandleAndBytestreamIntegrationTest.java index 02298bda3..3a201eb37 100644 --- a/src/us/kbase/workspace/test/kbase/HandleAndBytestreamIntegrationTest.java +++ b/src/us/kbase/workspace/test/kbase/HandleAndBytestreamIntegrationTest.java @@ -146,7 +146,6 @@ public static void setUpClass() throws Exception { // set up auth final String dbname = HandleAndBytestreamIntegrationTest.class.getSimpleName() + "Auth"; AUTH = new AuthController( - TestCommon.getJarsDir(), "localhost:" + MONGO.getServerPort(), dbname, Paths.get(TestCommon.getTempDir())); diff --git a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java index b2226d64a..a47c90fcd 100644 --- a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java +++ b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTest.java @@ -101,7 +101,7 @@ */ public class JSONRPCLayerTest extends JSONRPCLayerTester { - private static final String VER = "0.14.2"; + private static final String VER = "0.14.3"; @Test public void ver() throws Exception { diff --git a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java index 53bab68af..c6c0ef844 100644 --- a/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java +++ b/src/us/kbase/workspace/test/kbase/JSONRPCLayerTester.java @@ -87,7 +87,9 @@ import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.mongodb.MongoClient; + +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; /* @@ -186,7 +188,6 @@ public static void setUpClass() throws Exception { // set up auth final String dbname = JSONRPCLayerTester.class.getSimpleName() + "Auth"; authc = new AuthController( - TestCommon.getJarsDir(), "localhost:" + mongo.getServerPort(), dbname, Paths.get(TestCommon.getTempDir())); @@ -538,7 +539,7 @@ public static void tearDownClass() throws Exception { @Before public void clearDB() throws Exception { - try (final MongoClient mcli = new MongoClient("localhost:" + mongo.getServerPort())) { + try (final MongoClient mcli = MongoClients.create("mongodb://localhost:" + mongo.getServerPort())) { for (final String name: list(DB_WS_NAME_1, DB_WS_NAME_2, DB_WS_NAME_AUTH2_ADMINS)) { final MongoDatabase wsdb = mcli.getDatabase(name); TestCommon.destroyDB(wsdb); diff --git a/src/us/kbase/workspace/test/kbase/LoggingTest.java b/src/us/kbase/workspace/test/kbase/LoggingTest.java index 2ef053358..fe5bbaa39 100644 --- a/src/us/kbase/workspace/test/kbase/LoggingTest.java +++ b/src/us/kbase/workspace/test/kbase/LoggingTest.java @@ -52,7 +52,8 @@ import us.kbase.workspace.database.DynamicConfig; import us.kbase.workspace.test.WorkspaceServerThread; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; /** Tests application logging only - not the standard logging that comes with @@ -100,7 +101,6 @@ public static void setUpClass() throws Exception { // set up auth final String dbname = LoggingTest.class.getSimpleName() + "Auth"; authc = new AuthController( - TestCommon.getJarsDir(), "localhost:" + mongo.getServerPort(), dbname, Paths.get(TestCommon.getTempDir())); @@ -221,7 +221,7 @@ public static void tearDownClass() throws Exception { @Before public void clearDB() throws Exception { logout.reset(); - try (final MongoClient mcli = new MongoClient("localhost:" + mongo.getServerPort())) { + try (final MongoClient mcli = MongoClients.create("mongodb://localhost:" + mongo.getServerPort())) { final MongoDatabase wsdb = mcli.getDatabase(DB_WS_NAME); TestCommon.destroyDB(wsdb); wsdb.getCollection("dyncfg").insertOne( diff --git a/src/us/kbase/workspace/test/kbase/SampleServiceIntegrationTest.java b/src/us/kbase/workspace/test/kbase/SampleServiceIntegrationTest.java index c64337cc6..aa3f27eaa 100644 --- a/src/us/kbase/workspace/test/kbase/SampleServiceIntegrationTest.java +++ b/src/us/kbase/workspace/test/kbase/SampleServiceIntegrationTest.java @@ -30,7 +30,9 @@ import com.arangodb.model.CollectionCreateOptions; import com.github.zafarkhaja.semver.Version; import com.google.common.collect.ImmutableMap; -import com.mongodb.MongoClient; + +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import us.kbase.auth.AuthToken; @@ -123,7 +125,6 @@ public static void setUpClass() throws Exception { // set up auth final String dbname = SampleServiceIntegrationTest.class.getSimpleName() + "Auth"; AUTH = new AuthController( - TestCommon.getJarsDir(), "localhost:" + MONGO.getServerPort(), dbname, Paths.get(TestCommon.getTempDir())); @@ -310,7 +311,7 @@ public static void tearDownClass() throws Exception { @Before public void clearDB() throws Exception { - try (final MongoClient cli = new MongoClient("localhost:" + MONGO.getServerPort())) { + try (final MongoClient cli = MongoClients.create("mongodb://localhost:" + MONGO.getServerPort())) { final MongoDatabase db = cli.getDatabase(WS_DB); TestCommon.destroyDB(db); db.getCollection("dyncfg").insertOne( diff --git a/src/us/kbase/workspace/test/kbase/SchemaUpdaterCLITest.java b/src/us/kbase/workspace/test/kbase/SchemaUpdaterCLITest.java index ea402a5e9..e84f67df5 100644 --- a/src/us/kbase/workspace/test/kbase/SchemaUpdaterCLITest.java +++ b/src/us/kbase/workspace/test/kbase/SchemaUpdaterCLITest.java @@ -27,7 +27,7 @@ import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; import com.mongodb.client.MongoDatabase; import us.kbase.common.test.MapBuilder; @@ -41,7 +41,7 @@ public class SchemaUpdaterCLITest { - private static final String VERSION = "0.14.2"; + private static final String VERSION = "0.14.3"; private static final List HELP = list( "Usage: update_workspace_database_schema [-chosV] ", diff --git a/src/us/kbase/workspace/test/kbase/TypeDelegationTest.java b/src/us/kbase/workspace/test/kbase/TypeDelegationTest.java index a1950a58e..4f38b53ec 100644 --- a/src/us/kbase/workspace/test/kbase/TypeDelegationTest.java +++ b/src/us/kbase/workspace/test/kbase/TypeDelegationTest.java @@ -22,7 +22,9 @@ import org.junit.Test; import com.google.common.collect.ImmutableMap; -import com.mongodb.MongoClient; + +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import us.kbase.auth.AuthToken; @@ -147,7 +149,6 @@ public static void setUp() throws Exception { mongohost, MONGO.getTempDir())); AUTHC = new AuthController( - TestCommon.getJarsDir(), mongohost, CLS + "Auth", Paths.get(TestCommon.getTempDir())); @@ -252,7 +253,7 @@ public static void tearDownClass() throws Exception { @Before public void clearDB() throws Exception { // since we're testing types, we nuke the type database as well as the workspace db - try (final MongoClient mcli = new MongoClient("localhost:" + MONGO.getServerPort())) { + try (final MongoClient mcli = MongoClients.create("mongodb://localhost:" + MONGO.getServerPort())) { for (final String name: list( DB_NAME_WS, DB_NAME_WS_TYPES, DB_NAME_WS_REMOTE, DB_NAME_WS_REMOTE_TYPES)) { final MongoDatabase wsdb = mcli.getDatabase(name); diff --git a/src/us/kbase/workspace/test/workspace/WorkspaceIntegrationWithGridFSTest.java b/src/us/kbase/workspace/test/workspace/WorkspaceIntegrationWithGridFSTest.java index 14a753df0..ffbb3681d 100644 --- a/src/us/kbase/workspace/test/workspace/WorkspaceIntegrationWithGridFSTest.java +++ b/src/us/kbase/workspace/test/workspace/WorkspaceIntegrationWithGridFSTest.java @@ -32,7 +32,8 @@ import org.junit.Test; import org.slf4j.LoggerFactory; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; import ch.qos.logback.classic.Level; @@ -114,7 +115,7 @@ public static void setUpClass() throws Exception { System.out.println("Started test mongo instance at localhost: " + MONGO.getServerPort()); @SuppressWarnings("resource") - final MongoClient mcli = new MongoClient("localhost:" + MONGO.getServerPort()); + final MongoClient mcli = MongoClients.create("mongodb://localhost:" + MONGO.getServerPort()); WSDB = mcli.getDatabase(WSDB_NAME); TYPEDB = mcli.getDatabase(TYPEDB_NAME); TestCommon.destroyDB(WSDB); @@ -145,8 +146,8 @@ public static void tearDownClass() throws Exception { @Before public void clearDB() throws Exception { - try (final MongoClient mongoClient = new MongoClient( - "localhost:" + MONGO.getServerPort())) { + try (final MongoClient mongoClient = MongoClients.create( + "mongodb://localhost:" + MONGO.getServerPort())) { TestCommon.destroyDB(mongoClient.getDatabase(WSDB_NAME)); } } diff --git a/src/us/kbase/workspace/test/workspace/WorkspaceTester.java b/src/us/kbase/workspace/test/workspace/WorkspaceTester.java index 24dc34f6d..1e4e6e3f3 100644 --- a/src/us/kbase/workspace/test/workspace/WorkspaceTester.java +++ b/src/us/kbase/workspace/test/workspace/WorkspaceTester.java @@ -99,7 +99,8 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableMap; -import com.mongodb.MongoClient; +import com.mongodb.client.MongoClient; +import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; @RunWith(Parameterized.class) @@ -173,7 +174,7 @@ public static void tearDownClass() throws Exception { @Before public void clearDB() throws Exception { - try (final MongoClient cli = new MongoClient("localhost:" + mongo.getServerPort())) { + try (final MongoClient cli = MongoClients.create("mongodb://localhost:" + mongo.getServerPort())) { TestCommon.destroyDB(cli.getDatabase(DB_WS_NAME)); } ws.setConfig(DynamicConfigUpdate.getDefault()); @@ -204,7 +205,7 @@ public WorkspaceTester( } if (!CONFIGS.containsKey(config)) { @SuppressWarnings("resource") - final MongoClient mcli = new MongoClient("localhost:" + mongo.getServerPort()); + final MongoClient mcli = MongoClients.create("mongodb://localhost:" + mongo.getServerPort()); final MongoDatabase wsdb = mcli.getDatabase(DB_WS_NAME); final MongoDatabase tdb = mcli.getDatabase(DB_TYPE_NAME); TestCommon.destroyDB(wsdb); diff --git a/src/us/kbase/workspace/version/WorkspaceVersion.java b/src/us/kbase/workspace/version/WorkspaceVersion.java index f21f40963..2d7947e4b 100644 --- a/src/us/kbase/workspace/version/WorkspaceVersion.java +++ b/src/us/kbase/workspace/version/WorkspaceVersion.java @@ -6,6 +6,6 @@ public class WorkspaceVersion { private WorkspaceVersion() {}; /** The version. */ - public static final String VERSION = "0.14.2"; + public static final String VERSION = "0.14.3"; }