Ejemplo n.º 1
0
        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
        }
Ejemplo n.º 2
0
        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
        }
Ejemplo n.º 3
0
        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
        }
Ejemplo n.º 4
0
        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
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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
        }
Ejemplo n.º 7
0
        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
            }
        }
Ejemplo n.º 8
0
        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");
        }