public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Session))
            {
                return(TestResult.ParameterMissing("Session"));
            }

            DaSession session = GetProperty(Session) as DaSession;

            if (session == null)
            {
                return(TestResult.ParameterInvalid("Session"));
            }

            try
            {
                DaSubscription subscription = new DaSubscription(UpdateRate, session);

                if (!subscription.Valid)
                {
                    return(TestResult.Failed("DaSubscription not Valid"));
                }

                if (RequestedKeepAliveTime.HasValue)
                {
                    subscription.RequestedKeepAliveTime = RequestedKeepAliveTime.Value;
                }

                // set the global property anyhow.
                SetProperty(Property, subscription);

                if (Connect)
                {
                    int result = subscription.Connect(Deep, Active, null);

                    if (ResultCode.FAILED(result))
                    {
                        EnumResultCode resCode = (EnumResultCode)Enum.Parse(typeof(EnumResultCode), result.ToString());

                        return(TestResult.Failed(string.Format("Call returned: {0}  ({1})", resCode.ToString(), result)));
                    }
                }

                if (Deadband.HasValue)
                {
                    subscription.Deadband = Deadband.Value;
                }
            }
            catch (Exception ex)
            {
                if (ExpectedSuccess)
                {
                    return(new TestResult(ex));
                }
            }

            return(TestResult.Success());
        }
Example #2
0
        public override TestResult Execute()
        {
            if (string.IsNullOrEmpty(Session))
            {
                return(TestResult.ParameterMissing("Session"));
            }

            DaSession session = GetProperty(Session) as DaSession;

            if (session == null)
            {
                return(TestResult.ParameterInvalid("Session"));
            }

            if (string.IsNullOrEmpty(NodeSetId))
            {
                return(TestResult.ParameterMissing("NodeSetId"));
            }

            string nodeSetId = GetProperty(NodeSetId) as string;

            if (nodeSetId == null)
            {
                return(TestResult.ParameterInvalid("NodeSetId"));
            }

            try
            {
                DaSubscription subscription = new DaSubscription(UpdateRate, session);

                if (!subscription.Valid)
                {
                    return(TestResult.Failed("DaSubscription not Valid"));
                }

                int result = subscription.Connect(true, true, null);

                if (ResultCode.SUCCEEDED(result))
                {
                    // subscription created
                    ExecutionOptions executionOptions = new ExecutionOptions(EnumExecutionType.SYNCHRONOUS, 0);
                    List <DaItem>    items            = new List <DaItem>();

                    // create items
                    for (uint i = 0; i < Count; i++)
                    {
                        string itemId = String.Format("{0}, {1}, {2}", nodeSetId, m_variableNodeIdPrefix, i);

                        DaItem item = new DaItem(itemId, subscription);

                        if (!item.Valid)
                        {
                            return(TestResult.Failed("Item not Valid"));
                        }

                        result = item.Connect(false, true, executionOptions);

                        if (ResultCode.FAILED(result))
                        {
                            EnumResultCode resCode = (EnumResultCode)Enum.Parse(typeof(EnumResultCode), result.ToString());

                            return(TestResult.Failed(string.Format("Call returned: {0}  ({1})", resCode.ToString(), result)));
                        }

                        items.Add(item);
                    }

                    SetProperty(Property, items.ToArray());
                    SetProperty(SubscriptionProperty, subscription);

                    return(TestResult.Success());
                }
                else
                {
                    EnumResultCode resCode = (EnumResultCode)Enum.Parse(typeof(EnumResultCode), result.ToString());

                    return(TestResult.Failed(string.Format("Call returned: {0}  ({1})", resCode.ToString(), result)));
                }
            }
            catch (Exception ex)
            {
                return(new TestResult(ex));
            }
        }