private IQldbDriver GetDriver() { AmazonQLDBSessionConfig sessionConfig = new AmazonQLDBSessionConfig(); sessionConfig.RegionEndpoint = RegionEndpoint.USEast1; return((IQldbDriver)PooledQldbDriver.Builder().WithAWSCredentials((AWSCredentials)this.awsCredentials).WithQLDBSessionConfig(sessionConfig).WithLedger(Global.LedgerName).Build()); }
public void TestExecuteWithParamsReturnsValidResult() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); var result = driver.Execute("testStatement", new List <IIonValue>()); Assert.IsNotNull(result); }
public void SetupTest() { mockClient = new Mock <AmazonQLDBSessionClient>(); var sendCommandResponse = new SendCommandResponse { StartSession = new StartSessionResult { SessionToken = "testToken" }, StartTransaction = new StartTransactionResult { TransactionId = "testTransactionIdddddd" }, ExecuteStatement = new ExecuteStatementResult { FirstPage = new Page { NextPageToken = null, Values = new List <ValueHolder>() } }, CommitTransaction = new CommitTransactionResult { CommitDigest = new MemoryStream(digest) }, ResponseMetadata = new ResponseMetadata { RequestId = "testId" } }; mockClient.Setup(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(sendCommandResponse)); builder = PooledQldbDriver.Builder().WithLedger("testLedger"); }
public void TestExecuteWithVarargsAndRetryActionReturnsValidResult() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); var result = driver.Execute("testStatement", (int k) => { return; }, new IIonValue[] { }); Assert.IsNotNull(result); }
public void TestGetSessionFromDriverWithSessionReturnedToPool() { var sendCommandResponseWithStartSession = new SendCommandResponse { StartSession = new StartSessionResult { SessionToken = "testToken" }, ResponseMetadata = new ResponseMetadata { RequestId = "testId" } }; var sendCommandResponseEmpty = new SendCommandResponse(); mockClient.SetupSequence(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(sendCommandResponseWithStartSession)) .Returns(Task.FromResult(sendCommandResponseEmpty)); builder = PooledQldbDriver.Builder().WithLedger("testLedger"); var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 4, 4, NullLogger.Instance); var session = driver.GetSession(); session.Dispose(); session = driver.GetSession(); Assert.IsNotNull(session); // Once for start session, once for abort. Second will throw exception if start session due to empty response. mockClient.Verify(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>()), Times.Exactly(2)); }
public void TestExecuteWithActionLambdaAndRetryActionCanInvokeSuccessfully() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); driver.Execute((txn) => { txn.Execute("testStatement"); }, (int k) => { return; }); }
public void TestDisposeSessionReleasesSemaphore() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); var session = driver.GetSession(); session.Dispose(); // Pool limit is 1 so will throw TimeoutException if semaphore was not released upon dispose. session = driver.GetSession(); Assert.IsNotNull(session); }
public void TestGetSessionReturnsValidSession() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 4, 4, NullLogger.Instance); var session = driver.GetSession(); Assert.IsNotNull(session); // Start session. mockClient.Verify(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>()), Times.Once); }
public void TestExecuteWithFuncLambdaAndRetryActionReturnsFuncOutput() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); driver.Dispose(); Assert.ThrowsException <ObjectDisposedException>(() => driver.Execute((txn) => { txn.Execute("testStatement"); return("testReturnValue"); }, (int k) => { return; })); }
public void TestExecuteWithFuncLambdaReturnsFuncOutput() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); var result = driver.Execute((txn) => { txn.Execute("testStatement"); return("testReturnValue"); }); Assert.AreEqual("testReturnValue", result); }
public void TestGetSessionWithNoneInPoolAndTimeoutReached() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); var session = driver.GetSession(); Assert.IsNotNull(session); Assert.ThrowsException <TimeoutException>(driver.GetSession); // Start session. mockClient.Verify(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>()), Times.Once); }
public void TestDisposeEndsPooledSessions() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 4, 4, NullLogger.Instance); var session = driver.GetSession(); session.Dispose(); driver.Dispose(); driver.Dispose(); // Once to start session, and once to end session in pool upon disposal of driver. mockClient.Verify(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>()), Times.Exactly(2)); }
public async Task <string> FunctionHandler(KinesisEvent kinesisEvent) { foreach (var record in kinesisEvent.Records) { LambdaLogger.Log(GetRecordContents(record.Kinesis)); } var builder = PooledQldbDriver.Builder(); var driver = builder.WithLedger("demo-ledger-1").Build(); var session = driver.GetSession(); return(kinesisEvent.ToString()); }
public void TestGetSessionWhenMakingNewSessionThrowsException() { var testException = new AmazonClientException(""); mockClient.Setup(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>())) .Throws(testException); var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 1, 10, NullLogger.Instance); Assert.ThrowsException <AmazonClientException>(driver.GetSession); // Ensure semaphore released due to earlier exception. Will throw TimeoutException if not. Assert.ThrowsException <AmazonClientException>(driver.GetSession); // Start session twice. mockClient.Verify(x => x.SendCommandAsync(It.IsAny <SendCommandRequest>(), It.IsAny <CancellationToken>()), Times.Exactly(2)); }
static void Main(string[] args) { var builder = PooledQldbDriver.Builder(); var driver = builder.WithLedger("demo-ledger-1").Build(); var session = driver.GetSession(); var personForCreate = new Person("akinama", "taro"); session.Execute($"INSERT INTO Person << {personForCreate.ToJson()} >>;"); var ion = session.Execute("SELECT * FROM Person") as BufferedResult; var people = new List <Person>(); foreach (var ionValue in ion) { var person = new Person(ionValue); people.Add(person); Console.WriteLine($"FirstName: {person.FirstName}, LastName: {person.LastName}, CreatedAt: {person.CreatedAt}"); } }
public void TestPooledQldbDriverConstructorReturnsValidObject() { var driver = new PooledQldbDriver("ledgerName", mockClient.Object, 4, 4, 4, NullLogger.Instance); Assert.IsNotNull(driver); }