def testNoMapper(self): 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 = file_handle.InMemoryFileHandle('/a.json', json.dumps(events)) with map_single_trace.TemporaryMapScript(""" """) as map_script: result = map_single_trace.MapSingleTrace( trace_handle, _Handle(map_script.filename)) self.assertEquals(len(result.failures), 1) self.assertEquals(len(result.pairs), 0) f = result.failures[0] self.assertIsInstance(f, map_single_trace.FunctionNotDefinedFailure)
def testAsDict(self): result = mre_result.MreResult() with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(result, model) { var canonicalUrl = model.canonicalUrl; result.addPair('result', { numProcesses: model.getAllProcesses().length }); }); """) as map_script: module = function_handle.ModuleToLoad(filename=map_script.filename) map_handle = function_handle.FunctionHandle( modules_to_load=[module], function_name='MyMapFunction') job = job_module.Job(map_handle, None) failure = failure_module.Failure(job, '2', '3', 'err', 'desc', 'stack') result.AddFailure(failure) result.AddPair('foo', 'bar') result_dict = result.AsDict() self.assertEquals(result_dict['failures'], [failure.AsDict()]) self.assertEquals(result_dict['pairs'], {'foo': 'bar'})
def testMapperDoesntAddValues(self): 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 = file_handle.InMemoryFileHandle('/a.json', json.dumps(events)) with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(results, model) { }); """) as map_script: result = map_single_trace.MapSingleTrace( trace_handle, _Handle(map_script.filename)) self.assertEquals(len(result.failures), 1) self.assertEquals(len(result.pairs), 0) f = result.failures[0] self.assertIsInstance(f, map_single_trace.NoResultsAddedFailure)
def testPassingMapScript(self): 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 = file_handle.InMemoryFileHandle( '/a.json', json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(results, model) { var canonicalUrl = model.canonicalUrlThatCreatedThisTrace; results.addValue(new tr.v.DictValue( canonicalUrl, 'result', { numProcesses: model.getAllProcesses().length })); }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, _Handle(map_script.filename)) self.assertFalse(results.failure_values) v = results.FindValueNamed('result') self.assertEquals(v['numProcesses'], 1)
def testMapperSkips(self): 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 = file_handle.InMemoryFileHandle( '/a.json', json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(results, model) { var canonicalUrl = model.canonicalUrlThatCreatedThisTrace; results.addValue(new tr.v.SkipValue( canonicalUrl, 'SkippedFieldName', {description: 'SkippedReason'})); }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, _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 testTraceDidntImport(self): trace_string = 'This is intentionally not a trace-formatted string.' trace_handle = file_handle.InMemoryFileHandle('/a.json', trace_string) with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(results, model) { }); """) as map_script: result = map_single_trace.MapSingleTrace( trace_handle, _Handle(map_script.filename)) self.assertEquals(len(result.failures), 1) self.assertEquals(len(result.pairs), 0) f = result.failures[0] self.assertIsInstance(f, map_single_trace.TraceImportFailure)
def testTraceDidntImport(self): trace_string = 'This is intentionally not a trace-formatted string.' trace_handle = file_handle.InMemoryFileHandle( '/a.json', trace_string) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(results, model) { }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, _Handle(map_script.filename)) self.assertEquals(len(results.all_values), 1) v = results.all_values[0] self.assertIsInstance(v, map_single_trace.TraceImportErrorValue)
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 testNoMapper(self): 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 = file_handle.InMemoryFileHandle( '/a.json', json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, _Handle(map_script.filename)) self.assertEquals(len(results.all_values), 1) v = results.all_values[0] self.assertIsInstance(v, map_single_trace.FunctionNotDefinedErrorValue)
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 testPassingMapScript(self): 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 = file_handle.InMemoryFileHandle('/a.json', json.dumps(events)) with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(result, model) { var canonicalUrl = model.canonicalUrlThatCreatedThisTrace; result.addPair('result', { numProcesses: model.getAllProcesses().length }); }); """) as map_script: result = map_single_trace.MapSingleTrace( trace_handle, _Handle(map_script.filename)) self.assertFalse(result.failures) r = result.pairs['result'] self.assertEquals(r['numProcesses'], 1)
def testMapFunctionThatThrows(self): 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 = file_handle.InMemoryFileHandle( '/a.json', json.dumps(events)) results = results_module.Results() with map_single_trace.TemporaryMapScript(""" pi.FunctionRegistry.register( function MyMapFunction(results, model) { throw new Error('Expected error'); }); """) as map_script: map_single_trace.MapSingleTrace(results, trace_handle, _Handle(map_script.filename)) self.assertEquals(len(results.all_values), 1) v = results.all_values[0] self.assertIsInstance(v, map_single_trace.MapFunctionErrorValue)
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)