Example #1
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
Example #2
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
Example #3
0
 def test_constructor_throws_sql_create_timeout_seconds(self):
     kind = "scala"
     http_client = MagicMock()
     session_id = "-1"
     sql_created = False
     _t_config_hook({
         "status_sleep_seconds": 4,
         "statement_sleep_seconds": 2,
         "create_sql_context_timeout_seconds": 0
     })
     LivySession(http_client, kind, session_id, sql_created)
     _t_config_hook({})
Example #4
0
    def test_delete_session_when_dead_throws(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._status = "dead"

        session.delete()
def test_get_config():
    usr = "******"
    pwd = "p"
    url = "url"

    config = {user_ev: usr, pass_ev: pwd, url_ev: url}
    _t_config_hook(config)

    u, p, r = kernel._get_configuration()

    assert u == usr
    assert p == pwd
    assert r == url
Example #6
0
    def test_constructor_starts_with_no_session(self):
        kind = "scala"
        http_client = MagicMock()
        session_id = "-1"
        sql_created = False
        _t_config_hook({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2,
            "create_sql_context_timeout_seconds": 60
        })
        session = LivySession(http_client, kind, session_id, sql_created)
        _t_config_hook({})

        assert session.id == "-1"
        assert not session.started_sql_context
Example #7
0
    def test_status_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)
        _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()
    
        state = session.status

        assert_equals("idle", state)
        http_client.get.assert_called_with("/sessions", [200])
Example #8
0
    def test_start_python_starts_session(self):
        kind = "python"
        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": "pyspark"})
Example #9
0
    def test_is_final_status(self):
        kind = "scala"
        http_client = MagicMock()

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

        assert not session.is_final_status("idle")
        assert not session.is_final_status("starting")
        assert not session.is_final_status("busy")

        assert session.is_final_status("dead")
        assert session.is_final_status("error")
Example #10
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)
Example #11
0
    def test_create_sql_hive_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
        _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()
Example #12
0
    def test_wait_for_status_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

        _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.wait_for_status("idle", 30)

        http_client.get.assert_called_with("/sessions", [200])
        assert_equals(2, http_client.get.call_count)
Example #13
0
    def test_serialize(self):
        url = "url"
        username = "******"
        password = "******"
        connection_string = get_connection_string(url, username, password)
        http_client = MagicMock()
        http_client.connection_string = connection_string
        kind = "scala"
        _t_config_hook({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = LivySession(http_client, kind, "-1", False)
        _t_config_hook({})

        serialized = session.get_state().to_dict()

        assert serialized["connectionstring"] == connection_string
        assert serialized["id"] == "-1"
        assert serialized["language"] == kind
        assert serialized["sqlcontext"] == False
        assert serialized["version"] == "0.0.0"
        assert len(serialized.keys()) == 5
Example #14
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
        _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()
        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)
def _teardown():
    _t_config_hook({})