def _DownloadTraceHandles(url, temp_directory): trace_urls = _ReadTracesGCSFile(url) trace_handles = [] for trace_url in trace_urls: run_info = run_info_module.RunInfo( url=trace_url, display_name=trace_url, run_id=trace_url) th = gcs_trace_handle.GCSTraceHandle(run_info, temp_directory) trace_handles.append(th) return trace_handles
def testFailure(self): run_info = run_info_module.RunInfo('file:///a.json', '/a.json', metadata={'m': 1}) d = { 'run_id': run_info.run_id, 'type': 'failure', 'name': 'Error', 'important': False, 'description': 'Some error message', 'stack_str': 'Some stack string' } v = value_module.Value.FromDict(run_info, d) self.assertTrue(isinstance(v, value_module.FailureValue)) d2 = v.AsDict() self.assertEquals(d, d2)
def testDict(self): run_info = run_info_module.RunInfo('file:///a.json', '/a.json', metadata={'m': 1}) d = { 'run_id': run_info.run_id, 'type': 'dict', 'name': 'MyDictValue', 'important': False, 'value': { 'a': 1, 'b': 'b' } } v = value_module.Value.FromDict(run_info, d) self.assertTrue(isinstance(v, value_module.DictValue)) d2 = v.AsDict() self.assertEquals(d, d2)
def GetTraceHandlesMatchingQuery(self, query): trace_handles = [] query_string = urllib.quote_plus(query.AsQueryString()) response = urllib2.urlopen( '%s/query?q=%s' % (self.server, query_string)) file_urls = json.loads(response.read()) for file_url in file_urls: run_info = run_info_module.RunInfo( url=file_url, display_name=file_url, run_id=file_url) th = gcs_trace_handle.GCSTraceHandle( run_info, self.directory) trace_handles.append(th) return trace_handles
def testTraceDidntImport(self): run_info = run_info_module.RunInfo('file:///a.json', '/a.json', metadata={'m': 1}) trace_string = 'This is intentionally not a trace-formatted string.' trace_handle = in_memory_trace_handle.InMemoryTraceHandle( run_info, trace_string) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.MapFunction.register(function MyMapFunction(results, run_info, model) { }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, map_script.filename) self.assertEquals(len(results.all_values), 1) v = results.all_values[0] self.assertIsInstance(v, map_single_trace.TraceImportErrorValue)
def testMapperSkips(self): run_info = run_info_module.RunInfo('file:///a.json', '/a.json', metadata={'m': 1}) events = [{ 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'a', 'cat': 'c', 'ts': 0, 'dur': 10, 'args': {} }, { 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'b', 'cat': 'c', 'ts': 3, 'dur': 5, 'args': {} }] trace_handle = in_memory_trace_handle.InMemoryTraceHandle( run_info, json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.MapFunction.register(function MyMapFunction(results, run_info, model) { results.addValue(new pi.v.SkipValue( run_info, 'SkippedFieldName', {description: 'SkippedReason'})); }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, map_script.filename) self.assertEquals(len(results.all_values), 1) v = results.all_values[0] self.assertIsInstance(v, value_module.SkipValue) self.assertEquals(v.name, 'SkippedFieldName') self.assertEquals(v.description, 'SkippedReason')
def GetTraceHandlesMatchingQuery(self, query): trace_handles = [] files = _GetFilesIn(self.directory) for rel_filename in files: filename = os.path.join(self.directory, rel_filename) metadata = _GetMetadataForFilename(self.directory, filename) if not query.Eval(metadata): continue run_info = run_info_module.RunInfo(url="file://%s" % filename, display_name=rel_filename, metadata=metadata) th = local_file_trace_handle.LocalFileTraceHandle( run_info, filename) trace_handles.append(th) return trace_handles
def testPassingMapScript(self): run_info = run_info_module.RunInfo('file:///a.json', '/a.json', metadata={'m': 1}) events = [{ 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'a', 'cat': 'c', 'ts': 0, 'dur': 10, 'args': {} }, { 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'b', 'cat': 'c', 'ts': 3, 'dur': 5, 'args': {} }] trace_handle = in_memory_trace_handle.InMemoryTraceHandle( run_info, json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.MapFunction.register(function MyMapFunction(results, run_info, model) { results.addValue(new pi.v.DictValue( run_info, 'result', { numProcesses: model.getAllProcesses().length })); }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, map_script.filename) v = results.FindValueNamed('result') self.assertEquals(v['numProcesses'], 1)
def testMapFunctionThatThrows(self): run_info = run_info_module.RunInfo('file:///a.json', '/a.json', metadata={'m': 1}) events = [{ 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'a', 'cat': 'c', 'ts': 0, 'dur': 10, 'args': {} }, { 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'b', 'cat': 'c', 'ts': 3, 'dur': 5, 'args': {} }] trace_handle = in_memory_trace_handle.InMemoryTraceHandle( run_info, json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.MapFunction.register(function MyMapFunction(results, run_info, model) { throw new Error('Expected error'); }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, map_script.filename) self.assertEquals(len(results.all_values), 1) v = results.all_values[0] self.assertIsInstance(v, map_single_trace.MapFunctionErrorValue)
def GetTraceHandlesMatchingQuery(self, query): trace_handles = [] files = _GetFilesIn(self.directory) for rel_filename in files: filename = os.path.join(self.directory, rel_filename) metadata = _GetMetadataForFilename(self.directory, filename) if not query.Eval(metadata, len(trace_handles)): continue # Make URL relative to server root. url = self.url_resolver(filename) if url is None: url = _DefaultUrlResover(filename) run_info = run_info_module.RunInfo(url=url, display_name=rel_filename, metadata=metadata) th = local_file_trace_handle.LocalFileTraceHandle( run_info, filename) trace_handles.append(th) return trace_handles
def testNoMapper(self): run_info = run_info_module.RunInfo('file:///a.json', '/a.json', metadata={'m': 1}) events = [{ 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'a', 'cat': 'c', 'ts': 0, 'dur': 10, 'args': {} }, { 'pid': 1, 'tid': 2, 'ph': 'X', 'name': 'b', 'cat': 'c', 'ts': 3, 'dur': 5, 'args': {} }] trace_handle = in_memory_trace_handle.InMemoryTraceHandle( run_info, json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, map_script.filename) self.assertEquals(len(results.all_values), 1) v = results.all_values[0] self.assertIsInstance(v, map_single_trace.MapFunctionNotDefinedErrorValue)