public class org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace extends org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionManagement
{
private java.util.concurrent.CountDownLatch countDownLatch;
public void <init>()
{
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace;
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionManagement: void <init>()>();
return;
}
public void setup() throws java.lang.Exception
{
java.util.concurrent.CountDownLatch v, v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.InstrumentedConnectionStateManager v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.FakeClock v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace;
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionManagement: void setup()>();
v = new java.util.concurrent.CountDownLatch;
specialinvoke v.<java.util.concurrent.CountDownLatch: void <init>(int)>(1);
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: java.util.concurrent.CountDownLatch countDownLatch> = v;
v = new org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.InstrumentedConnectionStateManager;
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.FakeClock clock>;
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: java.util.concurrent.CountDownLatch countDownLatch>;
specialinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.InstrumentedConnectionStateManager: void <init>(java.time.Clock,java.util.concurrent.CountDownLatch,int)>(v, v, 2);
v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager> = v;
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: void setInstanceForTesting(org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager)>(v);
return;
}
public void testEvictionRace() throws java.lang.InterruptedException, java.sql.SQLException
{
org.finos.legend.engine.shared.core.identity.Identity v, v;
java.sql.Connection v, v, v, v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey v, v;
java.lang.Runnable v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.LocalH2DataSourceSpecification v;
java.util.concurrent.Future v;
java.lang.Long v, v;
java.time.Duration v, v, v;
boolean v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics v, v, v, v, v, v, v;
java.util.concurrent.CountDownLatch v;
java.util.List v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.FakeClock v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager v, v, v, v, v, v, v, v, v, v;
java.lang.String[] v, v, v;
long v, v, v, v;
org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics v, v, v, v, v, v;
int v, v, v, v, v, v;
java.lang.String v, v;
java.util.concurrent.ExecutorService v;
v := @this: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace;
v = new org.finos.legend.engine.shared.core.identity.Identity;
specialinvoke v.<org.finos.legend.engine.shared.core.identity.Identity: void <init>(java.lang.String)>("pool1");
v = new org.finos.legend.engine.shared.core.identity.Identity;
specialinvoke v.<org.finos.legend.engine.shared.core.identity.Identity: void <init>(java.lang.String)>("pool2");
v = newarray (java.lang.String)[1];
v[0] = "DROP TABLE IF EXISTS T1;";
v = staticinvoke <java.util.Arrays: java.util.List asList(java.lang.Object[])>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.specifications.LocalH2DataSourceSpecification buildLocalDataSourceSpecification(java.util.List)>(v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification: org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey getConnectionKey()>();
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: java.lang.String poolNameFor(org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey)>(v, v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification: org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey getConnectionKey()>();
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: java.lang.String poolNameFor(org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.relational.connection.ConnectionKey)>(v, v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: java.sql.Connection requestConnection(org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification)>(v, v);
interfaceinvoke v.<java.sql.Connection: void close()>();
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics get(java.lang.String)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics getStatistics()>();
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics: int getRequestedConnections()>();
staticinvoke <org.junit.Assert: void assertEquals(long,long)>(1L, v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: java.sql.Connection requestConnection(org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification)>(v, v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: java.sql.Connection requestConnection(org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification)>(v, v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics get(java.lang.String)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics getStatistics()>();
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics clone(org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics)>(v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: int size()>();
staticinvoke <org.junit.Assert: void assertEquals(long,long)>(2L, v);
v = newarray (java.lang.String)[2];
v[0] = v;
v[1] = v;
virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: void assertPoolStateExists(java.lang.String[])>(v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics get(java.lang.String)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics getStatistics()>();
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics: int getRequestedConnections()>();
staticinvoke <org.junit.Assert: void assertEquals(long,long)>(2L, v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics get(java.lang.String)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics getStatistics()>();
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics: int getRequestedConnections()>();
staticinvoke <org.junit.Assert: void assertEquals(long,long)>(1L, v);
interfaceinvoke v.<java.sql.Connection: void close()>();
interfaceinvoke v.<java.sql.Connection: void close()>();
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.FakeClock clock>;
v = staticinvoke <java.time.Duration: java.time.Duration ofMinutes(long)>(4L);
virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.FakeClock: void advance(java.time.Duration)>(v);
v = staticinvoke <java.util.concurrent.Executors: java.util.concurrent.ExecutorService newFixedThreadPool(int)>(1);
v = staticinvoke <org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace$lambda_testEvictionRace_0__13: java.lang.Runnable bootstrap$(org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace)>(v);
v = interfaceinvoke v.<java.util.concurrent.ExecutorService: java.util.concurrent.Future submit(java.lang.Runnable)>(v);
v = staticinvoke <java.time.Duration: java.time.Duration ofSeconds(long)>(2L);
v = virtualinvoke v.<java.time.Duration: long toMillis()>();
staticinvoke <java.lang.Thread: void sleep(long)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: java.sql.Connection requestConnection(org.finos.legend.engine.shared.core.identity.Identity,org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceSpecification)>(v, v);
interfaceinvoke v.<java.sql.Connection: void close()>();
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics get(java.lang.String)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics getStatistics()>();
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics: int getRequestedConnections()>();
staticinvoke <org.junit.Assert: void assertEquals(long,long)>(3L, v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: java.util.concurrent.CountDownLatch countDownLatch>;
virtualinvoke v.<java.util.concurrent.CountDownLatch: void countDown()>();
v = staticinvoke <java.time.Duration: java.time.Duration ofSeconds(long)>(2L);
v = virtualinvoke v.<java.time.Duration: long toMillis()>();
staticinvoke <java.lang.Thread: void sleep(long)>(v);
v = interfaceinvoke v.<java.util.concurrent.Future: boolean isDone()>();
staticinvoke <org.junit.Assert: void assertTrue(java.lang.String,boolean)>("Background eviction task has not completed", v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics: long getLastConnectionRequestAge()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics get(java.lang.String)>(v);
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceWithStatistics: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics getStatistics()>();
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.DataSourceStatistics: long getLastConnectionRequestAge()>();
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
staticinvoke <org.junit.Assert: void assertNotSame(java.lang.String,java.lang.Object,java.lang.Object)>("mismatch in cached state", v, v);
v = v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager connectionStateManager>;
v = virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.ConnectionStateManager: int size()>();
staticinvoke <org.junit.Assert: void assertEquals(long,long)>(1L, v);
v = newarray (java.lang.String)[1];
v[0] = v;
virtualinvoke v.<org.finos.legend.engine.plan.execution.stores.relational.connection.ds.state.TestConnectionStateManagerRace: void assertPoolStateExists(java.lang.String[])>(v);
return;
}
}