示例#1
0
 def jtl_parse(self):
     response_time = []
     time_stamp = []
     start_times = []
     error_count = []
     threads = []
     lables = []
     parser = create_parser('10-overall-summary.csv')
     for sample in parser.itersamples():
         response_time.append(Parse.t2s(str(sample.elapsed_time)))
         time_stamp.append(sample.timestamp)
         lables.append(sample.label)
         threads.append(sample.group_threads)
         start_times.append(sample.timestamp - sample.elapsed_time)
         error_count.append((1, 0)[sample.success == True])
     data = {
         "response_time": response_time,
         "time_stamp": time_stamp,
         "lables": lables,
         "start_time": start_times,
         "error": error_count
     }
     obj = pd.DataFrame(data)
     temp = obj.groupby("lables")
     error = temp['error'].sum()
     test_time = temp['time_stamp'].max() - temp['start_time'].min()
     throughout = temp['time_stamp'].count() / test_time.astype(
         'timedelta64[ms]') * 1000
     result = temp['response_time'].agg(['min', 'max', 'mean', 'count'])
     result = DataFrame(
         result,
         columns=['min', 'max', 'mean', 'count', 'throughout', 'error'])
     result['throughout'] = throughout
     result['error'] = error
     print result
    def test_csv(self):
        """Test CSV parser.

        """
        samples_filename = os.path.join(self.tests_dir,
                                        'samples/delimiter.csv')
        parser = jtl.create_parser(
            samples_filename,
            delimiter='|',
            fieldnames=('timeStamp', 'elapsed', 'label', 'responseCode',
                        'responseMessage', 'threadName', 'dataType', 'success',
                        'bytes', 'Latency'))
        samples = list(parser.itersamples())
        self.assertEqual(len(samples), 1)

        test_sample = jtl.Sample(
            all_threads=0,
            assertion_results=(),
            bytes_received=64653,
            children=(),
            cookies={},
            data_encoding='',
            data_type='text',
            elapsed_time=timedelta(0, 1, 336000),
            error_count=0,
            group_threads=0,
            hostname='',
            idle_time=timedelta(0),
            label='"Home" page',
            latency_time=timedelta(0, 0, 851000),
            method='',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='OK',
            sample_count=0,
            success=True,
            tag_name='',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 8, 23, 20, 42, 8, 465000),
            url='',
        )
        self.assertEqual(samples[0], test_sample)
示例#3
0
    def test_csv(self):
        """Test CSV parser.

        """
        samples_filename = os.path.join(self.tests_dir,
                'samples/fieldnames.csv')
        parser = jtl.create_parser(samples_filename, fieldnames=(
            'timeStamp', 'elapsed', 'label', 'responseCode', 'responseMessage',
            'threadName', 'dataType', 'success', 'bytes', 'Latency'))
        samples = list(parser.itersamples())
        self.assertEqual(len(samples), 1)

        test_sample = jtl.Sample(
                all_threads=0,
                assertion_results=(),
                bytes_received=64653,
                children=(),
                cookies={},
                data_encoding='',
                data_type='text',
                elapsed_time=timedelta(0, 1, 336000),
                error_count=0,
                group_threads=0,
                hostname='',
                idle_time=timedelta(0),
                label='"Home" page',
                latency_time=timedelta(0, 0, 851000),
                method='',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='OK',
                sample_count=0,
                success=True,
                tag_name='',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 8, 23, 20, 42, 8, 465000),
                url='',
                )
        self.assertEqual(samples[0], test_sample)
    def test_csv(self):
        """Test CSV parser.

        """
        samples_filename = os.path.join(self.tests_dir,
                'samples/minimized.csv')
        parser = jtl.create_parser(samples_filename)
        samples = list(parser.itersamples())
        self.assertEqual(len(samples), 1)

        test_sample = jtl.Sample(
                all_threads=0,
                assertion_results=(),
                bytes_received=0,
                children=(),
                cookies={},
                data_encoding='',
                data_type='',
                elapsed_time=timedelta(0),
                error_count=0,
                group_threads=0,
                hostname='',
                idle_time=timedelta(0),
                label='',
                latency_time=timedelta(0),
                method='',
                query_string='',
                request_headers={},
                response_code='',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='',
                sample_count=0,
                success=False,
                tag_name='',
                thread_name='',
                timestamp=datetime(2012, 11, 13, 0, 32, 16, 306000),
                url='',
                )
        self.assertEqual(samples[0], test_sample)
示例#5
0
def jtl_to_json_summary(build_name, passed, filename):
    parser = create_parser(filename)
    samples = 0
    not_ok_resp_code = 0
    successes = 0
    sample_count_sum = 0
    response_time = []

    for sample in parser.itersamples():
        samples += 1
        sample_count_sum += sample.sample_count

        response_time.append(sample.elapsed_time.total_seconds() * 1000)
        try:
            if int(sample.response_code) != 200:
                not_ok_resp_code += 1
        except Exception:
            not_ok_resp_code += 1

        if sample.success:
            successes += 1

    avg_response_time = functools.reduce(lambda x, y: x + y,
                                         response_time) / len(response_time)
    min_response_time = min(response_time)
    max_response_time = max(response_time)

    doc = {
        "samples": samples,
        "successes": successes,
        "invalidRespCode": not_ok_resp_code,
        "sampleCountSum": sample_count_sum,
        "avgRespTime": avg_response_time,
        "minRespTime": min_response_time,
        "maxRespTime": max_response_time,
        "passed": passed,
        "buildName": build_name,
    }
    return doc
示例#6
0
    def test_csv(self):
        """Test CSV parser.

        """
        samples_filename = os.path.join(self.tests_dir, 'samples/main.csv')
        parser = jtl.create_parser(samples_filename)
        samples = list(parser.itersamples())
        self.assertEqual(len(samples), 3)

        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(),
            bytes_received=64366,
            children=(),
            cookies={},
            data_encoding='utf-8',
            data_type='text',
            elapsed_time=timedelta(0, 1, 152000),
            error_count=0,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='"Home" page',
            latency_time=timedelta(0, 0, 755000),
            method='',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='OK',
            sample_count=1,
            success=True,
            tag_name='',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 8, 23, 21, 53, 59, 670000),
            url='http://www.yahoo.com/',
        )
        self.assertEqual(samples[0], test_sample)

        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(jtl.AssertionResult(
                error=False,
                failure=True,
                failure_message='Test failed: code expected to equal '
                '/\n\n****** received  : [[[404]]]\n\n****** '
                'comparison: [[[200]]]\n\n/',
                name='',
            ), ),
            bytes_received=2977,
            children=(),
            cookies={},
            data_encoding='utf-8',
            data_type='text',
            elapsed_time=timedelta(0, 0, 109000),
            error_count=1,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='fourth sample, last sample',
            latency_time=timedelta(0, 0, 109000),
            method='',
            query_string='',
            request_headers={},
            response_code='404',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='Not Found',
            sample_count=1,
            success=False,
            tag_name='',
            thread_name='Thread Group 1-2',
            timestamp=datetime(2012, 8, 23, 21, 54, 18, 365000),
            url='http://www.yahoo.com/some_page',
        )
        self.assertEqual(samples[1], test_sample)

        test_sample = jtl.Sample(
            all_threads=1,
            assertion_results=(),
            bytes_received=21247,
            children=(),
            cookies={},
            data_encoding='UTF-8',
            data_type='text',
            elapsed_time=timedelta(0, 0, 882000),
            error_count=0,
            group_threads=1,
            hostname='hppc',
            idle_time=timedelta(0),
            label='/search/images;_ylt=A0oG7lg2AvZPowgACQNXNyoA',
            latency_time=timedelta(0, 0, 704000),
            method='',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='OK',
            sample_count=1,
            success=True,
            tag_name='',
            thread_name='Thread Group 1-2',
            timestamp=datetime(2012, 8, 23, 21, 54, 33, 601000),
            url='http://images.search.yahoo.com/search/images;'
            '_ylt=A0oG7lg2AvZPowgACQNXNyoA?ei=UTF-8&p=potato'
            '&fr2=tab-web&fr=yfp-t-701',
        )
        self.assertEqual(samples[2], test_sample)
示例#7
0
    def test_xml(self):
        """Test XML parser.

        """
        samples_filename = os.path.join(self.tests_dir, 'samples/main.xml')
        parser = jtl.create_parser(samples_filename)
        samples = list(parser.itersamples())
        self.assertEqual(len(samples), 5)

        sample = samples[0]
        fields_to_replace = {}
        self.assertEqual(len(sample.request_headers), 5)
        assert 'Accept-Language' in sample.request_headers
        self.assertEqual(sample.request_headers['Accept-Language'],
                         'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3')
        fields_to_replace['request_headers'] = {}
        self.assertEqual(sample.response_headers['status_line'],
                         'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 12)
        assert 'Server' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Server'],
                         'YTS/1.20.10')
        fields_to_replace['response_headers'] = {
            'status_line': '',
            'headers': {}
        }
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
            ),
            bytes_received=64189,
            children=(),
            cookies={},
            data_encoding='utf-8',
            data_type='text',
            elapsed_time=timedelta(0, 1, 350000),
            error_count=0,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='"Home" page',
            latency_time=timedelta(0, 0, 802000),
            method='GET',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='OK',
            sample_count=1,
            success=True,
            tag_name='httpSample',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 8, 23, 21, 49, 21, 246000),
            url='http://www.yahoo.com/',
        )
        self.assertEqual(sample, test_sample)

        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(),
            bytes_received=64189,
            children=(),
            cookies={},
            data_encoding='',
            data_type='',
            elapsed_time=timedelta(0, 1, 359000),
            error_count=0,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='Transaction Controller',
            latency_time=timedelta(0, 0, 802000),
            method='',
            query_string='',
            request_headers={},
            response_code='',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='Number of samples in transaction : 1, '
            'number of failing samples : 0',
            sample_count=1,
            success=False,
            tag_name='sample',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 8, 23, 21, 49, 30, 542000),
            url='',
        )
        self.assertEqual(samples[1], test_sample)

        sample = samples[2]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 7)
        assert 'MSC' in sample.cookies
        self.assertEqual(sample.cookies['MSC'], 't=1345758579X')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 5)
        assert 'Accept-Encoding' in sample.request_headers
        self.assertEqual(sample.request_headers['Accept-Encoding'],
                         'gzip, deflate')
        fields_to_replace['request_headers'] = {}
        hash = hashlib.md5(sample.response_data.encode('utf-8')).hexdigest()
        self.assertEqual(hash, '1d6165ad17ce4278351db7c3993c097f')
        fields_to_replace['response_data'] = ''
        self.assertEqual(sample.response_headers['status_line'],
                         'HTTP/1.1 404 Not Found')
        self.assertEqual(len(sample.response_headers['headers']), 9)
        assert 'Content-Type' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Content-Type'],
                         'text/html; charset=utf-8')
        fields_to_replace['response_headers'] = {
            'status_line': '',
            'headers': {}
        }
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(
                jtl.AssertionResult(
                    error=False,
                    failure=True,
                    failure_message='Test failed: code expected to equal '
                    '/\n\n****** received  : [[[404]]]\n\n****** '
                    'comparison: [[[200]]]\n\n/',
                    name='Response Assertion',
                ),
                jtl.AssertionResult(
                    error=False,
                    failure=True,
                    failure_message='Test failed: message expected to '
                    'equal /\n\n****** received  : [[[Not Found]]]'
                    '\n\n****** comparison: [[[OK       ]]]\n\n/',
                    name='Response Assertion',
                ),
            ),
            bytes_received=2977,
            children=(),
            cookies={},
            data_encoding='utf-8',
            data_type='text',
            elapsed_time=timedelta(0, 0, 137000),
            error_count=1,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='fourth sample, last sample',
            latency_time=timedelta(0, 0, 137000),
            method='GET',
            query_string='',
            request_headers={},
            response_code='404',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='Not Found',
            sample_count=1,
            success=False,
            tag_name='httpSample',
            thread_name='Thread Group 1-2',
            timestamp=datetime(2012, 8, 23, 21, 49, 40, 553000),
            url='http://www.yahoo.com/some_page',
        )
        self.assertEqual(sample, test_sample)

        sample = samples[3]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 4)
        assert 'B' in sample.cookies
        self.assertEqual(sample.cookies['B'], '5vdh93l83d9cc&b=3&s=bs')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 6)
        assert 'Referer' in sample.request_headers
        self.assertEqual(
            sample.request_headers['Referer'],
            'http://search.yahoo.com/search;_ylt=A03uoRrUAfZPg18BCCmbvZx4'
            '?p=potato&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-701')
        fields_to_replace['request_headers'] = {}
        self.assertEqual(sample.response_headers['status_line'],
                         'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 9)
        assert 'Date' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Date'],
                         'Thu, 23 Aug 2012 21:50:06 GMT')
        fields_to_replace['response_headers'] = {
            'status_line': '',
            'headers': {}
        }
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
            all_threads=1,
            assertion_results=(
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
            ),
            bytes_received=71256,
            children=(),
            cookies={},
            data_encoding='UTF-8',
            data_type='text',
            elapsed_time=timedelta(0, 3, 571000),
            error_count=0,
            group_threads=1,
            hostname='hppc',
            idle_time=timedelta(0),
            label='/search/images;_ylt=A0oG7lg2AvZPowgACQNXNyoA',
            latency_time=timedelta(0, 0, 790000),
            method='GET',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='OK',
            sample_count=1,
            success=True,
            tag_name='httpSample',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 8, 23, 21, 50, 4, 17000),
            url='http://images.search.yahoo.com/search/images;'
            '_ylt=A0oG7lg2AvZPowgACQNXNyoA?ei=UTF-8&p=potato'
            '&fr2=tab-web&fr=yfp-t-701',
        )
        self.assertEqual(sample, test_sample)

        self.assertEqual(len(samples[4].children), 2)

        sample = samples[4].children[0]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 3)
        assert 'CH' in sample.cookies
        self.assertEqual(
            sample.cookies['CH'],
            'AgBQnmwQACQFEAAhVBAABrQQABfREAApVRAAIxwQACxvEAA17xAAMJkQABGv')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 6)
        assert 'Accept-Encoding' in sample.request_headers
        self.assertEqual(sample.request_headers['Accept-Encoding'],
                         'gzip, deflate')
        fields_to_replace['request_headers'] = {}
        hash = hashlib.md5(sample.response_data.encode('utf-8')).hexdigest()
        self.assertEqual(hash, 'bfc949a307bf6b89f1e74f343e313eeb')
        fields_to_replace['response_data'] = ''
        self.assertEqual(sample.response_headers['status_line'],
                         'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 10)
        assert 'Keep-Alive' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Keep-Alive'],
                         'timeout=60, max=100')
        fields_to_replace['response_headers'] = {
            'status_line': '',
            'headers': {}
        }
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
            ),
            bytes_received=22073,
            children=(),
            cookies={},
            data_encoding='UTF-8',
            data_type='text',
            elapsed_time=timedelta(0, 1, 401000),
            error_count=0,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='/search;_ylt=A03uoRrUAfZPg18BCCmbvZx4',
            latency_time=timedelta(0, 0, 604000),
            method='GET',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'status_line': '',
                'headers': {}
            },
            response_message='OK',
            sample_count=1,
            success=True,
            tag_name='httpSample',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 11, 10, 15, 2, 27, 692000),
            url='http://search.yahoo.com/search;_ylt=A03uoRrUAfZPg18BCC'
            'mbvZx4?p=potato&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-701',
        )
        self.assertEqual(sample, test_sample)

        sample = samples[4].children[1]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 4)
        assert 'sSN' in sample.cookies
        self.assertEqual(
            sample.cookies['sSN'], 'Xj.um6U2wWEq3sFr6VoZpaSDPhht'
            'y3fGDJ3cvewGeS9SkHOCAXsQjZwDs.T51.GdechtOO0X3bfVvZ6PGRbWhQ--')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 6)
        assert 'User-Agent' in sample.request_headers
        self.assertEqual(
            sample.request_headers['User-Agent'],
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 '
            'Firefox/13.0.1')
        fields_to_replace['request_headers'] = {}
        hash = hashlib.md5(sample.response_data.encode('utf-8')).hexdigest()
        self.assertEqual(hash, '30ac686ee464f6cb415a616c2013e63f')
        fields_to_replace['response_data'] = ''
        self.assertEqual(sample.response_headers['status_line'],
                         'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 10)
        assert 'Set-Cookie' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Set-Cookie'],
                         'jr=1; path=/')
        fields_to_replace['response_headers'] = {
            'status_line': '',
            'headers': {}
        }
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
            ),
            bytes_received=21759,
            children=(),
            cookies={},
            data_encoding='UTF-8',
            data_type='text',
            elapsed_time=timedelta(0, 1, 364000),
            error_count=0,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='/search/images;_ylt=A0oG7lg2AvZPowgACQNXNyoA',
            latency_time=timedelta(0, 1, 36000),
            method='GET',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'headers': {},
                'status_line': ''
            },
            response_message='OK',
            sample_count=1,
            success=True,
            tag_name='httpSample',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 11, 10, 15, 2, 29, 96000),
            url='http://images.search.yahoo.com/search/images;_ylt=A0oG7'
            'lg2AvZPowgACQNXNyoA?ei=UTF-8&p=potato&fr2=tab-web&fr=yf'
            'p-t-701',
        )
        self.assertEqual(sample, test_sample)

        sample = samples[4]._replace(children=())
        test_sample = jtl.Sample(
            all_threads=2,
            assertion_results=(
                jtl.AssertionResult(
                    error=False,
                    failure=False,
                    failure_message='',
                    name='Response Assertion',
                ),
                jtl.AssertionResult(
                    error=False,
                    failure=True,
                    failure_message='Test failed: message expected to '
                    'equal /\n\n****** received  : [[[Number of '
                    'samples in transaction : 2, number of failing '
                    'samples : 0]]]\n\n****** comparison: [[[OK                                                                 ]]]'
                    '\n\n/',
                    name='Response Assertion',
                ),
            ),
            bytes_received=43832,
            children=(),
            cookies={},
            data_encoding='',
            data_type='',
            elapsed_time=timedelta(0, 2, 769000),
            error_count=1,
            group_threads=2,
            hostname='hppc',
            idle_time=timedelta(0),
            label='Transaction Controller Search',
            latency_time=timedelta(0),
            method='',
            query_string='',
            request_headers={},
            response_code='200',
            response_data='',
            response_filename='',
            response_headers={
                'headers': {},
                'status_line': ''
            },
            response_message='Number of samples in transaction : 2, '
            'number of failing samples : 0',
            sample_count=1,
            success=False,
            tag_name='sample',
            thread_name='Thread Group 1-1',
            timestamp=datetime(2012, 11, 10, 15, 2, 27, 691000),
            url='',
        )
        self.assertEqual(sample, test_sample)
示例#8
0
    def test_csv(self):
        """Test CSV parser.

        """
        samples_filename = os.path.join(self.tests_dir,
                'samples/main.csv')
        parser = jtl.create_parser(samples_filename)
        samples = list(parser.itersamples())
        self.assertEqual(len(samples), 3)

        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(),
                bytes_received=64366,
                children=(),
                cookies={},
                data_encoding='utf-8',
                data_type='text',
                elapsed_time=timedelta(0, 1, 152000),
                error_count=0,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='"Home" page',
                latency_time=timedelta(0, 0, 755000),
                method='',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='OK',
                sample_count=1,
                success=True,
                tag_name='',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 8, 23, 21, 53, 59, 670000),
                url='http://www.yahoo.com/',
                )
        self.assertEqual(samples[0], test_sample)

        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(
                    jtl.AssertionResult(
                        error=False,
                        failure=True,
                        failure_message='Test failed: code expected to equal '
                            '/\n\n****** received  : [[[404]]]\n\n****** '
                            'comparison: [[[200]]]\n\n/',
                        name='',
                        ),
                    ),
                bytes_received=2977,
                children=(),
                cookies={},
                data_encoding='utf-8',
                data_type='text',
                elapsed_time=timedelta(0, 0, 109000),
                error_count=1,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='fourth sample, last sample',
                latency_time=timedelta(0, 0, 109000),
                method='',
                query_string='',
                request_headers={},
                response_code='404',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='Not Found',
                sample_count=1,
                success=False,
                tag_name='',
                thread_name='Thread Group 1-2',
                timestamp=datetime(2012, 8, 23, 21, 54, 18, 365000),
                url='http://www.yahoo.com/some_page',
                )
        self.assertEqual(samples[1], test_sample)

        test_sample = jtl.Sample(
                all_threads=1,
                assertion_results=(),
                bytes_received=21247,
                children=(),
                cookies={},
                data_encoding='UTF-8',
                data_type='text',
                elapsed_time=timedelta(0, 0, 882000),
                error_count=0,
                group_threads=1,
                hostname='hppc',
                idle_time=timedelta(0),
                label='/search/images;_ylt=A0oG7lg2AvZPowgACQNXNyoA',
                latency_time=timedelta(0, 0, 704000),
                method='',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='OK',
                sample_count=1,
                success=True,
                tag_name='',
                thread_name='Thread Group 1-2',
                timestamp=datetime(2012, 8, 23, 21, 54, 33, 601000),
                url='http://images.search.yahoo.com/search/images;'
                    '_ylt=A0oG7lg2AvZPowgACQNXNyoA?ei=UTF-8&p=potato'
                    '&fr2=tab-web&fr=yfp-t-701',
                )
        self.assertEqual(samples[2], test_sample)
示例#9
0
    def test_xml(self):
        """Test XML parser.

        """
        samples_filename = os.path.join(self.tests_dir,
                'samples/main.xml')
        parser = jtl.create_parser(samples_filename)
        samples = list(parser.itersamples())
        self.assertEqual(len(samples), 5)

        sample = samples[0]
        fields_to_replace = {}
        self.assertEqual(len(sample.request_headers), 5)
        assert 'Accept-Language' in sample.request_headers
        self.assertEqual(sample.request_headers['Accept-Language'],
                'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3')
        fields_to_replace['request_headers'] = {}
        self.assertEqual(sample.response_headers['status_line'],
                'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 12)
        assert 'Server' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Server'],
                'YTS/1.20.10')
        fields_to_replace['response_headers'] = {
                'status_line': '', 'headers': {}}
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    ),
                bytes_received=64189,
                children=(),
                cookies={},
                data_encoding='utf-8',
                data_type='text',
                elapsed_time=timedelta(0, 1, 350000),
                error_count=0,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='"Home" page',
                latency_time=timedelta(0, 0, 802000),
                method='GET',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='OK',
                sample_count=1,
                success=True,
                tag_name='httpSample',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 8, 23, 21, 49, 21, 246000),
                url='http://www.yahoo.com/',
                )
        self.assertEqual(sample, test_sample)

        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(),
                bytes_received=64189,
                children=(),
                cookies={},
                data_encoding='',
                data_type='',
                elapsed_time=timedelta(0, 1, 359000),
                error_count=0,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='Transaction Controller',
                latency_time=timedelta(0, 0, 802000),
                method='',
                query_string='',
                request_headers={},
                response_code='',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='Number of samples in transaction : 1, '
                    'number of failing samples : 0',
                sample_count=1,
                success=False,
                tag_name='sample',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 8, 23, 21, 49, 30, 542000),
                url='',
                )
        self.assertEqual(samples[1], test_sample)

        sample = samples[2]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 7)
        assert 'MSC' in sample.cookies
        self.assertEqual(sample.cookies['MSC'], 't=1345758579X')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 5)
        assert 'Accept-Encoding' in sample.request_headers
        self.assertEqual(sample.request_headers['Accept-Encoding'],
                'gzip, deflate')
        fields_to_replace['request_headers'] = {}
        hash = hashlib.md5(sample.response_data.encode('utf-8')).hexdigest()
        self.assertEqual(hash, '1d6165ad17ce4278351db7c3993c097f')
        fields_to_replace['response_data'] = ''
        self.assertEqual(sample.response_headers['status_line'],
                'HTTP/1.1 404 Not Found')
        self.assertEqual(len(sample.response_headers['headers']), 9)
        assert 'Content-Type' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Content-Type'],
                'text/html; charset=utf-8')
        fields_to_replace['response_headers'] = {
                'status_line': '', 'headers': {}}
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(
                    jtl.AssertionResult(
                        error=False,
                        failure=True,
                        failure_message='Test failed: code expected to equal '
                            '/\n\n****** received  : [[[404]]]\n\n****** '
                            'comparison: [[[200]]]\n\n/',
                        name='Response Assertion',
                        ),
                    jtl.AssertionResult(
                        error=False,
                        failure=True,
                        failure_message='Test failed: message expected to '
                            'equal /\n\n****** received  : [[[Not Found]]]'
                            '\n\n****** comparison: [[[OK       ]]]\n\n/',
                        name='Response Assertion',
                        ),
                    ),
                bytes_received=2977,
                children=(),
                cookies={},
                data_encoding='utf-8',
                data_type='text',
                elapsed_time=timedelta(0, 0, 137000),
                error_count=1,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='fourth sample, last sample',
                latency_time=timedelta(0, 0, 137000),
                method='GET',
                query_string='',
                request_headers={},
                response_code='404',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='Not Found',
                sample_count=1,
                success=False,
                tag_name='httpSample',
                thread_name='Thread Group 1-2',
                timestamp=datetime(2012, 8, 23, 21, 49, 40, 553000),
                url='http://www.yahoo.com/some_page',
                )
        self.assertEqual(sample, test_sample)

        sample = samples[3]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 4)
        assert 'B' in sample.cookies
        self.assertEqual(sample.cookies['B'], '5vdh93l83d9cc&b=3&s=bs')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 6)
        assert 'Referer' in sample.request_headers
        self.assertEqual(sample.request_headers['Referer'],
                'http://search.yahoo.com/search;_ylt=A03uoRrUAfZPg18BCCmbvZx4'
                '?p=potato&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-701')
        fields_to_replace['request_headers'] = {}
        self.assertEqual(sample.response_headers['status_line'],
                'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 9)
        assert 'Date' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Date'],
                'Thu, 23 Aug 2012 21:50:06 GMT')
        fields_to_replace['response_headers'] ={
                'status_line': '', 'headers': {}}
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
                all_threads=1,
                assertion_results=(
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    ),
                bytes_received=71256,
                children=(),
                cookies={},
                data_encoding='UTF-8',
                data_type='text',
                elapsed_time=timedelta(0, 3, 571000),
                error_count=0,
                group_threads=1,
                hostname='hppc',
                idle_time=timedelta(0),
                label='/search/images;_ylt=A0oG7lg2AvZPowgACQNXNyoA',
                latency_time=timedelta(0, 0, 790000),
                method='GET',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='OK',
                sample_count=1,
                success=True,
                tag_name='httpSample',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 8, 23, 21, 50, 4, 17000),
                url='http://images.search.yahoo.com/search/images;'
                    '_ylt=A0oG7lg2AvZPowgACQNXNyoA?ei=UTF-8&p=potato'
                    '&fr2=tab-web&fr=yfp-t-701',
                )
        self.assertEqual(sample, test_sample)

        self.assertEqual(len(samples[4].children), 2)

        sample = samples[4].children[0]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 3)
        assert 'CH' in sample.cookies
        self.assertEqual(sample.cookies['CH'],
                'AgBQnmwQACQFEAAhVBAABrQQABfREAApVRAAIxwQACxvEAA17xAAMJkQABGv')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 6)
        assert 'Accept-Encoding' in sample.request_headers
        self.assertEqual(sample.request_headers['Accept-Encoding'],
                'gzip, deflate')
        fields_to_replace['request_headers'] = {}
        hash = hashlib.md5(sample.response_data.encode('utf-8')).hexdigest()
        self.assertEqual(hash, 'bfc949a307bf6b89f1e74f343e313eeb')
        fields_to_replace['response_data'] = ''
        self.assertEqual(sample.response_headers['status_line'],
                'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 10)
        assert 'Keep-Alive' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Keep-Alive'],
                'timeout=60, max=100')
        fields_to_replace['response_headers'] = {
                'status_line': '', 'headers': {}}
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    ),
                bytes_received=22073,
                children=(),
                cookies={},
                data_encoding='UTF-8',
                data_type='text',
                elapsed_time=timedelta(0, 1, 401000),
                error_count=0,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='/search;_ylt=A03uoRrUAfZPg18BCCmbvZx4',
                latency_time=timedelta(0, 0, 604000),
                method='GET',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'status_line': '', 'headers': {}},
                response_message='OK',
                sample_count=1,
                success=True,
                tag_name='httpSample',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 11, 10, 15, 2, 27, 692000),
                url='http://search.yahoo.com/search;_ylt=A03uoRrUAfZPg18BCC'
                    'mbvZx4?p=potato&toggle=1&cop=mss&ei=UTF-8&fr=yfp-t-701',
                )
        self.assertEqual(sample, test_sample)

        sample = samples[4].children[1]
        fields_to_replace = {}
        self.assertEqual(len(sample.cookies), 4)
        assert 'sSN' in sample.cookies
        self.assertEqual(sample.cookies['sSN'], 'Xj.um6U2wWEq3sFr6VoZpaSDPhht'
                'y3fGDJ3cvewGeS9SkHOCAXsQjZwDs.T51.GdechtOO0X3bfVvZ6PGRbWhQ--')
        fields_to_replace['cookies'] = {}
        self.assertEqual(len(sample.request_headers), 6)
        assert 'User-Agent' in sample.request_headers
        self.assertEqual(sample.request_headers['User-Agent'],
                'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 '
                'Firefox/13.0.1')
        fields_to_replace['request_headers'] = {}
        hash = hashlib.md5(sample.response_data.encode('utf-8')).hexdigest()
        self.assertEqual(hash, '30ac686ee464f6cb415a616c2013e63f')
        fields_to_replace['response_data'] = ''
        self.assertEqual(sample.response_headers['status_line'],
                'HTTP/1.1 200 OK')
        self.assertEqual(len(sample.response_headers['headers']), 10)
        assert 'Set-Cookie' in sample.response_headers['headers']
        self.assertEqual(sample.response_headers['headers']['Set-Cookie'],
                'jr=1; path=/')
        fields_to_replace['response_headers'] = {
                'status_line': '', 'headers': {}}
        sample = sample._replace(**fields_to_replace)

        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    ),
                bytes_received=21759,
                children=(),
                cookies={},
                data_encoding='UTF-8',
                data_type='text',
                elapsed_time=timedelta(0, 1, 364000),
                error_count=0,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='/search/images;_ylt=A0oG7lg2AvZPowgACQNXNyoA',
                latency_time=timedelta(0, 1, 36000),
                method='GET',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'headers': {}, 'status_line': ''},
                response_message='OK',
                sample_count=1,
                success=True,
                tag_name='httpSample',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 11, 10, 15, 2, 29, 96000),
                url='http://images.search.yahoo.com/search/images;_ylt=A0oG7'
                    'lg2AvZPowgACQNXNyoA?ei=UTF-8&p=potato&fr2=tab-web&fr=yf'
                    'p-t-701',
                )
        self.assertEqual(sample, test_sample)

        sample = samples[4]._replace(children=())
        test_sample = jtl.Sample(
                all_threads=2,
                assertion_results=(
                    jtl.AssertionResult(
                        error=False,
                        failure=False,
                        failure_message='',
                        name='Response Assertion',
                        ),
                    jtl.AssertionResult(
                        error=False,
                        failure=True,
                        failure_message='Test failed: message expected to '
                            'equal /\n\n****** received  : [[[Number of '
                            'samples in transaction : 2, number of failing '
                            'samples : 0]]]\n\n****** comparison: [[[OK                                                                 ]]]'
                            '\n\n/',
                        name='Response Assertion',
                        ),
                    ),
                bytes_received=43832,
                children=(),
                cookies={},
                data_encoding='',
                data_type='',
                elapsed_time=timedelta(0, 2, 769000),
                error_count=1,
                group_threads=2,
                hostname='hppc',
                idle_time=timedelta(0),
                label='Transaction Controller Search',
                latency_time=timedelta(0),
                method='',
                query_string='',
                request_headers={},
                response_code='200',
                response_data='',
                response_filename='',
                response_headers={'headers': {}, 'status_line': ''},
                response_message='Number of samples in transaction : 2, '
                    'number of failing samples : 0',
                sample_count=1,
                success=False,
                tag_name='sample',
                thread_name='Thread Group 1-1',
                timestamp=datetime(2012, 11, 10, 15, 2, 27, 691000),
                url='',
                )
        self.assertEqual(sample, test_sample)