private async Task <BuildContentOutput> DoBuildContentForMessageAsync(Message message, QueueInfo queueInfo)
        {
            ParamCollection contextParams = message.CustomData != null ? new ParamCollection(message.CustomData) : new ParamCollection();

            contextParams[Constants.EntityIdentifier] = message.EntityIdentifiers[0].ToString();

            BuildRequest buildRequest = new BuildRequest
            {
                ActionName   = message.ActionName,
                SharedObject = new Dictionary <string, object> {
                    { Constants.BuildMessage, message }
                },
                EntityIdentifier = message.EntityIdentifiers[0],
                ContextParams    = contextParams,
                TrackingId       = message.TrackingId.ToString(),
                IsIncremental    = message.IsIncremental,
                QueueInfo        = queueInfo,
            };

            string apiName = "Pipeline." + BuildActionMapper.GetPipelineName(buildRequest.ActionName);

            Dictionary <string, object> requestAbstraction = new Dictionary <string, object>
            {
                { "buildRequest", buildRequest.ToString() }
            };

            using (var scope = new BackendBuildApiTraceScope(apiName, BuildApiCategory.BuildBackend, requestAbstraction))
            {
                return(await scope.Run(
                           DoBuildContentForBuildRequestAsync(buildRequest),
                           Utility.ToJsonString,
                           GetBuildContentStatusCode));
            }
        }
        public void ToStringSerialisesDefaultValues()
        {
            BuildRequest request  = new BuildRequest();
            string       actual   = request.ToString();
            string       expected = string.Format(System.Globalization.CultureInfo.CurrentCulture, "<buildMessage xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
                                                  "timestamp=\"{2:yyyy-MM-ddTHH:mm:ss.FFFFFFFzzz}\" identifier=\"{0}\" source=\"{1}\" />",
                                                  request.Identifier,
                                                  request.SourceName,
                                                  request.Timestamp);

            Assert.AreEqual(expected, actual);
        }
        public void ToStringSerialisesAllValues()
        {
            BuildRequest request = new BuildRequest();

            request.Identifier   = "identifier";
            request.ServerName   = "serverName";
            request.SessionToken = "sessionToken";
            request.SourceName   = "sourceName";
            request.Timestamp    = DateTime.Now;
            request.BuildName    = "Build#1";
            string actual   = request.ToString();
            string expected = string.Format(System.Globalization.CultureInfo.CurrentCulture, "<buildMessage xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
                                            "timestamp=\"{4:yyyy-MM-ddTHH:mm:ss.FFFFFFFzzz}\" identifier=\"{0}\" server=\"{1}\" source=\"{2}\" session=\"{3}\" build=\"Build#1\" />",
                                            request.Identifier,
                                            request.ServerName,
                                            request.SourceName,
                                            request.SessionToken,
                                            request.Timestamp);

            Assert.AreEqual(expected, actual);
        }