def profile_json(request): base_path = request.registry.settings['pstats_base_path'] filename = request.params.get('filename') if not filename: raise exc.HTTPBadRequest("Missing filename param.") stats = pstats.Stats(get_pstats_path(base_path, filename)) return proftojson.encode_stats(stats)
def test_encode_stats(self, mock_name_mapper, mock_map_stats_dict, mock_json): stats = mock.Mock(stats=mock.MagicMock()) result = proftojson.encode_stats(stats) assert_equal(result, mock_json.dumps.return_value) mock_name_mapper.assert_called_with() name_mapper = mock_name_mapper.return_value mock_map_stats_dict.assert_called_with(stats.stats, name_mapper, proftojson.map_stat_values) name_mapper.get_mapping.assert_called_with()
#!/usr/bin/env python """Encode a cprofile as json.""" import optparse import pstats from psi import proftojson def get_opts(): parser = optparse.OptionParser() parser.add_option("-o", "--output", help="Filename of output file.") parser.add_option("-p", "--profile", help="Filename of input profile.") opts, _ = parser.parse_args() if not opts.output or not opts.profile: parser.perror("Profile and outfile filename required.") return opts if __name__ == "__main__": opts = get_opts() with open(opts.output, "w") as f: f.write(proftojson.encode_stats(pstats.Stats(opts.profile)))