コード例 #1
0
        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
        }
コード例 #2
0
        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
        }
コード例 #3
0
        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());
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: vivekraj59/stankins
        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");
        }
コード例 #5
0
        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
        }