private void TestRetryWithException(OTSServerException[] exceptions) { foreach (var e in exceptions) { OTSClientTestHelper.RetryExceptions.Add(e); } var lastException = exceptions[exceptions.Count() - 1]; var request = new ListTableRequest(); try { OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException(lastException, e); } Assert.AreEqual(3, OTSClientTestHelper.RetryTimes); for (int i = 0; i < OTSClientTestHelper.RetryTimes; i++) { AssertOTSServerException(exceptions[i], OTSClientTestHelper.RetryExceptions[i]); } }
public void TestInvalidPBInError() { OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.BadRequest); OTSClientTestHelper.SetHTTPResponseBody(new byte[] {}); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException(new OTSServerException("/ListTable", HttpStatusCode.BadRequest), e); } var body = new byte[20]; OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.BadRequest); OTSClientTestHelper.SetHTTPResponseBody(body); var headers = MakeResponseHeaders("/ListTable", body); OTSClientTestHelper.SetHttpRequestHeaders(headers); request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException(new OTSServerException("/ListTable", HttpStatusCode.BadRequest), e); } }
public void TestHeaderMissingInErrorResponse() { var body = MakeErrorPB("Sample Error Code", "Sample Error Message"); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.BadRequest); var headers = MakeResponseHeaders("/ListTable", body); headers.Remove("x-ots-contentmd5"); headers.Remove("x-ots-requestid"); headers.Remove("x-ots-date"); headers.Remove("x-ots-contenttype"); headers["Authorization"] = String.Format("OTS {0}:{1}", TestAccessKeyID, MakeSignature("/ListTable", headers, TestAccessKeySecret)); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException( new OTSServerException("/ListTable", HttpStatusCode.BadRequest, "Sample Error Code", "Sample Error Message"), e); } }
private static void PrepareTable() { // 创建表 OTSClient otsClient = Config.GetClient(); IList <string> tables = otsClient.ListTable(new ListTableRequest()).TableNames; if (tables.Contains(TableName)) { return; } PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema { { "pk0", ColumnValueType.Integer }, { "pk1", ColumnValueType.String } }; TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema); CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput); otsClient.CreateTable(request); }
public void TestDisableDebugLog() { var clientConfig = new OTSClientConfig( TestEndPoint, TestAccessKeyID, TestAccessKeySecret, TestInstanceName); clientConfig.OTSDebugLogHandler = null; var otsClient = new OTSClient(clientConfig); var request = new ListTableRequest(); otsClient.ListTable(request); }
public void TestAuthorizationHeaderNormalWhenForbidden() { var otsClient = new OTSClient(TestEndPoint, TestAccessKeyID, "abc", TestInstanceName); var request = new ListTableRequest(); try { otsClient.ListTable(request); } catch (OTSServerException exception) { AssertOTSServerException(new OTSServerException( "/ListTable", HttpStatusCode.Forbidden, "OTSAuthFailed", "Signature mismatch."), exception); } }
/// <summary> /// /// </summary> protected static void OnConfiguring(String instanceName, String accessKeyID, String accessKeySecret, String regionId) { var watch = Stopwatch.StartNew(); OtsConfig = new OTSClientConfig("https://" + instanceName + "." + regionId + ".ots.aliyuncs.com", accessKeyID, accessKeySecret, instanceName); try { var client = new OTSClient(OtsConfig); var resListTable = client.ListTable(new ListTableRequest()); foreach (var table in resListTable.TableNames) { var resDescribeTable = client.DescribeTable(new DescribeTableRequest(table)); if (resDescribeTable != null && resDescribeTable.TableMeta != null && resDescribeTable.TableMeta.PrimaryKeySchema != null) { tableKey.Add(table, resDescribeTable.TableMeta.PrimaryKeySchema); } } OtsConfig.OTSDebugLogHandler = null; OtsConfig.OTSErrorLogHandler = null; watch.Stop(); Console.WriteLine("Ots Init: " + watch.Elapsed); #region 尝试使用内网链接地址 try { #if !DEBUG System.Threading.Tasks.Task.Run(() => { var tmp = new OTSClientConfig("https://" + instanceName + "." + regionId + ".ots-internal.aliyuncs.com", accessKeyID, accessKeySecret, instanceName); var tmpListTable = new OTSClient(tmp).ListTable(new ListTableRequest()); foreach (var table in tmpListTable.TableNames) { OtsConfig = tmp; OtsConfig.OTSDebugLogHandler = null; OtsConfig.OTSErrorLogHandler = null; return; } }); #endif } catch { } #endregion } catch (Exception ex) { watch.Stop(); Console.WriteLine("Ots Init: " + ex.Message); } }
private void CreateTable(String tableName) { foreach (var tableItem in OTSClient.ListTable(new ListTableRequest()).TableNames) { OTSClient.DeleteTable(new DeleteTableRequest(tableItem)); } var primaryKeySchema = new PrimaryKeySchema(); primaryKeySchema.Add("PK0", ColumnValueType.Integer); var tableMeta = new TableMeta(tableName, primaryKeySchema); var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput); var response = OTSClient.CreateTable(request); WaitForTableReady(); }
public void CreateTableAndDelete() { string tableName = "SampleTableName"; var primaryKeys = new PrimaryKeySchema { { "PK0", ColumnValueType.String }, { "PK1", ColumnValueType.Integer } }; var tableOption = new TableOptions { MaxVersions = 1, TimeToLive = -1 }; var tableMeta = new TableMeta(tableName, primaryKeys); var reservedThroughput = new CapacityUnit(0, 0); var request1 = new CreateTableRequest(tableMeta, reservedThroughput) { TableOptions = tableOption }; var response1 = OTSClient.CreateTable(request1); var request2 = new ListTableRequest(); var response2 = OTSClient.ListTable(request2); Assert.IsTrue(response2.TableNames.Contains(tableName)); Thread.Sleep(1000); var request3 = new DescribeTableRequest(tableName); var response3 = OTSClient.DescribeTable(request3); Assert.AreEqual(tableName, response3.TableMeta.TableName); Assert.AreEqual(primaryKeys, response3.TableMeta.PrimaryKeySchema); Assert.AreEqual(reservedThroughput.Read, response3.ReservedThroughputDetails.CapacityUnit.Read); Assert.AreEqual(reservedThroughput.Write, response3.ReservedThroughputDetails.CapacityUnit.Write); OTSClient.DeleteTable(new DeleteTableRequest(tableName)); var request4 = new ListTableRequest(); var response4 = OTSClient.ListTable(request4); Assert.IsFalse(response4.TableNames.Contains(tableName)); }
public static void InitializeClient() { OTSClientConfig config = new OTSClientConfig(Config.Endpoint, Config.AccessKeyId, Config.AccessKeySecret, Config.InstanceName); config.AccessKeyID = Config.AccessKeyId; // 访问OTS服务所需的云账号的accessid config.AccessKeySecret = Config.AccessKeySecret; // 访问OTS服务所需的云账号的accesskey config.InstanceName = Config.InstanceName; // OTS的实例名 config.EndPoint = Config.Endpoint; // OTS的服务访问地址 config.ConnectionLimit = 300; // Client内部的连接池的连接数上限 config.OTSDebugLogHandler = null; // 将DebugLogHandler设置为null,可关闭client内部的debug log的输出,否则默认会输出到标准输出 config.OTSErrorLogHandler = ErrorLog; // 也可自定义LogHandler,将日志输出进行定制 OTSClient client = new OTSClient(config); // 初始化ots client ListTableRequest request = new ListTableRequest(); client.ListTable(request); }
private void CreateTable(OTSClient client, String tableName) { foreach (var tableItem in client.ListTable(new ListTableRequest()).TableNames) { client.DeleteTable(new DeleteTableRequest(tableItem)); } var primaryKeySchema = new PrimaryKeySchema(); primaryKeySchema.Add(COLUMN_GID_NAME, ColumnValueType.Integer); primaryKeySchema.Add(COLUMN_UID_NAME, ColumnValueType.Integer); var tableMeta = new TableMeta(tableName, primaryKeySchema); var reservedThroughput = new CapacityUnit(0, 0); var request = new CreateTableRequest(tableMeta, reservedThroughput); var response = OTSClient.CreateTable(request); // 创建表只是提交请求,OTS创建表需要一段时间,这里是简单的sleep,请根据实际逻辑修改 WaitForTableReady(); }
public void TestServerNotAvaliable() { try{ var otsClient = new OTSClient("http://blahblah", "abc", "def", "ghi"); var request = new ListTableRequest(); var response = otsClient.ListTable(request); Assert.Fail(); } catch (HttpRequestException) { } try{ var otsClient = new OTSClient("http://10.10.10.10", "abc", "def", "ghi"); var request = new ListTableRequest(); var response = otsClient.ListTable(request); Assert.Fail(); } catch (HttpRequestException) { } }
public void TestNoContentMD5InHeader() { var body = MakeListTableResponseBody(); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.OK); var headers = MakeResponseHeaders("/ListTable", body, hasContentMd5: false); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSClientException e) { Assert.AreEqual("x-ots-contentmd5 is missing in response header. HTTP Status: OK.", e.Message); } }
void testRetry(OTSServerException[] exceptions) { foreach (var e in exceptions) { OTSClientTestHelper.RetryExceptions.Add(e); } var lastException = exceptions[exceptions.Count() - 1]; var request = new ListTableRequest(); OTSClient.ListTable(request); Assert.AreEqual(exceptions.Count(), OTSClientTestHelper.RetryTimes); for (int i = 0; i < OTSClientTestHelper.RetryTimes; i++) { AssertOTSServerException(exceptions[i], OTSClientTestHelper.RetryExceptions[i]); } }
public void TestContentMD5MismatchInResponse() { var body = MakeListTableResponseBody(); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.OK); var headers = MakeResponseHeaders("/ListTable", new byte[20]); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSClientException e) { Assert.AreEqual("MD5 mismatch in response. HTTP Status: OK.", e.Message); } }
public void TestDateDifference() { var body = MakeListTableResponseBody(); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.OK); var headers = MakeResponseHeaders("/ListTable", body); headers["x-ots-date"] = Util.OtsUtils.FormatDateTimeStr(DateTime.UtcNow.AddMinutes(16)); headers["Authorization"] = String.Format("OTS {0}:{1}", TestAccessKeyID, MakeSignature("/ListTable", headers, TestAccessKeySecret)); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSClientException e) { Assert.AreEqual("The difference between date in response and system time is more than 15 minutes. HTTP Status: OK.", e.Message); } body = MakeListTableResponseBody(); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.OK); headers = MakeResponseHeaders("/ListTable", body); headers["x-ots-date"] = Util.OtsUtils.FormatDateTimeStr(DateTime.UtcNow.AddMinutes(-16)); headers["Authorization"] = String.Format("OTS {0}:{1}", TestAccessKeyID, MakeSignature("/ListTable", headers, TestAccessKeySecret)); OTSClientTestHelper.SetHttpRequestHeaders(headers); request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSClientException e) { Assert.AreEqual("The difference between date in response and system time is more than 15 minutes. HTTP Status: OK.", e.Message); } }
public void TestInvalidAuthorizationFormat() { var body = MakeListTableResponseBody(); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.OK); var headers = MakeResponseHeaders("/ListTable", body); headers["Authorization"] = String.Format("blahblah"); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSClientException e) { Assert.IsTrue(true); } }
public void TestInvalidDateInResponse() { var body = MakeListTableResponseBody(); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.OK); var headers = MakeResponseHeaders("/ListTable", body); headers["x-ots-date"] = "Invalid Date String"; OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSClientException e) { Assert.AreEqual("Invalid date format in response: Invalid Date String HTTP Status: OK.", e.Message); } }
public void TestNoRequestIDInErrorResponse() { var body = MakeErrorPB("Sample Error Code", "Sample Error Message"); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.BadRequest); OTSClientTestHelper.SetHTTPResponseBody(body); var headers = MakeResponseHeaders("/ListTable", body, hasRequestID: false); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException( new OTSServerException("/ListTable", HttpStatusCode.BadRequest, "Sample Error Code", "Sample Error Message"), e); } }
public void TestInvalidPBInError() { OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.BadRequest); OTSClientTestHelper.SetHTTPResponseBody(new byte[] { }); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException(new OTSServerException("/ListTable", HttpStatusCode.BadRequest), e); } catch (Exception e) { Console.WriteLine(e); } }
/// <summary> /// /// </summary> protected static void OnConfiguring(OTSClientConfig config) { var watch = Stopwatch.StartNew(); OtsConfig = config; OtsConfig.OTSDebugLogHandler = null; OtsConfig.OTSErrorLogHandler = null; var client = new OTSClient(config); var resListTable = client.ListTable(new ListTableRequest()); foreach (var table in resListTable.TableNames) { var resDescribeTable = client.DescribeTable(new DescribeTableRequest(table)); if (resDescribeTable != null && resDescribeTable.TableMeta != null && resDescribeTable.TableMeta.PrimaryKeySchema != null) { tableKey.Add(table, resDescribeTable.TableMeta.PrimaryKeySchema); } } watch.Stop(); Console.WriteLine("Ots Init: " + watch.Elapsed); }
public void TestUnicodeInErrorCode() { var body = MakeErrorPB("中文错误码", "Sample Error Message"); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.BadRequest); OTSClientTestHelper.SetHTTPResponseBody(body); var headers = MakeResponseHeaders("/ListTable", body); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException( new OTSServerException("/ListTable", HttpStatusCode.BadRequest, "中文错误码", "Sample Error Message"), e); Assert.AreEqual("fake-request-id-for-test", e.RequestID); } }
public void TestAccessIDInAuthorizationMismatch() { var body = MakeListTableResponseBody(); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.OK); var headers = MakeResponseHeaders("/ListTable", body); headers["Authorization"] = String.Format("OTS {0}:{1}", "AnotherAccessKeyID", MakeSignature("/ListTable", headers, TestAccessKeySecret)); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSClientException) { Assert.IsTrue(true); } }
public void CreateTableAndDelete() { var primaryKeys = new PrimaryKeySchema(); primaryKeys.Add("PK0", ColumnValueType.String); primaryKeys.Add("PK1", ColumnValueType.Integer); var tableMeta = new TableMeta("SampleTableName", primaryKeys); var reservedThroughput = new CapacityUnit(0, 0); var request1 = new CreateTableRequest(tableMeta, reservedThroughput); var response1 = OTSClient.CreateTable(request1); var request2 = new ListTableRequest(); var response2 = OTSClient.ListTable(request2); Assert.AreEqual(new List <string>() { "SampleTableName" }, response2.TableNames); Thread.Sleep(1000); var request3 = new DescribeTableRequest("SampleTableName"); var response3 = OTSClient.DescribeTable(request3); Assert.AreEqual("SampleTableName", response3.TableMeta.TableName); Assert.AreEqual(primaryKeys, response3.TableMeta.PrimaryKeySchema); Assert.AreEqual(reservedThroughput.Read, response3.ReservedThroughputDetails.CapacityUnit.Read); Assert.AreEqual(reservedThroughput.Write, response3.ReservedThroughputDetails.CapacityUnit.Write); OTSClient.DeleteTable(new DeleteTableRequest("SampleTableName")); var request4 = new ListTableRequest(); var response4 = OTSClient.ListTable(request4); Assert.AreEqual(new List <string>() { }, response4.TableNames); }
public void TestAuthorizationHeaderMissingWhenForbidden() { var body = MakeErrorPB("Sample Error Code", "Sample Error Message"); OTSClientTestHelper.SetHTTPResponseBody(body); OTSClientTestHelper.SetHttpStatusCode(HttpStatusCode.Forbidden); var headers = MakeResponseHeaders("/ListTable", body); headers.Remove("x-ots-authorization"); OTSClientTestHelper.SetHttpRequestHeaders(headers); var request = new ListTableRequest(); try { var response = OTSClient.ListTable(request); Assert.Fail(); } catch (OTSServerException e) { AssertOTSServerException( new OTSServerException("/ListTable", HttpStatusCode.Forbidden, "Sample Error Code", "Sample Error Message"), e); } }
//static void Main(string[] args) //{ // Console.WriteLine("AutoIncrementSample"); // //创建一个带自增列的表 // CreateTableWithAutoIncrementPk(); // //写入10行,自增列Pk2将 // for (int i = 0; i < 10; i++) // { // PutRow(i.ToString()); // } // Console.ReadLine(); //} /// <summary> /// 创建一个带自增列的表 /// </summary> private static void CreateTableWithAutoIncrementPk() { OTSClient otsClient = Config.GetClient(); IList <string> tables = otsClient.ListTable(new ListTableRequest()).TableNames; if (tables.Contains(TableName)) { return; } PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema { { Pk1, ColumnValueType.String }, //指定Pk2为自增列主键 { Pk2, ColumnValueType.Integer, PrimaryKeyOption.AUTO_INCREMENT } }; TableMeta tableMeta = new TableMeta(TableName, primaryKeySchema); CapacityUnit reservedThroughput = new CapacityUnit(0, 0); CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput); otsClient.CreateTable(request); }
public void Setup() { Thread.Sleep(1000); TestTableName = "SampleTestName"; var clientConfig = new OTSClientConfig( TestEndPoint, TestAccessKeyID, TestAccessKeySecret, TestInstanceName ); Console.WriteLine("Endpoint: {0}", TestEndPoint); Console.WriteLine("TestAccessKeyID: {0}", TestAccessKeyID); Console.WriteLine("TestAccessKeySecret: {0}", TestAccessKeySecret); Console.WriteLine("TestInstanceName: {0}", TestInstanceName); clientConfig.OTSDebugLogHandler = LogToFileHandler.DefaultDebugLogHandler; clientConfig.OTSErrorLogHandler = LogToFileHandler.DefaultErrorLogHandler; OTSClient = new OTSClient(clientConfig); OTSClientTestHelper.Reset(); foreach (var tableName in OTSClient.ListTable(new ListTableRequest()).TableNames) { OTSClient.DeleteTable(new DeleteTableRequest(tableName)); } PrimaryKeyWith4Columns = new PrimaryKey(); PrimaryKeyWith4Columns.Add("PK0", new ColumnValue("ABC")); PrimaryKeyWith4Columns.Add("PK1", new ColumnValue("DEF")); PrimaryKeyWith4Columns.Add("PK2", new ColumnValue(123)); PrimaryKeyWith4Columns.Add("PK3", new ColumnValue(456)); MinPrimaryKeyWith4Columns = new PrimaryKey(); MinPrimaryKeyWith4Columns.Add("PK0", ColumnValue.INF_MIN); MinPrimaryKeyWith4Columns.Add("PK1", new ColumnValue("DEF")); MinPrimaryKeyWith4Columns.Add("PK2", new ColumnValue(123)); MinPrimaryKeyWith4Columns.Add("PK3", new ColumnValue(456)); MaxPrimaryKeyWith4Columns = new PrimaryKey(); MaxPrimaryKeyWith4Columns.Add("PK0", ColumnValue.INF_MAX); MaxPrimaryKeyWith4Columns.Add("PK1", new ColumnValue("DEF")); MaxPrimaryKeyWith4Columns.Add("PK2", new ColumnValue(123)); MaxPrimaryKeyWith4Columns.Add("PK3", new ColumnValue(456)); AttributeWith5Columns = new AttributeColumns(); AttributeWith5Columns.Add("Col0", new ColumnValue("ABC")); AttributeWith5Columns.Add("Col1", new ColumnValue(123)); AttributeWith5Columns.Add("Col2", new ColumnValue(3.14)); AttributeWith5Columns.Add("Col3", new ColumnValue(true)); AttributeWith5Columns.Add("Col4", new ColumnValue(new byte[] { 0x20, 0x20 })); PrimaryKeyList = new List <PrimaryKey>(); AttributeColumnsList = new List <AttributeColumns>(); for (int i = 0; i < 1000; i++) { PrimaryKeyList.Add(GetPredefinedPrimaryKeyWith4PK(i)); AttributeColumnsList.Add(GetPredefinedAttributeWith5PK(i)); } }
public void TestAPIWithParameter(string apiName) { var tableName = TestContext.tableName; var pkSchema = TestContext.pkSchema; var reservedThroughput = TestContext.reservedThroughput; var primaryKey = TestContext.primaryKey; var attribute = TestContext.attribute; var condition = TestContext.condition; var startPrimaryKey = TestContext.startPrimaryKey; var endPrimaryKey = TestContext.endPrimaryKey; var putRowConsumed = TestContext.putRowConsumed; var getRowConsumed = TestContext.getRowConsumed; var updateRowConsumed = TestContext.updateRowConsumed; var deleteRowConsumed = TestContext.deleteRowConsumed; var getRangeConsumed = TestContext.getRangeConsumed; var updateOfAttributeForPut = TestContext.updateOfAttributeForPut; var updateOfAttributeForDelete = TestContext.updateOfAttributeForDelete; var columnsToGet = TestContext.columnsToGet; var limit = TestContext.limit; var direction = TestContext.direction; var tableMeta = new TableMeta(tableName, pkSchema); switch (apiName) { case "CreateTable": var request0 = new CreateTableRequest(tableMeta, reservedThroughput); OTSClient.CreateTable(request0); return; case "ListTable": var request1 = new ListTableRequest(); var response1 = OTSClient.ListTable(request1); Assert.AreEqual(new List <string>() { tableName }, response1.TableNames); return; case "UpdateTable": var request2 = new UpdateTableRequest(tableName, reservedThroughput); var response2 = OTSClient.UpdateTable(request2); if (reservedThroughput.Read.HasValue && reservedThroughput.Write.HasValue) { AssertCapacityUnit( reservedThroughput, response2.ReservedThroughputDetails.CapacityUnit); } Assert.IsTrue(response2.ReservedThroughputDetails.LastDecreaseTime >= 0); Assert.IsTrue(response2.ReservedThroughputDetails.LastIncreaseTime >= 0); Assert.IsTrue(response2.ReservedThroughputDetails.NumberOfDecreasesToday >= 0); return; case "DeleteTable": var request3 = new DeleteTableRequest(tableName); OTSClient.DeleteTable(request3); var request31 = new ListTableRequest(); var response31 = OTSClient.ListTable(request31); Assert.AreEqual(new List <string>() { }, response31.TableNames); return; case "DescribeTable": var request4 = new DescribeTableRequest(tableName); var response4 = OTSClient.DescribeTable(request4); Assert.AreEqual(tableName, response4.TableMeta.TableName); AssertPrimaryKeySchema(pkSchema, response4.TableMeta.PrimaryKeySchema); AssertCapacityUnit(reservedThroughput, response4.ReservedThroughputDetails.CapacityUnit); Assert.IsTrue(response4.ReservedThroughputDetails.LastDecreaseTime >= 0); Assert.IsTrue(response4.ReservedThroughputDetails.LastIncreaseTime >= 0); Assert.IsTrue(response4.ReservedThroughputDetails.NumberOfDecreasesToday >= 0); return; case "PutRow": var request5 = new PutRowRequest(tableName, condition, primaryKey, attribute); var response5 = OTSClient.PutRow(request5); AssertCapacityUnit(putRowConsumed, response5.ConsumedCapacityUnit); return; case "GetRow": var request6 = new GetRowRequest(tableName, primaryKey, columnsToGet); var response6 = OTSClient.GetRow(request6); AssertPrimaryKey(primaryKey, response6.PrimaryKey, columnsToGet); AssertAttribute(attribute, response6.Attribute, columnsToGet); AssertCapacityUnit(getRowConsumed, response6.ConsumedCapacityUnit); return; case "DeleteRow": var request7 = new DeleteRowRequest(tableName, condition, primaryKey); var response7 = OTSClient.DeleteRow(request7); AssertCapacityUnit(deleteRowConsumed, response7.ConsumedCapacityUnit); var request71 = new GetRowRequest(tableName, primaryKey); var response71 = OTSClient.GetRow(request71); AssertPrimaryKey(new PrimaryKey(), response71.PrimaryKey); AssertAttribute(new AttributeColumns(), response71.Attribute); return; case "UpdateRow_Put": var request8 = new UpdateRowRequest(tableName, condition, primaryKey, updateOfAttributeForPut); var response8 = OTSClient.UpdateRow(request8); AssertCapacityUnit(updateRowConsumed, response8.ConsumedCapacityUnit); var request81 = new GetRowRequest(tableName, primaryKey); var response81 = OTSClient.GetRow(request81); AssertPrimaryKey(primaryKey, response81.PrimaryKey); AssertAttribute(attribute, response81.Attribute); AssertCapacityUnit(getRowConsumed, response81.ConsumedCapacityUnit); return; case "UpdateRow_Delete": var request9 = new UpdateRowRequest(tableName, condition, primaryKey, updateOfAttributeForDelete); var response9 = OTSClient.UpdateRow(request9); AssertCapacityUnit(deleteRowConsumed, response9.ConsumedCapacityUnit); var request91 = new GetRowRequest(tableName, primaryKey); var response91 = OTSClient.GetRow(request91); // Don't assert primary key AssertAttribute(new AttributeColumns(), response91.Attribute); return; case "BatchGetRow": var request11 = new BatchGetRowRequest(); request11.Add(tableName, new List <PrimaryKey>() { primaryKey }, columnsToGet); var response11 = OTSClient.BatchGetRow(request11); Assert.AreEqual(1, response11.RowDataGroupByTable.Count); Assert.IsTrue(response11.RowDataGroupByTable.ContainsKey(tableName)); Assert.AreEqual(1, response11.RowDataGroupByTable[tableName].Count); if (!response11.RowDataGroupByTable[tableName][0].IsOK) { throw new OTSServerException(apiName, HttpStatusCode.OK, response11.RowDataGroupByTable[tableName][0].ErrorCode, response11.RowDataGroupByTable[tableName][0].ErrorMessage); } AssertPrimaryKey(primaryKey, response11.RowDataGroupByTable[tableName][0].PrimaryKey); AssertAttribute(attribute, response11.RowDataGroupByTable[tableName][0].Attribute); AssertCapacityUnit(getRowConsumed, response11.RowDataGroupByTable[tableName][0].Consumed); return; case "BatchWriteRow_Put": var request12 = new BatchWriteRowRequest(); var rowChanges = new RowChanges(); rowChanges.AddPut(condition, primaryKey, attribute); request12.Add(tableName, rowChanges); var response12 = OTSClient.BatchWriteRow(request12); Assert.AreEqual(1, response12.TableRespones.Count); Assert.IsTrue(response12.TableRespones.ContainsKey(tableName)); Assert.AreEqual(1, response12.TableRespones[tableName].PutResponses.Count); Assert.AreEqual(0, response12.TableRespones[tableName].UpdateResponses.Count); Assert.AreEqual(0, response12.TableRespones[tableName].DeleteResponses.Count); if (response12.TableRespones[tableName].PutResponses[0].IsOK) { AssertCapacityUnit(putRowConsumed, response12.TableRespones[tableName].PutResponses[0].Consumed); } else { throw new OTSServerException("/BatchWriteRow", HttpStatusCode.OK, response12.TableRespones[tableName].PutResponses[0].ErrorCode, response12.TableRespones[tableName].PutResponses[0].ErrorMessage); } var request121 = new GetRowRequest(tableName, primaryKey); var response121 = OTSClient.GetRow(request121); AssertPrimaryKey(primaryKey, response121.PrimaryKey); AssertAttribute(attribute, response121.Attribute); AssertCapacityUnit(getRowConsumed, response121.ConsumedCapacityUnit); return; case "BatchWriteRow_Update": var request13 = new BatchWriteRowRequest(); var rowChanges2 = new RowChanges(); rowChanges2.AddUpdate(condition, primaryKey, updateOfAttributeForPut); request13.Add(tableName, rowChanges2); var response13 = OTSClient.BatchWriteRow(request13); Assert.AreEqual(1, response13.TableRespones.Count); Assert.IsTrue(response13.TableRespones.ContainsKey(tableName)); Assert.AreEqual(0, response13.TableRespones[tableName].PutResponses.Count); Assert.AreEqual(1, response13.TableRespones[tableName].UpdateResponses.Count); Assert.AreEqual(0, response13.TableRespones[tableName].DeleteResponses.Count); if (response13.TableRespones[tableName].UpdateResponses[0].IsOK) { AssertCapacityUnit(updateRowConsumed, response13.TableRespones[tableName].UpdateResponses[0].Consumed); } else { throw new OTSServerException("/BatchWriteRow", HttpStatusCode.OK, response13.TableRespones[tableName].UpdateResponses[0].ErrorCode, response13.TableRespones[tableName].UpdateResponses[0].ErrorMessage); } var request131 = new GetRowRequest(tableName, primaryKey); var response131 = OTSClient.GetRow(request131); AssertPrimaryKey(primaryKey, response131.PrimaryKey); AssertAttribute(attribute, response131.Attribute); AssertCapacityUnit(getRowConsumed, response131.ConsumedCapacityUnit); return; case "BatchWriteRow_Delete": var request14 = new BatchWriteRowRequest(); var rowChanges3 = new RowChanges(); rowChanges3.AddDelete(condition, primaryKey); request14.Add(tableName, rowChanges3); var response14 = OTSClient.BatchWriteRow(request14); Assert.AreEqual(1, response14.TableRespones.Count); Assert.IsTrue(response14.TableRespones.ContainsKey(tableName)); Assert.AreEqual(0, response14.TableRespones[tableName].PutResponses.Count); Assert.AreEqual(0, response14.TableRespones[tableName].UpdateResponses.Count); Assert.AreEqual(1, response14.TableRespones[tableName].DeleteResponses.Count); if (response14.TableRespones[tableName].DeleteResponses[0].IsOK) { AssertCapacityUnit(deleteRowConsumed, response14.TableRespones[tableName].DeleteResponses[0].Consumed); } else { throw new OTSServerException("/BatchWriteRow", HttpStatusCode.OK, response14.TableRespones[tableName].DeleteResponses[0].ErrorCode, response14.TableRespones[tableName].DeleteResponses[0].ErrorMessage); } var request141 = new GetRowRequest(tableName, primaryKey); var response141 = OTSClient.GetRow(request141); AssertPrimaryKey(new PrimaryKey(), response141.PrimaryKey); AssertAttribute(new AttributeColumns(), response141.Attribute); return; case "GetRange": var request15 = new GetRangeRequest(tableName, direction, startPrimaryKey, endPrimaryKey, columnsToGet, limit); var response15 = OTSClient.GetRange(request15); Assert.AreEqual(1, response15.RowDataList.Count); Assert.AreEqual(null, response15.NextPrimaryKey); AssertCapacityUnit(getRangeConsumed, response15.ConsumedCapacityUnit); AssertPrimaryKey(primaryKey, response15.RowDataList[0].PrimaryKey, columnsToGet); AssertAttribute(attribute, response15.RowDataList[0].Attribute, columnsToGet); return; default: throw new Exception(String.Format("invalid api name: {0}", apiName)); } }
public void SmokeTest1() { var request = new ListTableRequest(); var response = OTSClient.ListTable(request); }