Ejemplo n.º 1
0
        public void ExecuteAsync_Batch_Test()
        {
            // Generate 3 test users
            var testUsers = Enumerable.Range(110, 3).Select(idx => new InsertUser
            {
                Id               = Guid.NewGuid(),
                Name             = string.Format("Name {0}", idx),
                Age              = idx,
                CreatedDate      = TestDataGenerator.GetDateTimeInPast(idx),
                IsActive         = idx % 2 == 0,
                LastLoginDate    = TestDataGenerator.GetNullableDateTimeInPast(idx),
                LoginHistory     = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast),
                LuckyNumbers     = TestDataGenerator.GetSet(idx, i => i),
                FavoriteColor    = TestDataGenerator.GetEnumValue <RainbowColor>(idx),
                TypeOfUser       = TestDataGenerator.GetEnumValue <UserType?>(idx),
                PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx),
                HairColor        = TestDataGenerator.GetEnumValue <HairColor>(idx)
            }).ToList();

            // Create batch to insert users and execute
            var       mapper = GetMapper(() => TestHelper.DelayedTask(new RowSet()));
            ICqlBatch batch  = mapper.CreateBatch();

            batch.Insert(testUsers[0]);
            batch.Insert(testUsers[1]);
            batch.Insert(testUsers[2]);
            mapper.ExecuteAsync(batch);
        }
Ejemplo n.º 2
0
        public async void ExecuteAsync_Batch()
        {
            // Generate 3 test users
            var testUsers = Enumerable.Range(110, 3).Select(idx => new InsertUser
            {
                Id               = Guid.NewGuid(),
                Name             = string.Format("Name {0}", idx),
                Age              = idx,
                CreatedDate      = TestDataGenerator.GetDateTimeInPast(idx),
                IsActive         = idx % 2 == 0,
                LastLoginDate    = TestDataGenerator.GetNullableDateTimeInPast(idx),
                LoginHistory     = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast),
                LuckyNumbers     = TestDataGenerator.GetSet(idx, i => i),
                ChildrenAges     = TestDataGenerator.GetDictionary(idx, i => string.Format("Child {0}", i), i => i),
                FavoriteColor    = TestDataGenerator.GetEnumValue <RainbowColor>(idx),
                TypeOfUser       = TestDataGenerator.GetEnumValue <UserType?>(idx),
                PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx),
                HairColor        = TestDataGenerator.GetEnumValue <HairColor>(idx)
            }).ToList();

            // Create batch to insert users and execute
            ICqlBatch batch = CqlClient.CreateBatch();

            batch.Insert(testUsers[0]);
            batch.Insert(testUsers[1]);
            batch.Insert(testUsers[2]);
            await CqlClient.ExecuteAsync(batch);
        }
Ejemplo n.º 3
0
        public void ExecuteAsync_Batch_Test()
        {
            // Generate 3 test users
            var testUsers = Enumerable.Range(110, 3).Select(idx => new InsertUser
            {
                Id               = Guid.NewGuid(),
                Name             = string.Format("Name {0}", idx),
                Age              = idx,
                CreatedDate      = TestDataGenerator.GetDateTimeInPast(idx),
                IsActive         = idx % 2 == 0,
                LastLoginDate    = TestDataGenerator.GetNullableDateTimeInPast(idx),
                LoginHistory     = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast),
                LuckyNumbers     = TestDataGenerator.GetSet(idx, i => i),
                FavoriteColor    = TestDataGenerator.GetEnumValue <RainbowColor>(idx),
                TypeOfUser       = TestDataGenerator.GetEnumValue <UserType?>(idx),
                PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx),
                HairColor        = TestDataGenerator.GetEnumValue <HairColor>(idx)
            }).ToList();

            // Create batch to insert users and execute
            var       mapperAndSession = GetMapperAndSession(() => TestHelper.DelayedTask(new RowSet()));
            ICqlBatch batch            = mapperAndSession.Mapper.CreateBatch();

            batch.Insert(testUsers[0]);
            batch.Insert(testUsers[1]);
            batch.Insert(testUsers[2]);
            mapperAndSession.Mapper.ExecuteAsync(batch).Wait();
            Mock.Get(mapperAndSession.Session).Verify(s => s.ExecuteAsync(It.IsAny <IStatement>(), It.Is <string>(profile => profile != "default")), Times.Never);
            Mock.Get(mapperAndSession.Session).Verify(s => s.ExecuteAsync(It.IsAny <IStatement>(), It.Is <string>(profile => profile == "default")), Times.Once);
            Mock.Get(mapperAndSession.Session).Verify(s => s.ExecuteAsync(It.IsAny <IStatement>()), Times.Never);
            Mock.Get(mapperAndSession.Session).Verify(s => s.Execute(It.IsAny <IStatement>(), It.IsAny <string>()), Times.Never);
            Mock.Get(mapperAndSession.Session).Verify(s => s.Execute(It.IsAny <IStatement>()), Times.Never);
        }
Ejemplo n.º 4
0
        public void ExecuteAsync_MixedBatch_Test()
        {
            // Generate test user
            const int idx      = 21;
            var       testUser = new InsertUser
            {
                Id               = Guid.NewGuid(),
                Name             = string.Format("Name {0}", idx),
                Age              = idx,
                CreatedDate      = TestDataGenerator.GetDateTimeInPast(idx),
                IsActive         = idx % 2 == 0,
                LastLoginDate    = TestDataGenerator.GetNullableDateTimeInPast(idx),
                LoginHistory     = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast),
                LuckyNumbers     = TestDataGenerator.GetSet(idx, i => i),
                FavoriteColor    = TestDataGenerator.GetEnumValue <RainbowColor>(idx),
                TypeOfUser       = TestDataGenerator.GetEnumValue <UserType?>(idx),
                PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx),
                HairColor        = TestDataGenerator.GetEnumValue <HairColor>(idx)
            };

            // Get id of existing user for deleting and updating
            Guid deleteId = Guid.NewGuid();
            Guid updateId = Guid.NewGuid();

            // Create batch of mixed statements and execute
            var       mapper = GetMapper(() => TestHelper.DelayedTask(new RowSet()));
            ICqlBatch batch  = mapper.CreateBatch();

            batch.Insert(testUser);
            batch.Delete <InsertUser>("WHERE userid = ?", deleteId);
            batch.Update <InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId);
            mapper.ExecuteAsync(batch).Wait();
        }
Ejemplo n.º 5
0
        public void Execute_MixedBatch()
        {
            // Generate test user
            const int idx      = 20;
            var       testUser = new InsertUser
            {
                Id               = Guid.NewGuid(),
                Name             = string.Format("Name {0}", idx),
                Age              = idx,
                CreatedDate      = TestDataGenerator.GetDateTimeInPast(idx),
                IsActive         = idx % 2 == 0,
                LastLoginDate    = TestDataGenerator.GetNullableDateTimeInPast(idx),
                LoginHistory     = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast),
                LuckyNumbers     = TestDataGenerator.GetSet(idx, i => i),
                ChildrenAges     = TestDataGenerator.GetDictionary(idx, i => string.Format("Child {0}", i), i => i),
                FavoriteColor    = TestDataGenerator.GetEnumValue <RainbowColor>(idx),
                TypeOfUser       = TestDataGenerator.GetEnumValue <UserType?>(idx),
                PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx),
                HairColor        = TestDataGenerator.GetEnumValue <HairColor>(idx)
            };

            // Get id of existing user for deleting and updating
            Guid deleteId = TestDataHelper.Users[0].UserId;
            Guid updateId = TestDataHelper.Users[1].UserId;

            // Create batch of mixed statements and execute
            ICqlBatch batch = CqlClient.CreateBatch();

            batch.Insert(testUser);
            batch.Delete <InsertUser>("WHERE userid = ?", deleteId);
            batch.Update <InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId);
            CqlClient.Execute(batch);
        }
Ejemplo n.º 6
0
        public void Execute_MixedBatch_Test()
        {
            // Generate test user
            const int idx      = 20;
            var       testUser = new InsertUser
            {
                Id               = Guid.NewGuid(),
                Name             = string.Format("Name {0}", idx),
                Age              = idx,
                CreatedDate      = TestDataGenerator.GetDateTimeInPast(idx),
                IsActive         = idx % 2 == 0,
                LastLoginDate    = TestDataGenerator.GetNullableDateTimeInPast(idx),
                LoginHistory     = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast),
                LuckyNumbers     = TestDataGenerator.GetSet(idx, i => i),
                FavoriteColor    = TestDataGenerator.GetEnumValue <RainbowColor>(idx),
                TypeOfUser       = TestDataGenerator.GetEnumValue <UserType?>(idx),
                PreferredContact = TestDataGenerator.GetEnumValue <ContactMethod>(idx),
                HairColor        = TestDataGenerator.GetEnumValue <HairColor>(idx)
            };

            // Get id of existing user for deleting and updating
            Guid deleteId = Guid.NewGuid();
            Guid updateId = Guid.NewGuid();

            // Create batch of mixed statements and execute
            var       mapper = GetMapper(() => TestHelper.DelayedTask(new RowSet()));
            ICqlBatch batch  = mapper.CreateBatch();

            batch.Insert(testUser);
            batch.Delete <InsertUser>("WHERE userid = ?", deleteId);
            batch.Update <InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId);
            var queries = batch.Statements.Select(cql => cql.Statement).ToArray();

            Assert.AreEqual(3, queries.Length);
            Assert.AreEqual("INSERT INTO users (userid, Name, Age, CreatedDate, IsActive, " +
                            "LastLoginDate, LoginHistory, LuckyNumbers, ChildrenAges, " +
                            "FavoriteColor, TypeOfUser, preferredcontactmethod, HairColor) VALUES " +
                            "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", queries[0]);
            Assert.AreEqual("DELETE FROM users WHERE userid = ?", queries[1]);
            Assert.AreEqual("UPDATE users SET name = ? WHERE userid = ?", queries[2]);
            mapper.Execute(batch);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Create a new reservation
        /// </summary>
        /// <param name="oItem"></param>
        /// <returns></returns>
        public async Task <ResultModel <reservation> > AddReservation(item oItem)
        {
            ResultModel <reservation> results = new ResultModel <reservation>();

            //check if item available
            var resultItem = await GetItemByIdValueAndTypeAsync(oItem);

            if (resultItem != null)
            {
                ItemStatus outStatus = ItemStatus.available;
                Enum.TryParse(resultItem.resultContent.status, out outStatus);

                Stopwatch sw = Stopwatch.StartNew();

                var invCount = await mapper
                               .FirstOrDefaultAsync <int>
                                   ("select available_count from inventory_by_location_and_upc where business_unit=? and location=? and upc=?", "wireless", "ye30cy", "upc123");

                sw.Stop();
                File.AppendAllText(@"C:\Guids.txt", $"AddReservation:GetCount: Time taken: {sw.Elapsed.Milliseconds}ms\r\n");


                if (outStatus == ItemStatus.available && invCount > 0)
                {
                    //upate inventory status 2 tables

                    item newItem = new item
                    {
                        businessUnit    = oItem.businessUnit,
                        location        = oItem.location,
                        upc             = oItem.upc,
                        identifierValue = oItem.identifierValue,
                        identifierType  = oItem.identifierType,
                        serialNumber    = oItem.serialNumber,
                        receiptId       = oItem.receiptId,
                        status          = ItemStatus.reserved.ToString(),
                        dateCreated     = TimeUuid.NewId(),
                        dateUpdated     = TimeUuid.NewId(),
                        itemAttributes  = null,
                        availableCount  = invCount - 1
                    };

                    //insert item history
                    itemHistory itemHist = new itemHistory
                    {
                        businessUnit    = oItem.businessUnit,
                        location        = oItem.location,
                        upc             = oItem.upc,
                        histItemId      = Guid.NewGuid(),
                        identifierValue = oItem.identifierValue,
                        identifierType  = oItem.identifierType,
                        serialNumber    = oItem.serialNumber,
                        receiptId       = oItem.receiptId,
                        status          = ItemStatus.reserved.ToString(),
                        dateCreated     = TimeUuid.NewId(),
                        dateUpdated     = TimeUuid.NewId(),
                        itemAttributes  = null
                    };

                    //insert itembyIdentifier
                    itemByIdentifier itemById = new itemByIdentifier
                    {
                        businessUnit    = oItem.businessUnit,
                        location        = oItem.location,
                        upc             = oItem.upc,
                        identifierValue = oItem.identifierValue,
                        identifierType  = oItem.identifierType,
                        serialNumber    = oItem.serialNumber,
                        receiptId       = oItem.receiptId,
                        status          = ItemStatus.reserved.ToString(),
                        dateCreated     = TimeUuid.NewId(),
                        dateUpdated     = TimeUuid.NewId(),
                        itemAttributes  = null
                    };

                    var reservationId = Guid.NewGuid();
                    //create a reservation record
                    reservation newReservation = new reservation
                    {
                        businessUnit      = oItem.businessUnit,
                        reservationId     = reservationId,
                        reserverId        = Guid.NewGuid().ToCqlString(),
                        location          = oItem.location,
                        upc               = oItem.upc,
                        identifierValue   = oItem.identifierValue,
                        identifierType    = oItem.identifierType,
                        serialNumber      = oItem.serialNumber,
                        receiptId         = oItem.receiptId,
                        itemStatus        = ItemStatus.reserved.ToString(),
                        dateCreated       = TimeUuid.NewId(),
                        dateUpdated       = TimeUuid.NewId(),
                        itemAttributes    = null,
                        reservationStatus = ReservationStatus.created.ToString()
                    };

                    //create a reservation history

                    reservationHistory newReservationHist = new reservationHistory
                    {
                        businessUnit      = oItem.businessUnit,
                        reservationId     = reservationId,
                        histReservationId = Guid.NewGuid(),
                        reserverId        = Guid.NewGuid().ToCqlString(),
                        location          = oItem.location,
                        upc               = oItem.upc,
                        identifierValue   = oItem.identifierValue,
                        identifierType    = oItem.identifierType,
                        serialNumber      = oItem.serialNumber,
                        receiptId         = oItem.receiptId,
                        itemStatus        = ItemStatus.reserved.ToString(),
                        dateCreated       = TimeUuid.NewId(),
                        dateUpdated       = TimeUuid.NewId(),
                        itemAttributes    = null,
                        reservationStatus = ReservationStatus.created.ToString()
                    };

                    //create a logged batch
                    ICqlBatch itembatch = mapper.CreateBatch(BatchType.Logged);
                    itembatch.Update <item>("SET status =? , available_count=?  , date_updated= ? WHERE business_unit =? and location=? and upc=? and identifier_value=? and identifier_type=? IF status=?"
                                            , ItemStatus.reserved.ToString(), invCount - 1, TimeUuid.NewId()
                                            , oItem.businessUnit, oItem.location, oItem.upc, oItem.identifierValue, oItem.identifierType, ItemStatus.available.ToString());

                    itembatch.Options.SetConsistencyLevel(ConsistencyLevel.Quorum);

                    sw = Stopwatch.StartNew();
                    await mapper.ExecuteAsync(itembatch);

                    sw.Stop();
                    File.AppendAllText(@"C:\Guids.txt", $"AddReservation:itemBatch:Time taken: {sw.Elapsed.Milliseconds}ms\r\n");


                    //ICqlBatch reservationbatch = mapper.CreateBatch(BatchType.Logged);
                    //reservationbatch.InsertIfNotExists(newReservation);

                    //sw = Stopwatch.StartNew();
                    //await mapper.ExecuteConditionalAsync<reservation>(reservationbatch);
                    //sw.Stop();
                    //File.AppendAllText(@"C:\Guids.txt", $"AddReservation:reservationBatch: Time taken: {sw.Elapsed.Milliseconds}ms\r\n");


                    ICqlBatch allBatch = mapper.CreateBatch(BatchType.Logged);
                    allBatch.Insert <reservation>(newReservation);
                    allBatch.Insert <itemByIdentifier>(itemById);
                    allBatch.Insert <itemHistory>(itemHist);
                    allBatch.Insert <reservationHistory>(newReservationHist);
                    allBatch.Options.SetConsistencyLevel(ConsistencyLevel.Quorum);

                    sw = Stopwatch.StartNew();
                    await mapper.ExecuteAsync(allBatch);

                    sw.Stop();
                    File.AppendAllText(@"C:\Guids.txt", $"AddReservation:restOfBatch: Time taken: {sw.Elapsed.Milliseconds}ms\r\n");

                    results.resultContent = newReservation;
                    results.resultCode    = ResultStatus.success;
                    return(results);
                }
            }

            results.resultCode = ResultStatus.failure;
            return(results);
        }