public async Task TestSenderWithFilterSimpleNonEmptyData() { var dir = AppContext.BaseDirectory; #region arange string filename = Path.Combine(dir, "b.csv"); if (File.Exists(filename)) { File.Delete(filename); } var rows = new List <IRow>(); int nrRows = 3; for (int i = 0; i < nrRows; i++) { var rowAndrei = new Mock <IRow>(); rowAndrei.SetupProperty(it => it.Values, new Dictionary <string, object>() { ["PersonID"] = i, ["FirstName"] = "John" + i, ["LastName"] = "Doe" + i } ); rows.Add(rowAndrei.Object); } #endregion #region act FilterComparable fltPerson = new FilterComparableGreaterOrEqual(typeof(Int32), 1, "PersonID"); ISend csvExport = new Sender_CSV(filename); ISend filteredCsvExport = new SenderWithFilterComparable(fltPerson, csvExport); filteredCsvExport.valuesToBeSent = rows.ToArray(); await filteredCsvExport.Send(); #endregion #region assert Assert.IsTrue(File.Exists(filename), $"file {filename} must exists in export csv"); var lines = File.ReadAllLines(filename); Assert.AreEqual(nrRows, lines.Length); // nrRows = nrRows + 1(header) - 1 (PersonID = 0) var lineNames = lines[0].Split(','); Assert.AreEqual(lineNames[0], "PersonID"); Assert.AreEqual(lineNames[1], "FirstName"); Assert.AreEqual(lineNames[2], "LastName"); #endregion }
public async Task TestSendCSVData() { var dir = AppContext.BaseDirectory; #region arange string filename = Path.Combine(dir, "a.csv"); if (File.Exists(filename)) { File.Delete(filename); } var rows = new List <IRow>(); int nrRows = 10; for (int i = 0; i < nrRows; i++) { var rowAndrei = new Mock <IRow>(); rowAndrei.SetupProperty(it => it.Values, new Dictionary <string, object>() { ["ID"] = i, ["FirstName"] = "Andrei" + i, ["LastName"] = "Ignat" + i } ); rows.Add(rowAndrei.Object); } #endregion #region act ISend csvExport = new Sender_CSV(filename); csvExport.valuesToBeSent = rows.ToArray(); await csvExport.Send(); #endregion #region assert Assert.IsTrue(File.Exists(filename), $"file {filename} must exists in export csv"); var lines = File.ReadAllLines(filename); Assert.AreEqual(nrRows + 1, lines.Length); var lineNames = lines[0].Split(','); Assert.AreEqual(lineNames[0], "ID"); Assert.AreEqual(lineNames[1], "FirstName"); Assert.AreEqual(lineNames[2], "LastName"); #endregion }
public async Task TestSenderWithFilterSimpleEmptyData() { var dir = AppContext.BaseDirectory; #region arange string filename = Path.Combine(dir, "b.csv"); if (File.Exists(filename)) { File.Delete(filename); } var rows = new List <IRow>(); int nrRows = 3; for (int i = 0; i < nrRows; i++) { var rowAndrei = new Mock <IRow>(); rowAndrei.SetupProperty(it => it.Values, new Dictionary <string, object>() { ["PersonID"] = i, ["FirstName"] = "John" + i, ["LastName"] = "Doe" + i } ); rows.Add(rowAndrei.Object); } #endregion #region act FilterComparable fltPerson = new FilterComparableGreaterOrEqual(typeof(Int32), 10, "PersonID"); ISend csvExport = new Sender_CSV(filename); ISend filteredCsvExport = new SenderWithFilterComparable(fltPerson, csvExport); filteredCsvExport.valuesToBeSent = rows.ToArray(); await filteredCsvExport.Send(); #endregion #region assert Assert.IsFalse(File.Exists(filename), $"file {filename} must not exists because default behaviour is to not execute real sender when filter doesn't produce at least one row"); #endregion }
public async Task TestSerializeReceiveBKChromeTransformOneValueSendCSV() { var dir = AppContext.BaseDirectory; #region arange string filename = Path.Combine(dir, "a.csv"); if (File.Exists(filename)) { File.Delete(filename); } var receiver = new ReceiverBookmarkFileChrome(@"bookmarks_7_25_17.html"); string transformExpression = "var secs = double.Parse((oldValue??null).ToString());" + "var val=new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(secs);" + "val"; var transform = new TransformOneValueGeneral(transformExpression, "ADD_DATE", "realDate"); var sender = new Sender_CSV(filename); ISimpleJob job = new SimpleJob(); job.Receivers.Add(0, receiver); job.FiltersAndTransformers.Add(0, transform); job.Senders.Add(0, sender); #endregion #region act var newJob = new SimpleJob(); newJob.UnSerialize(job.SerializeMe()); await newJob.Execute(); #endregion #region assert Assert.AreEqual(job.Senders.Count, newJob.Senders.Count); Assert.AreEqual(job.Receivers.Count, newJob.Receivers.Count); Assert.AreEqual(job.FiltersAndTransformers.Count, newJob.FiltersAndTransformers.Count); Assert.IsTrue(File.Exists(filename), $"file {filename} must exists in export csv"); Assert.AreEqual(5677, File.ReadAllLines(filename).Length); #endregion }
private static void AddCompilationReferencesForRuntime() { var j = new SimpleJob(); var x = (Microsoft.Extensions.DependencyModel.Resolution.ICompilationAssemblyResolver)null; var RvCSV = new ReceiverCSV.ReceiverCSVFileInt("ASdsa", System.Text.Encoding.UTF8); var rvSql = new ReceiverDBSqlServer.ReceiverTableSQLServerInt((ReceiverDB.DBTableData <int, System.Data.SqlClient.SqlConnection>)null); #if !NETSTANDARD1_6 #if !NETCOREAPP1_1 #if !NETCOREAPP1_0 #if !NETCOREAPP2_0 var ole = new ReceiverOLEDB.ReceiverOleDBDatabaseInt(null); var receiver = new ReceiverSolution.ReceiverFromSolution(null); #endif #endif #endif #endif var rvSqlIte = new ReceiverDBSQLite.ReceiverTableSQLiteInt((ReceiverDB.DBTableData <int, Microsoft.Data.Sqlite.SqliteConnection>)null); var rvBinary = new ReceiverFile.ReceiverFileFromStorageBinary(null); var senderCSV = new Sender_CSV(null); var senderJson = new Sender_JSON(null); }
public static SimpleJobConditionalTransformers GetJobCSV() { #region ARRANGE StringBuilder sb = new StringBuilder(); sb.AppendLine("model,Track_number,buyYear"); sb.AppendLine("Ford,B325ROS,1990"); sb.AppendLine("Audi,PL654CSM,2004"); sb.AppendLine("BMW,B325DFH,2005"); sb.AppendLine("Ford,B325IYS,2007"); string filename = "mycsv.csv"; File.WriteAllText(filename, sb.ToString()); //define a receiver var receiverCSV = new ReceiverCSVFileInt(filename, Encoding.ASCII); //receiverCSV.Name = "From model:" + filename; //define a sender to csv for all records var senderAllToCSV = new Sender_CSV(DeleteFileIfExists("myAll.csv")); //senderAllToCSV.Name = "to csv allRecords"; //define a filter for audi var filterAudi = new FilterComparableEqual(typeof(string), "Audi", "model"); //define a sender just for audi var senderCSVAudi = new Sender_CSV(DeleteFileIfExists("myAudi.csv")); //senderCSVAudi.Name= "sender CSV"; //define a filter to transform the buyYear to string var buyYearTOString = new TransformerFieldStringInt("buyYear", "NewBuyYear"); //buyYearTOString.Name = "transform buyYear to int"; //define a filter for year>2000 var filterYear2000 = new FilterComparableGreat(typeof(int), 2000, "NewBuyYear"); //define a sender the year > 2000 to csv var sender2000CSV = new Sender_CSV(DeleteFileIfExists("my2000.csv")); //sender2000CSV.Name = "sender CSV"; //define a sender the year > 2000 to json var sender2000JSon = new Sender_JSON(DeleteFileIfExists("my2000.js")); //sender2000JSon.Name = "sender json"; //define a filter for Ford var filterFord = new FilterComparableEqual(typeof(string), "Ford", "model"); //define a sender just for ford var senderCSVFord = new Sender_CSV(DeleteFileIfExists("myFord.csv")); //senderCSVFord.Name = "sender CSV"; var cond = new SimpleJobConditionalTransformers(); //add a receiver cond.Receivers.Add(0, receiverCSV); //add a sender to csv for all records cond.AddSender(senderAllToCSV); //add a filter to transform the buyYear to string //and then fiter for year>2000 var buy = cond.Add(buyYearTOString, filterYear2000); //send the year> 2000 to csv cond.Add(filterYear2000, sender2000CSV); //send the year >2000 to json cond.Add(filterYear2000, sender2000JSon); //add a filter for audi and a sender just for audi cond.Add(filterAudi, senderCSVAudi); //add a filter for ford and a sender just for ford cond.Add(filterFord, senderCSVFord); return(cond); #endregion }
public async Task TestOneReceiverAndOneSender() { #region ARRANGE var dir = AppContext.BaseDirectory; string filename = Path.Combine(dir, "a.csv"); if (File.Exists(filename)) { File.Delete(filename); } ISend csvExport = new Sender_CSV(filename); //ADD A DATABASE AND PUT nrPostsToAdd data into table ISerializeData sd = new SerializeDataInMemory(); var connection = new SqliteConnection(); connection.ConnectionString = "DataSource=:memory:"; connection.Open(); var options = new DbContextOptionsBuilder <ApiContext>() .UseSqlite(connection) .Options; using (var context = new ApiContext(options)) { context.Database.EnsureCreated(); } int nrPostsToAdd = 10; using (var contextAdd = new ApiContext(options)) { for (int i = 0; i < nrPostsToAdd; i++) { contextAdd.Posts.Add(new Post() { Id = i + 1, UserId = i * 2, Content = "Post" + i }); } await contextAdd.SaveChangesAsync(); } using (var dt = new DBTableDataSqliteMemory <int>(connection, sd) { ConnectionString = "DataSource=:memory:", FieldNameToMark = "Id", TableName = "Posts" }) { #endregion #region act IReceive r = new ReceiverTableSQLiteInt(dt); ISimpleJob job = new SimpleJob(); job.Receivers.Add(0, r); job.Senders.Add(0, csvExport); await job.Execute(); #endregion #region assert Assert.IsTrue(File.Exists(filename), $"file {filename} must exists in export csv"); var lines = File.ReadAllLines(filename); Assert.AreEqual(nrPostsToAdd + 1, lines.Length); var lineNames = lines[0].Split(','); Assert.AreEqual("Id", lineNames[0]); Assert.AreEqual("Content", lineNames[1]); Assert.AreEqual("LastModifiedOrCreatedTime", lineNames[2]); Assert.AreEqual("UserId", lineNames[3]); #endregion } }
static void Main(string[] args) { var testClass = new TestClass { TheEncoding = Encoding.UTF8 }; var json = JsonConvert.SerializeObject(testClass, Formatting.Indented, new JsonEncodingConverter()); var obj = JsonConvert.DeserializeObject <TestClass>(json, new JsonEncodingConverter()); return; //var f = new TransformerIntString("asd", "bas"); //var settings1 = new JsonSerializerSettings() //{ // TypeNameHandling = TypeNameHandling.Objects, // Formatting = Formatting.Indented, // Error = HandleDeserializationError // //ConstructorHandling= ConstructorHandling.AllowNonPublicDefaultConstructor //}; //settings1.Converters.Add(new ExpressionJsonConverter(Assembly.GetEntryAssembly())); //var x = JsonConvert.SerializeObject(f,settings1); //Console.WriteLine(x); //return; brrbrrrr(); return; var receiver = new ReceiverBookmarkFileChrome(@"C:\Users\admin\Documents\bookmarks_7_25_17.html"); //var tr = new TransformAddField<string, DateTime>( // (addDate) => // { // var secs = double.Parse(addDate); // return new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(secs); // } // , "ADD_DATE", "realDate"); //var tr = new TransformAddField<string, DateTime>( // (addDate) => // new DateTime(1970, 1, 1, 0, 0, 0, 0) // .AddSeconds(double.Parse(addDate)) // , "ADD_DATE", "realDate"); string transformExpression = "var secs = double.Parse((oldValue??null).ToString());" + "var val=new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(secs);" + "val"; var tr = new TransformOneValueGeneral(transformExpression, "ADD_DATE", "realDate"); var sender = new Sender_HTMLRazor("BKChrome.cshtml", "b.html"); SimpleJob sj = new SimpleJob(); sj.Receivers.Add(0, receiver); sj.FiltersAndTransformers.Add(0, tr); sj.Senders.Add(0, sender); sj.Execute().Wait(); return; //var x = MemoryMappedFile.CreateNew("testmap", 2); //using (var writer = x.CreateViewAccessor(0,200, MemoryMappedFileAccess.Write)) //{ // // Write to MMF // for(int s = 0; s < 20; s++) // { // Console.WriteLine(s); // writer.Write(s, ('a'+s)); // } //} //using (var reader = x.CreateViewAccessor(0, 2000, MemoryMappedFileAccess.Read)) //{ // // Write to MMF // for (int s = 0; s < 20; s++) // { // Console.WriteLine(s); // var d= reader.ReadByte(s); // Console.WriteLine((char)d); // } //} //return; ISerializeData sd = new SerializeDataInMemory(); ISend csvExport = new Sender_CSV("a.csv"); ISend xmlExport = new Sender_XML("a.xml", "values"); ISend jsonExport = new Sender_JSON("a.json"); //ISend influx = new SenderDB_Influx("http://localhost:8086", "mydb", "logical_reads", "cpu_time_ms", "total_elapsed_time_ms"); var data = new DBTableData <int, SqlConnection>(sd) { ConnectionString = "Server=.;Database=DatePtAndrei;Trusted_Connection=True;", FieldNameToMark = "id", TableName = "active_slowquery", //Fields=new string[] { "id", "[session_id]" } }; IReceive r = new ReceiverTableSQLServerInt(data); ISimpleJob job = new SimpleJob(); job.Receivers.Add(0, r); job.Senders.Add(0, csvExport); job.Senders.Add(1, xmlExport); job.Senders.Add(2, jsonExport); //job.Senders.Add(3, influx); var settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.Objects, Formatting = Formatting.Indented, Error = HandleDeserializationError //ConstructorHandling= ConstructorHandling.AllowNonPublicDefaultConstructor }; //var serialized = JsonConvert.SerializeObject(job, settings); //var deserialized = JsonConvert.DeserializeObject(File.ReadAllText("c.txt"), settings); ////File.WriteAllText("a.txt", serialized); //File.WriteAllText("b.txt",JsonConvert.SerializeObject(deserialized as IJob, settings)); //return; job.Execute().Wait(); return; Process.Start("notepad.exe", "a.json"); //var connection = new SqliteConnection(); //connection.ConnectionString = "DataSource=:memory:"; //connection.Open(); //Console.WriteLine("Hello World!"); //var options = new DbContextOptionsBuilder<ApiContext>() // //.UseInMemoryDatabase(databaseName: "Add_writes_to_database") // .UseSqlite(connection) // //.UseSqlite("DataSource=:memory:") // .Options; //using (var context = new ApiContext(options)) //{ // context.Database.EnsureCreated(); //} //var apiContext = new ApiContext(options); //apiContext.Posts.Add(new Post() //{ // Id = 1, // UserId = 1, // Content = "Post1" //}); //apiContext.SaveChanges(); //var db = apiContext.Database; //var cmd = connection.CreateCommand(); //cmd.CommandText = "select count(*) from Posts"; //var i=cmd.ExecuteScalar(); //var c = ClaimsPrincipal.Current; //if (c == null) //{ //} //var n = Thread.CurrentThread.Name; //Console.WriteLine("ASD"); }