예제 #1
0
        public async Task TestLoadMaxRecordsWithLatestValueDateTime()
        {
            #region ARRANGE
            //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();
            }
            int MaxRecordsToLoad = 3;
            #endregion
            #region ACT
            using (var dt = new DBTableDataSqliteMemory <DateTime>(connection, sd)
            {
                ConnectionString = "DataSource=:memory:",
                FieldNameToMark = "LastModifiedOrCreatedTime",
                TableName = "Posts",
                MaxRecordsToRead = MaxRecordsToLoad
            })
            {
                IReceive <DateTime> r = new ReceiverTableSQLiteDateTime(dt);
                await r.LoadData();

                #endregion
                #region ASSERT

                Assert.AreEqual(MaxRecordsToLoad, r.valuesRead.Length);
                Assert.AreEqual(0, (int)r.LastValue.Subtract(DateTime.Now).TotalSeconds);
                #endregion
            }
        }
예제 #2
0
        private static void brrbrrrr()
        {
            ISerializeData sd = new SerializeDataInMemory();

            var data = new DBTableData <int, SqlConnection>(sd)
            {
                ConnectionString = @"Server=(local)\SQL2016;Database=DatePtAndrei;Trusted_Connection=True;",
                FieldNameToMark  = "id",
                TableName        = "active_slowquery_test"
            };
            IReceive r = new ReceiverTableSQLServerInt(data);

            ISend esExport = new SenderToElasticSearch(@"http://localhost:9200", "ix004", "type007", "id");

            ISimpleJob job = new SimpleJob();

            job.Receivers.Add(0, r);
            job.Senders.Add(0, esExport);

            job.Execute().Wait();
        }
예제 #3
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
            }
        }
예제 #4
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");
        }
예제 #5
0
        public async Task MySqlTestLoadDataWithLatestValueInt()
        {
            #region Arrange

            //ADD A DATABASE AND PUT nrPostsToAdd data into table

            string                             sqlcommand;
            string                             testName1         = "TEST";
            bool                               equality          = true;
            RowRead                            valLoop           = null;
            ISerializeData                     sd                = new SerializeDataInMemory();
            IRowReceive[]                      valuesRead1       = new IRowReceive[100];
            var                                values            = new List <IRowReceive>();
            var                                ConnString        = @"server=localhost;Database=new_schema ;user id=george95; Pwd=1234;";
            Dictionary <int, string>           FieldNameToMarks1 = new Dictionary <int, string>();
            DBTableData <int, MySqlConnection> tab2              = new DBTableData <int, MySqlConnection>(sd)
            {
                ConnectionString = ConnString,
                FieldNameToMark  = "id",
                TableName        = "employees_test;"
            };
            var mysql_obj = new ReceiverTableMySQLInt(tab2);

            using (MySqlConnection connection = new MySqlConnection(ConnString))
            {
                sqlcommand = "CREATE TABLE Employees_test(ID INT(6), Name VARCHAR(50));";
                connection.Open();

                using (MySqlCommand command = new MySqlCommand(sqlcommand, connection))
                {
                    command.ExecuteNonQuery();
                }
                for (int Emp_ID = 1; Emp_ID < 10; Emp_ID++)
                {
                    sqlcommand = "INSERT INTO Employees_test (ID, Name) VALUES (" + Emp_ID + ", '" + testName1 + "');";
                    using (MySqlCommand command = new MySqlCommand(sqlcommand, connection))
                    {
                        command.ExecuteNonQuery();
                    }
                }

                #endregion
                #region Act
                sqlcommand = "SELECT * FROM Employees_test;";
                using (MySqlCommand command = new MySqlCommand(sqlcommand, connection))
                    using (MySqlDataReader reader = (MySqlDataReader)command.ExecuteReader())
                    {
                        var nrFields1 = reader.FieldCount;
                        for (int i = 0; i < nrFields1; i++)
                        {
                            FieldNameToMarks1.Add(i, reader.GetName(i));
                        }
                        while (reader.Read())
                        {
                            valLoop = new RowRead();
                            for (int i = 0; i < nrFields1; i++)
                            {
                                object val;
                                val = reader.GetValue(i);
                                if (val != null && val == DBNull.Value)
                                {
                                    val = null;
                                }
                                valLoop.Values.Add(FieldNameToMarks1[i], val);
                            }
                            values.Add(valLoop);
                        }
                    }
                connection.Close();
            }

            await mysql_obj.LoadData();

            using (MySqlConnection connection = new MySqlConnection(ConnString))
            {
                sqlcommand = "DROP TABLE Employees_test;";
                connection.Open();
                using (MySqlCommand command = new MySqlCommand(sqlcommand, connection))
                {
                    command.ExecuteNonQuery();
                }
                connection.Close();
            }
            #endregion
            #region Assert

            var MySqlLoadResult = mysql_obj.valuesRead.Select(o => o.Values).ToList();
            var AdoNetResult    = values.Select(o => o.Values).ToList();
            //AdoNetResult[7]["Name"] = 999;
            for (int index = 0; index < MySqlLoadResult.Count; index++)
            {
                if (!MySqlLoadResult[index].SequenceEqual(AdoNetResult[index]))
                {
                    equality = false;
                }
            }
            Assert.IsTrue(equality);

            #endregion
        }
예제 #6
0
        public async Task TestLoadWholeTableEachTime()
        {
            #region ARRANGE
            //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();
            }

            #endregion
            #region ACT
            using (var dt = new DBTableDataSqliteMemory <FakeComparable>(connection, sd)
            {
                ConnectionString = "DataSource=:memory:",
                TableName = "Posts"
            })
            {
                IReceive r = new ReceiverWholeTableSQLite(dt);
                await r.LoadData();

                #endregion
                #region ASSERT

                Assert.AreEqual(nrPostsToAdd, r.valuesRead.Length);
                #endregion
                #region arange add new data into table
                using (var contextAddNew = new ApiContext(options))
                {
                    contextAddNew.Posts.Add(new Post()
                    {
                        Id      = nrPostsToAdd * 2,
                        UserId  = nrPostsToAdd,
                        Content = "Post" + nrPostsToAdd
                    });
                    await contextAddNew.SaveChangesAsync();
                }
                #endregion
                #region act
                await r.LoadData();

                #endregion
                #region assert
                Assert.AreEqual(nrPostsToAdd + 1, r.valuesRead.Length);
                #endregion
                #region arange
                //load from the beginning

                #endregion
                #region act
                await r.LoadData();

                #endregion
                #region assert
                Assert.AreEqual(nrPostsToAdd + 1, r.valuesRead.Length);

                #endregion
            }
        }