public async Task TestExportRelationalHTMLSqlServer() { #region arrange string folderName = AppContext.BaseDirectory; //CreateExportFilesSqlServer(Path.Combine(folderName,"Views")); var connectionString = GetSqlServerConnectionString(); using (var conn = new SqlConnection(connectionString)) { await conn.OpenAsync(); using (var cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.Text; cmd.CommandText = @" IF OBJECT_ID('dbo.TestAndrei', 'U') IS NOT NULL DROP TABLE dbo.TestAndrei;"; await cmd.ExecuteNonQueryAsync(); cmd.CommandText = @"create table TestAndrei( ID int, FirstName varchar(64) not null )"; await cmd.ExecuteNonQueryAsync(); } } var rr = new ReceiverRelationalSqlServer(); rr.ConnectionString = connectionString; string OutputFileName = SimpleJobConditionalTransformersTest.DeleteFileIfExists(Path.Combine(folderName, "relationalSqlServer.html")); var sender = new Sender_HTMLRazor("Views/sqlserver.cshtml", OutputFileName); var senderViz = new Sender_HTMLRelationViz("Name", OutputFileName); var filter = new FilterExcludeRelation("columns", "tables"); var job = new SimpleJobConditionalTransformers(); job.Receivers.Add(0, rr); job.AddSender(sender); job.Add(filter); job.Add(filter, senderViz); #endregion #region act await job.Execute(); #endregion #region assert Assert.IsTrue(File.Exists(OutputFileName), $"{OutputFileName} must exists"); //Process.Start("explorer.exe", OutputFileName); var text = File.ReadAllText(OutputFileName); Assert.IsTrue(text.Contains("TestAndrei"), "must contain table testandrei"); Assert.IsTrue(text.Contains("FirstName"), "must contain column FirstName "); #endregion }
public async Task TestReceiveFromJobConditional() { #region arrange var dir = AppContext.BaseDirectory; dir = Path.Combine(dir, "TestReceiveFromJobConditional"); if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); var job = SimpleJobConditionalTransformersTest.GetJobCSV(); var receiver = new ReceiverFromJob(job); string file = SimpleJobConditionalTransformersTest.DeleteFileIfExists(Path.Combine(dir, "job.html")); //var sender = new Sender_HierarchicalVizJob(file,"Name"); //var sender = new SenderMediaToFile(file, // new MediaTransformStringToText("<html><body>"), // new MediaTransformDotJob(), // new MediaTransformStringToText("</body></html>") // ); var export = SimpleJobConditionalTransformersTest.DeleteFileIfExists(Path.Combine(dir, "export.cshtml")); File.WriteAllText(export, Sender_HTMLRazor.DefaultExport()); var sender = new SyncSenderMultiple( new Sender_Text(file, "<html><body>"), new Sender_HTMLRazor("TestReceiveFromJobConditional/" + Path.GetFileName(export), file), new Sender_HierarchicalVizJob(file, "Name"), new Sender_Text(file, "</body></html>") ); var newJob = new SimpleJob(); newJob.Receivers.Add(0, receiver); //newJob.Receivers.Add(1, new ReceiverFromJob(newJob)); newJob.Senders.Add(0, sender); #endregion #region act await newJob.Execute(); #endregion #region assert Assert.IsTrue(File.Exists(file)); //System.Diagnostics.Process.Start("explorer.exe", file); #endregion }
static string DocumentSqlServer() { var rr = new ReceiverRelationalSqlServer(); rr.ConnectionString = "#file:SqlServerConnectionString#"; string OutputFileName = "relationalSqlServer.html"; var sender = new Sender_HTMLRazor("Views/sqlserver.cshtml", OutputFileName); sender.FileMode = FileMode.Create; var filter = new FilterExcludeRelation(new string[] { "columns", "tables", "views" }); var senderViz = new Sender_HTMLRelationViz("Name", OutputFileName); var si = new SimpleJobConditionalTransformers(); si.Receivers.Add(0, rr); si.AddSender(sender); si.Add(filter); si.Add(filter, senderViz); return(si.SerializeMe()); }
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"); }
public async Task TestSendHTMLData() { #region arange var dir = AppContext.BaseDirectory; dir = Path.Combine(dir, "TestSendHtmlData"); if (Directory.Exists(dir)) { Directory.Delete(dir, true); } Directory.CreateDirectory(dir); string filename = Path.Combine(dir, "a.html"); if (File.Exists(filename)) { File.Delete(filename); } foreach (var item in Directory.GetFiles(dir, "*.txt", SearchOption.AllDirectories)) { File.Delete(item); } //TODO:more files string fileNameToWrite = Guid.NewGuid().ToString("N") + ".txt"; string fullNameFile = Path.Combine(dir, fileNameToWrite); File.WriteAllText(fullNameFile, "andrei ignat"); 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); } var fileRazor = Path.Combine(dir, "genericRow.cshtml"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } File.Copy(@"Views\genericRow.cshtml", fileRazor, true); // File.WriteAllText(fileRazor, // @"@using System.Linq; //@model StankinsInterfaces.IRow[] //Number Rows: @Model.Length //@{ // bool showTable=(Model.Length>0); // if(!showTable){ // return; // }; // var FieldNames= Model[0] // .Values // .Select(it => it.Key).ToArray(); //} //<table> //<thead> //<tr> //@foreach(var col in FieldNames){ //<td> //@col //</td> //} //</thead> //</tr> //<tbody> //@foreach(var item in Model){ //<tr> //@foreach(var col in FieldNames){ //<td> //@item.Values[col] //</td> //} //</tr> //} //<tbody> //</table>"); #endregion #region act ISend sender = new Sender_HTMLRazor("TestSendHtmlData/" + Path.GetFileName(fileRazor), filename); sender.valuesToBeSent = rows.ToArray(); await sender.Send(); #endregion #region assert Assert.IsTrue(File.Exists(filename), $"file {filename} must exists in export csv"); Assert.IsTrue(File.ReadAllText(filename).Contains($"Ignat{nrRows-1}"), "must contain data"); #endregion }