public class org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer extends java.lang.Object
{
public static final java.lang.String DB_ROOT_USERNAME;
public static final java.lang.String DB_ROOT_PASSWORD;
public static final java.lang.String DB_AUTH_SOURCE;
private static final org.slf4j.Logger LOGGER;
private static final int MONGO_PORT;
private static final java.lang.String DB_USER_DATABASE;
private static final java.lang.String DB_USER_DB_PERSON_COLLECTION;
private org.testcontainers.containers.GenericContainer mongoDBContainer;
public void <init>()
{
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
private static com.mongodb.client.MongoClient mongoClientForRootAdminWithStaticUserNamePassword(java.lang.String, java.lang.Integer)
{
com.mongodb.client.MongoClient v;
java.lang.String v, v;
java.lang.Integer v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.Integer;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.Integer)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("mongodb://sa:sa@\u0001:\u0001/admin");
v = staticinvoke <com.mongodb.client.MongoClients: com.mongodb.client.MongoClient create(java.lang.String)>(v);
return v;
}
public int run()
{
int v;
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: int run(java.lang.String)>("4.4.1");
return v;
}
public int run(java.lang.String)
{
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
int v;
org.testcontainers.DockerClientFactory v;
java.lang.String v;
boolean v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v := @parameter: java.lang.String;
v = staticinvoke <org.testcontainers.DockerClientFactory: org.testcontainers.DockerClientFactory instance()>();
v = virtualinvoke v.<org.testcontainers.DockerClientFactory: boolean isDockerAvailable()>();
staticinvoke <org.junit.Assume: void assumeTrue(java.lang.String,boolean)>("A Docker client must be running for this integration test.", v);
v = specialinvoke v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: int startMongoDbContainer(java.lang.String)>(v);
return v;
}
public void insertPersonData()
{
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: void insertPersonData(java.lang.String)>("/core_mongodb_execution_test/test_setup/person.json");
return;
}
public void insertPersonData(java.lang.String)
{
java.lang.Throwable v;
org.bson.Document v;
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
com.mongodb.client.MongoClient v;
com.mongodb.client.MongoDatabase v;
java.lang.Integer v;
org.testcontainers.containers.GenericContainer v, v;
java.lang.String v, v, v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v := @parameter: java.lang.String;
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: java.lang.Integer getMappedPort(int)>(27017);
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: java.lang.String getHost()>();
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: com.mongodb.client.MongoClient mongoClientForRootAdminWithStaticUserNamePassword(java.lang.String,java.lang.Integer)>(v, v);
label:
v = interfaceinvoke v.<com.mongodb.client.MongoClient: com.mongodb.client.MongoDatabase getDatabase(java.lang.String)>("userDatabase");
v = specialinvoke v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: java.lang.String loadFromFile(java.lang.String)>(v);
v = staticinvoke <org.bson.Document: org.bson.Document parse(java.lang.String)>(v);
interfaceinvoke v.<com.mongodb.client.MongoDatabase: org.bson.Document runCommand(org.bson.conversions.Bson)>(v);
label:
interfaceinvoke v.<com.mongodb.client.MongoClient: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public java.lang.Integer getRunningPort()
{
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
org.testcontainers.containers.GenericContainer v;
java.lang.Integer v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: java.lang.Integer getMappedPort(int)>(27017);
return v;
}
public org.testcontainers.containers.GenericContainer getContainer()
{
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
org.testcontainers.containers.GenericContainer v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
return v;
}
public boolean isRunning()
{
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
org.testcontainers.containers.GenericContainer v;
boolean v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: boolean isRunning()>();
return v;
}
private int startMongoDbContainer(java.lang.String)
{
java.lang.Throwable v, v;
com.mongodb.client.MongoClient v;
org.testcontainers.utility.DockerImageName v;
com.mongodb.client.MongoDatabase v;
java.lang.Integer v, v, v, v;
java.util.ArrayList v;
int v;
org.testcontainers.containers.GenericContainer v, v, v, v, v, v, v, v;
java.lang.String v, v, v, v;
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
org.slf4j.Logger v;
java.lang.Integer[] v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v := @parameter: java.lang.String;
label:
v = new org.testcontainers.containers.GenericContainer;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("mongo:\u0001");
v = staticinvoke <org.testcontainers.utility.DockerImageName: org.testcontainers.utility.DockerImageName parse(java.lang.String)>(v);
specialinvoke v.<org.testcontainers.containers.GenericContainer: void <init>(org.testcontainers.utility.DockerImageName)>(v);
v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer> = v;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("MONGO_INITDB_ROOT_USERNAME=sa");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("MONGO_INITDB_ROOT_PASSWORD=sa");
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("MONGO_INITDB_DATABASE=admin");
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
virtualinvoke v.<org.testcontainers.containers.GenericContainer: void setEnv(java.util.List)>(v);
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = newarray (java.lang.Integer)[1];
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(27017);
v[0] = v;
virtualinvoke v.<org.testcontainers.containers.GenericContainer: org.testcontainers.containers.GenericContainer withExposedPorts(java.lang.Integer[])>(v);
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
virtualinvoke v.<org.testcontainers.containers.GenericContainer: void start()>();
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: java.lang.Integer getMappedPort(int)>(27017);
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: java.lang.String getHost()>();
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: com.mongodb.client.MongoClient mongoClientForRootAdminWithStaticUserNamePassword(java.lang.String,java.lang.Integer)>(v, v);
label:
v = interfaceinvoke v.<com.mongodb.client.MongoClient: com.mongodb.client.MongoDatabase getDatabase(java.lang.String)>("userDatabase");
interfaceinvoke v.<com.mongodb.client.MongoDatabase: void createCollection(java.lang.String)>("person");
label:
interfaceinvoke v.<com.mongodb.client.MongoClient: void close()>();
goto label;
label:
v := @caughtexception;
throw v;
label:
v = <org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.slf4j.Logger LOGGER>;
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: java.lang.Integer getMappedPort(int)>(27017);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Integer)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Started MongoDB with port: \u0001");
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>(v);
label:
goto label;
label:
v := @caughtexception;
staticinvoke <org.junit.Assume: void assumeTrue(java.lang.String,boolean)>("Cannot start MongoDBContainer", 0);
label:
v = v.<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.testcontainers.containers.GenericContainer mongoDBContainer>;
v = virtualinvoke v.<org.testcontainers.containers.GenericContainer: java.lang.Integer getMappedPort(int)>(27017);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private java.lang.String loadFromFile(java.lang.String)
{
byte[] v;
org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer v;
java.net.URL v;
java.lang.RuntimeException v;
java.lang.Exception v;
java.nio.charset.Charset v;
java.lang.Class v;
java.lang.String v, v, v;
java.net.URI v;
java.nio.file.Path v;
v := @this: org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer;
v := @parameter: java.lang.String;
v = class "Lorg/finos/legend/engine/plan/execution/stores/mongodb/test/MongoTestContainer;";
v = virtualinvoke v.<java.lang.Class: java.net.URL getResource(java.lang.String)>(v);
label:
v = new java.lang.String;
v = virtualinvoke v.<java.net.URL: java.net.URI toURI()>();
v = staticinvoke <java.nio.file.Paths: java.nio.file.Path get(java.net.URI)>(v);
v = staticinvoke <java.nio.file.Files: byte[] readAllBytes(java.nio.file.Path)>(v);
v = <java.nio.charset.StandardCharsets: java.nio.charset.Charset UTF_8>;
specialinvoke v.<java.lang.String: void <init>(byte[],java.nio.charset.Charset)>(v, v);
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
label:
return v;
label:
v := @caughtexception;
v = new java.lang.RuntimeException;
specialinvoke v.<java.lang.RuntimeException: void <init>(java.lang.Throwable)>(v);
throw v;
catch java.io.IOException from label to label with label;
catch java.net.URISyntaxException from label to label with label;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/finos/legend/engine/plan/execution/stores/mongodb/test/MongoTestContainer;");
<org.finos.legend.engine.plan.execution.stores.mongodb.test.MongoTestContainer: org.slf4j.Logger LOGGER> = v;
return;
}
}