/// <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); } }
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); }
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); }
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); }
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); }
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)); }
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); }
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)); }
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)); }
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(); }
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)); }
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); } }
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()); }
public SaveTransactionStatement(TransactionName name) { Name = name; }
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)); }
public ITransaction CreateTransaction(MessageBrokerDestinationType destinationType, string brokerVendorName, string destination, Action wrapperOnCreate) { return(CreateTransaction(TransactionName.ForBrokerTransaction(destinationType, brokerVendorName, destination), true, wrapperOnCreate ?? NoOpWrapperOnCreate)); }