Ejemplo n.º 1
0
 public void speedTest()
 {
     using (FileLog l = new FileLog("DataPackageTest", new FileLogSettings()
     {
         DateFolderMask = "yyyy-MM-dd"
     }))
         using (DataPackage p = new DataPackage(new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" }))
         {
             l.Debug("SpeedTest Start");
             int i = 0;
             for (i = 0; i < 1000000; i++)
             {
                 p.AddNew();
                 p["Col1"] = i;
                 p["Col2"] = $"Строка # {i}";
                 p["Col3"] = DateTime.Now.AddDays(i);
                 p["Col4"] = Guid.NewGuid();
                 //без сериализации работает в 1.5 раза быстрееp
                 p["Col5"] = null;
                 //p["Col5"] = new testClass();
                 p.Update();
             }
             l.Debug($"SpeedTest Finish {i} rows added");
             p.GoDataTop();
             i = 0;
             for (; p.Read();)
             {
                 i++;
             }
             l.Debug($"SpeedTest Finish {i} rows readed");
         }
 }
Ejemplo n.º 2
0
 public void ToDataTableTest()
 {
     using (FileLog l = new FileLog("DataPackageTest", new FileLogSettings()
     {
         DateFolderMask = "yyyy-MM-dd"
     }))
     {
         DataPackage p = new DataPackage(new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" });
         int         i = 0;
         for (i = 0; i < 5; i++)
         {
             p.AddNew();
             p["Col1"] = i;
             p["Col2"] = $"Строка # {i}";
             p["Col3"] = DateTime.Now.AddDays(i);
             p["Col4"] = Guid.NewGuid();
             //без сериализации работает в 1.5 раза быстрееp
             //p["Col5"] = null;
             p["Col5"] = new testClass()
             {
                 ID = i, Name = (string)p["Col2"]
             };
             p.Update();
         }
         l.Debug($"writeDataTest source {i} rows added");
         var t = p.ToDataTable();
         DisplayData(t, l);
     }
 }
Ejemplo n.º 3
0
        private void CtorTest()
        {
            using (FileLog l = new FileLog("DataPackageTest", new FileLogSettings()
            {
                DateFolderMask = "yyyy-MM-dd"
            }))
            {
                DataPackage p = new DataPackage(new string[] { "Col1.long", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34" },
                                                new object[] { 999999999999, "Property one", DateTime.Now, Guid.NewGuid() });
                p.GoDataTop();
                p.Read();
                l.Debug(p.GetRowJSON());
                l.Debug(p.ToString(TsExportFormat.JSON));

                p = new DataPackage(new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" });
                for (int i = 125; i < 135; i++)
                {
                    p.AddNew();
                    p["Col1"] = i;
                    p["Col2"] = $"Строка # {i}";
                    p["Col3"] = DateTime.Now.AddDays(i);
                    p["Col4"] = Guid.NewGuid();
                    TestClass c = new TestClass
                    {
                        ID   = i,
                        Name = (string)p["Col2"]
                    };
                    c.ItemList.Add(p["Col4"].ToString(), p["Col4"]);
                    p["Col5"] = null;
                    p.Update();
                }
                p.GoDataTop();
                for (; p.Read();)
                {
                    l.Debug(p.GetRowJSON());
                }
                l.Debug(p.ToString(TsExportFormat.JSON));

                p = new DataPackage("Col1", 999999999999, "Col2", "Свойство 1", "Col3", DateTime.Now, "Col4", Guid.NewGuid());
                p.SetHeader("HeaderValue1", 100)
                .SetHeader("HeaderValue2", DateTime.Now)
                .UpdateHeaders();
                p.GoDataTop();
                p.Read();
                l.Debug(p.GetRowJSON());
                l.Debug(p.ToString(TsExportFormat.JSON));
            }
        }
Ejemplo n.º 4
0
 public void headerTest()
 {
     using (FileLog l = new FileLog("DataPackageTest", new FileLogSettings()
     {
         DateFolderMask = "yyyy-MM-dd"
     }))
     {
         DataPackage p = new DataPackage(16, new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" }, null);
         p.Headers.Add("Username", "Сергей");
         p.Headers.Add("Password", "1234567T");
         p.Headers.Add("Sign", UnicodeEncoding.UTF8.GetBytes("Сергей"));
         try
         {
             p.UpdateHeaders();
         }
         catch (OverflowException oe)
         {
             l.Debug(oe.Message);
         }
         p = new DataPackage(512, new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" }, null);
         p.Headers.Add("Username", "Сергей");
         p.Headers.Add("Password", "1234567T");
         p.Headers.Add("Sign", UnicodeEncoding.UTF8.GetBytes("Сергей"));
         p.UpdateHeaders();
         int i = 0;
         for (i = 0; i < 5; i++)
         {
             p.AddNew();
             p["Col1"] = i;
             p["Col2"] = $"Строка # {i}";
             p["Col3"] = DateTime.Now.AddDays(i);
             p["Col4"] = Guid.NewGuid();
             //без сериализации работает в 1.5 раза быстрееp
             //p["Col5"] = null;
             p["Col5"] = new testClass()
             {
                 ID = i, Name = (string)p["Col2"]
             };
             p.Update();
         }
         l.Debug($"headerTest source {i} rows added");
         l.Debug(p.ToString(TsExportFormat.JSON));
     }
 }
Ejemplo n.º 5
0
        public void parseTest()
        {
            using (FileLog l = new FileLog("DataPackageTest", new FileLogSettings()
            {
                DateFolderMask = "yyyy-MM-dd"
            }))
            {
                DataPackage p = new DataPackage(new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" });
                p.Headers.Add("Username", "Сергей");
                p.Headers.Add("Password", "1234567T");
                p.UpdateHeaders();
                int i = 0;
                for (i = 0; i < 5; i++)
                {
                    p.AddNew();
                    p["Col1"] = i;
                    p["Col2"] = $"Строка # {i}";
                    p["Col3"] = DateTime.Now.AddDays(i);
                    p["Col4"] = Guid.NewGuid();
                    //без сериализации работает в 1.5 раза быстрееp
                    //p["Col5"] = null;
                    p["Col5"] = new testClass()
                    {
                        ID = i, Name = (string)p["Col2"]
                    };
                    p.Update();
                }
                l.Debug($"parseTest source {i} rows added");
                l.Debug(p.ToString(TsExportFormat.JSON));
                int hash = p.ToString(TsExportFormat.JSON).GetHashCode();
                p = DataPackage.Parse(p.ToString(TsExportFormat.JSON));
                l.Debug("parseTest after conversion");
                l.Debug(p.ToString(TsExportFormat.JSON));
                Assert.IsTrue(hash == p.ToString(TsExportFormat.JSON).GetHashCode());

                string source = @"{'string1':'value','integer2':99,'datetime3':'2017-05-23T00:00:00','time4':'22:00:00'}";
                p = DataPackage.Parse(512, source);
                l.Debug(p.ToString(TsExportFormat.JSON));
            }
        }
Ejemplo n.º 6
0
        static DataPackage getTestPackage()
        {
            var p = new DataPackage(new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" });

            p.Headers.Add("Username", "Сергей");
            p.Headers.Add("Password", "1234567T");
            p.Headers.Add("Sign", UnicodeEncoding.UTF8.GetBytes("Сергей"));
            p.UpdateHeaders();
            int i = 0;

            for (i = 0; i < 2; i++)
            {
                p.AddNew();
                p["Col1"] = i;
                p["Col2"] = $"Строка # {i}";
                p["Col3"] = DateTime.Now.AddDays(i);
                p["Col4"] = Guid.NewGuid();
                p["Col5"] = null;
                //p["Col5"] = new testClass() { ID = i, Name = (string)p["Col2"] };
                p.Update();
            }
            return(p);
        }
Ejemplo n.º 7
0
 public void byteArrayTest()
 {
     using (FileLog l = new FileLog("DataPackageTest", new FileLogSettings()
     {
         DateFolderMask = "yyyy-MM-dd"
     }))
     {
         DataPackage p = new DataPackage(new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object" });
         p.Headers.Add("Username", "Сергей");
         p.Headers.Add("Password", "1234567T");
         p.Headers.Add("Sign", UnicodeEncoding.UTF8.GetBytes("Сергей"));
         p.UpdateHeaders();
         int i = 0;
         for (i = 0; i < 5; i++)
         {
             p.AddNew();
             p["Col1"] = i;
             p["Col2"] = $"Строка # {i}";
             p["Col3"] = DateTime.Now.AddDays(i);
             p["Col4"] = Guid.NewGuid();
             //без сериализации работает в 1.5 раза быстрееp
             //p["Col5"] = null;
             p["Col5"] = new testClass()
             {
                 ID = i, Name = (string)p["Col2"]
             };
             p.Update();
         }
         l.Debug($"byteArrayTest source {i} rows added");
         l.Debug(p.ToString(TsExportFormat.JSON));
         int hash = p.ToString(TsExportFormat.JSON).GetHashCode();
         p = new DataPackage(p.ToArray());
         l.Debug($"byteArrayTest after conversion");
         l.Debug(p.ToString(TsExportFormat.JSON));
         Assert.IsTrue(hash == p.ToString(TsExportFormat.JSON).GetHashCode());
     }
 }
Ejemplo n.º 8
0
        private static DataPackage GetTestData(int rowsCount = 5, bool withHeader = false, bool withObjectData = false)
        {
            DataPackage p = new DataPackage(125, new string[] { "Col1.int", "Col2.string.255", "Col3.datetime.10", "Col4.Guid.34", "Col5.object.10.true" }, null);

            for (int i = 0; i < rowsCount; i++)
            {
                p.AddNew()
                .SetValue(0, i)
                .SetValue(1, $"Строка # {new string('x', i % 100)}")
                .SetValue(2, DateTime.Now.AddDays(i))
                .SetValue(3, Guid.NewGuid());

                if (!withObjectData)
                {
                    p[4] = null;                     //_dateTest (+4 sec for 10_000_000 loops);
                }
                else
                {
                    p[4] = new TestClass()
                    {
                        ID = i, Name = (string)p[1]
                    }
                };
                p.Update();
            }
            //Specialy update headers after input data for test speed shifting 1000 loop for shift 1000 rows ~ 2.5c
            //update headers before input data ~ 1.7c
            if (withHeader)
            {
                p.SetHeader("Username", "Сергей")
                .SetHeader("Password", "1234567T")
                .SetHeader("Sign", UnicodeEncoding.UTF8.GetBytes("Сергей"))
                .UpdateHeaders();
            }
            return(p);
        }
Ejemplo n.º 9
0
        private void Connecting(string userName, string password)
        {
#if NETCOREAPP
            using (var clientRSA = RSA.Create())
#else
            using (var clientRSA = new RSACng())
#endif
            {
                var clientPK = clientRSA.Export();
                using (DataPackage request = new DataPackage("UserName.String.32", "PublicKey.String.256"))
                {
                    request.Headers.Add("ActionID", "Sys.LoginRequest");
                    request.Headers.Add("UserName", userName);
                    request.UpdateHeaders();
                    request.AddNew();
                    request["UserName"]  = userName;
                    request["PublicKey"] = clientPK;
                    request.Update();
                    using (var response = SendAndRecieve(request))
                    {
                        if (response.Headers.ContainsKey("Status") &&
                            (string)response.Headers["Status"] == "ERROR")
                        {
                            throw new TCPConnectorException(response);
                        }

                        response.GoDataTop();
                        response.Read();
                        _loginInfo = new LoginInfo();
                        _loginInfo.Import(clientRSA.Decrypt(((string)response["LoginInfo"]).ToByteArray(), _padding));
                        _clientAes = Aes.Create()
                                     .ImportBin(_loginInfo.CryptoKey);
                    }
                }

                using (var request = new DataPackage("UserName.String.32", "SessionID.String.34", "EncryptedKey.String.256"))
                {
                    request.Headers.Add("ActionID", "Sys.Logon");
                    request.Headers.Add("UserName", userName);
                    request.UpdateHeaders();
                    request.AddNew();
                    request["UserName"]     = userName;
                    request["SessionID"]    = _loginInfo.SessionID.ToString();
                    request["EncryptedKey"] = _clientAes
                                              .EncryptBin(Encoding.UTF8.GetBytes(password))
                                              .ToBASE64String();
                    request.Update();
                    using (var response = SendAndRecieve(request))
                    {
                        if (response.Headers.ContainsKey("Status") &&
                            (string)response.Headers["Status"] == "ERROR")
                        {
                            throw new TCPConnectorException(response);
                        }

                        response.GoDataTop();
                        response.Read();
                        var token = (string)response["Ticket"];
                        _ticket = new Guid(_clientAes.DecryptBin(token.ToByteArray()).Take(16).ToArray());
                        //_ticket = new Guid(((BinaryDataBuffer)_clientAes.DecryptBin(token.ToByteArray())).Slice(0, 16));
                        //_userName = userName;
                        Connected = true;
                    }
                }
            }
        }