public async Task CopyAsync_Should_Copy_All_Entities_Check(string _sourceConnectionString, string _targetConnectionString, int _batchSize) { var emptySourceTableName = RandomString(16); var targetTableName = RandomString(16); var emptySourceStorageAccount = GetCloudStorageAccount(_sourceConnectionString); var emptySourceTable = await GetTableAsync(emptySourceStorageAccount, emptySourceTableName); var targetStorageAccount = GetCloudStorageAccount(_targetConnectionString); var targetTable = await GetTableAsync(targetStorageAccount, targetTableName); //get enteties that we will fill source table with var fakeResults = PrepareTestData(); await WriteToTableAsync(emptySourceTable, fakeResults); //copy our source table into target table var tableCopy = new DynamicTableCopy(); await tableCopy.CopyAsync(_sourceConnectionString, emptySourceTableName, _targetConnectionString, targetTableName, _batchSize); //get Table enteties that we copied to check if they were copied IEnumerable <CityWeatherTableEntity> expectedResults = await GetTableEntitiesAsync(emptySourceTable); IEnumerable <CityWeatherTableEntity> realResults = await GetTableEntitiesAsync(targetTable); var t = CheckIfSame(expectedResults, realResults); await DeleteTableAsync(emptySourceTable); await DeleteTableAsync(targetTable); Assert.True(t); }
public void SetupData() { Copy = new DynamicTableCopy(); SourceConnectionString = "DefaultEndpointsProtocol=https;AccountName=mt1;AccountKey=O9+FoFPCQ4wqqfMJLm5I1zp7sePAgGGfowvDmCnGBt+AKlrdTXGOJ8QuzoQWz7yTsKPiOvBRE/8PfW5kRzzsTg==;EndpointSuffix=core.windows.net"; SourceTableName = "weathertable"; TargetConnectionString = "DefaultEndpointsProtocol=https;AccountName=mt1;AccountKey=O9+FoFPCQ4wqqfMJLm5I1zp7sePAgGGfowvDmCnGBt+AKlrdTXGOJ8QuzoQWz7yTsKPiOvBRE/8PfW5kRzzsTg==;EndpointSuffix=core.windows.net"; TargetTableName = "BenchWeatherTable"; BatchSize = 1; }
static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .WriteTo.LiterateConsole(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{SourceContext}] [{Level}] {Message}{NewLine}{Exception}") .WriteTo.RollingFile("log-{Date}.txt", outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss} [{SourceContext}] [{Level}] {Message}{NewLine}{Exception}") .WriteTo.Seq("http://localhost:5341") .CreateLogger(); var builder = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json"); Configuration = builder.Build(); var copy = new DynamicTableCopy(); Task complete; if (args.Length == 5) { int batchSize; if (!int.TryParse(args[4], out batchSize)) { batchSize = GetInt("Please enter batch size"); } complete = copy.CopyAsync(args[0], args[1], args[2], args[3], batchSize); } else { string sourceConnectionString = Configuration["sourceConnectionString"]; string sourceTableName = Configuration["sourceTableName"]; string targetConnectionString = Configuration["targetConnectionString"]; string targetTableName = Configuration["targetTableName"]; int batchSize = int.Parse(Configuration["batchSize"]); complete = copy.CopyAsync(sourceConnectionString, sourceTableName, targetConnectionString, targetTableName, batchSize); } Task.WaitAll(complete); Console.WriteLine("Press any key to close"); Console.ReadKey(); }