Example #1
0
        // utils
        public static void GetActivityDataForWS(int activityId, out int processId, out ActivityKind activityKind, out string activityName, out string SSKey, out string url, out int tenantId)
        {
            string EspaceName;
            string ProcessName;

            GetActivityDataForWS(activityId, out processId, out activityKind, out activityName, out SSKey, out url, out tenantId, out EspaceName, out ProcessName);
        }
Example #2
0
        protected void ScheduleActivity(HeContext heContext, int activityId, DateTime startDate)
        {
            using (Transaction trans = DatabaseAccess.ForSystemDatabase.GetRequestTransaction()) {
                int tenantId = heContext.AppInfo.Tenant.Id;

                int activityDefId;

                using (IDataReader reader = DBRuntimePlatform.Instance.GetActivity(trans, tenantId, activityId, false)) {
                    if (reader.Read())
                    {
                        activityDefId = reader.SafeGet <int>("ACTIVITY_DEF_ID");
                    }
                    else
                    {
                        throw new InvalidOperationException("Activity '" + Name + "' (#" + activityId + ") does not exist.");
                    }
                }

                ActivityKind activityDefKind = DBRuntimePlatform.Instance.GetActivityDefinitionKind(trans, activityDefId);

                // Must be an open Human Activity
                if (activityDefKind != ActivityKind.HumanActivity)
                {
                    throw new InvalidOperationException("Cannot release activity '" + Name + "' (#" + activityId + ") because it's not an open human activity.");
                }

                DBRuntimePlatform.Instance.UpdateActivity(trans, tenantId, activityId, null, null, null, null, null, null, null,
                                                          ActivityStatus.Scheduled, null, null, null, null, false, startDate, null, null, null, null, null);
            }

            DatabaseAccess.CommitAllTransactions();
        }
Example #3
0
        public static ResponseData BuildResponseData(ActivityPackage activityPackage)
        {
            ActivityKind activityKind = activityPackage.ActivityKind;
            ResponseData responseData;

            switch (activityKind)
            {
            case ActivityKind.Session:
                responseData = new SessionResponseData();
                break;

            case ActivityKind.Attribution:
                responseData = new AttributionResponseData();
                break;

            case ActivityKind.Event:
                responseData = new EventResponseData(activityPackage);
                break;

            case ActivityKind.Click:
                responseData = new SdkClickResponseData();
                break;

            default:
                responseData = new UnknowResponseData();
                break;
            }

            responseData.ActivityKind = activityKind;

            return(responseData);
        }
Example #4
0
 public static Activity?Start(
     string name,
     ActivityKind activityKind,
     IMessageConsumeContext context,
     IEnumerable <KeyValuePair <string, object?> >?tags = null
     )
 => Create(name, activityKind, context, tags)?.Start();
        /// <summary>
        /// Construct a new <see cref="ActivityCreationOptions{T}"/> object.
        /// </summary>
        /// <param name="source">The trace Activity source<see cref="ActivitySource"/> used to request creating the Activity object.</param>
        /// <param name="name">The operation name of the Activity.</param>
        /// <param name="parent">The requested parent to create the Activity object with. The parent either be a parent Id represented as string or it can be a parent context <see cref="ActivityContext"/>.</param>
        /// <param name="kind"><see cref="ActivityKind"/> to create the Activity object with.</param>
        /// <param name="tags">Key-value pairs list for the tags to create the Activity object with.<see cref="ActivityContext"/></param>
        /// <param name="links"><see cref="ActivityLink"/> list to create the Activity object with.</param>
        /// <param name="idFormat">The default Id format to use.</param>
        internal ActivityCreationOptions(ActivitySource source, string name, T parent, ActivityKind kind, IEnumerable <KeyValuePair <string, object?> >?tags, IEnumerable <ActivityLink>?links, ActivityIdFormat idFormat)
        {
            Source   = source;
            Name     = name;
            Kind     = kind;
            Parent   = parent;
            Tags     = tags;
            Links    = links;
            IdFormat = idFormat;

            if (IdFormat == ActivityIdFormat.Unknown && Activity.ForceDefaultIdFormat)
            {
                IdFormat = Activity.DefaultIdFormat;
            }

            _samplerTags = null;

            if (parent is ActivityContext ac && ac != default)
            {
                _context = ac;
                if (IdFormat == ActivityIdFormat.Unknown)
                {
                    IdFormat = ActivityIdFormat.W3C;
                }
            }
        public void VerifyActivity(ActivityKind activityKind)
        {
            var activityName = "TestActivity";

            var telemetryItem = this.RunActivityTest((activitySource) =>
            {
                using (var activity = activitySource.StartActivity(name: activityName, kind: activityKind))
                {
                    activity.SetTag("integer", 1);
                    activity.SetTag("message", "Hello World!");
                    activity.SetTag("intArray", new int[] { 1, 2, 3 });
                }
            });

            VerifyTelemetryItem.Verify(
                telemetryItem: telemetryItem,
                activityKind: activityKind,
                expectedVars: new ExpectedTelemetryItemValues
            {
                Name             = activityName,
                CustomProperties = new Dictionary <string, string> {
                    { "integer", "1" },
                    { "message", "Hello World!" },
                    { "intArray", "1,2,3" }
                }
            });
        }
 private static void ActivityStartChecks(int activityId, string name, ActivityKind activityKind, string SSKey)
 {
     if (!activityKind.CanBeStarted())
     {
         throw new InvalidOperationException("Activity '" + name + "' (#" + activityId + ") cannot be started.");
     }
 }
Example #8
0
        public void VerifyActivity(ActivityKind activityKind)
        {
            this.Setup(processor: out BatchExportProcessor <Activity> processor, transmitter: out MockTransmitter transmitter);

            var activityName = "TestActivity";

            using (var activity = MyActivitySource.StartActivity(name: activityName, kind: activityKind))
            {
                activity.SetTag("integer", 1);
                activity.SetTag("message", "Hello World!");
                activity.SetTag("intArray", new int[] { 1, 2, 3 });
            }

            processor.ForceFlush();
            Task.Delay(100).Wait(); //TODO: HOW TO REMOVE THIS WAIT?

            Assert.True(transmitter.TelemetryItems.Any(), "test project did not capture telemetry");
            var telemetryItem = transmitter.TelemetryItems.First();

            VerifyTelemetryItem.Verify(
                telemetryItem: telemetryItem,
                activityKind: activityKind,
                expectedVars: new ExpectedTelemetryItemValues
            {
                Name             = activityName,
                CustomProperties = new Dictionary <string, string> {
                    { "integer", "1" },
                    { "message", "Hello World!" },
                    { "intArray", "1,2,3" }
                }
            });
        }
        public static int KindOrderNum(this ActivityKind kind)
        {
            switch (kind)
            {
            case ActivityKind.ConditionalStart:
                return(1);

            case ActivityKind.HumanActivity:
                return(2);

            case ActivityKind.Decision:
                return(3);

            case ActivityKind.ExecuteProcess:
                return(4);

            case ActivityKind.WaitActivity:
                return(5);

            case ActivityKind.Start:
            case ActivityKind.End:
                return(6);

            case ActivityKind.AutomaticActivity:
            case ActivityKind.EmailActivity:
                return(7);

            default:
                throw new InvalidOperationException("There's a case missing in this switch");
            }
        }
Example #10
0
 public Builder(string name, ActivityKind kind, ActivitySource source, Func <IContext, T, IEnumerable <KeyValuePair <string, object?> > >?getTags)
 {
     _name    = name;
     _kind    = kind;
     _source  = source;
     _getTags = getTags;
 }
        private static void RegisterCreationActivity(ActivityKind activityKind, Dictionary <string, object> data,
                                                     SPWeb contextWeb,
                                                     StreamManager streamManager, ThreadManager threadManager, ActivityManager activityManager)
        {
            var webId = (Guid)data["Id"];

            var activityDateTime = (DateTime)data["ActivityTime"];

            Thread thread = threadManager.SaveThread(new Thread
            {
                Title = (string)data["Title"],
                Url   = (string)data["URL"],
                Kind  = ObjectKind.Workspace,
                FirstActivityDateTime = activityDateTime,
                WebId = webId,
                Users = new[] { new User {
                                    Id = (int)data["UserId"], Role = UserRole.Author
                                } }
            });

            activityManager.RegisterActivity(new Activity
            {
                Kind   = activityKind,
                UserId = (int)data["UserId"],
                Thread = thread,
                Date   = activityDateTime
            });

            Guid streamId = streamManager.GetGlobalStreamId(webId);

            threadManager.AssociateStreams(thread, new[] { streamId });
            threadManager.UpdateUsers(thread);

            CoreFunctions.setConfigSetting(contextWeb, CREATED_CONFIG_KEY, true.ToString());
        }
Example #12
0
        protected void ReleaseActivity(HeContext heContext, int activityId, bool resetActivityUser)
        {
            using (Transaction trans = DatabaseAccess.ForSystemDatabase.GetRequestTransaction()) {
                int tenantId = heContext.AppInfo.Tenant.Id;

                int activityDefId = 0;

                using (IDataReader reader = DBRuntimePlatform.Instance.GetActivity(trans, tenantId, activityId, false)) {
                    if (reader.Read())
                    {
                        activityDefId = reader.SafeGet <int>("ACTIVITY_DEF_ID");
                    }
                    else
                    {
                        throw new DataBaseException("No activity instance found for ActivityId = " + activityId + " with TentantId = " + tenantId);
                    }
                }

                ActivityKind activityDefKind = DBRuntimePlatform.Instance.GetActivityDefinitionKind(trans, activityDefId);

                // Must be an open Human Activity
                if (activityDefKind != ActivityKind.HumanActivity)
                {
                    throw new InvalidOperationException("Cannot release activity '" + Name + "' (#" + activityId + ") because it's not an open human activity.");
                }

                DBRuntimePlatform.Instance.UpdateActivity(trans, tenantId, activityId, null, null, null, (resetActivityUser? 0: (int?)null),
                                                          null, false, null, ActivityStatus.Ready, null, null, null, null, null, null, null, null, null, null, null);
            }

            DatabaseAccess.CommitAllTransactions();
        }
            public ActivityAdapter(object?activitySource, DiagnosticSource diagnosticSource, string activityName, ActivityKind kind, object?diagnosticSourceArgs)
            {
                _activitySource       = activitySource;
                _diagnosticSource     = diagnosticSource;
                _activityName         = activityName;
                _kind                 = kind;
                _diagnosticSourceArgs = diagnosticSourceArgs;

                switch (_kind)
                {
                case ActivityKind.Internal:
                    AddTag("kind", "internal");
                    break;

                case ActivityKind.Server:
                    AddTag("kind", "server");
                    break;

                case ActivityKind.Client:
                    AddTag("kind", "client");
                    break;

                case ActivityKind.Producer:
                    AddTag("kind", "producer");
                    break;

                case ActivityKind.Consumer:
                    AddTag("kind", "consumer");
                    break;
                }
            }
Example #14
0
        public void SetActivityKind(ActivityKind activityKind)
        {
            var activity = new Activity("Test");

            activity.Start();
            ActivityInstrumentationHelper.SetKindProperty(activity, activityKind);
            Assert.Equal(activityKind, activity.Kind);
        }
Example #15
0
 public Pipe(string name, ActivityKind kind, ActivitySource source, Func <IContext, T, IEnumerable <KeyValuePair <string, object?> > >?getTags, IPipe <T> next)
 {
     _name    = name;
     _kind    = kind;
     _source  = source;
     _getTags = getTags;
     _next    = next;
 }
Example #16
0
 public ActivityPackage(ActivityKind activityKind, string clientSdk, Dictionary <string, string> parameters)
 {
     ActivityKind = activityKind;
     ClientSdk    = clientSdk;
     Parameters   = parameters;
     Path         = ActivityKindUtil.GetPath(ActivityKind);
     Suffix       = ActivityKindUtil.GetSuffix(Parameters);
 }
Example #17
0
 public static Activity?StartActivity(
     this ActivitySource activitySource,
     Type sourceType,
     string operationName,
     ActivityKind activityKind = ActivityKind.Internal)
 => activitySource.StartActivity(
     sourceType.GetOperationName(operationName),
     activityKind);
 public IActivity?StartActivity(
     string name,
     ActivityKind kind,
     string parentId,
     IEnumerable <KeyValuePair <string, object?> >?tags = null,
     IEnumerable <ActivityLink>?links = null,
     DateTimeOffset startTime         = default) =>
 Wrap(activitySource.StartActivity(name, kind, parentId, tags, links, startTime));
Example #19
0
 public ActivityPackage(ActivityKind activityKind, string clientSdk, Dictionary<string, string> parameters)
 {
     ActivityKind = activityKind;
     ClientSdk = clientSdk;
     Parameters = parameters;
     Path = ActivityKindUtil.GetPath(ActivityKind);
     Suffix = ActivityKindUtil.GetSuffix(Parameters);
 }
Example #20
0
        public void SetKindSimpleActivity(ActivityKind inputOutput)
        {
            var activity = new Activity("test-activity");

            activity.SetKind(inputOutput);

            Assert.Equal(inputOutput, activity.Kind);
        }
Example #21
0
 /// <summary>
 /// Construct a new <see cref="ActivityCreationOptions{T}"/> object.
 /// </summary>
 /// <param name="source">The trace Activity source<see cref="ActivitySource"/> used to request creating the Activity object.</param>
 /// <param name="name">The operation name of the Activity.</param>
 /// <param name="parent">The requested parent to create the Activity object with. The parent either be a parent Id represented as string or it can be a parent context <see cref="ActivityContext"/>.</param>
 /// <param name="kind"><see cref="ActivityKind"/> to create the Activity object with.</param>
 /// <param name="tags">Key-value pairs list for the tags to create the Activity object with.<see cref="ActivityContext"/></param>
 /// <param name="links"><see cref="ActivityLink"/> list to create the Activity object with.</param>
 internal ActivityCreationOptions(ActivitySource source, string name, T parent, ActivityKind kind, IEnumerable <KeyValuePair <string, string?> >?tags, IEnumerable <ActivityLink>?links)
 {
     Source = source;
     Name   = name;
     Kind   = kind;
     Parent = parent;
     Tags   = tags;
     Links  = links;
 }
        public static string ToString(this ActivityStatus status, ActivityKind kind)
        {
            if (status == ActivityStatus.Closed && kind.CanBeStarted())
            {
                return("Started");
            }

            return(status.ToString());
        }
 public InstrumentedWorker(string name, ActivityKind kind, Context context, List <KeyValuePair <string, object> > attributes, Action work, ActivitySource source)
 {
     this.activitySource = source;
     this.job            = work;
     this.attributes     = attributes;
     this.context        = context;
     this.activityKind   = kind;
     this.activityName   = name;
 }
        public void ActivitySourceAdapterSetsKind(ActivityKind kind)
        {
            var activity = new Activity("test");

            activity.Start();
            this.activitySourceAdapter.Start(activity, kind);

            Assert.Equal(kind, activity.Kind);
        }
        private static Activity StartRootActivity(
            this ActivitySource activitySource,
            string name,
            ActivityKind kind)
        {
            Activity.Current = null;

            return(activitySource.StartActivity(name, kind));
        }
 private void LogCancellation(ObjectKind objectKind, ActivityKind activityKind, Dictionary <string, object> data,
                              SPWeb spWeb,
                              ProcessActivityEventArgs args)
 {
     if (!string.IsNullOrEmpty(args.CancellationMessage))
     {
         _logger.Log(objectKind, activityKind, data, spWeb, args.CancellationMessage);
     }
 }
 public void Start(Activity activity, ActivityKind kind)
 {
     SetKindProperty(activity, kind);
     this.getRequestedDataAction(activity);
     if (activity.IsAllDataRequested)
     {
         activity.SetResource(this.resource);
         this.activityProcessor?.OnStart(activity);
     }
 }
Example #28
0
 public static string GetPath(ActivityKind activityKind)
 {
     switch (activityKind)
     {
         case ActivityKind.Session: return "/session";
         case ActivityKind.Event: return "/event";
         case ActivityKind.Click: return "/sdk_click";
         case ActivityKind.Attribution: return "/attribution";
         default: return null;
     }
 }
 private static void ActivityCloseChecks(int activityId, string name, ActivityKind activityKind, string SSKey, string requiredssKey, string actionName, bool skip)
 {
     if (!activityKind.CanBeClosed())
     {
         throw new InvalidOperationException("Activity '" + name + "' (#" + activityId + ") cannot be " + (skip ? "skipped" : "closed") + ".");
     }
     if (!requiredssKey.IsEmpty() && SSKey != requiredssKey)
     {
         throw new InvalidOperationException("Invalid use of activity '" + name + "' identifier in action " + actionName);
     }
 }
Example #30
0
        /// <summary>
        /// Helper method that populates span properties from http status code according
        /// to https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#status.
        /// </summary>
        /// <param name="kind">The span kind.</param>
        /// <param name="httpStatusCode">Http status code.</param>
        /// <returns>Resolved span <see cref="Status"/> for the Http status code.</returns>
        public static Status ResolveSpanStatusForHttpStatusCode(ActivityKind kind, int httpStatusCode)
        {
            var upperBound = kind == ActivityKind.Client ? 399 : 499;

            if (httpStatusCode >= 100 && httpStatusCode <= upperBound)
            {
                return(Status.Unset);
            }

            return(Status.Error);
        }
 public ProcessActivityEventArgs(ObjectKind objectKind, ActivityKind activityKind,
                                 Dictionary <string, object> data, SPWeb contextWeb,
                                 StreamManager streamManager, ThreadManager threadManager, ActivityManager activityManager)
 {
     _objectKind      = objectKind;
     _activityKind    = activityKind;
     _data            = data;
     _contextWeb      = contextWeb;
     _streamManager   = streamManager;
     _threadManager   = threadManager;
     _activityManager = activityManager;
 }
Example #32
0
        public void Start(Activity activity, ActivityKind kind, ActivitySource source)
        {
            OpenTelemetrySdkEventSource.Log.ActivityStarted(activity);

            SetActivitySourceProperty(activity, source);
            SetKindProperty(activity, kind);
            this.getRequestedDataAction(activity);
            if (activity.IsAllDataRequested)
            {
                this.activityProcessor?.OnStart(activity);
            }
        }
Example #33
0
 public static string ToString(ActivityKind activityKind)
 {
     return activityKind.ToString().ToLower();
 }