public void PluginRuntimeHandler_Test_WhenValid_ExpectRunsCorrectly()
        {
            //------------Setup for test--------------------------

            var type = typeof(Human);
            var svc  = CreatePluginService(new List <IDev2MethodInfo> {
                new Dev2MethodInfo {
                    Method = "EmptyIsNullTest", Parameters = new List <IMethodParameter>()
                }
            }, type, new ServiceConstructor());
            //------------Execute Test---------------------------
            var isolated = new PluginRuntimeHandler();

            var pluginInvokeArgs = new PluginInvokeArgs
            {
                MethodsToRun      = svc.MethodsToRun,
                PluginConstructor = new PluginConstructor
                {
                    ConstructorName = svc.Constructor.Name,
                    Inputs          = new List <IConstructorParameter>(),
                },
                AssemblyLocation = type.Assembly.Location,
                AssemblyName     = type.Assembly.FullName,
                Fullname         = type.FullName,
                Parameters       = new List <MethodParameter>()
                {
                    new MethodParameter()
                    {
                        Name     = "value",
                        TypeName = typeof(string).FullName,
                        Value    = "a"
                    }
                },

                Method = "EmptyIsNullTest"
            };
            var instance = isolated.Test(pluginInvokeArgs, out string jresult);

            Assert.IsTrue(!string.IsNullOrEmpty(jresult));
            var count = instance.DataSourceShapes.Count;

            Assert.AreEqual(1, count);
        }
        protected override object ExecuteService(out ErrorResultTO errors, IOutputFormatter formater = null)
        {
            errors = new ErrorResultTO();

            var args = new PluginInvokeArgs {
                AssemblyLocation = Source.AssemblyLocation, AssemblyName = Source.AssemblyName, Fullname = Service.Namespace, Method = Service.Method.Name, Parameters = Service.Method.Parameters, OutputFormatter = formater
            };

            object result = null;

            try
            {
                result = PluginServiceExecutionFactory.InvokePlugin(args);
            }
            catch (Exception e)
            {
                errors.AddError(e.Message);
            }

            return(result);
        }
        public void PluginRuntimeHandler_InvokePlugin_WhenValidDll_ExpectValidResults()
        {
            //------------Setup for test--------------------------
            var source            = CreatePluginSource();
            var svc               = CreatePluginService();
            PluginInvokeArgs args = new PluginInvokeArgs {
                AssemblyLocation = source.AssemblyLocation, AssemblyName = "Foo", Fullname = svc.Namespace, Method = svc.Method.Name, Parameters = svc.Method.Parameters
            };

            //------------Execute Test---------------------------
            var result     = PluginServiceExecutionFactory.InvokePlugin(args);
            var castResult = result as DummyClassForPluginTest;

            //------------Assert Results-------------------------
            if (castResult != null)
            {
                StringAssert.Contains(castResult.Name, "test data");
            }
            else
            {
                Assert.Fail("Failed Conversion for Assert");
            }
        }
Example #4
0
        public void PluginRuntimeHandler_InvokePlugin_WhenValidDll_ExpectValidResults()
        {
            //------------Setup for test--------------------------
            var source = CreatePluginSource();
            var svc    = CreatePluginService();



            //------------Execute Test---------------------------
            using (Isolated <PluginRuntimeHandler> isolated = new Isolated <PluginRuntimeHandler>())
            {
                PluginInvokeArgs args = new PluginInvokeArgs
                {
                    AssemblyLocation = source.AssemblyLocation
                    ,
                    AssemblyName = "Foo"
                    ,
                    Fullname = svc.Namespace
                    ,
                    Method = svc.Method.Name
                    ,
                    Parameters = svc.Method.Parameters
                };
                var result     = PluginServiceExecutionFactory.InvokePlugin(args);
                var castResult = JsonConvert.DeserializeObject(result.ToString()) as dynamic;
                //------------Assert Results-------------------------
                if (castResult != null)
                {
                    StringAssert.Contains(castResult.Name.ToString(), "test data");
                }
                else
                {
                    Assert.Fail("Failed Conversion for Assert");
                }
            }
        }
Example #5
0
        private void TryExecute(int update, IDSFDataObject dataObject, List <IWarewolfIterator> itrs, IWarewolfListIterator itrCollection, List <MethodParameter> methodParameters, PluginInvokeArgs args)
        {
            while (itrCollection.HasMoreData())
            {
                var pos = 0;
                foreach (var itr in itrs)
                {
                    var injectVal = itrCollection.FetchNextValue(itr);
                    var param     = methodParameters.ToList()[pos];

                    param.Value = param.EmptyToNull &&
                                  (injectVal == null ||
                                   string.Compare(injectVal, string.Empty,
                                                  StringComparison.InvariantCultureIgnoreCase) == 0)
                        ? null
                        : injectVal;

                    pos++;
                }
                if (!IsObject)
                {
                    var i = 0;
                    foreach (var serviceOutputMapping in Outputs)
                    {
                        OutputDescription.DataSourceShapes[0].Paths[i].OutputExpression = DataListUtil.AddBracketsToValueIfNotExist(serviceOutputMapping.MappedTo);
                        i++;
                    }
                    var outputFormatter = OutputFormatterFactory.CreateOutputFormatter(OutputDescription);
                    args.OutputFormatter = outputFormatter;
                }
                var result = PluginServiceExecutionFactory.InvokePlugin(args).ToString();
                ResponseManager = new ResponseManager {
                    OutputDescription = OutputDescription, Outputs = Outputs, IsObject = IsObject, ObjectName = ObjectName
                };
                ResponseManager.PushResponseIntoEnvironment(result, update, dataObject, false);
            }
        }
        void TryExecuteService(int update, IDSFDataObject dataObject, PluginExecutionDto pluginExecutionDto, PluginInvokeArgs args)
        {
            using (var appDomain = PluginServiceExecutionFactory.CreateAppDomain())
            {
                if (dataObject.IsServiceTestExecution)
                {
                    var serviceTestStep = dataObject.ServiceTest?.TestSteps?.Flatten(step => step.Children)?.FirstOrDefault(step => step.UniqueId == pluginExecutionDto.Args.PluginConstructor.ID);
                    if (serviceTestStep != null && serviceTestStep.Type == StepType.Mock)
                    {
                        var start = DateTime.Now;
                        MockConstructorExecution(dataObject, serviceTestStep, ref pluginExecutionDto);
                        DebugStateForConstructorInputsOutputs(dataObject, update, true, start);
                    }
                    else
                    {
                        var start = DateTime.Now;
                        RegularConstructorExecution(dataObject, appDomain, ref pluginExecutionDto);
                        DebugStateForConstructorInputsOutputs(dataObject, update, false, start);
                    }
                }
                else
                {
                    var start = DateTime.Now;
                    RegularConstructorExecution(dataObject, appDomain, ref pluginExecutionDto);
                    DebugStateForConstructorInputsOutputs(dataObject, update, false, start);
                }

                var index = 0;
                foreach (var dev2MethodInfo in args.MethodsToRun)
                {
                    if (dataObject.IsServiceTestExecution)
                    {
                        var serviceTestStep = dataObject.ServiceTest?.TestSteps?.Flatten(step => step.Children)?.FirstOrDefault(step => step.UniqueId == dev2MethodInfo.ID);
                        MethodExecution(update, dataObject, pluginExecutionDto, appDomain, index, dev2MethodInfo, serviceTestStep);
                    }
                    else
                    {
                        RegularMethodExecution(appDomain, pluginExecutionDto, dev2MethodInfo, index, update, dataObject);
                    }
                    if (dev2MethodInfo.HasError)
                    {
                        break;
                    }

                    index++;
                }
            }
        }