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"); } }
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); } }
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)); } }
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)); } }
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)); } }
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); }
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()); } }
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); }
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; } } } }