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); }
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); }
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"); }
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); }
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); }
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"); }
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); }
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"); }