/// <summary> Set the name of the current transaction. Supports web applications only. </summary>
        ///
        /// <exception cref="ArgumentNullException"> Thrown when <paramref name="key"/> is null. </exception>
        ///
        /// <param name="category"> The category of this transaction, used to distinguish different types
        /// of transactions. Only the first 1000 characters are retained.  If null is passed, the
        /// category defaults to "Custom". </param>
        /// <param name="name">	    The name of the transaction starting with a forward slash.  example:
        /// /store/order Only the first 1000 characters are retained. </param>
        public void SetTransactionName(string category, string name)

        {
            name = name ?? throw new ArgumentNullException(nameof(name));

            using (new IgnoreWork())
            {
                // Default to "Custom" category if none provided
                if (string.IsNullOrEmpty(category?.Trim()))
                {
                    category = MetricNames.Custom;
                }

                // Get rid of any slashes
                category = category.Trim(TrimPathChar);
                name     = name.Trim(TrimPathChar);

                // Clamp the category and name to a predetermined length
                category = Clamper.ClampLength(category);
                name     = Clamper.ClampLength(name);

                var transaction = GetCurrentInternalTransaction();

                var currentTransactionName = transaction.CandidateTransactionName.CurrentTransactionName;

                var newTransactionName = currentTransactionName.IsWeb
                    ? TransactionName.ForWebTransaction(category, name)
                    : TransactionName.ForOtherTransaction(category, name);

                transaction.CandidateTransactionName.TrySet(newTransactionName, TransactionNamePriority.UserTransactionName);
            }
        }
Exemple #2
0
        private IInternalTransaction BuildTestTransaction(bool isWebTransaction = true, string uri = null, string referrerUri = null, string guid = null, int?statusCode = null, int?subStatusCode = null, string referrerCrossProcessId = null, string transactionCategory = "defaultTxCategory", string transactionName = "defaultTxName", ErrorData exceptionData = null, ErrorData customErrorData = null, bool isSynthetics = true, bool isCAT = true, bool includeUserAttributes = false, float priority = 0.5f, bool sampled = false, string traceId = "traceId")
        {
            var name = isWebTransaction
                ? TransactionName.ForWebTransaction(transactionCategory, transactionName)
                : TransactionName.ForOtherTransaction(transactionCategory, transactionName);

            var segments = Enumerable.Empty <Segment>();

            var placeholderMetadataBuilder = new TransactionMetadata();
            var placeholderMetadata        = placeholderMetadataBuilder.ConvertToImmutableMetadata();

            var immutableTransaction = new ImmutableTransaction(name, segments, placeholderMetadata, DateTime.UtcNow, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), guid, false, false, false, priority, sampled, traceId, null, _attribDefs);

            var internalTransaction = new Transaction(Mock.Create <IConfiguration>(), immutableTransaction.TransactionName, _timerFactory.StartNewTimer(), DateTime.UtcNow, Mock.Create <ICallStackManager>(), Mock.Create <IDatabaseService>(), priority, Mock.Create <IDatabaseStatementParser>(), Mock.Create <IDistributedTracePayloadHandler>(), Mock.Create <IErrorService>(), _attribDefs);

            var adaptiveSampler = Mock.Create <IAdaptiveSampler>();

            Mock.Arrange(() => adaptiveSampler.ComputeSampled(ref priority)).Returns(sampled);
            internalTransaction.SetSampled(adaptiveSampler);

            var transactionMetadata = internalTransaction.TransactionMetadata;

            PopulateTransactionMetadataBuilder(transactionMetadata, uri, statusCode, subStatusCode, referrerCrossProcessId, exceptionData, customErrorData, isSynthetics, isCAT, referrerUri, includeUserAttributes);

            return(internalTransaction);
        }
        private IInternalTransaction BuildTestTransaction(string pathHash = null, IEnumerable <string> alternatePathHashes = null, string referrerGuid = null, string referrerTripId = null, string referrerPathHash = null, string referrerCrossProcessId = null, string syntheticsResourceId = null, string syntheticsJobId = null, string syntheticsMonitorId = null, bool isSynthetics = false, bool hasCatResponseHeaders = false)
        {
            var name      = TransactionName.ForWebTransaction("foo", "bar");
            var startTime = DateTime.Now;
            var duration  = TimeSpan.FromSeconds(1);

            pathHash            = pathHash ?? "pathHash";
            referrerPathHash    = referrerPathHash ?? "referrerPathHash";
            alternatePathHashes = alternatePathHashes ?? Enumerable.Empty <string>();
            referrerGuid        = referrerGuid ?? Guid.NewGuid().ToString();
            ITimer timer = Mock.Create <ITimer>();

            Mock.Arrange(() => timer.Duration).Returns(duration);

            IAttributeDefinitionService attribDefSvc = new AttributeDefinitionService((f) => new AttributeDefinitions(f));

            var priority = 0.5f;
            var tx       = new Transaction(_configuration, name, timer, startTime, Mock.Create <ICallStackManager>(), Mock.Create <IDatabaseService>(), priority, Mock.Create <IDatabaseStatementParser>(), Mock.Create <IDistributedTracePayloadHandler>(), Mock.Create <IErrorService>(), attribDefSvc.AttributeDefs);

            tx.TransactionMetadata.SetCrossApplicationPathHash(pathHash);
            tx.TransactionMetadata.SetCrossApplicationReferrerTransactionGuid(referrerGuid);
            tx.TransactionMetadata.SetCrossApplicationReferrerTripId(referrerTripId);
            tx.TransactionMetadata.SetCrossApplicationReferrerPathHash(referrerPathHash);
            tx.TransactionMetadata.SetSyntheticsResourceId(syntheticsResourceId);
            tx.TransactionMetadata.SetSyntheticsJobId(syntheticsJobId);
            tx.TransactionMetadata.SetSyntheticsMonitorId(syntheticsMonitorId);
            tx.TransactionMetadata.SetCrossApplicationReferrerProcessId(referrerCrossProcessId);
            tx.TransactionMetadata.SetCrossApplicationResponseTimeInSeconds(ExpectedResponseTimeInSeconds);

            return(tx);
        }
Exemple #4
0
        private ImmutableTransaction BuildTestTransaction(string uri = null, string guid = null, int?statusCode = null, int?subStatusCode = null, IEnumerable <ErrorData> transactionExceptionDatas = null)
        {
            var transactionMetadata = new TransactionMetadata();

            if (uri != null)
            {
                transactionMetadata.SetUri(uri);
            }
            if (statusCode != null)
            {
                transactionMetadata.SetHttpResponseStatusCode(statusCode.Value, subStatusCode, _errorService);
            }
            if (transactionExceptionDatas != null)
            {
                transactionExceptionDatas.ForEach(data => transactionMetadata.TransactionErrorState.AddExceptionData(data));
            }

            var name     = TransactionName.ForWebTransaction("foo", "bar");
            var segments = Enumerable.Empty <Segment>();
            var metadata = transactionMetadata.ConvertToImmutableMetadata();

            guid = guid ?? Guid.NewGuid().ToString();

            var attribDefSvc = new AttributeDefinitionService((f) => new AttributeDefinitions(f));

            return(new ImmutableTransaction(name, segments, metadata, DateTime.UtcNow, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), guid, false, false, false, 0.5f, false, string.Empty, null, attribDefSvc.AttributeDefs));
        }
        public void BuiltTransactionName_BuildsOtherTransactionMetricName_IfOtherTransactionName()
        {
            var transactionName = TransactionName.ForOtherTransaction("foo", "bar");

            var builtName = _transactionMetricNameMaker.GetTransactionMetricName(transactionName);

            Assert.IsFalse(builtName.ShouldIgnore);
            Assert.AreEqual("OtherTransaction/foo/bar", builtName.PrefixedName);
        }
        public void BuiltTransactionName_BuildsMessageBrokerTransactionMetricNameWithoutQueueName_IfUnnamedMessageBrokerTransactionName()
        {
            var transactionName = TransactionName.ForBrokerTransaction(Extensions.Providers.Wrapper.MessageBrokerDestinationType.Queue, "bar", null);

            var builtName = _transactionMetricNameMaker.GetTransactionMetricName(transactionName);

            Assert.IsFalse(builtName.ShouldIgnore);
            Assert.AreEqual("OtherTransaction/Message/bar/Queue/Temp", builtName.PrefixedName);
        }
        public void BuiltTransactionName_BuildsCustomTransactionMetricName_IfCustomNonWebTransactionName()
        {
            var transactionName = TransactionName.ForCustomTransaction(false, "foo", 255);

            var builtName = _transactionMetricNameMaker.GetTransactionMetricName(transactionName);

            Assert.IsFalse(builtName.ShouldIgnore);
            Assert.AreEqual("OtherTransaction/Custom/foo", builtName.PrefixedName);
        }
Exemple #8
0
        private bool TransactionFilter(object obj)
        {
            var transaction = obj as Transaction;

            bool IsCantain  = transaction.Category.Name.ToUpper().StartsWith(TransactionName.ToUpper());
            bool IsTrueType = transaction.Type == TransactionType;

            return(IsCantain && IsTrueType);
        }
 public static string GetName(TransactionName name)
 {
     if (_names.Keys.Contains(name))
     {
         return(_names[name]);
     }
     else
     {
         return(null);
     }
 }
        public void BuiltTransactionName_RunsThroughMetricNameService()
        {
            Mock.Arrange(() => _metricNameService.RenameTransaction(Arg.IsAny <TransactionMetricName>()))
            .Returns(_ => new TransactionMetricName("WebTransaction", "NewName"));

            var transactionName = TransactionName.ForWebTransaction("foo", "bar");

            var builtName = _transactionMetricNameMaker.GetTransactionMetricName(transactionName);

            Assert.IsFalse(builtName.ShouldIgnore);
            Assert.AreEqual("WebTransaction/NewName", builtName.PrefixedName);
        }
        public void BuiltTransactionName_BuildsUriWebTransactionMetricName_IfUriTransactionName()
        {
            Mock.Arrange(() => _metricNameService.NormalizeUrl(Arg.IsAny <string>()))
            .Returns <string>((uri) => uri + "/normalized");

            var transactionName = TransactionName.ForUriTransaction("http://www.google.com/yomama/normalized");

            var builtName = _transactionMetricNameMaker.GetTransactionMetricName(transactionName);

            Assert.IsFalse(builtName.ShouldIgnore);
            Assert.AreEqual("WebTransaction/Uri/http://www.google.com/yomama/normalized", builtName.PrefixedName);
        }
Exemple #12
0
        private ImmutableTransaction BuildTestImmutableTransaction(bool isWebTransaction = true, string guid = null, float priority = 0.5f, bool sampled = false, string traceId = "traceId", bool isDTParticipant = false)
        {
            var name = TransactionName.ForWebTransaction("category", "name");

            var segments = Enumerable.Empty <Segment>();

            var placeholderMetadataBuilder = new TransactionMetadata();
            var placeholderMetadata        = placeholderMetadataBuilder.ConvertToImmutableMetadata();

            var immutableTransaction = new ImmutableTransaction(name, segments, placeholderMetadata, DateTime.UtcNow, TimeSpan.FromSeconds(10), TimeSpan.FromSeconds(10), guid, false, false, false, priority, sampled, traceId, BuildMockTracingState(isDTParticipant), _attribDefs);

            return(immutableTransaction);
        }
        public static IInternalTransaction CreateDefaultTransaction(bool isWebTransaction          = true, string uri     = null,
                                                                    string guid                    = null, int?statusCode = null, int?subStatusCode = null, string referrerCrossProcessId = null,
                                                                    string transactionCategory     = "defaultTxCategory", string transactionName = "defaultTxName", bool addSegment = true,
                                                                    IEnumerable <Segment> segments = null, bool sampled = false, IConfigurationService configurationService         = null, Exception exception = null)
        {
            var name = isWebTransaction
                ? TransactionName.ForWebTransaction(transactionCategory, transactionName)
                : TransactionName.ForOtherTransaction(transactionCategory, transactionName);

            segments = segments ?? Enumerable.Empty <Segment>();

            var placeholderMetadataBuilder = new TransactionMetadata();
            var placeholderMetadata        = placeholderMetadataBuilder.ConvertToImmutableMetadata();

            var immutableTransaction = new ImmutableTransaction(name, segments, placeholderMetadata, DateTime.Now, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), guid, false, false, false, 0.5f, false, string.Empty, null, _attribDefSvc.AttributeDefs);
            var priority             = 0.5f;

            var configuration = configurationService?.Configuration ?? GetDefaultConfiguration();
            var errorService  = configurationService != null ? new ErrorService(configurationService) : new ErrorService(Mock.Create <IConfigurationService>());

            var internalTransaction = new Transaction(configuration, immutableTransaction.TransactionName, Mock.Create <ITimer>(), DateTime.UtcNow, Mock.Create <ICallStackManager>(),
                                                      _databaseService, priority, Mock.Create <IDatabaseStatementParser>(), Mock.Create <IDistributedTracePayloadHandler>(),
                                                      errorService, _attribDefSvc.AttributeDefs);

            if (exception != null)
            {
                internalTransaction.NoticeError(exception);
            }

            if (segments.Any())
            {
                foreach (var segment in segments)
                {
                    internalTransaction.Add(segment);
                }
            }
            else if (addSegment)
            {
                internalTransaction.Add(SimpleSegmentDataTests.createSimpleSegmentBuilder(TimeSpan.Zero, TimeSpan.Zero, 0, null, new MethodCallData("typeName", "methodName", 1), Enumerable.Empty <KeyValuePair <string, object> >(), "MyMockedRootNode", false));
            }

            var adaptiveSampler = Mock.Create <IAdaptiveSampler>();

            Mock.Arrange(() => adaptiveSampler.ComputeSampled(ref priority)).Returns(sampled);
            internalTransaction.SetSampled(adaptiveSampler);
            var transactionMetadata = internalTransaction.TransactionMetadata;

            PopulateTransactionMetadataBuilder(transactionMetadata, errorService, uri, statusCode, subStatusCode, referrerCrossProcessId);

            return(internalTransaction);
        }
Exemple #14
0
        private ImmutableTransaction BuildTestTransaction(IEnumerable <Segment> segments = null, DateTime?startTime = null)
        {
            var transactionMetadata = new TransactionMetadata();

            var name = TransactionName.ForWebTransaction("foo", "bar");

            segments = segments ?? Enumerable.Empty <Segment>();
            var metadata = transactionMetadata.ConvertToImmutableMetadata();

            startTime = startTime ?? DateTime.Now;
            var duration = TimeSpan.FromSeconds(1);
            var guid     = Guid.NewGuid().ToString();

            return(new ImmutableTransaction(name, segments, metadata, startTime.Value, duration, duration, guid, false, false, false, 1.23f, false, string.Empty, null, _attribDefs));
        }
Exemple #15
0
        private ImmutableTransaction BuildTestTransaction(bool ignoreAutoBrowserMonitoring = false, bool ignoreAllBrowserMonitoring = false)
        {
            var name     = TransactionName.ForWebTransaction("foo", "bar");
            var segments = Enumerable.Empty <Segment>();
            var metadata = new TransactionMetadata().ConvertToImmutableMetadata();
            var guid     = Guid.NewGuid().ToString();

            _internalTransaction = Mock.Create <IInternalTransaction>();
            Mock.Arrange(() => _internalTransaction.IgnoreAllBrowserMonitoring).Returns(ignoreAllBrowserMonitoring);
            Mock.Arrange(() => _internalTransaction.IgnoreAutoBrowserMonitoring).Returns(ignoreAutoBrowserMonitoring);

            var attribDefSvc = new AttributeDefinitionService((f) => new AttributeDefinitions(f));

            return(new ImmutableTransaction(name, segments, metadata, DateTime.UtcNow, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), guid, ignoreAutoBrowserMonitoring, ignoreAllBrowserMonitoring, false, 0.5f, false, string.Empty, null, attribDefSvc.AttributeDefs));
        }
        public static ImmutableTransaction CreateTestTransactionWithSegments(IEnumerable <Segment> segments)
        {
            var uri = "sqlTrace/Uri";

            var transactionMetadata = new TransactionMetadata();

            transactionMetadata.SetUri(uri);

            var name     = TransactionName.ForWebTransaction("TxsWithSegments", "TxWithSegmentX");
            var metadata = transactionMetadata.ConvertToImmutableMetadata();
            var guid     = Guid.NewGuid().ToString();

            var transaction = new ImmutableTransaction(name, segments, metadata, DateTime.UtcNow, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1), guid, false, false, false, 0.5f, false, string.Empty, null, _attribDefSvc.AttributeDefs);

            return(transaction);
        }
Exemple #17
0
        public void TransactionGuidShouldBe16CharacterHex()
        {
            // Arrange
            var name             = TransactionName.ForWebTransaction("foo", "bar");
            var startTime        = DateTime.Now;
            var timer            = Mock.Create <ITimer>();
            var callStackManager = Mock.Create <ICallStackManager>();
            var sqlObfuscator    = Mock.Create <IDatabaseService>();
            var tx = new Transaction(_configuration, name, timer, startTime, callStackManager, sqlObfuscator, Priority, Mock.Create <IDatabaseStatementParser>(), _distributedTracePayloadHandler, _errorService, _attribDefs);

            // Assert
            Assert.That(tx.Guid, Is.Not.Null);

            const string guidFormatPattern = @"^[0-9A-Fa-f]{16}$";

            Assert.That(tx.Guid, Does.Match(guidFormatPattern));
        }
Exemple #18
0
        public void Finish_UpdatesTransactionPathHash()
        {
            var transaction = Mock.Create <IInternalTransaction>();

            Mock.Arrange(() => transaction.Finish()).Returns(true);

            var transactionName = TransactionName.ForWebTransaction("a", "b");

            Mock.Arrange(() => transaction.CandidateTransactionName.CurrentTransactionName).Returns(transactionName);
            Mock.Arrange(() => _transactionMetricNameMaker.GetTransactionMetricName(transactionName)).Returns(new TransactionMetricName("c", "d"));
            Mock.Arrange(() => transaction.TransactionMetadata.CrossApplicationReferrerPathHash).Returns("referrerPathHash");
            Mock.Arrange(() => _pathHashMaker.CalculatePathHash("c/d", "referrerPathHash")).Returns("pathHash");

            _transactionFinalizer.Finish(transaction);

            Mock.Assert(() => transaction.TransactionMetadata.SetCrossApplicationPathHash("pathHash"));
        }
        private static ITransactionName GetTransactionNameFromString(string transactionName)
        {
            var transactionNamePieces = transactionName.Split(MetricNames.PathSeparatorChar);

            if (transactionNamePieces.Length < 2)
            {
                throw new TestFailureException($"Invalid transaction name '{transactionName}'");
            }
            if (transactionNamePieces[0] != "WebTransaction")
            {
                throw new TestFailureException($"Don't know how to create a transaction name that starts with {transactionNamePieces[0]}");
            }

            var transactionNameCategory = transactionNamePieces[1];
            var transactionNameTail     = string.Join(MetricNames.PathSeparator, transactionNamePieces.Skip(2));

            return(TransactionName.ForWebTransaction(transactionNameCategory, transactionNameTail));
        }
Exemple #20
0
        public ITransaction CreateTransaction(bool isWeb, string category, string transactionDisplayName, bool doNotTrackAsUnitOfWork, Action wrapperOnCreate)
        {
            if (transactionDisplayName == null)
            {
                throw new ArgumentNullException("transactionDisplayName");
            }

            if (category == null)
            {
                throw new ArgumentNullException("category");
            }

            var initialTransactionName = isWeb
                ? TransactionName.ForWebTransaction(category, transactionDisplayName)
                : TransactionName.ForOtherTransaction(category, transactionDisplayName);

            return(CreateTransaction(initialTransactionName, doNotTrackAsUnitOfWork, wrapperOnCreate ?? NoOpWrapperOnCreate));
        }
        public void Test(TestCase testCase)
        {
            // ARRANGE
            SetUp(testCase);

            var transactionMetricName = GetTransactionMetricName(testCase.TransactionName);

            Mock.Arrange(() => _transactionMetricNameMaker.GetTransactionMetricName(Arg.IsAny <ITransactionName>()))
            .Returns(transactionMetricName);

            ITimer timer        = Mock.Create <ITimer>();
            var    responseTime = TimeSpan.FromMilliseconds(testCase.ApplicationTimeMilliseconds);

            Mock.Arrange(() => timer.Duration).Returns(responseTime);

            ITransactionName name   = TransactionName.ForWebTransaction(transactionMetricName.Prefix, transactionMetricName.UnPrefixedName);
            var priority            = 0.5f;
            IInternalTransaction tx = new Transaction(_configuration, name, timer, DateTime.UtcNow, Mock.Create <ICallStackManager>(), Mock.Create <IDatabaseService>(), priority, Mock.Create <IDatabaseStatementParser>(), Mock.Create <IDistributedTracePayloadHandler>(), Mock.Create <IErrorService>(), _attribDefs);

            tx.TransactionMetadata.SetQueueTime(TimeSpan.FromMilliseconds(testCase.QueueTimeMilliseconds));
            testCase.UserAttributes.ForEach(attr => tx.AddCustomAttribute(attr.Key, attr.Value));
            tx.TransactionMetadata.SetCrossApplicationReferrerTripId("");
            // ACT
            var browserMonitoringScript = _browserMonitoringScriptMaker.GetScript(tx);

            // ASSERT
            var extractedConfigurationDataJson = Regex.Match(browserMonitoringScript, @"NREUM.info = (\{.+\})").Groups[1].Value;
            var actualConfigurationData        = JsonConvert.DeserializeObject <ExpectedBrowserMonitoringConfigurationData>(extractedConfigurationDataJson);

            NrAssert.Multiple
            (
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.Agent, actualConfigurationData.Agent),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.ApplicationId, actualConfigurationData.ApplicationId),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.ApplicationTimeMilliseconds, actualConfigurationData.ApplicationTimeMilliseconds),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.Beacon, actualConfigurationData.Beacon),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.BrowserLicenseKey, actualConfigurationData.BrowserLicenseKey),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.ErrorBeacon, actualConfigurationData.ErrorBeacon),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.ObfuscatedTransactionName, actualConfigurationData.ObfuscatedTransactionName),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.ObfuscatedUserAttributes, actualConfigurationData.ObfuscatedUserAttributes),
                () => Assert.AreEqual(testCase.ExpectedConfigurationData.QueueTimeMilliseconds, actualConfigurationData.QueueTimeMilliseconds)
            );

            Teardown();
        }
Exemple #22
0
        public void OnTransactionFinalized_UpdatesTransactionPathHash()
        {
            var transaction       = BuildTestTransaction();
            var mockedTransaction = Mock.Create <IInternalTransaction>();

            Mock.Arrange(() => mockedTransaction.Finish()).Returns(true);
            Mock.Arrange(() => mockedTransaction.ConvertToImmutableTransaction()).Returns(transaction);

            var transactionName = TransactionName.ForWebTransaction("a", "b");

            Mock.Arrange(() => mockedTransaction.CandidateTransactionName.CurrentTransactionName).Returns(transactionName);
            Mock.Arrange(() => _transactionMetricNameMaker.GetTransactionMetricName(transactionName)).Returns(new TransactionMetricName("c", "d"));
            Mock.Arrange(() => mockedTransaction.TransactionMetadata.CrossApplicationReferrerPathHash).Returns("referrerPathHash");
            Mock.Arrange(() => _pathHashMaker.CalculatePathHash("c/d", "referrerPathHash")).Returns("pathHash");

            EventBus <TransactionFinalizedEvent> .Publish(new TransactionFinalizedEvent(mockedTransaction));

            Mock.Assert(() => mockedTransaction.TransactionMetadata.SetCrossApplicationPathHash("pathHash"));
        }
        private IInternalTransaction BuildTestTransaction(TimeSpan?queueTime = null, TimeSpan?applicationTime = null)
        {
            var name = TransactionName.ForWebTransaction("foo", "bar");
            var time = applicationTime ?? TimeSpan.FromSeconds(1);

            ITimer timer = Mock.Create <ITimer>();

            Mock.Arrange(() => timer.Duration).Returns(time);

            var priority = 0.5f;
            var tx       = new Transaction(_configuration, name, timer, DateTime.UtcNow, Mock.Create <ICallStackManager>(), Mock.Create <IDatabaseService>(), priority, Mock.Create <IDatabaseStatementParser>(), Mock.Create <IDistributedTracePayloadHandler>(), Mock.Create <IErrorService>(), _attribDefs);

            if (queueTime != null)
            {
                tx.TransactionMetadata.SetQueueTime(queueTime.Value);
            }

            return(tx);
        }
        private ImmutableTransaction BuildTestTransaction(DateTime?startTime = null, TimeSpan?duration = null, TimeSpan?responseTime = null, string uri = null, string guid = null)
        {
            var transactionMetadata = new TransactionMetadata();

            if (uri != null)
            {
                transactionMetadata.SetUri(uri);
            }

            var name     = TransactionName.ForWebTransaction("foo", "bar");
            var segments = Enumerable.Empty <Segment>();
            var metadata = transactionMetadata.ConvertToImmutableMetadata();

            startTime = startTime ?? DateTime.Now;
            duration  = duration ?? TimeSpan.FromSeconds(1);
            guid      = guid ?? Guid.NewGuid().ToString();

            return(new ImmutableTransaction(name, segments, metadata, startTime.Value, duration.Value, responseTime, guid, false, false, false, 1.2f, false, string.Empty, null, _attribDefs));
        }
Exemple #25
0
        public void multiple_sqlId_does_not_has_9_digits_number()
        {
            var transactionMetadata = new TransactionMetadata();
            var name     = TransactionName.ForWebTransaction("foo", "bar");
            var metadata = transactionMetadata.ConvertToImmutableMetadata();
            var duration = TimeSpan.FromSeconds(1);
            var guid     = Guid.NewGuid().ToString();
            var transactionMetricName = new TransactionMetricName("WebTransaction", "Name");
            var databaseService       = new DatabaseService(Mock.Create <ICacheStatsReporter>());
            var configurationService  = Mock.Create <IConfigurationService>();
            var attribDefSvc          = new AttributeDefinitionService((f) => new AttributeDefinitions(f));

            string[] queries = { Sql,                                                                                               "Select * from someTable", "Insert x into anotherTable",             "another random string",
                                 "1234567890!@#$%^&*()",                                                                            "fjdksalfjdkla;fjdla;",    "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
                                 "NNNNNNNNNNNUUUUUUUUUUUUUUUUTTTTTTTTTTTTTTTHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIINNNNNNNNNNNNNNNNNNNN",
                                 double.MaxValue.ToString() };
            var      sqlTraceMaker = new SqlTraceMaker(configurationService, attribDefSvc, databaseService);
            var      traceDatas    = new List <SqlTraceWireModel>();

            foreach (string query in queries)
            {
                var data    = new DatastoreSegmentData(databaseService, new ParsedSqlStatement(DatastoreVendor.MSSQL, null, null), query);
                var segment = new Segment(TransactionSegmentStateHelpers.GetItransactionSegmentState(), new MethodCallData("typeName", "methodName", 1));
                segment.SetSegmentData(data);

                var segments = new List <Segment>()
                {
                    new Segment(new TimeSpan(), TotalCallTime, segment, null)
                };
                var immutableTransaction = new ImmutableTransaction(name, segments, metadata, DateTime.Now, duration, duration, guid, false, false, false, 1.2f, false, string.Empty, null, _attribDefs);

                var sqlTraceData = sqlTraceMaker.TryGetSqlTrace(immutableTransaction, transactionMetricName, immutableTransaction.Segments.FirstOrDefault());
                traceDatas.Add(sqlTraceData);
            }

            foreach (SqlTraceWireModel traceData in traceDatas)
            {
                var numberOfDigits = Math.Floor(Math.Log10(traceData.SqlId) + 1);
                Assert.IsTrue(numberOfDigits != 9);
            }
        }
Exemple #26
0
        public int Add_Segment_When_Segment_Count_Considers_Configuration_TransactionTracerMaxSegments(int transactionTracerMaxSegmentThreashold, int segmentCount)
        {
            Mock.Arrange(() => _configuration.TransactionTracerMaxSegments).Returns(transactionTracerMaxSegmentThreashold);

            var transactionName = TransactionName.ForWebTransaction("WebTransaction", "Test");


            var transaction = new Transaction(_configuration, transactionName, Mock.Create <ITimer>(), DateTime.UtcNow, Mock.Create <ICallStackManager>(), _databaseService, Priority, Mock.Create <IDatabaseStatementParser>(), _distributedTracePayloadHandler, _errorService, _attribDefs);

            for (int i = 0; i < segmentCount; i++)
            {
                var segment = new Segment(transaction, new MethodCallData("foo" + i, "bar" + i, 1));
                segment.SetSegmentData(new ExternalSegmentData(new Uri("http://www.test.com"), "method"));

                segment.End();
            }

            var immutableTransaction = transaction.ConvertToImmutableTransaction();

            return(immutableTransaction.Segments.Count());
        }
Exemple #27
0
 public SaveTransactionStatement(TransactionName name)
 {
     Name = name;
 }
Exemple #28
0
 private ITransaction CreateTransaction(TransactionName transactionName, bool doNotTrackAsUnitOfWork, Action wrapperOnCreate)
 {
     return(_transactionService.GetOrCreateInternalTransaction(transactionName, wrapperOnCreate, doNotTrackAsUnitOfWork));
 }
        public ActionResult Upload(int?TypeTran)
        {
            int typetran = TypeTran.HasValue ? TypeTran.Value : 0;
            IPublishInvoiceService _PubIn = IoC.Resolve <IPublishInvoiceService>();
            Company     currentCom        = ((EInvoiceContext)FXContext.Current).CurrentCompany;
            UploadModel model             = new UploadModel();

            model.Month = DateTime.Now.Month;
            model.Year  = DateTime.Now.Year;
            if (DateTime.Now.Month < 12)
            {
                model.Years = new List <int>()
                {
                    DateTime.Now.Year - 1, DateTime.Now.Year
                }
            }
            ;
            else
            {
                model.Years = new List <int>()
                {
                    DateTime.Now.Year
                }
            };
            int m = DateTime.Now.Month;

            model.Months = new List <int>();
            while (m > 0)
            {
                model.Months.Add(m);
                m--;
            }
            model.TypeTrans = typetran;
            model.TypeLabel = TransactionName.NameByType(typetran);
            try
            {
                //lstpattern
                List <string> lstpattern = _PubIn.LstByPattern(currentCom.id, 1);
                if (lstpattern.Count == 0)
                {
                    Messages.AddErrorFlashMessage(Resources.Message.MInv_SMesNoPubAccess);
                    return(RedirectToAction("Index", new { TypeTran = model.TypeTrans }));
                }
                Dictionary <string, string> dicPattern = new Dictionary <string, string>();
                foreach (string str in lstpattern)
                {
                    dicPattern.Add(str, GetResxNameByValue(str));
                }

                model.Listpattern = new SelectList(dicPattern, "key", "value");
                //lstserial
                List <string> oserial = (from s in _PubIn.Query where ((s.ComId == currentCom.id) && (s.Status == 1 || s.Status == 2)) select s.InvSerial).ToList <string>();
                model.Listserial = new SelectList(oserial);
            }
            catch
            {
                Messages.AddErrorFlashMessage(Resources.Message.Key_MesReqConfig);
                return(RedirectToAction("Index", new { TypeTran = model.TypeTrans }));
            }
            return(View(model));
        }
Exemple #30
0
 public ITransaction CreateTransaction(MessageBrokerDestinationType destinationType, string brokerVendorName, string destination, Action wrapperOnCreate)
 {
     return(CreateTransaction(TransactionName.ForBrokerTransaction(destinationType, brokerVendorName, destination), true, wrapperOnCreate ?? NoOpWrapperOnCreate));
 }