def setUp(self): build_root = os.path.join(os.path.dirname(__file__), 'examples', 'scheduler_inputs') self.spec_parser = CmdLineSpecParser(build_root) self.scheduler = setup_json_scheduler(build_root) self.engine = LocalSerialEngine(self.scheduler) self.guava = Address.parse('3rdparty/jvm:guava') self.thrift = Address.parse('src/thrift/codegen/simple') self.java = Address.parse('src/java/codegen/simple') self.java_simple = Address.parse('src/java/simple') self.java_multi = Address.parse('src/java/multiple_classpath_entries') self.no_variant_thrift = Address.parse( 'src/java/codegen/selector:conflict') self.unconfigured_thrift = Address.parse( 'src/thrift/codegen/unconfigured') self.resources = Address.parse('src/resources/simple') self.consumes_resources = Address.parse('src/java/consumes_resources') self.consumes_managed_thirdparty = Address.parse( 'src/java/managed_thirdparty') self.managed_guava = Address.parse('3rdparty/jvm/managed:guava') self.managed_hadoop = Address.parse( '3rdparty/jvm/managed:hadoop-common') self.managed_resolve_latest = Address.parse( '3rdparty/jvm/managed:latest-hadoop') self.inferred_deps = Address.parse('src/scala/inferred_deps')
def _populate(self, scheduler, address): """Perform an ExecutionRequest to parse the given Address into a Struct.""" request = scheduler.execution_request([self._product], [address]) LocalSerialEngine(scheduler, self.storage).reduce(request) root_entries = scheduler.root_entries(request).items() self.assertEquals(1, len(root_entries)) return root_entries[0]
def execute_request(self, scheduler, storage, product, *subjects): """Creates, runs, and returns an ExecutionRequest for the given product and subjects.""" request = scheduler.execution_request([product], subjects) res = LocalSerialEngine(scheduler, storage).execute(request) if res.error: raise res.error return request
def visualize_build_request(build_root, goals, subjects): scheduler, storage = setup_json_scheduler(build_root) execution_request = scheduler.build_request(goals, subjects) # NB: Calls `reduce` independently of `execute`, in order to render a graph before validating it. engine = LocalSerialEngine(scheduler, storage) engine.start() try: engine.reduce(execution_request) visualize_execution_graph(scheduler, storage, execution_request) finally: engine.close()
def resolve(self, spec): request = BuildRequest(goals=[self._goal], subjects=[spec]) result = LocalSerialEngine(self.scheduler).execute(request) if result.error: raise result.error # Expect a single root. state, = result.root_products.values() if type(state) is Throw: raise state.exc return state.value
def resolve(self, spec): request = self.scheduler.execution_request([UnhydratedStruct], [spec]) result = LocalSerialEngine(self.scheduler, self.storage).execute(request) if result.error: raise result.error # Expect a single root. state, = result.root_products.values() if type(state) is Throw: raise state.exc return state.value
def _open_scheduler(*args, **kwargs): scheduler, storage, options, spec_roots, symbol_table_cls = setup(*args, **kwargs) engine = LocalSerialEngine(scheduler, storage) engine.start() try: yield scheduler, engine, symbol_table_cls, spec_roots maybe_launch_pantsd(options, scheduler) finally: print('Cache stats: {}'.format(engine._cache.get_stats()), file=sys.stderr) engine.close()
def setUp(self): build_root = os.path.join(os.path.dirname(__file__), 'examples', 'scheduler_inputs') self.graph, self.scheduler = setup_json_scheduler(build_root) self.engine = LocalSerialEngine(self.scheduler) self.guava = self.graph.resolve(Address.parse('3rdparty/jvm:guava')) self.thrift = self.graph.resolve(Address.parse('src/thrift/codegen/simple')) self.java = self.graph.resolve(Address.parse('src/java/codegen/simple')) self.java_multi = self.graph.resolve(Address.parse('src/java/multiple_classpath_entries')) self.unconfigured_thrift = self.graph.resolve(Address.parse('src/thrift/codegen/unconfigured')) self.resources = self.graph.resolve(Address.parse('src/resources/simple')) self.consumes_resources = self.graph.resolve(Address.parse('src/java/consumes_resources')) self.consumes_managed_thirdparty = self.graph.resolve(Address.parse('src/java/managed_thirdparty')) self.managed_guava = self.graph.resolve(Address.parse('3rdparty/jvm/managed:guava')) self.managed_hadoop = self.graph.resolve(Address.parse('3rdparty/jvm/managed:hadoop-common'))
def visualize_build_request(build_root, build_request): scheduler = setup_json_scheduler(build_root) LocalSerialEngine(scheduler).reduce(build_request) visualize_execution_graph(scheduler)
def test_serial_engine_simple(self): engine = LocalSerialEngine(self.scheduler) self.assert_engine(engine)
def _populate(self, scheduler, address): """Make a BuildRequest to parse the given Address into a Struct.""" spec = self._cmd_line_spec_parser.parse_spec(str(address)) request = BuildRequest(goals=[self._goal], subjects=[spec]) LocalSerialEngine(scheduler).reduce(request) return self._select(address)
def test_serial_engine_simple(self): engine = LocalSerialEngine(self.scheduler, self.storage, self.cache) self.assert_engine(engine)
def test_serial_engine_fail_slow(self): engine = LocalSerialEngine(self.scheduler) self.assert_engine_fail_slow(engine)
def visualize_build_request(build_root, build_request): scheduler = setup_json_scheduler(build_root) # NB: Calls `reduce` independently of `execute`, in order to render a graph before validating it. LocalSerialEngine(scheduler).reduce(build_request) visualize_execution_graph(scheduler, build_request) scheduler.validate()
def _populate(self, scheduler, address): """Make a BuildRequest to parse the given Address into a Struct.""" request = BuildRequest(goals=[self._goal], addressable_roots=[address]) LocalSerialEngine(scheduler).reduce(request) return self._select(address)