Ejemplo n.º 1
0
def init_cb_service(spark: SparkSession, enable_dynamic_port: bool):
    jvm = spark.sparkContext._gateway

    # Set port to 0 to enable dynamic port
    # Re-use the auth-token from the main java/spark process
    if enable_dynamic_port:
        params = CallbackServerParameters(
            daemonize=True,
            daemonize_connections=True,
            # https://www.py4j.org/advanced_topics.html#using-py4j-without-pre-determined-ports-dynamic-port-number
            port=0,
            auth_token=jvm.gateway_parameters.auth_token,
        )
    else:
        params = CallbackServerParameters(
            daemonize=True,
            daemonize_connections=True,
            auth_token=jvm.gateway_parameters.auth_token,
        )

    jvm.start_callback_server(callback_server_parameters=params)

    if enable_dynamic_port:
        python_port = jvm.get_callback_server().get_listening_port()
        jvm.java_gateway_server.resetCallbackClient(
            jvm.java_gateway_server.getCallbackClient().getAddress(),
            python_port,
        )
    else:
        jvm.start_callback_server(callback_server_parameters=params)

    logger.info("Spark callback server started")

    cb = CallbackService(spark)
    cb.register()
Ejemplo n.º 2
0
    def setUp(self):
        key_file = os.path.join(
            os.path.dirname(os.path.realpath(__file__)),
            "selfsigned.pem")

        client_ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
        client_ssl_context.verify_mode = ssl.CERT_REQUIRED
        client_ssl_context.check_hostname = True
        client_ssl_context.load_verify_locations(cafile=key_file)

        server_ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
        server_ssl_context.load_cert_chain(key_file, password='******')

        callback_server_parameters = CallbackServerParameters(
            ssl_context=server_ssl_context)
        # address must match cert, because we're checking hostnames
        gateway_parameters = GatewayParameters(
            address='localhost',
            ssl_context=client_ssl_context)

        self.p = start_example_tls_process()
        self.gateway = JavaGateway(
            gateway_parameters=gateway_parameters,
            callback_server_parameters=callback_server_parameters)
        # It seems SecureServerSocket may need a little more time to
        # initialize on some platforms/slow machines.
        sleep(0.500)
Ejemplo n.º 3
0
 def testDoubleCallbackServer(self):
     try:
         self.gateway2 = JavaGateway(
             callback_server_parameters=CallbackServerParameters())
         self.fail()
     except Exception:
         self.assertTrue(True)
Ejemplo n.º 4
0
 def setUp(self):
     #        logger = logging.getLogger("py4j")
     #        logger.setLevel(logging.DEBUG)
     #        logger.addHandler(logging.StreamHandler())
     self.p = start_example_app_process()
     self.gateway = JavaGateway(
         callback_server_parameters=CallbackServerParameters())
Ejemplo n.º 5
0
    def _setup_py4j_client_connection(self):
        gateway_params = GatewayParameters(port=self._java_port,
                                           auto_field=True,
                                           auto_close=True,
                                           eager_load=True)
        callback_server_params = CallbackServerParameters(
            port=0,
            daemonize=True,
            daemonize_connections=True,
            eager_load=True)
        self._gateway = JavaGateway(
            gateway_parameters=gateway_params,
            callback_server_parameters=callback_server_params,
            python_server_entry_point=self)
        self._component_via_py4j = self._gateway.entry_point.getComponent()
        if not self._component_via_py4j:
            raise MLCompException("None reference of py4j java object!")

        if self._verbose:
            self._logger.debug(
                self._prefix_msg +
                "Py4J component referenced successfully! comp_via_py4j: {}".
                format(self._component_via_py4j))

        self._component_via_py4j.setEnvAttributes(self.get_wid(),
                                                  self._verbose)
Ejemplo n.º 6
0
    def _start_gateway(port=0) -> JavaGateway:
        # launch Java side with dynamic port and get back the port on which the
        # server was bound to.
        port = launch_gateway(
            port=port,
            classpath=Context.find_resource_path('net-0.8.22.jar'),
            javaopts=[
                "--add-modules", "java.se", "--add-exports",
                "java.base/jdk.internal.ref=ALL-UNNAMED", "--add-opens",
                "java.base/java.lang=ALL-UNNAMED", "--add-opens",
                "java.base/java.nio=ALL-UNNAMED", "--add-opens",
                "java.base/sun.nio.ch=ALL-UNNAMED", "--add-opens",
                "java.management/sun.management=ALL-UNNAMED", "--add-opens",
                "jdk.management/com.sun.management.internal=ALL-UNNAMED"
            ],
            die_on_exit=True)

        # connect python side to Java side with Java dynamic port and start python
        # callback server with a dynamic port
        gateway = JavaGateway(
            gateway_parameters=GatewayParameters(port=port, auto_convert=True),
            callback_server_parameters=CallbackServerParameters(port=0))

        # retrieve the port on which the python callback server was bound to.
        python_port = gateway.get_callback_server().get_listening_port()

        # tell the Java side to connect to the python callback server with the new
        # python port. Note that we use the java_gateway_server attribute that
        # retrieves the GatewayServer instance.
        gateway.java_gateway_server.resetCallbackClient(
            gateway.java_gateway_server.getCallbackClient().getAddress(),
            python_port)
        return gateway
Ejemplo n.º 7
0
Archivo: py4j.py Proyecto: pisua/yblues
 def _validate(self, _):
     # here is where we can get java and python ports and change the
     # defaults for connecting
     try:
         self._bridge = Py4jServiceBridge(
             service_listener=self,
             gateway_parameters=GatewayParameters(port=self._javaport),
             callback_server_parameters=CallbackServerParameters(
                 port=self._pythonport
             ),
         )
         self._bridge.connect()
     except Exception as e:
         self._bridge = None
         raise e
     # Once bridge is connected, instantiate container using bridge id
     container_props = self._prepare_container_props(
         self._supported_intents, None
     )
     if self._default_service_timeout:
         container_props[
             ECF_PY4J_DEFAULT_SERVICE_TIMEOUT
         ] = self._default_service_timeout
     self._container = self._ipopo.instantiate(
         self._config_name, self._bridge.get_id(), container_props
     )
Ejemplo n.º 8
0
    def _make_a_game(self, p1, p2, n_game, **kwargs):
        self.gateway = JavaGateway(gateway_parameters=GatewayParameters(port=self.port),
                                   callback_server_parameters=CallbackServerParameters(port=0), )
        python_port = self.gateway.get_callback_server().get_listening_port()
        # logger.info(str(self.gateway.java_gateway_server.getCallbackClient().getAddress(), python_port))
        self.gateway.java_gateway_server.resetCallbackClient(
            self.gateway.java_gateway_server.getCallbackClient().getAddress(), python_port)
        self.manager = self.gateway.entry_point

        connect_monitor = kwargs.get('ai_monitor', lambda a, b, c: None)

        def run_a_game():
            # n = 0
            # while n_game is None or n < n_game:
            #     p1_character, p1_name, p1_obj = self._create_player(self.gateway, self.manager, p1)
            #     connect_monitor(self.id, 1, p1_obj)
            #     p2_character, p2_name, p2_obj = self._create_player(self.gateway, self.manager, p2)
            #     connect_monitor(self.id, 2, p2_obj)
            #     game = self.manager.createGame(p1_character, p2_character, p1_name, p2_name, 1)
            #     self.manager.runGame(game)
            #     n += 1
            
            p1_character, p1_name, p1_obj = self._create_player(self.gateway, self.manager, p1)
            connect_monitor(self.id, 1, p1_obj)
            p2_character, p2_name, p2_obj = self._create_player(self.gateway, self.manager, p2)
            connect_monitor(self.id, 2, p2_obj)
            game = self.manager.createGame(p1_character, p2_character, p1_name, p2_name, n_game)
            print("GAME", p1_character, p2_character, p1_name, p2_name, n_game)
            self.manager.runGame(game)
            
            self.gateway.shutdown_callback_server(raise_exception=False)
            self.gateway.shutdown(raise_exception=False)
            sys.stdout.flush()

        return run_a_game
Ejemplo n.º 9
0
    def __init__(self, sourceFile, targetFile):
        self.SWindow = []
        self.TWindow = []
        self.TPredictWindow = []

        self.SDataBuffer = []  #Queue
        self.TDataBuffer = []  #Queue

        self.SInitialDataBuffer = []
        self.TInitialDataBuffer = []

        self.changeDetector = ChangeDetection(Properties.GAMMA,
                                              Properties.SENSITIVITY,
                                              Properties.MAX_WINDOW_SIZE)
        self.ensemble = Ensemble(Properties.ENSEMBLE_SIZE)

        classNameList = []
        self.source = Stream(sourceFile, classNameList,
                             Properties.INITIAL_DATA_SIZE)
        self.target = Stream(targetFile, classNameList,
                             Properties.INITIAL_DATA_SIZE)

        Properties.MAXVAR = self.source.MAXVAR

        self.gateway = JavaGateway(
            start_callback_server=True,
            gateway_parameters=GatewayParameters(port=Properties.PY4JPORT),
            callback_server_parameters=CallbackServerParameters(
                port=Properties.PY4JPORT + 1))
        self.app = self.gateway.entry_point
Ejemplo n.º 10
0
def get_gateway():
    # type: () -> JavaGateway
    global _gateway
    global _lock
    with _lock:
        if _gateway is None:
            # if Java Gateway is already running
            if 'PYFLINK_GATEWAY_PORT' in os.environ:
                gateway_port = int(os.environ['PYFLINK_GATEWAY_PORT'])
                callback_port = int(os.environ['PYFLINK_CALLBACK_PORT'])
                gateway_param = GatewayParameters(port=gateway_port,
                                                  auto_convert=True)
                _gateway = JavaGateway(
                    gateway_parameters=gateway_param,
                    callback_server_parameters=CallbackServerParameters(
                        port=callback_port,
                        daemonize=True,
                        daemonize_connections=True))
            else:
                _gateway = launch_gateway()

            # import the flink view
            import_flink_view(_gateway)
            install_exception_handler()
            _gateway.entry_point.put("PythonFunctionFactory",
                                     PythonFunctionFactory())
            _gateway.entry_point.put("Watchdog", Watchdog())
    return _gateway
Ejemplo n.º 11
0
    def testGC(self):
        with gateway_example_app_process("nomem"):
            # This will only work with some JVM.
            gateway = JavaGateway(
                callback_server_parameters=CallbackServerParameters())
            sleep()
            example = gateway.entry_point.getNewExample()
            impl = IHelloImpl()
            self.assertEqual("This is Hello!", example.callHello(impl))
            self.assertEqual("This is Hello;\n10MyMy!\n;",
                             example.callHello2(impl))
            self.assertEqual(2, len(gateway.gateway_property.pool))

            # Make sure that finalizers do not block
            impl2 = IHelloImpl()
            self.assertEqual("This is Hello!", example.callHello(impl2))
            self.assertEqual(3, len(gateway.gateway_property.pool))

            gateway.jvm.java.lang.System.gc()

            # Leave time for sotimeout
            sleep(3)
            # Make sure the three objects have not been removed from the pool
            # because the Java side should not send gc request.
            self.assertEqual(len(gateway.gateway_property.pool), 3)
            gateway.shutdown()
Ejemplo n.º 12
0
    def start(self, args):
        # print('For the directory of the script being run:\n', pathlib.Path(__file__).parent.absolute())
        # print('For the current working directory:\n', pathlib.Path().absolute())
        # print('Arguments length = ', len(args))
        # Spring Libs
        # gw_args = ['java', '-jar', str(pathlib.Path(__file__).parent.absolute())+'/lib/spring-cloud-stream-gateway-0.1.7.jar', '-noverify', '-XX:TieredStopAtLevel=1', '-Dspring.jmx.enabled=false']
        # KAFKA Consumer Libs
        gw_args = [
            'java', '-jar',
            str(pathlib.Path(__file__).parent.absolute()) +
            '/lib/spring-cloud-stream-gateway-0.1.8.jar'
        ]
        # print(gw_args)
        gw_args.extend(args)
        # print(gw_args)
        # for arg in args:
        #     print('Arg: ', arg)

        # for output_line in run_command('java -jar ../resources/lib/spring-cloud-stream-gateway-0.1.7.jar --spring.config.location=file:../resources/application.yml'):
        for output_line in self.run_command(gw_args):
            print(output_line)
            if output_line == b'serverStarted\n':
                gateway = JavaGateway(
                    callback_server_parameters=CallbackServerParameters())
                # listener = StreamGateway(gateway)
                gateway.entry_point.registerListener(self)
                # self.execfunc.postConstruct()
                break
Ejemplo n.º 13
0
 def __get_random_port_for_callback_server(self) -> None:
     # See: https://github.com/bartdag/py4j/issues/147
     self._gateway.start_callback_server(
         CallbackServerParameters(port=0, daemonize=True, daemonize_connections=True))
     jgws = JavaObject("GATEWAY_SERVER", self._gateway._gateway_client)
     jgws.resetCallbackClient(jgws.getCallbackClient().getAddress(),
                              self._gateway.get_callback_server().get_listening_port())
Ejemplo n.º 14
0
def main():
    p = OptionParser()
    p.add_option('-j',
                 '--jvm_port',
                 help='the port for jvm side',
                 dest='jvm_port',
                 type=int,
                 default=None)
    p.add_option('-p',
                 '--py_port',
                 help='the port for python side',
                 dest='py_port',
                 type=int,
                 default=None)
    (z, args) = p.parse_args()

    app = PyMain()
    global gateway
    gateway = JavaGateway(gateway_parameters=GatewayParameters(
        port=z.jvm_port, auto_field=True, auto_convert=True),
                          callback_server_parameters=CallbackServerParameters(
                              port=z.py_port,
                              daemonize=True,
                              daemonize_connections=False,
                              propagate_java_exceptions=True),
                          python_server_entry_point=app)
    print('Started Listening On {}'.format(
        gateway.get_callback_server().get_listening_port()))
    sys.stdout.flush()
    while app.check():
        time.sleep(1.0)
    print('Exit')
 def test_all_regular_signals_auto_start(self):
     listener = MockListener(self)
     with gateway_example_app_process(None):
         server_started.connect(listener.started)
         gateway = JavaGateway(
             gateway_parameters=GatewayParameters(),
             callback_server_parameters=CallbackServerParameters())
         server_stopped.connect(listener.stopped,
                                sender=gateway.get_callback_server())
         server_connection_started.connect(
             listener.connection_started,
             sender=gateway.get_callback_server())
         server_connection_stopped.connect(
             listener.connection_stopped,
             sender=gateway.get_callback_server())
         pre_server_shutdown.connect(listener.pre_shutdown,
                                     sender=gateway.get_callback_server())
         post_server_shutdown.connect(listener.post_shutdown,
                                      sender=gateway.get_callback_server())
         example = gateway.entry_point.getNewExample()
         impl = IHelloImpl()
         self.assertEqual("This is Hello!", example.callHello(impl))
         gateway.shutdown()
     self.assertEqual(1, listener.received["started"])
     self.assertEqual(1, listener.received["stopped"])
     self.assertEqual(1, listener.received["pre_shutdown"])
     self.assertEqual(1, listener.received["post_shutdown"])
     self.assertEqual(1, listener.received["connection_started"])
     self.assertEqual(1, listener.received["connection_stopped"])
Ejemplo n.º 16
0
    def _start_gateway(port=0) -> JavaGateway:
        # launch Java side with dynamic port and get back the port on which the
        # server was bound to.
        hearthstone_jar_path = Context.find_resource_path(
            'hearthstone-0.8.67.jar')
        net_jar_path = Context.find_resource_path('net-0.8.67-all.jar')
        port = launch_gateway(port=port,
                              classpath=os.pathsep.join(
                                  (hearthstone_jar_path, net_jar_path)),
                              die_on_exit=True)

        # connect python side to Java side with Java dynamic port and start python
        # callback server with a dynamic port
        gateway = JavaGateway(
            gateway_parameters=GatewayParameters(port=port, auto_convert=True),
            callback_server_parameters=CallbackServerParameters(port=0))

        # retrieve the port on which the python callback server was bound to.
        python_port = gateway.get_callback_server().get_listening_port()

        # tell the Java side to connect to the python callback server with the new
        # python port. Note that we use the java_gateway_server attribute that
        # retrieves the GatewayServer instance.
        gateway.java_gateway_server.resetCallbackClient(
            gateway.java_gateway_server.getCallbackClient().getAddress(),
            python_port)
        return gateway
Ejemplo n.º 17
0
    def testBadRetryFromJava(self):
        """Should not retry from Java to Python.
        Similar use case as testBadRetry, but from Java: Java calls a long
        Python operation.

        If there is a bug, Java will call Python, then read will fail, then it
        will call Python again.

        If there is no bug, Java will call Python, read will fail, then Java
        will raise an Exception that will be received as a Py4JError on the
        Python side.
        """
        self.p = start_short_timeout_app_process()
        gateway = JavaGateway(
            callback_server_parameters=CallbackServerParameters())
        try:
            operator = WaitOperator(0.5)
            opExample = gateway.jvm.py4j.examples.OperatorExample()

            opExample.randomBinaryOperator(operator)
            self.fail("Should never retry once the first command went through."
                      " number of calls made: {0}".format(operator.callCount))
        except Py4JJavaError:
            self.assertTrue(True)
        finally:
            gateway.shutdown()
            self.p.join()
Ejemplo n.º 18
0
 def testCallbackServer(self):
     # A close is required to stop the thread.
     gateway = JavaGateway(
         callback_server_parameters=CallbackServerParameters())
     gateway.close()
     self.assertTrue(True)
     sleep(2)
Ejemplo n.º 19
0
    def __init__(self, n=3):
        "Set up initial board configuration."

        gateway = JavaGateway(
            gateway_parameters=GatewayParameters(port=4242),
            callback_server_parameters=CallbackServerParameters())
        manager = gateway.entry_point
Ejemplo n.º 20
0
 def _start_gateway() -> JavaGateway:
     # launch Java side with dynamic port and get back the port on which the
     # server was bound to.
     port = launch_gateway(port=0,
                           classpath=Context._find_jar_path('net-1.3.0-all.jar'),
                           javaopts=['-javaagent:' + Context._find_jar_path('quasar-core-0.7.9-jdk8.jar') + '=mb',
                                     '-Xmx2048m'],
                           die_on_exit=True)
     
     # connect python side to Java side with Java dynamic port and start python
     # callback server with a dynamic port
     gateway = JavaGateway(
         gateway_parameters=GatewayParameters(port=port, auto_convert=True),
         callback_server_parameters=CallbackServerParameters(port=0))
     
     # retrieve the port on which the python callback server was bound to.
     python_port = gateway.get_callback_server().get_listening_port()
     
     # tell the Java side to connect to the python callback server with the new
     # python port. Note that we use the java_gateway_server attribute that
     # retrieves the GatewayServer instance.
     gateway.java_gateway_server.resetCallbackClient(
         gateway.java_gateway_server.getCallbackClient().getAddress(),
         python_port)
     return gateway
Ejemplo n.º 21
0
def get_gateway():
    # type: () -> JavaGateway
    global _gateway
    global _lock
    with _lock:
        if _gateway is None:
            # Set the level to WARN to mute the noisy INFO level logs
            logger.level = WARN
            # if Java Gateway is already running
            if 'PYFLINK_GATEWAY_PORT' in os.environ:
                gateway_port = int(os.environ['PYFLINK_GATEWAY_PORT'])
                gateway_param = GatewayParameters(port=gateway_port, auto_convert=True)
                _gateway = JavaGateway(
                    gateway_parameters=gateway_param,
                    callback_server_parameters=CallbackServerParameters(
                        port=0, daemonize=True, daemonize_connections=True))
            else:
                _gateway = launch_gateway()

            callback_server = _gateway.get_callback_server()
            callback_server_listening_address = callback_server.get_listening_address()
            callback_server_listening_port = callback_server.get_listening_port()
            _gateway.jvm.org.apache.flink.client.python.PythonEnvUtils.resetCallbackClient(
                _gateway.java_gateway_server,
                callback_server_listening_address,
                callback_server_listening_port)
            # import the flink view
            import_flink_view(_gateway)
            install_exception_handler()
            install_py4j_hooks()
            _gateway.entry_point.put("PythonFunctionFactory", PythonFunctionFactory())
            _gateway.entry_point.put("Watchdog", Watchdog())
    return _gateway
Ejemplo n.º 22
0
    def _initialize_gateway(gateway_address):
        (host, port) = gateway_address

        callback_params = CallbackServerParameters(address=host, port=0)

        gateway = JavaGateway(GatewayClient(address=host, port=port),
                              start_callback_server=True,
                              auto_convert=True,
                              callback_server_parameters=callback_params)
        try:
            java_import(gateway.jvm, "org.apache.spark.SparkEnv")
            java_import(gateway.jvm, "org.apache.spark.SparkConf")
            java_import(gateway.jvm, "org.apache.spark.api.java.*")
            java_import(gateway.jvm, "org.apache.spark.api.python.*")
            java_import(gateway.jvm, "org.apache.spark.mllib.api.python.*")
            java_import(gateway.jvm, "org.apache.spark.sql.*")
            java_import(gateway.jvm, "org.apache.spark.sql.hive.*")
            java_import(gateway.jvm, "scala.Tuple2")
            java_import(gateway.jvm, "scala.collection.immutable.List")
        except Py4JError as e:
            log_error('Error while initializing java gateway: {}'.format(e))
            gateway.close()
            return None

        log_debug('Java Gateway initialized {}'.format(gateway))
        return gateway
Ejemplo n.º 23
0
    def _start_gateway(self, p2=Machete):
        # auto select callback server port and reset it in java env
        self.gateway = JavaGateway(gateway_parameters=GatewayParameters(
            port=self.port), callback_server_parameters=CallbackServerParameters(port=0))
        python_port = self.gateway.get_callback_server().get_listening_port()
        self.gateway.java_gateway_server.resetCallbackClient(
            self.gateway.java_gateway_server.getCallbackClient().getAddress(), python_port)
        self.manager = self.gateway.entry_point

        # create pipe between gym_env_api and python_ai for java env
        server, client = Pipe()
        self.pipe = server
        self.p1 = GymAIDisplay(self.gateway, client, False)
        self.manager.registerAI(self.p1.__class__.__name__, self.p1)

        if isinstance(p2, str):
            # p2 is a java class name
            self.p2 = p2
            self.game_to_start = self.manager.createGame(
                "ZEN", "ZEN", self.p1.__class__.__name__, self.p2, self.freq_restart_java)
        else:
            # p2 is a python class
            self.p2 = p2(self.gateway)
            self.manager.registerAI(self.p2.__class__.__name__, self.p2)
            self.game_to_start = self.manager.createGame(
                "ZEN", "ZEN", self.p1.__class__.__name__, self.p2.__class__.__name__, self.freq_restart_java)
        self.game = Thread(target=game_thread,
                           name="game_thread", args=(self, ))
        self.game.start()

        self.game_started = True
        self.round_num = 0
def main(iterations):
    small_iterations = iterations / 10 if iterations > 10 else iterations
    gateway = JavaGateway(
        callback_server_parameters=CallbackServerParameters())
    currentTimeMillis = gateway.jvm.java.lang.System.currentTimeMillis
    sb = gateway.jvm.java.lang.StringBuilder()
    append = sb.append
    sb2 = gateway.jvm.java.lang.StringBuilder()

    def reflection():
        sb2.append(2)
        sb2.append("hello")

    def constructorAndMemoryManagement():
        sb = gateway.jvm.java.lang.StringBuilder("Hello World")
        sb.append("testing")

    def javaCollection():
        al = gateway.jvm.java.util.ArrayList()
        al.append("test")
        al.append(1)
        al.append(True)
        len(al)
        result = []
        for elem in al:
            result.append(elem)
        return result

    def callBack():
        al = gateway.jvm.java.util.ArrayList()
        cp10 = ComparablePython(10)
        cp1 = ComparablePython(1)
        cp5 = ComparablePython(5)
        cp7 = ComparablePython(7)
        al.append(cp10)
        al.append(cp1)
        al.append(cp5)
        al.append(cp7)
        gateway.jvm.java.util.Collections.sort(al)

    def longParamCall():
        longParam = "s" * 1024 * 1024 * 10
        sb = gateway.jvm.java.lang.StringBuilder()
        sb.append(longParam)
        sb.toString()

    benchmark("callStaticMethodNoParam",
              partial(callStaticMethodNoParam, iterations, currentTimeMillis))
    benchmark("callInstanceMethodWithShortParam",
              partial(callInstanceMethodWithShortParam, iterations, append))
    benchmark("callWithReflection", partial(callFunc, iterations, reflection))
    benchmark("constructorAndMemoryManagement",
              partial(callFunc, iterations, constructorAndMemoryManagement))
    benchmark("longParamAndMemoryManagement",
              partial(callFunc, ITERATIONS_FOR_LENGTHY_METHOD, longParamCall))
    benchmark("javaCollection",
              partial(callFunc, small_iterations, javaCollection))
    benchmark("callBack", partial(callFunc, small_iterations, callBack))
    gateway.shutdown()
 def __init__(self):
     super(ImplementPy4J, self).__init__()
     self.gateway = JavaGateway(
         gateway_parameters=GatewayParameters(auto_field=True),
         callback_server_parameters=CallbackServerParameters())
     self.ep = self.gateway.entry_point
     listener = self.ep.getListener()
     listener.registerListener(self)
Ejemplo n.º 26
0
    def setup(self, config):
        self.risk_threshold = self.config["tuning_config"]["risk_threshold"]
        self.max_concurrent_trials = self.config["tuning_config"][
            "max_concurrent_trials"]
        self.payoff_empirical_min = self.config["tuning_config"][
            "obj_fnc_params"]["payoff_empirical_min"]
        self.payoff_empirical_max = self.config["tuning_config"][
            "obj_fnc_params"]["payoff_empirical_max"]
        self.min_eval_eps = self.config["tuning_config"]["eval_eps_min"]
        self.max_eval_eps = self.config["tuning_config"]["eval_eps_max"]

        self.lock = threading.Lock()

        self.train_results = queue.Queue()
        self.eval_results = queue.Queue()
        self.java_gateway = None
        self.my_id = self.trial_id
        self.start_time = time.time()
        self.am_stopped = False
        self.cur_max_score = self.payoff_empirical_min
        self.cur_max_train_score = self.payoff_empirical_min

        default_gateway = JavaGateway()
        while self.java_gateway is None:
            for i in range(self.max_concurrent_trials):
                try:
                    self.my_port = 25334 + 2 * i
                    java_port = self.my_port - 1

                    # if addJavaPort fails, it means it is being used by some other trial running
                    # in a different process
                    if not default_gateway.addJavaPort(java_port):
                        if i == self.max_concurrent_trials - 1:
                            time.sleep(0.5)
                        continue

                    gateway_params = GatewayParameters(
                        port=java_port, enable_memory_management=False)
                    callback_params = CallbackServerParameters(
                        port=self.my_port)
                    self.java_gateway = JavaGateway(
                        gateway_parameters=gateway_params,
                        callback_server_parameters=callback_params)
                    break
                except:
                    default_gateway.removeJavaPort(self.my_port - 1)
                    continue

        default_gateway.close(keep_callback_server=True,
                              close_callback_server_connections=False)

        encoded_trial_params = TuningParser.encode_trial_params(self.config)
        self.results_receiver = _TrialResultsReceiver(self)
        self.java_gateway.entry_point.runTrial(self.trial_id,
                                               encoded_trial_params,
                                               self.results_receiver)

        self.additional_setup()
Ejemplo n.º 27
0
 def _reset(self):
     _message_with_frame('Environment reconnect...')
     self._finalize()
     self._simulator.connect()
     self._gateway = JavaGateway(
         gateway_parameters=GatewayParameters(port=self._port),
         callback_server_parameters=CallbackServerParameters())
     self._manager = self._gateway.entry_point
     _message_with_frame('Environment reconnect... done')
Ejemplo n.º 28
0
def init_genius_bridge(path: str = None,
                       port: int = 0,
                       force: bool = False) -> bool:
    """Initializes a genius connection

    Args:
        path: The path to a JAR file that runs negloader
        port: port number to use
        force: Force trial even if an existing bridge is initialized

    Returns:
        True if successful

    """
    global common_gateway
    global common_port
    global java_process
    global python_port

    port = port if port > 0 else DEFAULT_JAVA_PORT
    if genius_bridge_is_running(port):
        return True
    if not force and common_gateway is not None and common_port == port:
        print("Java already initialized")
        return True

    path = NEGMAS_CONFIG.get(CONFIG_KEY_GENIUS_BRIDGE_JAR, None)
    if path is None:
        print(
            "Cannot find the path to genius bridge jar. Download the jar somewhere in your machine and add its path"
            'to ~/negmas/config.json under the key "genius_bridge_jar".\n\nFor example, if you downloaded the jar'
            " to /path/to/your/jar then edit ~/negmas/config.json to read something like\n\n"
            '{\n\t"genius_bridge_jar": "/path/to/your/jar",\n\t.... rest of the config\n}\n\n'
            "You can find the jar at http://www.yasserm.com/scml/genius-8.0.4-bridge.jar"
        )
        return False
    path = pathlib.Path(path).expanduser().absolute()
    try:
        subprocess.Popen(  # ['java', '-jar',  path, '--die-on-exit', f'{port}']
            f"java -jar {path} --die-on-exit {port}",
            shell=True)
    except (OSError, TimeoutError, RuntimeError, ValueError):
        return False
    time.sleep(0.5)
    gateway = JavaGateway(
        gateway_parameters=GatewayParameters(port=port),
        callback_server_parameters=CallbackServerParameters(port=0),
    )
    python_port = gateway.get_callback_server().get_listening_port()
    gateway.java_gateway_server.resetCallbackClient(
        gateway.java_gateway_server.getCallbackClient().getAddress(),
        python_port)

    common_gateway = gateway
    common_port = port
    return True
Ejemplo n.º 29
0
 def internal_work():
     gateway2 = InstrJavaGateway(
         gateway_parameters=GatewayParameters(port=DEFAULT_PORT + 5),
         callback_server_parameters=CallbackServerParameters(
             port=DEFAULT_PYTHON_PROXY_PORT + 5))
     sleep()
     play_with_ping(gateway2)
     python_gc()
     sleep()
     gateway2.shutdown()
Ejemplo n.º 30
0
 def __init__(self, user, pswd):
     try:
         self.gateway = JavaGateway(callback_server_parameters=CallbackServerParameters())
         self.listener = PythonListener(self.gateway)
         self.gateway.entry_point.registerListener(self.listener)
     except:
         print("JForexGateway4py (java) is not running.....")
         os._exit(1)
     time.sleep(1)
     self.start(user, pswd)