示例#1
0
        public void Return_schedule_decisions_for_startup_items()
        {
            _eventsBuilder.AddNewEvents(_eventGraphBuilder.WorkflowStartedEvent());
            var workflow = new TestWorkflow();

            var workflowStartedDecisions = workflow.Decisions(_eventsBuilder.Result());

            Assert.That(workflowStartedDecisions, Is.EquivalentTo(new[] { new ScheduleActivityDecision(Identity.New("Download", "1.0").ScheduleId()) }));
        }
示例#2
0
        public void Return_schedule_decisions_for_startup_items()
        {
            var workflow            = new TestWorkflow();
            var startWorkflowAction = workflow.StartupAction;

            var workflowStartedDecisions = startWorkflowAction.GetDecisions();

            Assert.That(workflowStartedDecisions, Is.EquivalentTo(new[] { new ScheduleActivityDecision(Identity.New("Download", "1.0")) }));
        }
示例#3
0
 public static ITestRun GetTestRunWithStatus(TestRunStatuses status)
 {
     var workflow = new TestWorkflow(TestLabCollection.TestLabs.First()) { Name = "workflow 01" };
     workflow.SetTestLab(TestLabCollection.TestLabs.First());
     WorkflowCollection.Workflows.Add(workflow);
     var testRun = new TestRun { Name = "test run 03", Status = status };
     testRun.SetWorkflow(workflow);
     TestRunQueue.TestRuns.Add(testRun);
     return testRun;
 }
示例#4
0
        public void Timerof_test()
        {
            var eventGraph             = _builder.TimerFiredGraph(Identity.Timer("Timer1"), TimeSpan.FromSeconds(2));
            var activityCompletedEvent = new TimerFiredEvent(eventGraph.First(), eventGraph);
            var workflow = new TestWorkflow();

            var activity = workflow.GetTimerOf(activityCompletedEvent);

            Assert.That(activity, Is.EqualTo(TimerItem.New(Identity.Timer("Timer1"), workflow)));
        }
示例#5
0
        IWorkflow GivenLoadedWorkflow(int id, string name)
        {
            var workflow = new TestWorkflow(TestLabCollection.TestLabs.First())
            {
                Name = name
            };

            WorkflowCollection.AddWorkflow(workflow);
            return(workflow);
        }
示例#6
0
        public void Activityof_test()
        {
            var eventGraph             = _builder.ActivityCompletedGraph(Identity.New("Activity1", "1.0"), "id", "result");
            var activityCompletedEvent = new ActivityCompletedEvent(eventGraph.First(), eventGraph);
            var workflow = new TestWorkflow();

            var activity = workflow.GetActivityOf(activityCompletedEvent);

            Assert.That(activity, Is.EqualTo(new ActivityItem(Identity.New("Activity1", "1.0"), workflow)));
        }
示例#7
0
        public void Get_activity_by_its_event()
        {
            var identity               = Identity.New("Activity1", "1.0");
            var eventGraph             = _graphBuilder.ActivityCompletedGraph(identity.ScheduleId(), "id", "result");
            var activityCompletedEvent = new ActivityCompletedEvent(eventGraph.First(), eventGraph);
            var workflow               = new TestWorkflow();

            var activity = workflow.GetActivityOf(activityCompletedEvent);

            Assert.That(activity, Is.EqualTo(new ActivityItem(identity, workflow)));
        }
示例#8
0
        public void Get_lambda_item_form_its_event()
        {
            var identity   = Identity.Lambda("Lambda");
            var eventGraph = _graphBuilder.LambdaCompletedEventGraph(identity.ScheduleId(), "id", "result");
            var @event     = new LambdaCompletedEvent(eventGraph.First(), eventGraph);
            var workflow   = new TestWorkflow();

            var activity = workflow.GetLambda(@event);

            Assert.That(activity, Is.EqualTo(new LambdaItem(identity, workflow)));
        }
        public void Schedule_a_child_item_when_all_of_its_parent_branches_are_not_active()
        {
            var bookHotelActivityCompletedGraph = CompletedActivityGraph(BookHotelActivity);
            var addDinnerActivity = CompletedActivityGraph(AddDinnerActivity);
            var allEvents         = addDinnerActivity.Concat(bookHotelActivityCompletedGraph);

            var decisions =
                new TestWorkflow().NewExecutionFor(new WorkflowHistoryEvents(allEvents,
                                                                             addDinnerActivity.Last().EventId, addDinnerActivity.First().EventId)).Execute();

            Assert.That(decisions, Is.EqualTo(new[] { new ScheduleActivityDecision(Identity.New(ChargeCustomerActivity, Version)) }));
        }
示例#10
0
        public void Does_not_schedule_a_child_item_when_one_of_the_activity_in_its_parent_branch_is_just_completed_and_about_to_schedule_its_child_activity()
        {
            var bookHotelActivityCompletedGraph = CompletedActivityGraph(BookHotelActivity);
            var addDinnerActivity = CompletedActivityGraph(AddDinnerActivity);
            var bookFlightActivityStartedGraph = CompletedActivityGraph(BookFlightActivity);
            var allEvents = addDinnerActivity.Concat(bookHotelActivityCompletedGraph).Concat(bookFlightActivityStartedGraph);

            var decisions =
                new TestWorkflow().NewExecutionFor(new WorkflowHistoryEvents(allEvents,
                                                                             addDinnerActivity.Last().EventId, addDinnerActivity.First().EventId)).Execute();

            Assert.That(decisions, Is.Empty);
        }
示例#11
0
        private void TestButton_Click(object sender, EventArgs e)
        {
            String strPhone1    = this.mPhoneOneTextBox.Text;
            String strPhone2    = this.mPhoneTowTextBox.Text;
            String workflowName = this.mWorkflowComboBox.Text;

            if (String.IsNullOrEmpty(strPhone1) || strPhone1.Length < 6)
            {
                MessageBox.Show("请输入正确的电话号码1!");
                return;
            }
            if (!String.IsNullOrEmpty(strPhone2))
            {
                if (strPhone2.Length < 6)
                {
                    MessageBox.Show("请输入正确的电话号码2!");
                    return;
                }
            }
            if (String.IsNullOrEmpty(workflowName))
            {
                MessageBox.Show("请选择工作流程!");
                return;
            }
            String workflowId = _dict[workflowName];

            if (!String.IsNullOrEmpty(workflowId))
            {
                TestWorkflow flow = new TestWorkflow();
                flow.flow_id = workflowId;
                flow.numbers = strPhone1;
                if (!String.IsNullOrEmpty(strPhone2))
                {
                    flow.numbers += "," + strPhone2;
                }
                string             param     = HttpControl.ObjectToJson(flow);
                string             cmd       = HttpControl.TestWorkflowCmd + "?" + "flow_id=" + flow.flow_id + "&numbers=" + flow.numbers;
                String             strResult = HttpControl.GetHttpResponseList(cmd, 5000, this.Token.token);
                TestWorkflowResult result    = (TestWorkflowResult)HttpControl.JsonToObject <TestWorkflowResult>(strResult);
                if (result == null)
                {
                    MessageBox.Show("网络连接失败!");
                    return;
                }
                if (result.status == 0)
                {
                    MessageBox.Show("测试发送成功。");
                }
                phoneControl.startDialPstn(result.result, this.Token.token);
            }
        }
示例#12
0
        private void TestButton_Click(object sender, RoutedEventArgs e)
        {
            String strPhone1    = this.PhoneEdit.Text;
            String workflowName = this.WorkflowCombo.Text;

            if (String.IsNullOrEmpty(strPhone1) || strPhone1.Length < 6)
            {
                MessageBox.Show("请输入正确的电话号码1!");
                return;
            }
            if (String.IsNullOrEmpty(workflowName))
            {
                MessageBox.Show("请选择工作流程!");
                return;
            }
            String workflowId = PageCommon.Dict[workflowName];

            if (!String.IsNullOrEmpty(workflowId))
            {
                TestWorkflow flow = new TestWorkflow();
                flow.flow_id = workflowId;
                flow.numbers = strPhone1;
                string             param     = HttpControl.ObjectToJson(flow);
                string             cmd       = HttpControl.TestWorkflowCmd + "?" + "flow_id=" + flow.flow_id + "&numbers=" + flow.numbers;
                String             strResult = HttpControl.GetHttpResponseList(cmd, 5000, MainWindow.main.Token.TokenCode);
                TestWorkflowResult result    = (TestWorkflowResult)HttpControl.JsonToObject <TestWorkflowResult>(strResult);
                if (result == null)
                {
                    MessageBox.Show("网络连接失败!");
                    return;
                }
                if (result.status == 0)
                {
                    MessageBox.Show("测试发送成功。");
                }
                else
                {
                    TestResultError ret = (TestResultError)HttpControl.JsonToObject <TestResultError>(strResult);
                    if (ret != null)
                    {
                        MessageBox.Show(ret.error);
                    }
                    else
                    {
                        MessageBox.Show("服务器连接错误");
                    }
                    return;
                }
                phoneControl.startDialPstn(result.result, MainWindow.main.Token.TokenCode);
            }
        }
示例#13
0
        public void Get_timer_by_its_event()
        {
            var identity   = Identity.Timer("Timer1");
            var eventGraph = _graphBuilder.TimerFiredGraph(identity.ScheduleId(), TimeSpan.FromSeconds(2));

            _builder.AddNewEvents(eventGraph.ToArray());

            var workflow = new TestWorkflow();

            workflow.Decisions(_builder.Result());

            var timer = workflow.TimerItem;

            Assert.That(workflow.TimerItem.Name, Is.EqualTo("Timer1"));
        }
示例#14
0
 public static ITestRun GetTestRunWithStatus(TestRunStatuses status, params string[] rules)
 {
     var workflow = new TestWorkflow(TestLabCollection.TestLabs.First()) { Name = "workflow 01" };
     workflow.SetTestLab(TestLabCollection.TestLabs.First());
     WorkflowCollection.Workflows.Add(workflow);
     var testRun = new TestRun { Name = "test run 03", Status = status };
     testRun.SetWorkflow(workflow);
     TestRunQueue.TestRuns.Add(testRun);
     var taskId = 0;
     if (null != rules)
         // 20150904
         rules.ToList().ForEach(rule => TaskPool.Tasks.Add(new TestTask { Id = ++taskId, Rule = rule, WorkflowId = workflow.Id, TestRunId = testRun.Id }));
         // rules.ToList().ForEach(rule => TaskPool.Tasks.Add(new TestTask (TestTaskRuntimeTypes.Powershell) { Id = ++taskId, Rule = rule, WorkflowId = workflow.Id, TestRunId = testRun.Id }));
     
     return testRun;
 }
示例#15
0
        //[Timeout(5000)]
        public void should_support_integration_test_workflow_rapidfire()
        {
            var rapidFireMode = $@"
                StartUnitTest  {theGimp}!the_test_3;5
                StartUnitTest  {theGimp}!the_test_2;2
                StartUnitTest  {theGimp}!the_test_1;1
                StartUnitTest  {theGimp}!the_test_1;0
                StartUnitTest  {theGimp}!the_test_1;
                ";

            var called  = 0;
            var results = new Subject <UnitTestResult>();
            var appCmds = Substitute.For <IServiceCommandFactory>();

            appCmds.Get("StartUnitTest", Arg.Any <object[]>()).Returns(ci =>
            {
                var cmdArg = (ci.ArgAt <object[]>(1)[0] as IEnumerable <string>).ToStringEach(" ");

                cmdArg.Should().Contain("theTestGimp.dll!the_test_", "the params should be correctly parsed");
                cmdArg.Should().NotContain(";", "the expression should parse the target correctly and not include rapid syntax");

                return(new StartUnitTest());
            });

            TestWorkflow.StartIntegrationTest(rapidFireMode, appCmds, results).Do(t =>
            {
                called++;
                "Saw Unit test".LogDebug();
                results.OnNext((UnitTestResult) new UnitTestResult()
                {
                    WasSuccessful = true
                }.AsResultOf(t));
            }).WaitR();

            called.Should().Be(9, "rapidfire syntax was used to trigger the tests");

            called = 0;
        }
示例#16
0
        public void By_default_returns_fail_workflow_decision_when_interpreted()
        {
            var decisions = new TestWorkflow().Decisions(_builder.Result());

            Assert.That(decisions, Is.EqualTo(new[] { new FailWorkflowDecision("FAILED_TO_SEND_CANCEL_REQUEST", "cause") }));
        }
 private void DownloadControlButton_Click(object sender, EventArgs e)
 {
     try
     {
         String workflowName = this.FlowComboBox.Text;
         if (String.IsNullOrEmpty(workflowName))
         {
             MessageBox.Show("请选择工作流程!");
             return;
         }
         String workflowId = PageCommon.Dict[workflowName];
         if (!String.IsNullOrEmpty(workflowId))
         {
             TestWorkflow flow = new TestWorkflow();
             flow.flow_id = workflowId;
             string param     = HttpControl.ObjectToJson(flow);
             string cmd       = HttpControl.GeUrlInfoCmd + flow.flow_id + "/bot/";
             String strResult = HttpControl.GetHttpResponseList(cmd, 500, this.Token.TokenCode);
             if (strResult == null)
             {
                 MessageBox.Show("该流程没有录音文件");
                 return;
             }
             ResultFtpInfo ret = (ResultFtpInfo)HttpControl.JsonToObject <ResultFtpInfo>(strResult);
             if (strResult == null)
             {
                 MessageBox.Show("网络连接失败!");
                 return;
             }
             if (ret.message != "成功")
             {
                 MessageBox.Show("网络连接失败!");
                 return;
             }
             if (isNewDownload)
             {
                 this.downloadIndex = 0;
             }
             var    filePath        = CPlayVoicePathManager.GetVoicePath(flow.flow_id);
             var    objFullFileName = filePath + flow.flow_id.ToString() + ".zip";
             Thread thread          = new Thread(() =>
             {
                 try
                 {
                     long downSize = 0;
                     long fileSize = 0;
                     HttpManager.HttpDownloadFile(ret.data.url, objFullFileName, new UZipProgressDelegate((count, total) =>
                     {
                         this.BeginInvoke(new InvokeDelegate(() =>
                         {
                             downSize = total;
                             fileSize = count;
                             DownloadInfoTextBox.Text = "正在下载文件:" + count.ToString() + "/" + total.ToString();
                         }));
                     }));
                     if (downSize <= fileSize)
                     {
                         Console.WriteLine("文件下载异常的长度");
                     }
                     ZipHelper.UnZip2(objFullFileName, filePath, new UZipProgressDelegate((total, count) =>
                     {
                         this.BeginInvoke(new InvokeDelegate(() =>
                         {
                             DownloadInfoTextBox.Text = "解压文件进度" + total.ToString() + "/" + count.ToString();
                         }));
                     }));
                     MessageBox.Show("下载完成!");
                     if (_isTaskCreate)
                     {
                         CloseButton.Text = "关闭窗口";
                     }
                 }
                 catch (Exception ex)
                 {
                     Console.WriteLine(ex.Message);
                 }
             });
             thread.Start();
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
示例#18
0
 IWorkflow GivenLoadedWorkflow(int id, string name)
 {
     var workflow = new TestWorkflow(TestLabCollection.TestLabs.First()) { Name = name };
     WorkflowCollection.AddWorkflow(workflow);
     return workflow;
 }