Esempio n. 1
0
        protected void btnBackUp_Click(object sender, EventArgs e)
        {
            Timer1.Enabled = true;
            SetBtnEnable(false);
            SetDownloadFileDisplay(false);
            BackUpStatus bus = new BackUpStatus();

            Session["DtStatus"] = bus;

            TransferRule tr = RulesPool.FindRuleByName(ddlAllRules.SelectedItem.Text);

            if (tr != null)
            {
                if (tr.GetNeedTimeFilter())
                {
                    DateTime startTime;
                    DateTime endTime;
                    if (!DateTime.TryParse(txtStartTime.Text, out startTime) || !DateTime.TryParse(txtEndTime.Text, out endTime))
                    {
                        lblMessage.Text = _TimeNeed;
                        Message.Visible = true;
                        return;
                    }
                    TryRunBackUp(startTime, endTime, bus);
                }
                else
                {
                    TryRunBackUp(null, null, bus);
                }
            }
        }
Esempio n. 2
0
        public void Test2()
        {
            //写配置
            TransferRule tr = ApplicationFilterTest.MakeTransferRule();

            TransferConfig.WriteConfig(tr, new DateTime(1999, 1, 1), new DateTime(2099, 12, 11));

            //模拟用户的下载上传操作
            CommandRunner.CopyToFile(DiskOperations.DataTemp_ForBackUpDirectory + "config.txt", DiskOperations.DataTemp_ForRestoreDirectory + "config.txt");

            //读配置
            DateTime?startTime;
            DateTime?endTime;
            string   theRuleString;
            string   theRuleName = TransferConfig.ReadConfig(DiskOperations.DataTemp_ForBackUpDirectory, out theRuleString, out startTime, out endTime);

            //验证配置
            Console.WriteLine(theRuleName);
            Assert.AreEqual("新建数据迁移策略", theRuleName);
            Assert.AreEqual(startTime, new DateTime(1999, 1, 1));
            Assert.AreEqual(endTime, new DateTime(2099, 12, 11));
            Console.WriteLine(theRuleString);
            Assert.AreEqual(tr.MakeString(), theRuleString);

            //清理
            CommandRunner.CleanUpDirectory(DiskOperations.DataTemp_ForBackUpDirectory);
            CommandRunner.CleanUpDirectory(DiskOperations.DataTemp_ForRestoreDirectory);
        }
Esempio n. 3
0
        public void Test1()
        {
            Dictionary <string, string> theReadData = new Dictionary <string, string>();

            theReadData.Add("全部数据", "Sep_Release1670:[TAccount(AccountFilter)][TAccountAuth];Hrmis_Release1670:[TLeaveRequest][TLeaveRequestItem(LeaveRequestItemFilter)][TLeaveRequestFlow]");
            List <TransferRule> theConvertedRules = RuleConverter.Convert(theReadData);

            //第一个规则
            Assert.AreEqual(1, theConvertedRules.Count);
            TransferRule theRule = theConvertedRules[0];

            Assert.AreEqual("全部数据", theRule.RuleName);
            Assert.AreEqual(2, theRule.DbsToTransfer.Count);
            //第一个数据库
            Assert.AreEqual("Sep_Release1670", theRule.DbsToTransfer[0].DbName);
            Assert.AreEqual(2, theRule.DbsToTransfer[0].TablesToTransfer.Count);
            Assert.AreEqual("TAccount", theRule.DbsToTransfer[0].TablesToTransfer[0].TableName);
            Assert.AreEqual("AccountFilter", theRule.DbsToTransfer[0].TablesToTransfer[0].TableFilterName);
            Assert.AreEqual("TAccountAuth", theRule.DbsToTransfer[0].TablesToTransfer[1].TableName);
            Assert.AreEqual("", theRule.DbsToTransfer[0].TablesToTransfer[1].TableFilterName);
            //第二个数据库
            Assert.AreEqual("Hrmis_Release1670", theRule.DbsToTransfer[1].DbName);
            Assert.AreEqual(3, theRule.DbsToTransfer[1].TablesToTransfer.Count);
            Assert.AreEqual("TLeaveRequest", theRule.DbsToTransfer[1].TablesToTransfer[0].TableName);
            Assert.AreEqual("", theRule.DbsToTransfer[1].TablesToTransfer[0].TableFilterName);
            Assert.AreEqual("TLeaveRequestItem", theRule.DbsToTransfer[1].TablesToTransfer[1].TableName);
            Assert.AreEqual("LeaveRequestItemFilter", theRule.DbsToTransfer[1].TablesToTransfer[1].TableFilterName);
            Assert.AreEqual("TLeaveRequestFlow", theRule.DbsToTransfer[1].TablesToTransfer[2].TableName);
            Assert.AreEqual("", theRule.DbsToTransfer[1].TablesToTransfer[2].TableFilterName);
        }
Esempio n. 4
0
        private void SelectRuleChanged()
        {
            TransferRule tr = GetCurrentSelectedRule();

            if (tr != null)
            {
                SetTimeParameterDisplay(tr.GetNeedTimeFilter());
            }
        }
Esempio n. 5
0
        private string PrintAllTableInfo(TransferRule aTr)
        {
            StringBuilder retVal = new StringBuilder();

            retVal.AppendLine(SqlCommandRunner.GetTableInfo(aTr.DbsToTransfer[0].TablesToTransfer[0].TableName, _TempDbName));
            retVal.AppendLine(SqlCommandRunner.GetTableInfo(aTr.DbsToTransfer[0].ProtectTableNames[0], _TempDbName));
            retVal.AppendLine(SqlCommandRunner.GetTableInfo(aTr.DbsToTransfer[0].ProtectTableNames[1], _TempDbName));
            return(retVal.ToString());
        }
Esempio n. 6
0
        protected void btnRuleToString_Click(object sender, EventArgs e)
        {
            TransferRule tr = GetCurrentSelectedRule();

            if (tr != null)
            {
                txtRunningDetails.Text = tr.ToString();
            }
        }
Esempio n. 7
0
        protected void btnRuleToString_Click(object sender, EventArgs e)
        {
            if (Session["UploadTarget"] == null || string.IsNullOrEmpty(Session["UploadTarget"].ToString()))
            {
                lblMessage.Text = _NeedRarFile;
                Message.Visible = true;
                return;
            }
            TransferRule tr = ParseRarFile();

            if (tr != null)
            {
                txtRunningDetails.Text = tr.ToString();
            }
        }
Esempio n. 8
0
        public static TransferRule MakeTransferRule()
        {
            TransferRule aMockRule = new TransferRule();

            aMockRule.RuleName = "新建数据迁移策略";
            DbTransfer dt = new DbTransfer();

            dt.DbName = _RestoreDbName;
            TableTransfer tt = new TableTransfer();

            tt.TableName = _MainTableName;
            dt.AddTransferTable(tt);
            aMockRule.DbsToTransfer.Add(dt);

            return(aMockRule);
        }
Esempio n. 9
0
        private void SelectRuleChanged()
        {
            string ruleName = ddlAllRules.SelectedItem.Text;

            if (string.IsNullOrEmpty(ruleName))
            {
                return;
            }

            TransferRule tr = RulesPool.FindRuleByName(ruleName);

            if (tr != null)
            {
                SetTimeParameterDisplay(tr.GetNeedTimeFilter());
            }
        }
Esempio n. 10
0
        public void Test3()
        {
            TransferRule aTr       = MakeTransferRule();
            ITableFilter theTarget = new TLeaveRequestFilter.TLeaveRequestFilter();

            theTarget.ConfigTheFilter(aTr, _MainTableName, _RestoreDbName, _TempDbName, _RestoreDbName, _TempDbName);
            MockAddLeaveRequest();
            Console.WriteLine("筛选数据");
            string target21 = theTarget.FilterTableData(new DateTime(2009, 6, 15), new DateTime(2009, 6, 16));

            Console.WriteLine(target21);
            Console.WriteLine("进行还原");
            string target22 = theTarget.RestoreTableData(new DateTime(2009, 6, 15), new DateTime(2009, 6, 16));

            Console.WriteLine(target22);

            Assert.IsTrue(target22.Contains("表TLeaveRequestFlow共计:增加1行,覆盖0行,删除0行"));
            Assert.IsTrue(target22.Contains("表TLeaveRequestItem共计:增加1行,覆盖0行,删除0行"));
            Assert.IsTrue(target22.Contains("表TLeaveRequest共计:增加1行,覆盖0行,删除0行"));
        }
Esempio n. 11
0
        public void Test2()
        {
            TransferRule aTr       = MakeTransferRule();
            ITableFilter theTarget = new TLeaveRequestFilter.TLeaveRequestFilter();

            theTarget.ConfigTheFilter(aTr, _MainTableName, _RestoreDbName, _TempDbName, _RestoreDbName, _TempDbName);
            Assert.AreEqual(2, aTr.DbsToTransfer[0].ProtectTableNames.Count);

            //第一次测试:假设没有任何数据发生变化
            Console.WriteLine("第一次测试");
            Console.WriteLine("筛选数据");

            string target11 = theTarget.FilterTableData(new DateTime(2009, 6, 1), new DateTime(2009, 6, 30));

            Console.WriteLine(target11);
            Console.WriteLine("进行还原");
            string target12 = theTarget.RestoreTableData(new DateTime(2009, 6, 1), new DateTime(2009, 6, 30));

            Console.WriteLine(target12);
            //全部数据还原没有任何数据改变
            Assert.IsTrue(target12.Contains("表TLeaveRequest共计:增加0行,覆盖0行,删除0行"));
            Assert.IsTrue(target12.Contains("表TLeaveRequestItem共计:增加0行,覆盖0行,删除0行"));
            Assert.IsTrue(target12.Contains("表TLeaveRequestFlow共计:增加0行,覆盖0行,删除0行"));
            //第二次测试,分别模拟数据的增、删、改
            Console.WriteLine("第二次测试");
            MockChangment();
            Console.WriteLine("筛选数据");
            string target21 = theTarget.FilterTableData(new DateTime(2009, 6, 8), new DateTime(2009, 6, 13));

            Console.WriteLine(target21);
            Console.WriteLine("进行还原");
            string target22 = theTarget.RestoreTableData(new DateTime(2009, 6, 8), new DateTime(2009, 6, 13));

            Console.WriteLine(target22);

            //由于在Filter的时候已经过滤了TLeaveRequestFlow的2行数据,所以匹配之后将待还原数据库的2行数据也删除了
            Assert.IsTrue(target22.Contains("表TLeaveRequestFlow共计:增加1行,覆盖2行,删除2行"));
            Assert.IsTrue(target22.Contains("表TLeaveRequestItem共计:增加0行,覆盖0行,删除1行"));
            Assert.IsTrue(target22.Contains("表TLeaveRequest共计:增加0行,覆盖2行,删除0行"));
        }
        public void Test2()
        {
            TransferRule aTr       = MakeTransferRule();
            ITableFilter theTarget = new TApplicationFilter.TApplicationFilter();

            theTarget.ConfigTheFilter(aTr, _MainTableName, _RestoreDbName, _TempDbName, _RestoreDbName, _TempDbName);
            Assert.AreEqual(2, aTr.DbsToTransfer[0].ProtectTableNames.Count);

            //第一次测试:假设没有任何数据发生变化
            Console.WriteLine("第一次测试");
            Console.WriteLine("筛选数据");

            string target11 = theTarget.FilterTableData(new DateTime(2008, 10, 1), new DateTime(2008, 11, 1));

            Console.WriteLine(target11);
            Console.WriteLine("进行还原");
            string target12 = theTarget.RestoreTableData(new DateTime(2008, 10, 1), new DateTime(2008, 11, 1));

            Console.WriteLine(target12);
            //全部数据还原没有任何数据改变
            Assert.IsTrue(target12.Contains("表TApplication共计:增加0行,覆盖0行,删除0行"));
            Assert.IsTrue(target12.Contains("表TApplicationEmployee共计:增加0行,覆盖0行,删除0行"));
            Assert.IsTrue(target12.Contains("表TApplicationFlow共计:增加0行,覆盖0行,删除0行"));

            //第二次测试,分别模拟数据的增、删、改
            Console.WriteLine("第二次测试");
            MockChangment();
            Console.WriteLine("筛选数据");
            string target21 = theTarget.FilterTableData(new DateTime(2008, 10, 1), new DateTime(2008, 11, 1));

            Console.WriteLine(target21);
            Console.WriteLine("进行还原");
            string target22 = theTarget.RestoreTableData(new DateTime(2008, 10, 1), new DateTime(2008, 11, 1));

            Console.WriteLine(target22);

            Assert.IsTrue(target22.Contains("表TApplication共计:增加1行,覆盖1行,删除1行"));
            Assert.IsTrue(target22.Contains("表TApplicationEmployee共计:增加0行,覆盖0行,删除1行"));
            Assert.IsTrue(target22.Contains("表TApplicationFlow共计:增加0行,覆盖0行,删除2行"));
        }
Esempio n. 13
0
        public void Test1()
        {
            //构建一个以TApplication为主的迁移策略,策略本身不会执行,仅仅是其中的一部分数据筛选功能进行测试
            TransferRule aTr       = MakeTransferRule();
            ITableFilter theTarget = new TLeaveRequestFilter.TLeaveRequestFilter();

            theTarget.ConfigTheFilter(aTr, _MainTableName, _RestoreDbName, _TempDbName, _TempDbName, _RestoreDbName);
            Assert.AreEqual(2, aTr.DbsToTransfer[0].ProtectTableNames.Count);

            string before = PrintAllTableInfo(aTr);

            Console.WriteLine("筛选之前的表信息");
            Console.WriteLine(before);

            string target = theTarget.FilterTableData(new DateTime(2009, 6, 8), new DateTime(2009, 6, 9));

            Console.WriteLine("进行筛选");
            Console.WriteLine(target);

            string after = PrintAllTableInfo(aTr);

            Console.WriteLine();
            Console.WriteLine("筛选之后的表信息");
            Console.WriteLine(after);

            Assert.IsTrue(before.Contains("表名:TLeaveRequest,最小ID:1,最大ID:2,总行数:2"));
            Assert.IsTrue(before.Contains("表名:TLeaveRequestItem,最小ID:1,最大ID:2,总行数:2"));
            Assert.IsTrue(before.Contains("表名:TLeaveRequestFlow,最小ID:1,最大ID:4,总行数:4"));

            Assert.IsTrue(target.Contains("表TLeaveRequest共计:总行数2,删减1行数据"));
            Assert.IsTrue(target.Contains("表TLeaveRequestItem共计:总行数2,删减1行数据"));
            Assert.IsTrue(target.Contains("表TLeaveRequestFlow共计:总行数4,删减2行数据"));

            Assert.IsTrue(after.Contains("表名:TLeaveRequest,最小ID:1,最大ID:1,总行数:1"));
            Assert.IsTrue(after.Contains("表名:TLeaveRequestItem,最小ID:1,最大ID:1,总行数:1"));
            Assert.IsTrue(after.Contains("表名:TLeaveRequestFlow,最小ID:1,最大ID:2,总行数:2"));
        }
        public void Test1()
        {
            //构建一个以TApplication为主的迁移策略,策略本身不会执行,仅仅是其中的一部分数据筛选功能进行测试
            TransferRule aTr       = MakeTransferRule();
            ITableFilter theTarget = new TApplicationFilter.TApplicationFilter();

            theTarget.ConfigTheFilter(aTr, _MainTableName, _RestoreDbName, _TempDbName, _RestoreDbName, _TempDbName);
            Assert.AreEqual(2, aTr.DbsToTransfer[0].ProtectTableNames.Count);

            string before = PrintAllTableInfo(aTr);

            Console.WriteLine("筛选之前的表信息");
            Console.WriteLine(before);

            string target = theTarget.FilterTableData(new DateTime(2008, 10, 1), new DateTime(2008, 11, 1));

            Console.WriteLine("进行筛选");
            Console.WriteLine(target);

            string after = PrintAllTableInfo(aTr);

            Console.WriteLine();
            Console.WriteLine("筛选之后的表信息");
            Console.WriteLine(after);

            Assert.IsTrue(before.Contains("表名:TApplication,最小ID:9,最大ID:670,总行数:615"));
            Assert.IsTrue(before.Contains("表名:TApplicationEmployee,最小ID:8,最大ID:1363,总行数:842"));
            Assert.IsTrue(before.Contains("表名:TApplicationFlow,最小ID:1,最大ID:1297,总行数:1252"));

            Assert.IsTrue(target.Contains("表TApplication共计:总行数615,删减535行数据"));
            Assert.IsTrue(target.Contains("表TApplicationEmployee共计:总行数842,删减749行数据"));
            Assert.IsTrue(target.Contains("表TApplicationFlow共计:总行数1252,删减1086行数据"));

            Assert.IsTrue(after.Contains("表名:TApplication,最小ID:258,最大ID:342,总行数:80"));
            Assert.IsTrue(after.Contains("表名:TApplicationEmployee,最小ID:778,最大ID:891,总行数:93"));
            Assert.IsTrue(after.Contains("表名:TApplicationFlow,最小ID:463,最大ID:666,总行数:166"));
        }
Esempio n. 15
0
        public void Test3()
        {
            string rarFile = Environment.CurrentDirectory + @"\..\..\TestResources\Config_ForTest.rar";

            //解析并验证
            DateTime?    startTime;
            DateTime?    endTime;
            TransferRule tr = TransferConfig.AnalyseRarData(rarFile, out startTime, out endTime, _TestTempDirectory, true, true);

            Assert.AreEqual(new DateTime(2008, 11, 1), startTime);
            Assert.AreEqual(new DateTime(2009, 1, 1), endTime);
            Assert.AreEqual(tr.RuleName, "指定月份的考勤数据");
            Assert.AreEqual("BackUpAs:[TApplication(TApplicationFilter)]", tr.MakeString());
            Assert.IsTrue(!File.Exists(_TestTempDirectory + "\\config.txt"));

            ////保留文件的解析
            TransferRule tr2 = TransferConfig.AnalyseRarData(rarFile, out startTime, out endTime, _TestTempDirectory, false, true);

            Assert.AreEqual(tr.MakeString(), tr2.MakeString());
            Assert.IsTrue(File.Exists(_TestTempDirectory + "\\config.txt"));

            //清理
            CommandRunner.CleanUpDirectory(_TestTempDirectory);
        }
Esempio n. 16
0
 public void ConfigTheFilter(TransferRule theRule, string mainTableName, string orginDbName, string orginCopyDbName, string restoreDbName, string forRestoreCopyDbName)
 {
     throw new Exception("The method or operation is not implemented.");
 }
Esempio n. 17
0
 public override void AfterConfigTheFilter(TransferRule theRule, string orginDbName, string orginCopyDbName, string restoreDbName, string forRestoreCopyDbName)
 {
 }
 public override void AfterConfigTheFilter(TransferRule theRule, string orginDbName, string orginCopyDbName, string restoreDbName, string forRestoreCopyDbName)
 {
     _LeaveRequestFilterItemFilter.ConfigTheFilter(theRule, _ProtectedTable, orginDbName, orginCopyDbName, restoreDbName, forRestoreCopyDbName);
     _LeaveRequestFilterItemFilter.IgnoreMainTableProcess = true;
 }