Esempio n. 1
0
    def test_create_sql_context_spark(self):
        kind = "scala"
        http_client = MagicMock()
        self.post_responses = [DummyResponse(201, self.session_create_json),
                               DummyResponse(201, self.post_statement_json),
                               DummyResponse(201, self.post_statement_json)]
        http_client.post.side_effect = self._next_response_post
        self.get_responses = [DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.running_statement_json),
                              DummyResponse(200, self.ready_statement_json),
                              DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.ready_statement_json)]
        http_client.get.side_effect = self._next_response_get
        _t_config_hook({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = LivySession(http_client, kind, "-1", False)
        _t_config_hook({})
        session.start()

        session.create_sql_context()

        assert call("/sessions/0/statements", [201], {"code": "val sqlContext = new org.apache.spark.sql.SQLContext"
                                                              "(sc)\nimport sqlContext.implicits._"}) \
               in http_client.post.call_args_list
        assert call("/sessions/0/statements", [201], {"code": "val hiveContext = new org.apache.spark.sql.hive.Hive"
                                                              "Context(sc)"}) \
               in http_client.post.call_args_list
Esempio n. 2
0
    def test_create_sql_hive_context_pyspark(self):
        kind = "python"
        http_client = MagicMock()
        self.post_responses = [DummyResponse(201, self.session_create_json),
                               DummyResponse(201, self.post_statement_json),
                               DummyResponse(201, self.post_statement_json)]
        http_client.post.side_effect = self._next_response_post
        self.get_responses = [DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.running_statement_json),
                              DummyResponse(200, self.ready_statement_json),
                              DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.ready_statement_json)]
        http_client.get.side_effect = self._next_response_get
        _t_config_hook({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = LivySession(http_client, kind, "-1", False)
        _t_config_hook({})
        session.start()

        session.create_sql_context()

        assert call("/sessions/0/statements", [201], {"code": "from pyspark.sql import SQLContext\n"
                                                              "from pyspark.sql.types import *\n"
                                                              "sqlContext = SQLContext(sc)"}) \
               in http_client.post.call_args_list
        assert call("/sessions/0/statements", [201], {"code": "from pyspark.sql import HiveContext\n"
                                                              "hiveContext = HiveContext(sc)"}) \
               in http_client.post.call_args_list
Esempio n. 3
0
    def test_delete_session_when_active(self):
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)
        session = LivySession(http_client, "scala", state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()

        session.delete()

        assert_equals("dead", session._state)
Esempio n. 4
0
    def test_state_gets_latest(self):
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)
        http_client.get.return_value = DummyResponse(200, self.ready_sessions_json)
        session = LivySession(http_client, "scala", state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()
    
        state = session.state

        assert_equals("idle", state)
        http_client.get.assert_called_with("/sessions", [200])
Esempio n. 5
0
    def test_start_python_starts_session(self):
        kind = "python"
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)

        session = LivySession(http_client, kind, state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()

        assert_equals(kind, session.language)
        assert_equals("starting", session._state)
        assert_equals("0", session._id)
        http_client.post.assert_called_with("/sessions", [201], {"kind": "pyspark"})
Esempio n. 6
0
    def test_wait_for_state_returns_when_in_state(self):
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)
        self.get_responses = [DummyResponse(200, self.busy_sessions_json),
                              DummyResponse(200, self.ready_sessions_json)]
        http_client.get.side_effect = self._next_response_get
        session = LivySession(http_client, "scala", state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()

        session.wait_for_state("idle")

        http_client.get.assert_called_with("/sessions", [200])
        assert_equals(2, http_client.get.call_count)
    def test_start_passes_in_all_properties(self):
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)

        conf.override_all({"status_sleep_seconds": 0.01, "statement_sleep_seconds": 0.01})
        kind = Constants.session_kind_spark
        properties = {"kind": kind, "extra": 1}

        ipython_display = MagicMock()
        session = LivySession(ipython_display, http_client, "-1", False, properties)
        session.start()
        conf.load()

        http_client.post.assert_called_with("/sessions", [201], properties)
Esempio n. 8
0
    def test_create_sql_context_unknown_throws(self):
        kind = "unknown"
        http_client = MagicMock()
        self.post_responses = [DummyResponse(201, self.session_create_json),
                               DummyResponse(201, self.post_statement_json)]
        http_client.post.side_effect = self._next_response_post
        self.get_responses = [DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.running_statement_json),
                              DummyResponse(200, self.ready_statement_json)]
        http_client.get.side_effect = self._next_response_get
        session = LivySession(http_client, kind, state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()

        session.create_sql_context()
Esempio n. 9
0
    def test_delete_session_when_active(self):
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)
        _t_config_hook({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = LivySession(http_client, "scala", "-1", False)
        _t_config_hook({})
        session.start()

        session.delete()

        assert_equals("dead", session._status)
Esempio n. 10
0
    def test_start_scala_starts_session(self):
        kind = "scala"
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)

        _t_config_hook({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = LivySession(http_client, kind, "-1", False)
        session.start()
        _t_config_hook({})

        assert_equals(kind, session.language)
        assert_equals("starting", session._status)
        assert_equals("0", session.id)
        http_client.post.assert_called_with("/sessions", [201], {"kind": "spark"})
Esempio n. 11
0
    def test_start_passes_in_all_properties(self):
        self.http_client.post_session.return_value = self.session_create_json
        self.http_client.get_session.return_value = self.ready_sessions_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        kind = constants.SESSION_KIND_SPARK
        properties = {"kind": kind, "extra": 1}

        ipython_display = MagicMock()
        session = LivySession(self.http_client, properties, ipython_display)
        session.start(create_sql_context=False)
        conf.load()

        self.http_client.post_session.assert_called_with(properties)
Esempio n. 12
0
    def test_start_passes_in_all_properties(self):
        http_client = MagicMock()
        http_client.post_session.return_value = self.session_create_json
        http_client.get_session.return_value = self.ready_sessions_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        kind = constants.SESSION_KIND_SPARK
        properties = {"kind": kind, "extra": 1}

        ipython_display = MagicMock()
        session = LivySession(http_client, properties, ipython_display)
        session.start(create_sql_context=False)
        conf.load()

        http_client.post_session.assert_called_with(properties)
Esempio n. 13
0
    def test_wait_for_status_times_out(self):
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201, self.session_create_json)
        self.get_responses = [DummyResponse(200, self.busy_sessions_json),
                              DummyResponse(200, self.busy_sessions_json),
                              DummyResponse(200, self.ready_sessions_json)]
        http_client.get.side_effect = self._next_response_get

        _t_config_hook({
            "status_sleep_seconds": 0.011,
            "statement_sleep_seconds": 6000
        })
        session = LivySession(http_client, "scala", "-1", False)
        _t_config_hook({})

        session.start()

        session.wait_for_status("idle", 0.01)
Esempio n. 14
0
    def test_start_passes_in_all_properties(self):
        http_client = MagicMock()
        http_client.post.return_value = DummyResponse(201,
                                                      self.session_create_json)

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        kind = constants.SESSION_KIND_SPARK
        properties = {"kind": kind, "extra": 1}

        ipython_display = MagicMock()
        session = LivySession(http_client, properties, ipython_display)
        session.start()
        conf.load()

        http_client.post.assert_called_with("/sessions", [201], properties)
Esempio n. 15
0
    def test_create_sql_context_spark(self):
        kind = "scala"
        http_client = MagicMock()
        self.post_responses = [DummyResponse(201, self.session_create_json),
                               DummyResponse(201, self.post_statement_json)]
        http_client.post.side_effect = self._next_response_post
        self.get_responses = [DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.running_statement_json),
                              DummyResponse(200, self.ready_statement_json)]
        http_client.get.side_effect = self._next_response_get
        session = LivySession(http_client, kind, state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()

        session.create_sql_context()

        http_client.post.assert_called_with("/sessions/0/statements", [201],
                                            {"code": "val sqlContext = new org.apache.spark.sql.SQLContext(sc)\n"
                                                     "import sqlContext.implicits._"})
Esempio n. 16
0
    def test_create_sql_context_pyspark(self):
        kind = "python"
        http_client = MagicMock()
        self.post_responses = [DummyResponse(201, self.session_create_json),
                               DummyResponse(201, self.post_statement_json)]
        http_client.post.side_effect = self._next_response_post
        self.get_responses = [DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.running_statement_json),
                              DummyResponse(200, self.ready_statement_json)]
        http_client.get.side_effect = self._next_response_get
        session = LivySession(http_client, kind, state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()

        session.create_sql_context()

        http_client.post.assert_called_with("/sessions/0/statements", [201],
                                            {"code": "from pyspark.sql import SQLContext\n"
                                                     "from pyspark.sql.types import *\n"
                                                     "sqlContext = SQLContext(sc)"})
Esempio n. 17
0
    def test_execute(self):
        kind = "scala"
        http_client = MagicMock()
        self.post_responses = [DummyResponse(201, self.session_create_json),
                               DummyResponse(201, self.post_statement_json)]
        http_client.post.side_effect = self._next_response_post
        self.get_responses = [DummyResponse(200, self.running_statement_json),
                              DummyResponse(200, self.ready_statement_json)]
        http_client.get.side_effect = self._next_response_get
        session = LivySession(http_client, kind, state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()
        command = "command"

        result = session.execute(command)

        http_client.post.assert_called_with("/sessions/0/statements", [201], {"code": command})
        http_client.get.assert_called_with("/sessions/0/statements", [200])
        assert_equals(2, http_client.get.call_count)
        assert_equals(self.pi_result, result)
Esempio n. 18
0
    def test_create_sql_context_happens_once(self):
        kind = "scala"
        http_client = MagicMock()
        self.post_responses = [DummyResponse(201, self.session_create_json),
                               DummyResponse(201, self.post_statement_json)]
        http_client.post.side_effect = self._next_response_post
        self.get_responses = [DummyResponse(200, self.ready_sessions_json),
                              DummyResponse(200, self.running_statement_json),
                              DummyResponse(200, self.ready_statement_json)]
        http_client.get.side_effect = self._next_response_get
        session = LivySession(http_client, kind, state_sleep_seconds=0.01, statement_sleep_seconds=0.01)
        session.start()

        # Reset the mock so that post called count is accurate
        http_client.reset_mock()

        session.create_sql_context()

        # Second call should not issue a post request
        session.create_sql_context()

        http_client.post.assert_called_once_with("/sessions/0/statements", [201],
                                                 {"code": "val sqlContext = new org.apache.spark.sql.SQLContext(sc)\n"
                                                          "import sqlContext.implicits._"})