示例#1
0
        public void SCFileGetVariable()
        {
            string        aFileName     = ClearEnvironmentForTest();
            ContextClient contextClient = SetUpContextClient();

            var setContextActivity = new SetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                VariableValue = Test_SetVariableValue,
                ContextClient = new InArgument <ContextClient>((ctx) => contextClient)
            };

            var getContextActivity = new GetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                ContextClient = new InArgument <ContextClient>((ctx) => contextClient)
            };

            WorkflowInvoker.Invoke(setContextActivity);
            var output = WorkflowInvoker.Invoke(getContextActivity);

            contextClient.MyDispose();

            string fileContents = File.ReadAllText(aFileName);

            Assert.IsTrue(fileContents == "{\"GlobalVariables\":{\"aVariable123\":\"aValue456\"},\"Messages\":{}}");
            Assert.IsTrue(output["VariableValue"].ToString() == Test_SetVariableValue);
        }
示例#2
0
        public void SCFileScopeWithSharedContextSetInside()
        {
            string aFileName = this.ClearEnvironmentForTest();

            var sharedContextScopeActivity = new ClientScopeActivity
            {
                ContextName = Test_ContextName,
                ContextType = Test_ContextType,
                Retries     = Test_Retries
            };

            var setContextActivity = new SetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                VariableValue = Test_SetVariableValue
            };

            sharedContextScopeActivity.Body.Handler = new Sequence()
            {
                Activities =
                {
                    setContextActivity
                }
            };

            var output = WorkflowInvoker.Invoke(sharedContextScopeActivity);

            Assert.IsTrue(File.Exists(aFileName));
            string fileContents = File.ReadAllText(aFileName);

            Assert.IsTrue(fileContents == "{\"GlobalVariables\":{\"aVariable123\":\"aValue456\"},\"Messages\":{}}");
        }
示例#3
0
        public void NewThread()
        {
            Console.WriteLine("In thread > " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fffff tt"));
            string aFileName = ClearEnvironmentForTest(true);

            var sharedContextScopeActivity = new ClientScopeActivity
            {
                ContextName = Test_ContextName,
                ContextType = Test_ContextType,
                Retries     = Test_Retries
            };

            var setContextActivity = new SetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                VariableValue = Test_SetVariableValue
            };

            sharedContextScopeActivity.Body.Handler = new Sequence()
            {
                Activities =
                {
                    setContextActivity
                }
            };

            Console.WriteLine("In thread : about to execute > " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fffff tt"));
            var output = WorkflowInvoker.Invoke(sharedContextScopeActivity);
        }
示例#4
0
        public void NewThread()
        {
            Console.WriteLine("In thread > " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fffff tt"));
            var aContextServer = this.SetUpContextServer();

            var sharedContextScopeActivity = new ClientScopeActivity
            {
                ContextName  = Test_ContextName,
                ContextType  = Test_ContextType,
                ClearContext = true,
                Retries      = Test_Retries
            };

            var setContextActivity = new SetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                VariableValue = Test_SetVariableValue
            };

            sharedContextScopeActivity.Body.Handler = new Sequence()
            {
                Activities =
                {
                    setContextActivity
                }
            };

            Console.WriteLine("In thread : about to execute > " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fffff tt"));
            WorkflowInvoker.Invoke(sharedContextScopeActivity);

            aContextServer.MyDispose();
        }
示例#5
0
        public void SCNamedPipeScopeNakedSetGet()
        {
            var aContextServer = this.SetUpContextServer();
            var aContextClient = this.SetUpContextClient();

            var setContextActivity = new SetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                VariableValue = Test_SetVariableValue,
                ContextClient = new InArgument <ContextClient>((ctx) => aContextClient)
            };

            var getContextActivity = new GetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                ContextClient = new InArgument <ContextClient>((ctx) => aContextClient)
            };

            WorkflowInvoker.Invoke(setContextActivity);
            var output = WorkflowInvoker.Invoke(getContextActivity);

            Assert.IsTrue(output["VariableValue"].ToString() == Test_SetVariableValue);

            aContextClient.MyDispose();
            aContextServer.MyDispose();
        }
        public override Activity ToSdkObject()
        {
            var activity = new SetVariableActivity(this.Name);

            activity.VariableName = this.VariableName;
            activity.Value        = this.Value;
            SetProperties(activity);
            return(activity);
        }
示例#7
0
        public void SCNamedPipeTryToOpenLockedContext()
        {
            Thread thread1 = new Thread(NewThread);

            thread1.Start();
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("In main. i=" + i.ToString() + " > " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fffff tt"));

                if (i == 0 || i == 3)
                {
                    try
                    {
                        var sharedContextScopeActivity = new ClientScopeActivity
                        {
                            ContextName = Test_ContextName,
                            ContextType = Test_ContextType,
                            Retries     = Test_Retries
                        };

                        var setContextActivity = new SetVariableActivity
                        {
                            VariableName  = Test_SetVariableName,
                            VariableValue = Test_SetVariableValue
                        };

                        sharedContextScopeActivity.Body.Handler = new Sequence()
                        {
                            Activities =
                            {
                                setContextActivity
                            }
                        };

                        var output = WorkflowInvoker.Invoke(sharedContextScopeActivity);

                        Console.WriteLine("File locked! > " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fffff tt"));
                        Thread.Sleep(200);
                    }
                    catch (Exception)
                    {
                        Console.WriteLine("Could not lock File > " + DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fffff tt"));
                        Thread.Sleep(50);
                    }
                }
                Thread.Sleep(200);
            }
        }
示例#8
0
        public void SCNamedPipeScopeWithSharedContextSetGetInside()
        {
            var sharedContextServerScope = new ServerScopeActivity
            {
                ContextName = Test_ContextName
            };

            var sharedContextScopeActivity = new ClientScopeActivity
            {
                ContextName  = Test_ContextName,
                ContextType  = Test_ContextType,
                ClearContext = true,
                Retries      = Test_Retries
            };

            var setContextActivity = new SetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                VariableValue = Test_SetVariableValue
            };

            var getContextActivity = new GetVariableActivity
            {
                VariableName = Test_SetVariableName
            };

            sharedContextServerScope.Body.Handler = new Sequence()
            {
                Activities =
                {
                    sharedContextScopeActivity
                }
            };

            sharedContextScopeActivity.Body.Handler = new Sequence()
            {
                Activities =
                {
                    setContextActivity,
                    getContextActivity
                }
            };

            var output = WorkflowInvoker.Invoke(sharedContextServerScope);
        }
示例#9
0
        public void SCNamedPipeTrigger()
        {
            var aContextServer = this.SetUpContextServer();
            var aContextClient = this.SetUpContextClient();

            const int runs = 1;

            Variable <int> runCount = new Variable <int>
            {
                Name    = nameof(runCount),
                Default = runs,
            };
            var sequence = new Sequence()
            {
                Variables  = { runCount },
                Activities =
                {
                    new NamedPipeTriggerV2()
                    {
                        ContextName = Test_ContextName,
                        Debug       = true,
                        Body        = new ActivityAction <ContextContent>
                        {
                            Argument = new DelegateInArgument <ContextContent>(typeof(ContextContent).Name),
                            Handler  = new Sequence {
                                Activities =
                                {
                                    new Assign <int>()
                                    {
                                        To    = runCount,
                                        Value = new InArgument <int>((ctx) => runCount.Get(ctx) - 1),
                                    },
                                    new WriteLine()
                                    {
                                        Text = new InArgument <string>((ctx) => $"Should be logged.")
                                    }
                                }
                            }
                        },
                        ContinueMonitoring = new VisualBasicValue <bool>($"{nameof(runCount)} > 0"),
                    }
                }
            };

            var host = new WorkflowInvokerTest(sequence);
            var task = Task.Run(() => { host.TestActivity(TimeSpan.FromSeconds(10)); });

            // Trigger initialization takes time.
            Thread.Sleep(2000);

            var setContextActivity = new SetVariableActivity
            {
                VariableName  = Test_SetVariableName,
                VariableValue = Test_SetVariableValue,
                ContextClient = new InArgument <ContextClient>((ctx) => aContextClient)
            };

            WorkflowInvoker.Invoke(setContextActivity);

            aContextClient.MyDispose();

            Thread.Sleep(100);

            task.Wait(1000);
            Assert.IsTrue(TaskStatus.RanToCompletion == task.Status);
            Assert.IsTrue(runs == host.TextLines.Where(l => l == "Should be logged.").Count());

            aContextServer.MyDispose();
        }