def _get_response_header_value(self, name, value, regex=None, deobfuscate=False): if deobfuscate : value = obfuscator.deobfuscate(value) if regex : match = re.compile(regex).search(value) if match : return match.group(0) else : raise Exception('regex failed to match {} response header: {}'.format(name, value)) else : return value
def test_simple_activemq(self): self.assertTrue( self.test_env.tomcat.get_path_and_shutdown( '/java_test_webapp/JMSServlet', provider='activemq')) self.assertInstrumentation({'jms-1.1': True, 'servlet-2.4':True}) self.check_message_properties_present() self.assertIterAttributes( self.test_env.collector.get_scoped_metrics('OtherTransaction/Message/JMS/Queue/Named/AitTestQueue'), { 'name' : 'Java/org.apache.activemq.ActiveMQMessageProducer/send', 'count' : 1 }, { 'name' : 'MessageBroker/JMS/Queue/Consume/Named/AitTestQueue', 'count' : 1 }, { 'name' : 'MessageBroker/JMS/Queue/Produce/Temp', 'count' : 1 }) self.assertIterAttributes( self.test_env.collector.get_scoped_metrics('WebTransaction/Servlet/JMSServlet'), { 'name' : 'Java/javax.servlet.ServletRequestListener/requestInitialized', 'count' : 1 }, { 'name' : 'MessageBroker/JMS/Queue/Consume/Temp', 'count' : 1 }, { 'name' : 'MessageBroker/JMS/Queue/Produce/Named/AitTestQueue', 'count' : 1 }, { 'name' : 'Java/org.apache.activemq.ActiveMQMessageProducer/send', 'count' : 1 }, { 'name' : 'Servlet/com.nr.test.servlet.JMSServlet/service', 'count' : 1 }, { 'name' : 'Java/com.nr.test.servlet.JMSServlet/init', 'count' : 2 }) # Validate Front-end CAT Metrics webTT = self.test_env.collector.get_transaction_traces('WebTransaction/Servlet/JMSServlet')[0] self.assertIsNotNone(webTT.guid) self.assertIsNone(webTT.custom_params.get('referring_transaction_guid')) self.assertIsNone(webTT.custom_params.get('client_cross_process_id')) self.assertEqual('/java_test_webapp/JMSServlet', webTT.uri) self.assertIsNotNone(webTT.segments[6].params.get('transaction_guid')) self.assertIterAttributes( webTT.segments, { 'metric_name' : 'Java/javax.servlet.ServletRequestListener/requestInitialized', 'class_name' : 'javax.servlet.ServletRequestListener', 'method_name' : 'requestInitialized' }, { 'metric_name' : 'Java/com.nr.test.servlet.JMSServlet/init', 'class_name' : 'com.nr.test.servlet.TestServlet', 'method_name' : 'init' }, { 'metric_name' : 'Java/com.nr.test.servlet.JMSServlet/init', 'class_name' : 'javax.servlet.GenericServlet', 'method_name' : 'init' }, { 'metric_name' : 'Servlet/com.nr.test.servlet.JMSServlet/service', 'class_name' : 'javax.servlet.http.HttpServlet', 'method_name' : 'service' }, { 'metric_name' : 'MessageBroker/JMS/Queue/Produce/Named/AitTestQueue', 'class_name' : 'org.apache.activemq.ActiveMQMessageProducerSupport', 'method_name' : 'send' }, { 'metric_name' : 'Java/org.apache.activemq.ActiveMQMessageProducer/send', 'class_name' : 'org.apache.activemq.ActiveMQMessageProducer', 'method_name' : 'send' }, { 'metric_name' : 'MessageBroker/JMS/Queue/Consume/Temp', 'class_name' : 'org.apache.activemq.ActiveMQMessageConsumer', 'method_name' : 'receive' }) # Validate Back-end CAT Metrics otherTT = self.test_env.collector.get_transaction_traces('OtherTransaction/Message/JMS/Queue/Named/AitTestQueue')[0] self.assertIsNotNone(otherTT.guid) self.assertIsNotNone(otherTT.request_params.get('NewRelicID')) otherReqTxObf = otherTT.request_params.get('NewRelicTransaction') otherReqTx = obfuscator.deobfuscate(otherReqTxObf) self.assertTrue(webTT.guid in otherReqTx) # Incoming header should contain front-end's guid otherReferrer = otherTT.custom_params.get('referring_transaction_guid') self.assertEqual(webTT.guid, otherReferrer) # Back-end should reference the front-end's guid self.assertIsNotNone(otherTT.custom_params.get('client_cross_process_id')) self.assertEqual('Java/com.nr.test.servlet.JMSServlet$Server/onMessage', otherTT.uri) self.assertIterAttributes( otherTT.segments, { 'metric_name' : 'MessageBroker/JMS/Queue/Consume/Named/AitTestQueue', 'class_name' : 'com.nr.test.servlet.JMSServlet$Server', 'method_name' : 'onMessage' }, { 'metric_name' : 'MessageBroker/JMS/Queue/Produce/Temp', 'class_name' : 'org.apache.activemq.ActiveMQMessageProducerSupport', 'method_name' : 'send' }, { 'metric_name' : 'Java/org.apache.activemq.ActiveMQMessageProducer/send', 'class_name' : 'org.apache.activemq.ActiveMQMessageProducer', 'method_name' : 'send' })