Beispiel #1
0
    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')
Beispiel #2
0
 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]
Beispiel #3
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
Beispiel #4
0
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()
Beispiel #5
0
    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
Beispiel #6
0
  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
Beispiel #7
0
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()
Beispiel #8
0
  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'))
Beispiel #9
0
def visualize_build_request(build_root, build_request):
  scheduler = setup_json_scheduler(build_root)
  LocalSerialEngine(scheduler).reduce(build_request)
  visualize_execution_graph(scheduler)
Beispiel #10
0
 def test_serial_engine_simple(self):
   engine = LocalSerialEngine(self.scheduler)
   self.assert_engine(engine)
Beispiel #11
0
 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)
Beispiel #12
0
 def test_serial_engine_simple(self):
   engine = LocalSerialEngine(self.scheduler, self.storage, self.cache)
   self.assert_engine(engine)
Beispiel #13
0
 def test_serial_engine_fail_slow(self):
     engine = LocalSerialEngine(self.scheduler)
     self.assert_engine_fail_slow(engine)
Beispiel #14
0
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()
Beispiel #15
0
 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)