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 
Exemple #2
0
    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'
            })