コード例 #1
0
def test_execute_failure_post_statement_emits_event():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    http_client.get_statement.return_value = tls.TestLivySession.ready_statement_json
    conf.override_all({"status_sleep_seconds": 0.01, "statement_sleep_seconds": 0.01})
    session = _create_session(kind=kind, http_client=http_client)
    session.wait_for_idle = MagicMock()
    conf.override_all({})
    session.start()
    session.wait_for_idle = MagicMock()
    command = Command("command", spark_events=spark_events)

    http_client.post_statement.side_effect = KeyError("Something bad happened here")
    try:
        result = command.execute(session)
        assert False
    except KeyError as e:
        spark_events.emit_statement_execution_start_event.assert_called_once_with(
            session.guid, session.kind, session.id, command.guid
        )
        spark_events.emit_statement_execution_end_event._assert_called_once_with(
            session.guid, session.kind, session.id, command.guid, -1, False, "KeyError", "Something bad happened here"
        )
        assert_equals(e, http_client.post_statement.side_effect)
コード例 #2
0
ファイル: test_command.py プロジェクト: ganeshraju/sparkmagic
def test_execute_failure_get_statement_output_emits_event():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    conf.override_all({
        "status_sleep_seconds": 0.01,
        "statement_sleep_seconds": 0.01
    })
    session = _create_session(kind=kind, http_client=http_client)
    session.wait_for_idle = MagicMock()
    conf.override_all({})
    session.start(create_sql_context=False)
    session.wait_for_idle = MagicMock()
    command = Command("command", spark_events=spark_events)
    command._get_statement_output = MagicMock(side_effect=AttributeError('OHHHH'))

    try:
        result = command.execute(session)
        assert False
    except AttributeError as e:
        spark_events.emit_statement_execution_start_event._assert_called_once_with(session.guid, session.kind,
                                                                                   session.id, command.guid)
        spark_events.emit_statement_execution_start_event._assert_called_once_with(session.guid, session.kind,
                                                                                   session.id, command.guid,
                                                                                   -1, False, "AttributeError",
                                                                                   "OHHHH")
        assert_equals(e, command._get_statement_output.side_effect)
コード例 #3
0
    def test_start_emits_start_end_failed_session_when_wait_for_idle_throws(
            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
        session = self._create_session(kind=kind)
        session.wait_for_idle = MagicMock(side_effect=ValueError)

        try:
            session.start()
            assert False
        except ValueError:
            pass

        conf.override_all({})

        self.spark_events.emit_session_creation_start_event.assert_called_once_with(
            session.guid, kind)
        self.spark_events.emit_session_creation_end_event.assert_called_once_with(
            session.guid, kind, session.id, session.status, False,
            "ValueError", "")
コード例 #4
0
def test_execute():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    http_client.post_session.return_value = tls.TestLivySession.session_create_json
    http_client.post_statement.return_value = tls.TestLivySession.post_statement_json
    http_client.get_session.return_value = tls.TestLivySession.ready_sessions_json
    http_client.get_statement.return_value = tls.TestLivySession.ready_statement_json
    conf.override_all({"status_sleep_seconds": 0.01, "statement_sleep_seconds": 0.01})
    session = _create_session(kind=kind, http_client=http_client)
    conf.override_all({})
    session.start()
    command = Command("command", spark_events=spark_events)

    result = command.execute(session)

    http_client.post_statement.assert_called_with(0, {"code": command.code})
    http_client.get_statement.assert_called_with(0, 0)
    assert result[0]
    assert_equals(tls.TestLivySession.pi_result, result[1])
    spark_events.emit_statement_execution_start_event.assert_called_once_with(
        session.guid, session.kind, session.id, command.guid
    )
    spark_events.emit_statement_execution_end_event.assert_called_once_with(
        session.guid, session.kind, session.id, command.guid, 0, True, "", ""
    )
コード例 #5
0
 def test_constructor_throws_status_sleep_seconds(self):
     conf.override_all({
         "status_sleep_seconds": 0,
         "statement_sleep_seconds": 2
     })
     self._create_session()
     conf.override_all({})
コード例 #6
0
    def test_delete_session_emits_start_failed_end_when_delete_throws(self):
        self.http_client.delete_session.side_effect = ValueError
        self.http_client.get_session.return_value = self.ready_sessions_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session()
        conf.override_all({})
        session.start(create_sql_context=False)
        session.id = 0
        end_id = session.id
        end_status = constants.BUSY_SESSION_STATUS
        session.status = end_status

        try:
            session.delete()
            assert False
        except ValueError:
            pass

        self.spark_events.emit_session_deletion_start_event.assert_called_once_with(
            session.guid, session.kind, end_id, end_status)
        self.spark_events.emit_session_deletion_end_event.assert_called_once_with(
            session.guid, session.kind, end_id, end_status, False, "ValueError", "")
コード例 #7
0
 def test_constructor_throws_statement_sleep_seconds(self):
     conf.override_all({
         "status_sleep_seconds": 3,
         "statement_sleep_seconds": 0
     })
     self._create_session()
     conf.override_all({})
コード例 #8
0
def test_execute_failure_get_statement_output_emits_event():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    conf.override_all({
        "status_sleep_seconds": 0.01,
        "statement_sleep_seconds": 0.01
    })
    session = _create_session(kind=kind, http_client=http_client)
    session.wait_for_idle = MagicMock()
    conf.override_all({})
    session.start(create_sql_context=False)
    session.wait_for_idle = MagicMock()
    command = Command("command", spark_events=spark_events)
    command._get_statement_output = MagicMock(
        side_effect=AttributeError('OHHHH'))

    try:
        result = command.execute(session)
        assert False
    except AttributeError as e:
        spark_events.emit_statement_execution_start_event._assert_called_once_with(
            session.guid, session.kind, session.id, command.guid)
        spark_events.emit_statement_execution_start_event._assert_called_once_with(
            session.guid, session.kind, session.id, command.guid, -1, False,
            "AttributeError", "OHHHH")
        assert_equals(e, command._get_statement_output.side_effect)
コード例 #9
0
ファイル: test_command.py プロジェクト: ganeshraju/sparkmagic
def test_execute_failure_wait_for_session_emits_event():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    http_client.post_session.return_value = tls.TestLivySession.session_create_json
    http_client.post_statement.return_value = tls.TestLivySession.post_statement_json
    http_client.get_session.return_value = tls.TestLivySession.ready_sessions_json
    http_client.get_statement.return_value = tls.TestLivySession.ready_statement_json
    conf.override_all({
        "status_sleep_seconds": 0.01,
        "statement_sleep_seconds": 0.01
    })
    session = _create_session(kind=kind, http_client=http_client)
    conf.override_all({})
    session.start(create_sql_context=False)
    session.wait_for_idle = MagicMock(side_effect=ValueError("yo"))
    command = Command("command", spark_events=spark_events)

    try:
        result = command.execute(session)
        assert False
    except ValueError as e:
        spark_events.emit_statement_execution_start_event._assert_called_once_with(session.guid, session.kind,
                                                                                   session.id, command.guid)
        spark_events.emit_statement_execution_start_event._assert_called_once_with(session.guid, session.kind,
                                                                                   session.id, command.guid,
                                                                                   -1, False, "ValueError", "yo")
        assert_equals(e, session.wait_for_idle.side_effect)
コード例 #10
0
ファイル: test_command.py プロジェクト: sjl421/sparkmagic
def test_execute_failure_post_statement_emits_event():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    http_client.get_statement.return_value = tls.TestLivySession.ready_statement_json
    conf.override_all({
        "status_sleep_seconds": 0.01,
        "statement_sleep_seconds": 0.01
    })
    session = _create_session(kind=kind, http_client=http_client)
    session.wait_for_idle = MagicMock()
    conf.override_all({})
    session.start()
    session.wait_for_idle = MagicMock()
    command = Command("command", spark_events=spark_events)

    http_client.post_statement.side_effect = KeyError(
        'Something bad happened here')
    try:
        result = command.execute(session)
        assert False
    except KeyError as e:
        spark_events.emit_statement_execution_start_event.assert_called_once_with(
            session.guid, session.kind, session.id, command.guid)
        spark_events.emit_statement_execution_end_event._assert_called_once_with(
            session.guid, session.kind, session.id, command.guid, -1, False,
            "KeyError", "Something bad happened here")
        assert_equals(e, http_client.post_statement.side_effect)
コード例 #11
0
def test_execute_failure_wait_for_session_emits_event():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    http_client.post_session.return_value = tls.TestLivySession.session_create_json
    http_client.post_statement.return_value = tls.TestLivySession.post_statement_json
    http_client.get_session.return_value = tls.TestLivySession.ready_sessions_json
    http_client.get_statement.return_value = tls.TestLivySession.ready_statement_json
    conf.override_all({
        "status_sleep_seconds": 0.01,
        "statement_sleep_seconds": 0.01
    })
    session = _create_session(kind=kind, http_client=http_client)
    conf.override_all({})
    session.start(create_sql_context=False)
    session.wait_for_idle = MagicMock(side_effect=ValueError("yo"))
    command = Command("command", spark_events=spark_events)

    try:
        result = command.execute(session)
        assert False
    except ValueError as e:
        spark_events.emit_statement_execution_start_event._assert_called_once_with(
            session.guid, session.kind, session.id, command.guid)
        spark_events.emit_statement_execution_start_event._assert_called_once_with(
            session.guid, session.kind, session.id, command.guid, -1, False,
            "ValueError", "yo")
        assert_equals(e, session.wait_for_idle.side_effect)
コード例 #12
0
    def test_delete_session_emits_start_failed_end_when_delete_throws(self):
        self.http_client.delete_session.side_effect = ValueError
        self.http_client.get_session.return_value = self.ready_sessions_json
        self.http_client.get_statement.return_value = self.ready_statement_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session()
        conf.override_all({})
        session.start()
        session.id = 0
        end_id = session.id
        end_status = constants.BUSY_SESSION_STATUS
        session.status = end_status

        try:
            session.delete()
            assert False
        except ValueError:
            pass

        self.spark_events.emit_session_deletion_start_event.assert_called_once_with(
            session.guid, session.kind, end_id, end_status)
        self.spark_events.emit_session_deletion_end_event.assert_called_once_with(
            session.guid, session.kind, end_id, end_status, False, "ValueError", "")
コード例 #13
0
ファイル: test_command.py プロジェクト: sjl421/sparkmagic
def test_execute():
    spark_events = MagicMock()
    kind = SESSION_KIND_SPARK
    http_client = MagicMock()
    http_client.post_session.return_value = tls.TestLivySession.session_create_json
    http_client.post_statement.return_value = tls.TestLivySession.post_statement_json
    http_client.get_session.return_value = tls.TestLivySession.ready_sessions_json
    http_client.get_statement.return_value = tls.TestLivySession.ready_statement_json
    conf.override_all({
        "status_sleep_seconds": 0.01,
        "statement_sleep_seconds": 0.01
    })
    session = _create_session(kind=kind, http_client=http_client)
    conf.override_all({})
    session.start()
    command = Command("command", spark_events=spark_events)

    result = command.execute(session)

    http_client.post_statement.assert_called_with(0, {"code": command.code})
    http_client.get_statement.assert_called_with(0, 0)
    assert result[0]
    assert_equals(tls.TestLivySession.pi_result, result[1])
    spark_events.emit_statement_execution_start_event.assert_called_once_with(
        session.guid, session.kind, session.id, command.guid)
    spark_events.emit_statement_execution_end_event.assert_called_once_with(
        session.guid, session.kind, session.id, command.guid, 0, True, "", "")
コード例 #14
0
 def test_constructor_throws_invalid_session_sql_combo(self):
     conf.override_all({
         "status_sleep_seconds": 2,
         "statement_sleep_seconds": 2,
         "create_sql_context_timeout_seconds": 60
     })
     self._create_session(sql_created=True)
     conf.override_all({})
コード例 #15
0
 def test_constructor_throws_invalid_session_sql_combo(self):
     conf.override_all({
         "status_sleep_seconds": 2,
         "statement_sleep_seconds": 2,
         "create_sql_context_timeout_seconds": 60
     })
     self._create_session(sql_created=True)
     conf.override_all({})
コード例 #16
0
 def test_constructor_throws_status_sleep_seconds(self):
     conf.override_all({
         "status_sleep_seconds": 0,
         "statement_sleep_seconds": 2,
         "create_sql_context_timeout_seconds": 60
     })
     self._create_session()
     conf.override_all({})
コード例 #17
0
 def test_constructor_throws_status_sleep_seconds(self):
     conf.override_all({
         "status_sleep_seconds": 0,
         "statement_sleep_seconds": 2,
         "create_sql_context_timeout_seconds": 60
     })
     self._create_session()
     conf.override_all({})
コード例 #18
0
def _setup():
    global magic, spark_controller, shell, ipython_display
    conf.override_all({})

    magic = RemoteSparkMagics(shell=None, widget=MagicMock())
    magic.shell = shell = MagicMock()
    magic.ipython_display = ipython_display = MagicMock()
    magic.spark_controller = spark_controller = MagicMock()
コード例 #19
0
def test_wrap_unexpected_exceptions_throws_if_all_errors_fatal():
    conf.override_all({'all_errors_are_fatal': True})
    mock_method = MagicMock(side_effect=ValueError('~~~~~~'))
    mock_method.__name__ = 'tos'
    decorated = wrap_unexpected_exceptions(mock_method)
    assert_equals(decorated.__name__, mock_method.__name__)

    result = decorated(self, 'FOOBAR', FOOBAR='FOOBAR')
コード例 #20
0
def test_handle_expected_exceptions_throws_if_all_errors_fatal():
    conf.override_all({'all_errors_are_fatal': True})
    mock_method = MagicMock(
        side_effect=LivyUnexpectedStatusException('Oh no!'))
    mock_method.__name__ = 'mock_meth'
    decorated = handle_expected_exceptions(mock_method)
    assert_equals(decorated.__name__, mock_method.__name__)

    result = decorated(self, 1, kwarg='foo')
コード例 #21
0
    def test_constructor_starts_with_no_session(self):
        conf.override_all({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2
        })
        session = self._create_session()
        conf.override_all({})

        assert session.id == -1
コード例 #22
0
def test_configuration_override_work_with_empty_password():
    kpc = { 'username': '******', 'base64_password': '', 'password': '', 'url': '' }
    overrides = { conf.kernel_python_credentials.__name__: kpc }
    conf.override_all(overrides)
    conf.override(conf.status_sleep_seconds.__name__, 1)
    assert_equals(conf.d, { conf.kernel_python_credentials.__name__: kpc,
                                     conf.status_sleep_seconds.__name__: 1 })
    assert_equals(conf.status_sleep_seconds(), 1)
    assert_equals(conf.base64_kernel_python_credentials(),  { 'username': '******', 'password': '', 'url': '' })
コード例 #23
0
def test_start_session_times_out_all_errors_are_fatal():
    conf.override_all({"all_errors_are_fatal": True})

    line = ""
    spark_controller.add_session = MagicMock(
        side_effect=LivyClientTimeoutException)
    assert not magic.session_started

    ret = magic._do_not_call_start_session(line)
コード例 #24
0
    def test_constructor_starts_with_no_session(self):
        conf.override_all({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2
        })
        session = self._create_session()
        conf.override_all({})

        assert session.id == -1
コード例 #25
0
def test_configuration_auth_missing_no_auth():
    kpc = {'username': '', 'password': '', 'url': 'L'}
    overrides = {conf.kernel_python_credentials.__name__: kpc}
    conf.override_all(overrides)
    assert_equals(conf.base64_kernel_python_credentials(), {
        'username': '',
        'password': '',
        'url': 'L',
        'auth': NO_AUTH
    })
コード例 #26
0
def test_custom_headers():
    custom_headers = {"header1": "value1"}
    overrides = {conf.custom_headers.__name__: custom_headers}
    conf.override_all(overrides)
    endpoint = Endpoint("http://url.com", constants.NO_AUTH)
    client = LivyReliableHttpClient.from_endpoint(endpoint)
    headers = client.get_headers()
    assert_equals(len(headers), 2)
    assert_equals("Content-Type" in headers, True)
    assert_equals("header1" in headers, True)
def _setup():
    global magic, session, shell, ipython_display
    shell = MagicMock()
    shell.user_ns = {}
    magic = SparkMagicBase(None)
    magic.shell = shell
    session = MagicMock()
    magic.spark_controller = MagicMock()
    magic.ipython_display = MagicMock()
    conf.override_all({})
コード例 #28
0
def _setup():
    global magic, spark_controller, shell, ipython_display, spark_events, conf

    conf.override_all({})
    spark_events = MagicMock()

    magic = TestKernelMagics(shell=None, spark_events=spark_events)
    magic.shell = shell = MagicMock()
    magic.ipython_display = ipython_display = MagicMock()
    magic.spark_controller = spark_controller = MagicMock()
    magic._generate_uuid = MagicMock(return_value='0000')
コード例 #29
0
    def test_constructor_starts_with_no_session(self):
        conf.override_all({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2,
            "create_sql_context_timeout_seconds": 60
        })
        session = self._create_session()
        conf.override_all({})

        assert session.id == -1
        assert not session.created_sql_context
コード例 #30
0
    def test_constructor_starts_heartbeat_with_existing_session(self):
        conf.override_all({"heartbeat_refresh_seconds": 0.1})
        session_id = 1
        session = self._create_session(session_id=session_id)
        conf.override_all({})

        assert session.id == session_id
        assert self.heartbeat_thread.daemon
        self.heartbeat_thread.start.assert_called_once_with()
        assert not session._heartbeat_thread is None
        assert session.properties[constants.LIVY_HEARTBEAT_TIMEOUT_PARAM] > 0
コード例 #31
0
def _setup():
    global magic, spark_controller, shell, ipython_display, spark_events, conf

    conf.override_all({})
    spark_events = MagicMock()

    magic = TestKernelMagics(shell=None, spark_events=spark_events)
    magic.shell = shell = MagicMock()
    magic.ipython_display = ipython_display = MagicMock()
    magic.spark_controller = spark_controller = MagicMock()
    magic._generate_uuid = MagicMock(return_value='0000')
コード例 #32
0
def test_spark_fatal_spark_statement_exception():
    conf.override_all({
        "all_errors_are_fatal": True,
    })

    line = ""
    cell = "some spark code"

    spark_controller.run_command = MagicMock(side_effect=SparkStatementException('Oh no!'))

    magic.spark(line, cell)
コード例 #33
0
    def test_constructor_starts_with_no_session(self):
        conf.override_all({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2,
            "create_sql_context_timeout_seconds": 60
        })
        session = self._create_session()
        conf.override_all({})

        assert session.id == -1
        assert not session.created_sql_context
コード例 #34
0
def test_handle_expected_exceptions_handle():
    conf.override_all({'all_errors_are_fatal': False})
    mock_method = MagicMock(
        side_effect=LivyUnexpectedStatusException('ridiculous'))
    mock_method.__name__ = 'MockMethod2'
    decorated = handle_expected_exceptions(mock_method)
    assert_equals(decorated.__name__, mock_method.__name__)

    result = decorated(self, 1, kwarg='foo')
    assert_is(result, None)
    assert_equals(ipython_display.send_error.call_count, 1)
    mock_method.assert_called_once_with(self, 1, kwarg='foo')
コード例 #35
0
def test_configuration_override_fallback_to_password():
    kpc = {'username': '******', 'password': '******', 'url': 'L'}
    overrides = {conf.kernel_python_credentials.__name__: kpc}
    conf.override_all(overrides)
    conf.override(conf.status_sleep_seconds.__name__, 1)
    assert_equals(
        conf.d, {
            conf.kernel_python_credentials.__name__: kpc,
            conf.status_sleep_seconds.__name__: 1
        })
    assert_equals(conf.status_sleep_seconds(), 1)
    assert_equals(conf.base64_kernel_python_credentials(), kpc)
コード例 #36
0
def test_spark_statement_exception():
    conf.override_all({
        "spark_statement_errors_are_fatal": True
    })

    mockSparkCommand = MagicMock()
    magic._spark_store_command = MagicMock(return_value=mockSparkCommand)
    exception = BadUserDataException("Ka-boom!")

    magic.spark_controller.run_command.side_effect = [(False, 'out'), exception]
    assert_raises(SparkStatementException, magic.execute_spark,"", None, None, None, None, session, True)
    magic.spark_controller.cleanup.assert_not_called()
コード例 #37
0
def test_sparkstorecommand_loads_defaults():
    defaults = {
        conf.default_samplemethod.__name__: "sample",
        conf.default_maxrows.__name__: 419,
        conf.default_samplefraction.__name__: 0.99,
    }
    conf.override_all(defaults)
    variable_name = "var_name"
    sparkcommand = SparkStoreCommand(variable_name)
    assert_equals(sparkcommand.samplemethod, defaults[conf.default_samplemethod.__name__])
    assert_equals(sparkcommand.maxrows, defaults[conf.default_maxrows.__name__])
    assert_equals(sparkcommand.samplefraction, defaults[conf.default_samplefraction.__name__])
コード例 #38
0
    def test_delete_session_when_not_started(self):
        self.http_client.post_session.return_value = self.session_create_json
        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session()
        conf.override_all({})

        session.delete()

        assert_equals(session.ipython_display.send_error.call_count, 1)
コード例 #39
0
    def test_constructor_starts_with_existing_session(self):
        conf.override_all({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2
        })
        session_id = 1
        session = self._create_session(session_id=session_id, heartbeat_timeout=0)
        conf.override_all({})

        assert session.id == session_id
        assert session._heartbeat_thread is None
        assert constants.LIVY_HEARTBEAT_TIMEOUT_PARAM not in list(session.properties.keys())
コード例 #40
0
    def test_delete_session_when_not_started(self):
        self.http_client.post_session.return_value = self.session_create_json
        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session()
        conf.override_all({})

        session.delete()

        assert_equals(session.ipython_display.send_error.call_count, 1)
コード例 #41
0
    def test_constructor_starts_with_existing_session(self):
        conf.override_all({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2,
            "create_sql_context_timeout_seconds": 60
        })
        session_id = 1
        session = self._create_session(session_id=session_id, sql_created=True)
        conf.override_all({})

        assert session.id == session_id
        assert session.created_sql_context
コード例 #42
0
def test_configuration_override_fallback_to_password():
    kpc = {'username': '******', 'password': '******', 'url': 'L', 'auth': NO_AUTH}
    overrides = {conf.kernel_python_credentials.__name__: kpc}
    conf.override_all(overrides)
    conf.override(conf.livy_session_startup_timeout_seconds.__name__, 1)
    assert_equals(
        conf.d, {
            conf.kernel_python_credentials.__name__: kpc,
            conf.livy_session_startup_timeout_seconds.__name__: 1
        })
    assert_equals(conf.livy_session_startup_timeout_seconds(), 1)
    assert_equals(conf.base64_kernel_python_credentials(), kpc)
コード例 #43
0
def test_sqlquery_loads_defaults():
    defaults = {
        conf.default_samplemethod.__name__: "sample",
        conf.default_maxrows.__name__: 419,
        conf.default_samplefraction.__name__: 0.99,
    }
    conf.override_all(defaults)
    query = "DROP TABLE USERS;"
    sqlquery = SQLQuery(query)
    assert_equals(sqlquery.query, query)
    assert_equals(sqlquery.samplemethod, defaults[conf.default_samplemethod.__name__])
    assert_equals(sqlquery.maxrows, defaults[conf.default_maxrows.__name__])
    assert_equals(sqlquery.samplefraction, defaults[conf.default_samplefraction.__name__])
コード例 #44
0
def test_sqlquery_loads_defaults():
    defaults = {
        conf.default_samplemethod.__name__: "sample",
        conf.default_maxrows.__name__: 419,
        conf.default_samplefraction.__name__: 0.99,
    }
    conf.override_all(defaults)
    query = "DROP TABLE USERS;"
    sqlquery = SQLQuery(query)
    assert_equals(sqlquery.query, query)
    assert_equals(sqlquery.samplemethod, defaults[conf.default_samplemethod.__name__])
    assert_equals(sqlquery.maxrows, defaults[conf.default_maxrows.__name__])
    assert_equals(sqlquery.samplefraction, defaults[conf.default_samplefraction.__name__])
コード例 #45
0
 def test_create_sql_hive_context_unknown_throws(self):
     kind = "unknown"
     self.http_client.post_session.return_value = self.session_create_json
     self.http_client.post_statement.return_value = self.post_statement_json
     self.http_client.get_session.return_value = self.ready_sessions_json
     self.get_statement_responses = [self.running_statement_json, self.ready_statement_json]
     self.http_client.get_statement.side_effect = self._next_statement_response_get
     conf.override_all({
         "status_sleep_seconds": 0.01,
         "statement_sleep_seconds": 0.01
     })
     session = self._create_session(kind=kind)
     conf.override_all({})
     session.start()
コード例 #46
0
 def test_create_sql_hive_context_unknown_throws(self):
     kind = "unknown"
     self.http_client.post_session.return_value = self.session_create_json
     self.http_client.post_statement.return_value = self.post_statement_json
     self.http_client.get_session.return_value = self.ready_sessions_json
     self.get_statement_responses = [self.running_statement_json, self.ready_statement_json]
     self.http_client.get_statement.side_effect = self._next_statement_response_get
     conf.override_all({
         "status_sleep_seconds": 0.01,
         "statement_sleep_seconds": 0.01
     })
     session = self._create_session(kind=kind)
     conf.override_all({})
     session.start()
コード例 #47
0
    def test_constructor_starts_with_existing_session(self):
        conf.override_all({
            "status_sleep_seconds": 4,
            "statement_sleep_seconds": 2,
            "create_sql_context_timeout_seconds": 60
        })
        session_id = 1
        session = self._create_session(session_id=session_id, sql_created=True,
                                       should_heartbeat=False)
        conf.override_all({})

        assert session.id == session_id
        assert session.created_sql_context
        assert session._heartbeat_thread is None
コード例 #48
0
    def test_is_final_status(self):
        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session()
        conf.override_all({})

        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")
コード例 #49
0
    def test_delete_session_when_active(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
        })
        session = self._create_session()
        conf.override_all({})
        session.start(create_sql_context=False)

        session.delete()

        assert_equals("dead", session.status)
コード例 #50
0
 def test_constructor_starts_heartbeat_with_existing_session(self):
     conf.override_all({
         "status_sleep_seconds": 4,
         "statement_sleep_seconds": 2,
         "heartbeat_refresh_seconds": 0.1
     })
     session_id = 1
     session = self._create_session(session_id=session_id)
     conf.override_all({})
     
     assert session.id == session_id
     assert self.heartbeat_thread.daemon
     self.heartbeat_thread.start.assert_called_once_with()
     assert not session._heartbeat_thread is None
     assert session.properties[constants.LIVY_HEARTBEAT_TIMEOUT_PARAM ] > 0
コード例 #51
0
    def test_start_with_heartbeat(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
        })
        session = self._create_session(should_heartbeat=True)
        session.create_sql_context = MagicMock()
        session.start()
        conf.override_all({})

        assert self.heartbeat_thread.daemon
        self.heartbeat_thread.start.assert_called_once_with()
        assert not session._heartbeat_thread is None
コード例 #52
0
    def test_logs_gets_latest_logs(self):
        self.http_client.post_session.return_value = self.session_create_json
        self.http_client.get_session.return_value = self.ready_sessions_json
        self.http_client.get_all_session_logs.return_value = self.log_json
        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session()
        conf.override_all({})
        session.start(create_sql_context=False)

        logs = session.get_logs()

        assert_equals("hi\nhi", logs)
        self.http_client.get_all_session_logs.assert_called_with(0)
コード例 #53
0
    def test_status_gets_latest_status(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
        })
        session = self._create_session()
        conf.override_all({})
        session.start(create_sql_context=False)

        session.refresh_status()
        state = session.status

        assert_equals("idle", state)
        self.http_client.get_session.assert_called_with(0)
コード例 #54
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.override_all({})

        self.http_client.post_session.assert_called_with(properties)
コード例 #55
0
    def test_start_with_heartbeat(self):
        self.http_client.post_session.return_value = self.session_create_json
        self.http_client.get_session.return_value = self.ready_sessions_json
        self.http_client.get_statement.return_value = self.ready_statement_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01,
        })
        session = self._create_session()
        session.start()
        conf.override_all({})

        assert self.heartbeat_thread.daemon
        self.heartbeat_thread.start.assert_called_once_with()
        assert not session._heartbeat_thread is None
        assert session.properties[constants.LIVY_HEARTBEAT_TIMEOUT_PARAM ] > 0
コード例 #56
0
    def test_start_emits_start_end_session(self):
        self.http_client.post_session.return_value = self.session_create_json
        self.http_client.get_session.return_value = self.ready_sessions_json
        self.http_client.get_statement.return_value = self.ready_statement_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        kind = constants.SESSION_KIND_SPARK
        session = self._create_session(kind=kind)
        session.start()
        conf.override_all({})

        self.spark_events.emit_session_creation_start_event.assert_called_once_with(session.guid, kind)
        self.spark_events.emit_session_creation_end_event.assert_called_once_with(
            session.guid, kind, session.id, session.status, True, "", "")
コード例 #57
0
 def test_constructor_starts_heartbeat_with_existing_session(self):
     conf.override_all({
         "status_sleep_seconds": 4,
         "statement_sleep_seconds": 2,
         "create_sql_context_timeout_seconds": 60,
         "heartbeat_refresh_seconds": 0.1
     })
     session_id = 1
     session = self._create_session(session_id=session_id, sql_created=True,
                                    should_heartbeat=True)
     conf.override_all({})
     
     assert session.id == session_id
     assert session.created_sql_context
     assert self.heartbeat_thread.daemon
     self.heartbeat_thread.start.assert_called_once_with()
     assert not session._heartbeat_thread is None
コード例 #58
0
    def test_delete_with_heartbeat(self):
        self.http_client.post_session.return_value = self.session_create_json
        self.http_client.get_session.return_value = self.ready_sessions_json
        self.http_client.get_statement.return_value = self.ready_statement_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session()
        session.start()
        conf.override_all({})
        heartbeat_thread = session._heartbeat_thread
        
        session.delete()
        
        self.heartbeat_thread.stop.assert_called_once_with()
        assert session._heartbeat_thread is None
コード例 #59
0
    def test_start_python_starts_session(self):
        self.http_client.post_session.return_value = self.session_create_json
        self.http_client.get_session.return_value = self.ready_sessions_json
        self.http_client.get_statement.return_value = self.ready_statement_json

        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        kind = constants.SESSION_KIND_PYSPARK
        session = self._create_session(kind=kind)
        session.start()
        conf.override_all({})

        assert_equals(kind, session.kind)
        assert_equals("idle", session.status)
        assert_equals(0, session.id)
        self.http_client.post_session.assert_called_with({"kind": "pyspark", "heartbeatTimeoutInSecond": 60})
コード例 #60
0
    def test_create_sql_hive_context_pyspark(self):
        kind = constants.SESSION_KIND_PYSPARK
        self.http_client.post_session.return_value = self.session_create_json
        self.http_client.post_statement.return_value = self.post_statement_json
        self.http_client.get_session.return_value = self.ready_sessions_json
        self.get_statement_responses = [self.running_statement_json, self.ready_statement_json,
                                        self.ready_statement_json]
        self.http_client.get_statement.side_effect = self._next_statement_response_get
        conf.override_all({
            "status_sleep_seconds": 0.01,
            "statement_sleep_seconds": 0.01
        })
        session = self._create_session(kind=kind)
        conf.override_all({})
        session.start()

        assert call(0, {"code": "from pyspark.sql import HiveContext\n"
                                "sqlContext = HiveContext(sc)"}) \
               in self.http_client.post_statement.call_args_list