public static async Task <Issue[]> GetAllIssues()
        {
            using (var box = await Box.Connect(
                       "operator:123123@localhost:3301"))
            {
                var issues = new List <Issue>();

                try
                {
                    var primaryIndex = box.GetSchema()["issues"]["primary_id"];
                    var data         = await primaryIndex.Select <TarantoolTuple <string>,
                                                                  TarantoolTuple <string, string> >(
                        TarantoolTuple.Create(string.Empty), new SelectOptions
                    {
                        Iterator = Iterator.All
                    });

                    issues.AddRange(data.Data.Select(tuple => new Issue
                    {
                        Id   = tuple.Item1,
                        Name = tuple.Item2
                    }));
                }
                catch (ArgumentException)
                {
                }

                return(issues.ToArray());
            }
        }
示例#2
0
 public async Task ClearDataAsync(params string[] spaceNames)
 {
     using (var tarantoolClient = await Client.Box.Connect(ConnectionStringFactory.GetReplicationSource_1_7("admin:adminPassword")))
     {
         await tarantoolClient.Call("clear_data", TarantoolTuple.Create(spaceNames));
     }
 }
        public async Task <T[]> GetAllAsync <T>() where T : BaseEntity
        {
            var primaryIndex = _schema[TypeName(typeof(T))]["primary_id"];
            var response     = await primaryIndex.Select <TarantoolTuple <long>, T>(TarantoolTuple.Create(0L),
                                                                                    new SelectOptions { Iterator = Iterator.All });

            return(response.Data.ToArray());
        }
        public async Task <T> GetAsync <T>(long?id) where T : BaseEntity
        {
            var primaryIndex = _schema[TypeName(typeof(T))]["primary_id"];
            var response     = await primaryIndex.Select <TarantoolTuple <long?>, T>(TarantoolTuple.Create(id),
                                                                                     new SelectOptions { Iterator = Iterator.Eq });

            return(response.Data.First());
        }
示例#5
0
        public async Task evaluate_call_function()
        {
            using (var tarantoolClient = await Client.Box.Connect(await ConnectionStringFactory.GetReplicationSource_1_7()))
            {
                var result = await tarantoolClient.Eval <TarantoolTuple <int, int, int>, TarantoolTuple <int, int> >("return return_tuple()", TarantoolTuple.Create(1, 2, 3));

                result.Data.ShouldBe(new[] { TarantoolTuple.Create(1, 2) });
            }
        }
示例#6
0
        public async Task return_int_v1_6_should_not_throw()
        {
            using (var tarantoolClient = await Client.Box.Connect(ConnectionStringFactory.GetReplicationSource_1_7()))
            {
                var result = await tarantoolClient.Call_1_6 <TarantoolTuple <int> >("return_scalar");

                result.Data.ShouldBe(new[] { TarantoolTuple.Create(1) });
            }
        }
示例#7
0
        public async Task return_tuple_with_null_should_not_throw()
        {
            using (var tarantoolClient = await Client.Box.Connect(ConnectionStringFactory.GetReplicationSource_1_7()))
            {
                var result = await tarantoolClient.Call <TarantoolTuple <string> >("return_tuple_with_null");

                result.Data.ShouldBe(new[] { TarantoolTuple.Create(default(string)) });
            }
        }
示例#8
0
        public Task <long> Add(MessageData @object, CancellationToken token)
        {
            async Task <long> Func()
            {
                var response = await this._space.Insert(TarantoolTuple.Create(@object.Id, this._jsonService.Serialize(@object)));

                var x = response.Data[0].Item1;

                return(x);
            }

            return(MeasureIt(Func));
        }
        public async Task SerialTest()
        {
            for (var i = 0; i < 1000; i++)
            {
                var result = await _tarantoolClient.Call_1_6 <TarantoolTuple <double>, TarantoolTuple <double> >(
                    "math.sqrt",
                    TarantoolTuple.Create(1.3));

                var diff = Math.Abs(result.Data.Single().Item1 - Math.Sqrt(1.3));

                diff.ShouldBeLessThan(double.Epsilon);
            }
        }
示例#10
0
        static async Task DoWork()
        {
            using (var box = await Box.Connect(
                       "operator:123123@localhost:3301"))
            {
                var schema = box.GetSchema();

                var space = await schema.GetSpace("users");

                var primaryIndex = await space.GetIndex("primary_id");

                //await space.Insert(TarantoolTuple.Create(Guid.NewGuid().ToString(),
                //"Vladimir Vladimirov", "vvladimirov", "*****@*****.**", 10L));

                var updatedData = await space.Update <TarantoolTuple <string>,
                                                      TarantoolTuple <string, string, string, string, long> >(
                    TarantoolTuple.Create("600ca93b-10dc-4ebe-8c78-95f4d5384426"),
                    new UpdateOperation[] { UpdateOperation.CreateAssign(4, 47L) });

                var data = await primaryIndex.Select <TarantoolTuple <string>,
                                                      TarantoolTuple <string, string, string, string, long> >(
                    TarantoolTuple.Create(String.Empty), new SelectOptions
                {
                    Iterator = Iterator.All
                });

                var loginIndex = await space.GetIndex("secondary_login");

                var users = await loginIndex.Select <TarantoolTuple <string>,
                                                     TarantoolTuple <string, string, string, string, long> >(
                    TarantoolTuple.Create("petrov"));

                var petrov = users.Data;

                var ratingIndex = await space.GetIndex("secondary_rating");

                var ratingUsers = await ratingIndex.Select <TarantoolTuple <long>,
                                                            TarantoolTuple <string, string, string, string, long> >(
                    TarantoolTuple.Create(15L), new SelectOptions
                {
                    Iterator = Iterator.Ge
                });

                await box.Call("update_rating");

                foreach (var item in data.Data)
                {
                    Console.WriteLine(item);
                }
            }
        }
        public async Task <ViewResult> Index()
        {
            var allDogs = await _primaryIndex.Select <TarantoolTuple <long>, Dog>(TarantoolTuple.Create(-1L), new SelectOptions { Iterator = Iterator.All });

            var seniorDogs = await _secondaryIndex.Select <TarantoolTuple <long>, Dog>(TarantoolTuple.Create(5L), new SelectOptions { Iterator = Iterator.Ge });

            var juniorDogs = await _secondaryIndex.Select <TarantoolTuple <long>, Dog>(TarantoolTuple.Create(5L), new SelectOptions { Iterator = Iterator.Le });

            return(View(new []
            {
                allDogs.Data,
                seniorDogs.Data,
                juniorDogs.Data
            }));
        }
        public async Task Smoke()
        {
            const string spaceName = "with_scalar_index";

            await ClearDataAsync(spaceName);

            var clientOptions = new ClientOptions(ConnectionStringFactory.GetReplicationSource_1_7());

            using (var tarantoolClient = new Client.Box(clientOptions))
            {
                await tarantoolClient.Connect();

                var schema = tarantoolClient.GetSchema();

                var space = schema[spaceName];

                await space.Insert(TarantoolTuple.Create(2f, new[] { 1, 2, 3 }));

                await space.Insert(TarantoolTuple.Create(true, "Music"));

                await space.Insert(TarantoolTuple.Create(1u, 2f));

                await space.Insert(TarantoolTuple.Create("false", (string)null));

                var index  = space[0];
                var result = await index.Select <TarantoolTuple <bool>, TarantoolTuple <MsgPackToken, MsgPackToken> >(
                    TarantoolTuple.Create(false),
                    new SelectOptions
                {
                    Iterator = Model.Enums.Iterator.All
                });

                result.Data.ShouldNotBeNull();

                var data = result.Data;
                ((bool)data[0].Item1).ShouldBe(true);
                ((string)data[0].Item2).ShouldBe("Music");

                ((ulong)data[1].Item1).ShouldBe(1u);
                ((double)data[1].Item2).ShouldBe(2f);

                ((double)data[2].Item1).ShouldBe(2f);
                ((MsgPackToken[])data[2].Item2).Select(t => (int)t).ToArray().ShouldBe(new[] { 1, 2, 3 });

                ((string)data[3].Item1).ShouldBe("false");
                ((MsgPackToken[])data[3].Item2).ShouldBe(null);
            }
        }
        private async Task StartImpl()
        {
            for (uint i = 0; i < OperationsCount; i++)
            {
                var operationId = _id * OperationsCount + i + 1000;

                var existing = await _index.Select <TarantoolTuple <uint>, TarantoolTuple <uint, string> >(TarantoolTuple.Create(operationId));

                if (existing.Data.Any())
                {
                    await _index.Delete <TarantoolTuple <uint>, TarantoolTuple <uint, string> >(TarantoolTuple.Create(operationId));
                }
                await _index.Insert(TarantoolTuple.Create(operationId, $"Insert operation {operationId}"));

                await _index.Select <TarantoolTuple <uint>, TarantoolTuple <uint, string> >(TarantoolTuple.Create(operationId));
            }
        }
        public static async Task SaveIssue(Issue issue)
        {
            using (var box = await Box.Connect(
                       "operator:123123@localhost:3301"))
            {
                try
                {
                    var primaryIndex = box.GetSchema()["issues"]["primary_id"];

                    var rnd = new Random();
                    var num = rnd.Next(3, 10000);
                    await primaryIndex.Insert(TarantoolTuple.Create(num.ToString(), issue.Name));
                }
                catch (ArgumentException)
                {
                }
            }
        }
        public async Task ParallelTest()
        {
            var tasks = new Task[1000];

            for (var i = 0; i < tasks.Length; i++)
            {
                tasks[i] = _tarantoolClient.Call_1_6 <TarantoolTuple <double>, TarantoolTuple <double> >(
                    "math.sqrt",
                    TarantoolTuple.Create(1.3))
                           .ContinueWith(x =>
                {
                    var result = x.Result;
                    var diff   = Math.Abs(result.Data.Single().Item1 - Math.Sqrt(1.3));

                    diff.ShouldBeLessThan(double.Epsilon);
                });
            }

            await Task.WhenAll(tasks);
        }
示例#16
0
        static async Task DoWork()
        {
            using (var box = await Box.Connect("operator:123123@localhost:3301"))
            {
                var schema = box.GetSchema();
                var space  = await schema.GetSpace("users");

                var primaryIndex = await space.GetIndex("primary_id");

                var data = await primaryIndex.Select <TarantoolTuple <string>,
                                                      TarantoolTuple <string, string, string, string, long> >(
                    TarantoolTuple.Create(String.Empty), new SelectOptions
                {
                    Iterator = Iterator.All
                });

                foreach (var item in data.Data)
                {
                    Console.WriteLine(item);
                }
            }
        }
        public async Task <bool> OldUpdateAsync <T>(T entity) where T : BaseEntity
        {
            var props      = entity.GetType().GetProperties();
            var operations = new UpdateOperation[props.Length];

            for (var i = 0; i < props.Length; i++)
            {
                var propValue            = props[i].GetValue(entity);
                var genericTypeOperation = typeof(UpdateOperation)
                                           .GetMethods()
                                           .Single(x => x.Name == "CreateAssign")
                                           .MakeGenericMethod(propValue.GetType())
                                           .Invoke(null, new[] { i, propValue });

                operations[i] = (UpdateOperation)genericTypeOperation;
            }

            await _schema[TypeName(typeof(T))]["primary_id"]
            .Update <T, TarantoolTuple <long?> >(TarantoolTuple.Create(entity.Id), operations);

            return(true);
        }
示例#18
0
        public async Task do_nothing_if_already_connected()
        {
            using (var box = await Client.Box.Connect(await ConnectionStringFactory.GetReplicationSource_1_7("operator:operator")))
            {
                var result = await box.Call_1_6 <TarantoolTuple <double>, TarantoolTuple <double> >("math.sqrt", TarantoolTuple.Create(1.3));

                var diff = Math.Abs(result.Data.Single().Item1 - Math.Sqrt(1.3));

                diff.ShouldBeLessThan(double.Epsilon);

                await box.Connect();

                var result2 = await box.Call_1_6 <TarantoolTuple <double>, TarantoolTuple <double> >("math.sqrt", TarantoolTuple.Create(1.3));

                var diff2 = Math.Abs(result2.Data.Single().Item1 - Math.Sqrt(1.3));

                diff2.ShouldBeLessThan(double.Epsilon);
            }
        }
        public async Task <bool> DeleteAsync <T>(long?id) where T : BaseEntity
        {
            await _schema[TypeName(typeof(T))]["primary_id"].Delete <TarantoolTuple <long?>, T>(TarantoolTuple.Create(id));

            return(true);
        }
示例#20
0
        public async Task call_method()
        {
            using (var tarantoolClient = await Client.Box.Connect(ConnectionStringFactory.GetReplicationSource_1_7()))
            {
                var result = await tarantoolClient.Call_1_6 <TarantoolTuple <double>, TarantoolTuple <double> >("math.sqrt", TarantoolTuple.Create(1.3));

                var diff = Math.Abs(result.Data.Single().Item1 - Math.Sqrt(1.3));

                diff.ShouldBeLessThan(double.Epsilon);
            }
        }
示例#21
0
        public async Task evaluate_expression()
        {
            using (var tarantoolClient = await Client.Box.Connect(ConnectionStringFactory.GetReplicationSource_1_7()))
            {
                var result = await tarantoolClient.Eval <TarantoolTuple <int, int, int>, int>("return ...", TarantoolTuple.Create(1, 2, 3));

                result.Data.ShouldBe(new[] { 1, 2, 3 });
            }
        }
示例#22
0
        async Task RequestAllCategories()
        {
            using (var box = await Box.Connect("localhost:3301"))
            {
                Console.WriteLine("Подключение к базе");
                categories.Clear();

                var schema = box.GetSchema();

                var space = await schema.GetSpace("categories");

                var primaryIndex = await space.GetIndex("id");

                var data = await primaryIndex.Select <TarantoolTuple <int>, TarantoolTuple <int, string> >(TarantoolTuple.Create <int>(1), new SelectOptions
                {
                    Iterator = Iterator.All
                });

                if (categories.Count == 0)
                {
                    categories = new List <Category>();

                    foreach (var item in data.Data)
                    {
                        Console.WriteLine("{0} - {1}", item.Item1, item.Item2);
                        categories.Add(new Category {
                            id = item.Item1, Name = item.Item2
                        });
                    }
                }
            }
        }
示例#23
0
        public async Task TreeIndexMethods()
        {
            const string spaceName = "space_TreeIndexMethods";

            await ClearDataAsync(spaceName);

            using (var tarantoolClient = await Client.Box.Connect(ConnectionStringFactory.GetReplicationSource_1_7()))
            {
                var schema = tarantoolClient.GetSchema();

                var space = schema[spaceName];

                var index = space["treeIndex"];

                var min2 = await index.Min <TarantoolTuple <int, int, int>, TarantoolTuple <int> >(TarantoolTuple.Create(3));

                min2.ShouldBe(null);
                var min = await index.Min <TarantoolTuple <int, string, double> >();

                min.ShouldBe(null);

                var max = await index.Max <TarantoolTuple <int, int, int> >();

                max.ShouldBe(min2);
                var max2 = await index.Max <TarantoolTuple <int, string, double>, TarantoolTuple <int> >(TarantoolTuple.Create(1));

                max2.ShouldBe(min);
            }
        }
示例#24
0
        public async Task <double> TestMethod()
        {
            var result = await _box.Call_1_6 <TarantoolTuple <double>, TarantoolTuple <double> >("math.sqrt", TarantoolTuple.Create(1.3));

            return(result.Data.Single().Item1);
        }
示例#25
0
文件: Program.cs 项目: kinavi/TCP
        static async Task Test()
        {
            using (var box = await Box.Connect("localhost:3301"))
            {
                var schema = box.GetSchema();

                var space = await schema.GetSpace("categories");

                var primaryIndex = await space.GetIndex("id");

                var data = await primaryIndex.Select <TarantoolTuple <int>, TarantoolTuple <int, string> >(TarantoolTuple.Create <int>(1), new SelectOptions
                {
                    Iterator = Iterator.Eq
                });

                foreach (var item in data.Data)
                {
                    Console.WriteLine(item);
                }
                Console.ReadKey();
            }
        }