Exemplo n.º 1
0
        /// <summary>
        /// 通过多个参数构造一个新的<see cref="GetRangeRequest"/>
        /// </summary>
        /// <param name="tableName">表名称</param>
        /// <param name="direction">前向还是后向</param>
        /// <param name="inclusiveStartPrimaryKey">区间开始位置,包含</param>
        /// <param name="exclusiveEndPrimaryKey">区间结束位置,不包含</param>
        /// <param name="columnsToGet">返回的列名称的列表</param>
        /// <param name="limit">最大返回数</param>
        public GetRangeRequest(string tableName,
                               GetRangeDirection direction,
                               PrimaryKey inclusiveStartPrimaryKey,
                               PrimaryKey exclusiveEndPrimaryKey,
                               HashSet <string> columnsToGet = null,
                               int?limit = null,
                               IColumnCondition condition = null)
        {
            QueryCriteria = new RangeRowQueryCriteria(tableName)
            {
                Direction = direction,
                Limit     = limit,
                InclusiveStartPrimaryKey = inclusiveStartPrimaryKey,
                ExclusiveEndPrimaryKey   = exclusiveEndPrimaryKey
            };

            if (columnsToGet != null)
            {
                QueryCriteria.SetColumnsToGet(columnsToGet);
            }

            if (condition != null)
            {
                QueryCriteria.Filter = condition.ToFilter();
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 通过多个参数构造一个新的<see cref="GetRangeRequest"/>
 /// </summary>
 /// <param name="tableName">表名称</param>
 /// <param name="direction">前向还是后向</param>
 /// <param name="inclusiveStartPrimaryKey">区间开始位置,包含</param>
 /// <param name="exclusiveEndPrimaryKey">区间结束位置,不包含</param>
 /// <param name="consumedCapacityUnitCounter">用户传入的CapacityUnit消耗计数器。</param>
 /// <param name="columnsToGet">返回的列名称的列表</param>
 /// <param name="limit">最大返回数</param>
 public GetIteratorRequest(string tableName,
                           GetRangeDirection direction,
                           PrimaryKey inclusiveStartPrimaryKey,
                           PrimaryKey exclusiveEndPrimaryKey,
                           CapacityUnit consumedCapacityUnitCounter,
                           HashSet <string> columnsToGet = null,
                           int?limit = null,
                           ColumnCondition condition = null)
     : base(tableName, direction, inclusiveStartPrimaryKey, exclusiveEndPrimaryKey,
            columnsToGet, limit, condition)
 {
     ConsumedCapacityUnitCounter = consumedCapacityUnitCounter;
 }
Exemplo n.º 3
0
        public IEnumerable <Row> GetRangeIterator(
            string tableName,
            GetRangeDirection direction,
            PrimaryKey inclusiveStartPrimaryKey,
            PrimaryKey exclusiveEndPrimaryKey,
            CapacityUnit consumedCapacityUnitCounter,
            HashSet <string> columnsToGet = null,
            int?count = null,
            IColumnCondition condition = null)
        {
            int?leftCount = count;

            if (leftCount != null && leftCount < 0)
            {
                throw new OTSClientException("the value of count must be larger than 0");
            }

            PrimaryKey nextStartPrimaryKey = inclusiveStartPrimaryKey;

            while (nextStartPrimaryKey != null)
            {
                var request = new GetRangeRequest(
                    tableName, direction, nextStartPrimaryKey, exclusiveEndPrimaryKey,
                    columnsToGet, leftCount, condition);

                var response = GetRange(request);
                consumedCapacityUnitCounter.Read += response.ConsumedCapacityUnit.Read;
                nextStartPrimaryKey = response.NextPrimaryKey;

                foreach (var rowData in response.RowDataList)
                {
                    yield return(rowData);
                }

                if (leftCount != null)
                {
                    leftCount -= response.RowDataList.Count;
                    if (leftCount <= 0)
                    {
                        break;
                    }
                }
            }
        }
        public void SetTestConext(string tableName                             = null,
                                  PrimaryKeySchema pkSchema                    = null,
                                  CapacityUnit reservedThroughput              = null,
                                  PrimaryKey primaryKey                        = null,
                                  AttributeColumns attribute                   = null,
                                  UpdateOfAttribute updateOfAttributeForPut    = null,
                                  UpdateOfAttribute updateOfAttributeForDelete = null,
                                  Condition condition                          = null,
                                  GetRangeDirection direction                  = GetRangeDirection.Forward,
                                  PrimaryKey startPrimaryKey                   = null,
                                  PrimaryKey endPrimaryKey                     = null,
                                  HashSet <string> columnsToGet                = null,
                                  int?limit = null,
                                  CapacityUnit putRowConsumed    = null,
                                  CapacityUnit getRowConsumed    = null,
                                  CapacityUnit updateRowConsumed = null,
                                  CapacityUnit deleteRowConsumed = null,
                                  CapacityUnit getRangeConsumed  = null,
                                  Dictionary <string, string> expectedFailure = null,
                                  string allFailedMessage = null)
        {
            var DefaultPrimaryKeySchema = new PrimaryKeySchema();

            DefaultPrimaryKeySchema.Add("PK0", ColumnValueType.String);
            DefaultPrimaryKeySchema.Add("PK1", ColumnValueType.String);
            DefaultPrimaryKeySchema.Add("PK2", ColumnValueType.Integer);
            DefaultPrimaryKeySchema.Add("PK3", ColumnValueType.Integer);

            var DefaultReservedThroughput = new CapacityUnit(0, 0);

            TestContext = new APITestContext();
            TestContext.expectedFailure    = expectedFailure;
            TestContext.allFailedMessage   = allFailedMessage;
            TestContext.tableName          = tableName ?? OTSUnitTestBase.TestTableName;
            TestContext.pkSchema           = pkSchema ?? DefaultPrimaryKeySchema;
            TestContext.reservedThroughput = reservedThroughput ?? DefaultReservedThroughput;
            TestContext.primaryKey         = primaryKey ?? PrimaryKeyWith4Columns;
            TestContext.attribute          = attribute ?? AttributeWith5Columns;
            TestContext.condition          = condition ?? new Condition(RowExistenceExpectation.IGNORE);
            TestContext.startPrimaryKey    = startPrimaryKey ?? MinPrimaryKeyWith4Columns;
            TestContext.endPrimaryKey      = endPrimaryKey ?? MaxPrimaryKeyWith4Columns;
            TestContext.putRowConsumed     = putRowConsumed ?? new CapacityUnit(0, 1);
            TestContext.getRowConsumed     = getRowConsumed ?? new CapacityUnit(1, 0);
            TestContext.updateRowConsumed  = updateRowConsumed ?? new CapacityUnit(0, 1);
            TestContext.deleteRowConsumed  = deleteRowConsumed ?? new CapacityUnit(0, 1);
            TestContext.getRangeConsumed   = getRangeConsumed ?? new CapacityUnit(1, 0);
            TestContext.columnsToGet       = columnsToGet;
            TestContext.limit     = limit;
            TestContext.direction = direction;

            if (updateOfAttributeForPut == null)
            {
                updateOfAttributeForPut = new UpdateOfAttribute();
                foreach (var item in TestContext.attribute)
                {
                    updateOfAttributeForPut.AddAttributeColumnToPut(item.Key, item.Value);
                }
            }

            if (updateOfAttributeForDelete == null)
            {
                updateOfAttributeForDelete = new UpdateOfAttribute();
                foreach (var item in TestContext.attribute)
                {
                    updateOfAttributeForDelete.AddAttributeColumnToDelete(item.Key);
                }
            }

            TestContext.updateOfAttributeForPut    = updateOfAttributeForPut;
            TestContext.updateOfAttributeForDelete = updateOfAttributeForDelete;
        }