Exemplo n.º 1
0
 def subprocess_cmd_and_endpoint(self):
     jar_path = self.local_jar(self.path_to_jar())
     artifacts_dir = self.local_temp_dir(prefix='artifacts')
     job_port, = subprocess_server.pick_port(None)
     return (['java', '-jar', jar_path] +
             list(self.java_arguments(job_port, artifacts_dir)),
             'localhost:%s' % job_port)
Exemplo n.º 2
0
 def subprocess_cmd_and_endpoint(self):
     jar_path = self.local_jar(self.path_to_jar())
     artifacts_dir = (self._artifacts_dir if self._artifacts_dir else
                      self.local_temp_dir(prefix='artifacts'))
     job_port, = subprocess_server.pick_port(self._job_port)
     return ([self._java_launcher, '-jar', jar_path] + list(
         self.java_arguments(job_port, self._artifact_port,
                             self._expansion_port, artifacts_dir)),
             'localhost:%s' % job_port)
Exemplo n.º 3
0
  def subprocess_cmd_and_endpoint(self):
    # TODO This is hardcoded to Flink at the moment but should be changed
    job_server_image_name = "apache/beam_flink1.9_job_server:latest"
    docker_path = subprocess.check_output(['which',
                                           'docker']).strip().decode('utf-8')
    cmd = [
        "docker",
        "run",
        # We mount the docker binary and socket to be able to spin up
        # "sibling" containers for the SDK harness.
        "-v",
        ':'.join([docker_path, "/bin/docker"]),
        "-v",
        "/var/run/docker.sock:/var/run/docker.sock"
    ]

    self.job_port, self.artifact_port, self.expansion_port = (
        subprocess_server.pick_port(
            self.job_port, self.artifact_port, self.expansion_port))

    args = [
        '--job-host',
        self.job_host,
        '--job-port',
        str(self.job_port),
        '--artifact-port',
        str(self.artifact_port),
        '--expansion-port',
        str(self.expansion_port)
    ]

    if sys.platform == "darwin":
      # Docker-for-Mac doesn't support host networking, so we need to explictly
      # publish ports from the Docker container to be able to connect to it.
      # Also, all other containers need to be aware that they run Docker-on-Mac
      # to connect against the internal Docker-for-Mac address.
      cmd += ["-e", "DOCKER_MAC_CONTAINER=1"]
      cmd += ["-p", "{}:{}".format(self.job_port, self.job_port)]
      cmd += ["-p", "{}:{}".format(self.artifact_port, self.artifact_port)]
      cmd += ["-p", "{}:{}".format(self.expansion_port, self.expansion_port)]
      cmd += [
          "-p",
          "{0}-{1}:{0}-{1}".format(
              self.harness_port_range[0], self.harness_port_range[1])
      ]
    else:
      # This shouldn't be set for MacOS because it detroys port forwardings,
      # even though host networking is not supported on MacOS.
      cmd.append("--network=host")

    cmd.append(job_server_image_name)

    return cmd + args, '%s:%s' % (self.job_host, self.job_port)
Exemplo n.º 4
0
    def test_local_jar(self):
        class Handler(socketserver.BaseRequestHandler):
            timeout = 1

            def handle(self):
                self.request.recv(1024)
                self.request.sendall(b'HTTP/1.1 200 OK\n\ndata')

        port, = subprocess_server.pick_port(None)
        server = socketserver.TCPServer(('localhost', port), Handler)
        t = threading.Thread(target=server.handle_request)
        t.daemon = True
        t.start()

        with TemporaryDirectory() as temp_dir:
            subprocess_server.JavaJarServer.local_jar(
                'http://localhost:%s/path/to/file.jar' % port, temp_dir)
            with open(os.path.join(temp_dir, 'file.jar')) as fin:
                self.assertEqual(fin.read(), 'data')