public SQLiteSyncAllColumnsFixture()
        {
            var builder = new SQLiteConnectionStringBuilder {
                DataSource = ClientSQLiteFilePath
            };

            this.ClientSQLiteConnectionString = builder.ConnectionString;

            GC.Collect();
            GC.WaitForPendingFinalizers();

            if (File.Exists(ClientSQLiteFilePath))
            {
                File.Delete(ClientSQLiteFilePath);
            }

            // create databases
            helperDb.CreateDatabase(serverDbName);

            // create table
            helperDb.ExecuteScript(serverDbName, createTableScript);

            // insert table
            helperDb.ExecuteScript(serverDbName, datas);

            var serverProvider      = new SqlSyncProvider(ServerConnectionString);
            var clientProvider      = new SQLiteSyncProvider(ClientSQLiteFilePath);
            var simpleConfiguration = new SyncConfiguration(new[] { "AllColumns" });

            Agent = new SyncAgent(clientProvider, serverProvider, simpleConfiguration);
        }
Exemplo n.º 2
0
        public SQLiteTwoTablesTests(SQLiteTwoTablesFixture fixture)
        {
            this.fixture = fixture;

            serverProvider = new SqlSyncProvider(fixture.ServerConnectionString);
            clientProvider = new SQLiteSyncProvider(fixture.ClientSQLiteFilePath);
            var simpleConfiguration = new SyncConfiguration(fixture.Tables);

            agent = new SyncAgent(clientProvider, serverProvider, simpleConfiguration);
        }
Exemplo n.º 3
0
        public static async Task SyncWordPress()
        {
            var serverConfig = "Server=tlsemysql.mysql.database.azure.com; Port=3306; Database=mysqldatabase165; Uid=spertus@tlsemysql; Pwd=azerty31$; SslMode=Preferred;";
            MySqlSyncProvider serverProvider = new MySqlSyncProvider(serverConfig);

            //var clientConfig = @"Data Source=(localdb)\MSSQLLocalDB; Initial Catalog=WordPress;Integrated Security=true;";
            //SqlSyncProvider clientProvider = new SqlSyncProvider(clientConfig);

            var clientConfig = @"wordpress.sqlite";
            SQLiteSyncProvider clientProvider = new SQLiteSyncProvider(clientConfig);

            // With a config when we are in local mode (no proxy)
            var tables = new string[] { "wp_users", "wp_usermeta", "wp_terms", "wp_termmeta", "wp_term_taxonomy",
                                        "wp_term_relationships", "wp_posts", "wp_postmeta", "wp_options", "wp_links",
                                        "wp_comments", "wp_commentmeta" };


            SyncAgent agent = new SyncAgent(clientProvider, serverProvider, tables);

            // Setting special properties on Configuration tables
            //agent.Configuration["wp_users"].SyncDirection = SyncDirection.DownloadOnly;
            //agent.Configuration["wp_users"].Schema = "SalesLT";



            agent.SyncProgress       += SyncProgress;
            agent.ApplyChangedFailed += ApplyChangedFailed;

            do
            {
                Console.Clear();
                Console.WriteLine("Sync Start");
                try
                {
                    CancellationTokenSource cts   = new CancellationTokenSource();
                    CancellationToken       token = cts.Token;
                    var s = await agent.SynchronizeAsync(token);
                }
                catch (SyncException e)
                {
                    Console.WriteLine(e.ToString());
                }
                catch (Exception e)
                {
                    Console.WriteLine("UNKNOW EXCEPTION : " + e.Message);
                }


                Console.WriteLine("Sync Ended. Press a key to start again, or Escapte to end");
            } while (Console.ReadKey().Key != ConsoleKey.Escape);

            Console.WriteLine("End");
        }
Exemplo n.º 4
0
        public async Task SyncSqlite()
        {
            serverProvider       = new SqlSyncProvider(fixture.ServerConnectionString);
            sqliteClientProvider = new SQLiteSyncProvider(fixture.ClientSQLiteFilePath);
            var simpleConfiguration = new SyncConfiguration(fixture.Tables);

            agent = new SyncAgent(sqliteClientProvider, serverProvider, simpleConfiguration);
            var session = await agent.SynchronizeAsync();

            Assert.Equal(4276, session.TotalChangesDownloaded);
            Assert.Equal(0, session.TotalChangesUploaded);
        }
Exemplo n.º 5
0
        public SQLiteSyncHttpTests(SQLiteSyncHttpFixture fixture)
        {
            this.fixture = fixture;

            serverProvider      = new SqlSyncProvider(fixture.ServerConnectionString);
            proxyServerProvider = new WebProxyServerProvider(serverProvider);

            clientProvider      = new SQLiteSyncProvider(fixture.ClientSQLiteFilePath);
            proxyClientProvider = new WebProxyClientProvider();

            configuration = new SyncConfiguration(this.fixture.Tables);

            agent = new SyncAgent(clientProvider, proxyClientProvider);
        }
Exemplo n.º 6
0
    private static async Task FilterSync()
    {
        // Get SQL Server connection string
        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

        configurationBuilder.AddJsonFile("config.json", true);
        IConfiguration Configuration = configurationBuilder.Build();
        var            serverConfig  = Configuration["AppConfiguration:ServerFilteredConnectionString"];
        var            clientConfig  = "sqlitefiltereddb.db";

        SqlSyncProvider    serverProvider = new SqlSyncProvider(serverConfig);
        SQLiteSyncProvider clientProvider = new SQLiteSyncProvider(clientConfig);

        // With a config when we are in local mode (no proxy)
        SyncConfiguration configuration = new SyncConfiguration(new string[] { "ServiceTickets" });

        //configuration.DownloadBatchSizeInKB = 500;
        configuration.UseBulkOperations = false;
        // Adding filters on schema
        configuration.Filters.Add("ServiceTickets", "CustomerID");

        SyncAgent agent = new SyncAgent(clientProvider, serverProvider, configuration);

        // Adding a parameter for this agent
        agent.Parameters.Add("ServiceTickets", "CustomerID", 1);

        do
        {
            Console.Clear();
            Console.WriteLine("Sync Start");
            try
            {
                var s = await agent.SynchronizeAsync();
            }
            catch (SyncException e)
            {
                Console.WriteLine(e.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("UNKNOW EXCEPTION : " + e.Message);
            }


            Console.WriteLine("Sync Ended. Press a key to start again, or Escapte to end");
        } while (Console.ReadKey().Key != ConsoleKey.Escape);

        Console.WriteLine("End");
    }
Exemplo n.º 7
0
        public SQLiteSyncHttpFixture()
        {
            var builder = new SQLiteConnectionStringBuilder {
                DataSource = ClientSQLiteFilePath
            };

            this.ClientSQLiteConnectionString = builder.ConnectionString;

            if (File.Exists(ClientSQLiteFilePath))
            {
                File.Delete(ClientSQLiteFilePath);
            }

            // create databases
            helperDb.CreateDatabase(serverDbName);
            // create table
            helperDb.ExecuteScript(serverDbName, createTableScript);
            // insert table
            helperDb.ExecuteScript(serverDbName, datas);

            var serverProvider      = new SqlSyncProvider(ServerConnectionString);
            var clientProvider      = new SQLiteSyncProvider(ClientSQLiteFilePath);
            var simpleConfiguration = new SyncConfiguration(Tables);
        }
Exemplo n.º 8
0
    private static async Task TestSyncSQLite()
    {
        // Get SQL Server connection string
        ConfigurationBuilder configurationBuilder = new ConfigurationBuilder();

        configurationBuilder.AddJsonFile("config.json", true);
        IConfiguration Configuration = configurationBuilder.Build();
        var            serverConfig  = Configuration["AppConfiguration:ServerConnectionString"];
        var            clientConfig  = Configuration["AppConfiguration:ClientSQLiteConnectionString"];

        SqlSyncProvider    serverProvider = new SqlSyncProvider(serverConfig);
        SQLiteSyncProvider clientProvider = new SQLiteSyncProvider(clientConfig);

        // With a config when we are in local mode (no proxy)
        SyncConfiguration configuration = new SyncConfiguration(new string[] { "Customers", "ServiceTickets" });

        SyncAgent agent = new SyncAgent(clientProvider, serverProvider, configuration);

        agent.SyncProgress += SyncProgress;
        //(s,e) =>
        //{
        //    switch (e.Context.SyncStage)
        //    {
        //        case SyncStage.EnsureConfiguration:
        //            break;
        //        case SyncStage.EnsureDatabase:
        //            if (e.DatabaseScript != null)
        //                e.Action = ChangeApplicationAction.Rollback;
        //            break;
        //        case SyncStage.SelectedChanges:
        //            Console.WriteLine($"Selected changes : {e.ChangesStatistics.TotalSelectedChanges}. I:{e.ChangesStatistics.TotalSelectedChangesInserts}. U:{e.ChangesStatistics.TotalSelectedChangesUpdates}. D:{e.ChangesStatistics.TotalSelectedChangesDeletes}");
        //            break;
        //        case SyncStage.ApplyingChanges:
        //            Console.WriteLine($"Going to apply changes.");
        //            e.Action = ChangeApplicationAction.Continue;
        //            break;
        //        case SyncStage.AppliedChanges:
        //            Console.WriteLine($"Applied changes : {e.ChangesStatistics.TotalAppliedChanges}");
        //            e.Action = ChangeApplicationAction.Continue;
        //            break;
        //        case SyncStage.ApplyingInserts:
        //            Console.WriteLine($"Applying Inserts : {e.ChangesStatistics.AppliedChanges.Where(ac => ac.State == DmRowState.Added).Sum(ac => ac.ChangesApplied) }");
        //            e.Action = ChangeApplicationAction.Continue;
        //            break;
        //        case SyncStage.ApplyingDeletes:
        //            Console.WriteLine($"Applying Deletes : {e.ChangesStatistics.AppliedChanges.Where(ac => ac.State == DmRowState.Deleted).Sum(ac => ac.ChangesApplied) }");
        //            break;
        //        case SyncStage.ApplyingUpdates:
        //            Console.WriteLine($"Applying Updates : {e.ChangesStatistics.AppliedChanges.Where(ac => ac.State == DmRowState.Modified).Sum(ac => ac.ChangesApplied) }");
        //            e.Action = ChangeApplicationAction.Continue;
        //            break;
        //    }
        //};
        agent.ApplyChangedFailed += ApplyChangedFailed;

        do
        {
            Console.Clear();
            Console.WriteLine("Sync Start");
            try
            {
                var s = await agent.SynchronizeAsync();
            }
            catch (SyncException e)
            {
                Console.WriteLine(e.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("UNKNOW EXCEPTION : " + e.Message);
            }


            Console.WriteLine("Sync Ended. Press a key to start again, or Escapte to end");
        } while (Console.ReadKey().Key != ConsoleKey.Escape);

        Console.WriteLine("End");
    }