Best Python code snippet using avocado_python
test_kernel_magics.py
Source:test_kernel_magics.py  
1from mock import MagicMock2from nose.tools import with_setup, raises, assert_equals, assert_is3from IPython.core.magic import magics_class4import sparkmagic.utils.constants as constants5import sparkmagic.utils.configuration as conf6from sparkmagic.kernels.kernelmagics import KernelMagics7from sparkmagic.livyclientlib.exceptions import LivyClientTimeoutException, BadUserDataException,\8    LivyUnexpectedStatusException, SessionManagementException,\9    HttpClientException, DataFrameParseException, SqlContextNotFoundException10from sparkmagic.livyclientlib.endpoint import Endpoint11from sparkmagic.livyclientlib.command import Command12from sparkmagic.utils.constants import NO_AUTH, AUTH_BASIC13magic = None14spark_controller = None15shell = None16ipython_display = MagicMock()17spark_events = None18@magics_class19class TestKernelMagics(KernelMagics):20    def __init__(self, shell, data=None, spark_events=None):21        super(TestKernelMagics, self).__init__(shell, spark_events=spark_events)22        self.language = constants.LANG_PYTHON23        self.endpoint = Endpoint("url", NO_AUTH)24    def refresh_configuration(self):25        self.endpoint = Endpoint("new_url", NO_AUTH)26def _setup():27    global magic, spark_controller, shell, ipython_display, spark_events, conf28    conf.override_all({})29    spark_events = MagicMock()30    magic = TestKernelMagics(shell=None, spark_events=spark_events)31    magic.shell = shell = MagicMock()32    magic.ipython_display = ipython_display = MagicMock()33    magic.spark_controller = spark_controller = MagicMock()34    magic._generate_uuid = MagicMock(return_value='0000')35def _teardown():36    pass37@with_setup(_setup, _teardown)38@raises(NotImplementedError)39def test_local():40    magic.local("")41@with_setup(_setup, _teardown)42def test_start_session():43    line = ""44    assert not magic.session_started45    ret = magic._do_not_call_start_session(line)46    assert ret47    assert magic.session_started48    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,49                                                         {"kind": constants.SESSION_KIND_PYSPARK})50    # Call a second time51    ret = magic._do_not_call_start_session(line)52    assert ret53    assert magic.session_started54    assert spark_controller.add_session.call_count == 155@with_setup(_setup, _teardown)56def test_start_session_times_out():57    line = ""58    spark_controller.add_session = MagicMock(side_effect=LivyClientTimeoutException)59    assert not magic.session_started60    ret = magic._do_not_call_start_session(line)61    assert not ret62    assert magic.session_started63    assert magic.fatal_error64    assert_equals(ipython_display.send_error.call_count, 1)65    # Call after fatal error66    ipython_display.send_error.reset_mock()67    ret = magic._do_not_call_start_session(line)68    assert not ret69    assert magic.session_started70    assert_equals(ipython_display.send_error.call_count, 1)71@with_setup(_setup, _teardown)72def test_delete_session():73    line = ""74    magic.session_started = True75    magic._do_not_call_delete_session(line)76    assert not magic.session_started77    spark_controller.delete_session_by_name.assert_called_once_with(magic.session_name)78    # Call a second time79    magic._do_not_call_delete_session(line)80    assert not magic.session_started81    assert spark_controller.delete_session_by_name.call_count == 182@with_setup(_setup, _teardown)83def test_delete_session_expected_exception():84    line = ""85    magic.session_started = True86    spark_controller.delete_session_by_name.side_effect = BadUserDataException('hey')87    magic._do_not_call_delete_session(line)88    assert not magic.session_started89    spark_controller.delete_session_by_name.assert_called_once_with(magic.session_name)90    ipython_display.send_error.assert_called_once_with(constants.EXPECTED_ERROR_MSG91                                                       .format(spark_controller.delete_session_by_name.side_effect))92@with_setup(_setup, _teardown)93def test_change_language():94    language = constants.LANG_SCALA.upper()95    line = "-l {}".format(language)96    magic._do_not_call_change_language(line)97    assert_equals(constants.LANG_SCALA, magic.language)98    assert_equals(Endpoint("new_url", NO_AUTH), magic.endpoint)99@with_setup(_setup, _teardown)100def test_change_language_session_started():101    language = constants.LANG_PYTHON102    line = "-l {}".format(language)103    magic.session_started = True104    magic._do_not_call_change_language(line)105    assert_equals(ipython_display.send_error.call_count, 1)106    assert_equals(constants.LANG_PYTHON, magic.language)107    assert_equals(Endpoint("url", NO_AUTH), magic.endpoint)108@with_setup(_setup, _teardown)109def test_change_language_not_valid():110    language = "not_valid"111    line = "-l {}".format(language)112    magic._do_not_call_change_language(line)113    assert_equals(ipython_display.send_error.call_count, 1)114    assert_equals(constants.LANG_PYTHON, magic.language)115    assert_equals(Endpoint("url", NO_AUTH), magic.endpoint)116@with_setup(_setup, _teardown)117def test_change_endpoint():118    u = 'user'119    p = 'password'120    s = 'server'121    t = AUTH_BASIC122    line = "-s {} -u {} -p {} -t {}".format(s, u, p, t)123    magic._do_not_call_change_endpoint(line)124    assert_equals(Endpoint(s, t, u, p), magic.endpoint)125@with_setup(_setup, _teardown)126@raises(BadUserDataException)127def test_change_endpoint_session_started():128    u = 'user'129    p = 'password'130    s = 'server'131    line = "-s {} -u {} -p {}".format(s, u, p)132    magic.session_started = True133    magic._do_not_call_change_endpoint(line)134    135@with_setup(_setup, _teardown)136def test_info():137    magic._print_endpoint_info = print_info_mock = MagicMock()138    line = ""139    session_info = [MagicMock(), MagicMock()]140    spark_controller.get_all_sessions_endpoint = MagicMock(return_value=session_info)141    magic.session_started = True142    magic.info(line)143    print_info_mock.assert_called_once_with(session_info, spark_controller.get_session_id_for_client.return_value)144    spark_controller.get_session_id_for_client.assert_called_once_with(magic.session_name)145    _assert_magic_successful_event_emitted_once('info')146@with_setup(_setup, _teardown)147def test_info_without_active_session():148    magic._print_endpoint_info = print_info_mock = MagicMock()149    line = ""150    session_info = [MagicMock(), MagicMock()]151    spark_controller.get_all_sessions_endpoint = MagicMock(return_value=session_info)152    magic.info(line)153    print_info_mock.assert_called_once_with(session_info, None)154    _assert_magic_successful_event_emitted_once('info')155@with_setup(_setup, _teardown)156def test_info_with_cell_content():157    magic._print_endpoint_info = print_info_mock = MagicMock()158    line = ""159    session_info = ["1", "2"]160    spark_controller.get_all_sessions_endpoint_info = MagicMock(return_value=session_info)161    error_msg = "Cell body for %%info magic must be empty; got 'howdy' instead"162    magic.info(line, cell='howdy')163    print_info_mock.assert_not_called()164    assert_equals(ipython_display.send_error.call_count, 1)165    spark_controller.get_session_id_for_client.assert_not_called()166    _assert_magic_failure_event_emitted_once('info', BadUserDataException(error_msg))167@with_setup(_setup, _teardown)168def test_info_with_argument():169    magic._print_endpoint_info = print_info_mock = MagicMock()170    line = "hey"171    session_info = ["1", "2"]172    spark_controller.get_all_sessions_endpoint_info = MagicMock(return_value=session_info)173    magic.info(line)174    print_info_mock.assert_not_called()175    assert_equals(ipython_display.send_error.call_count, 1)176    spark_controller.get_session_id_for_client.assert_not_called()177@with_setup(_setup, _teardown)178def test_info_unexpected_exception():179    magic._print_endpoint_info = MagicMock()180    line = ""181    spark_controller.get_all_sessions_endpoint = MagicMock(side_effect=ValueError('utter failure'))182    magic.info(line)183    _assert_magic_failure_event_emitted_once('info', spark_controller.get_all_sessions_endpoint.side_effect)184    ipython_display.send_error.assert_called_once_with(constants.INTERNAL_ERROR_MSG185                                                       .format(spark_controller.get_all_sessions_endpoint.side_effect))186@with_setup(_setup, _teardown)187def test_info_expected_exception():188    magic._print_endpoint_info = MagicMock()189    line = ""190    spark_controller.get_all_sessions_endpoint = MagicMock(side_effect=SqlContextNotFoundException('utter failure'))191    magic.info(line)192    _assert_magic_failure_event_emitted_once('info', spark_controller.get_all_sessions_endpoint.side_effect)193    ipython_display.send_error.assert_called_once_with(constants.EXPECTED_ERROR_MSG194                                                       .format(spark_controller.get_all_sessions_endpoint.side_effect))195@with_setup(_setup, _teardown)196def test_help():197    magic.help("")198    assert_equals(ipython_display.html.call_count, 1)199    _assert_magic_successful_event_emitted_once('help')200@with_setup(_setup, _teardown)201def test_help_with_cell_content():202    msg = "Cell body for %%help magic must be empty; got 'HAHAH' instead"203    magic.help("", cell="HAHAH")204    assert_equals(ipython_display.send_error.call_count, 1)205    assert_equals(ipython_display.html.call_count, 0)206    _assert_magic_failure_event_emitted_once('help', BadUserDataException(msg))207@with_setup(_setup, _teardown)208def test_help_with_argument():209    magic.help("argument here")210    assert_equals(ipython_display.send_error.call_count, 1)211    assert_equals(ipython_display.html.call_count, 0)212@with_setup(_setup, _teardown)213def test_logs():214    logs = "logs"215    line = ""216    magic.logs(line)217    ipython_display.write.assert_called_once_with("No logs yet.")218    _assert_magic_successful_event_emitted_once('logs')219    ipython_display.write.reset_mock()220    magic.session_started = True221    spark_controller.get_logs = MagicMock(return_value=logs)222    magic.logs(line)223    ipython_display.write.assert_called_once_with(logs)224    spark_controller.get_logs.assert_called_once_with()225@with_setup(_setup, _teardown)226def test_logs_with_cell_content():227    logs = "logs"228    line = ""229    msg = "Cell body for %%logs magic must be empty; got 'BOOP' instead"230    magic.logs(line, cell="BOOP")231    assert_equals(ipython_display.send_error.call_count, 1)232    _assert_magic_failure_event_emitted_once('logs', BadUserDataException(msg))233@with_setup(_setup, _teardown)234def test_logs_with_argument():235    line = "-h"236    magic.logs(line)237    assert_equals(ipython_display.send_error.call_count, 1)238@with_setup(_setup, _teardown)239def test_logs_unexpected_exception():240    line = ""241    magic.session_started = True242    spark_controller.get_logs = MagicMock(side_effect=SyntaxError('There was some sort of error'))243    magic.logs(line)244    spark_controller.get_logs.assert_called_once_with()245    _assert_magic_failure_event_emitted_once('logs', spark_controller.get_logs.side_effect)246    ipython_display.send_error.assert_called_once_with(constants.INTERNAL_ERROR_MSG247                                                       .format(spark_controller.get_logs.side_effect))248@with_setup(_setup, _teardown)249def test_logs_expected_exception():250    line = ""251    magic.session_started = True252    spark_controller.get_logs = MagicMock(side_effect=LivyUnexpectedStatusException('There was some sort of error'))253    magic.logs(line)254    spark_controller.get_logs.assert_called_once_with()255    _assert_magic_failure_event_emitted_once('logs', spark_controller.get_logs.side_effect)256    ipython_display.send_error.assert_called_once_with(constants.EXPECTED_ERROR_MSG257                                                       .format(spark_controller.get_logs.side_effect))258@with_setup(_setup, _teardown)259def test_configure():260    # Mock info method261    magic.info = MagicMock()262    # Session not started263    conf.override_all({})264    magic.configure('', '{"extra": "yes"}')265    assert_equals(conf.session_configs(), {"extra": "yes"})266    _assert_magic_successful_event_emitted_once('configure')267    magic.info.assert_called_once_with("")268    # Session started - no -f269    magic.session_started = True270    conf.override_all({})271    magic.configure('', "{\"extra\": \"yes\"}")272    assert_equals(conf.session_configs(), {})273    assert_equals(ipython_display.send_error.call_count, 1)274    # Session started - with -f275    magic.info.reset_mock()276    conf.override_all({})277    magic.configure("-f", "{\"extra\": \"yes\"}")278    assert_equals(conf.session_configs(), {"extra": "yes"})279    spark_controller.delete_session_by_name.assert_called_once_with(magic.session_name)280    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,281                                                         {"kind": constants.SESSION_KIND_PYSPARK, "extra": "yes"})282    magic.info.assert_called_once_with("")283@with_setup(_setup, _teardown)284def test_configure_unexpected_exception():285    magic.info = MagicMock()286    magic._override_session_settings = MagicMock(side_effect=ValueError('help'))287    magic.configure('', '{"extra": "yes"}')288    _assert_magic_failure_event_emitted_once('configure', magic._override_session_settings.side_effect)289    ipython_display.send_error.assert_called_once_with(constants.INTERNAL_ERROR_MSG\290                                                       .format(magic._override_session_settings.side_effect))291@with_setup(_setup, _teardown)292def test_configure_expected_exception():293    magic.info = MagicMock()294    magic._override_session_settings = MagicMock(side_effect=BadUserDataException('help'))295    magic.configure('', '{"extra": "yes"}')296    _assert_magic_failure_event_emitted_once('configure', magic._override_session_settings.side_effect)297    ipython_display.send_error.assert_called_once_with(constants.EXPECTED_ERROR_MSG\298                                                       .format(magic._override_session_settings.side_effect))299@with_setup(_setup, _teardown)300def test_configure_cant_parse_object_as_json():301    magic.info = MagicMock()302    magic._override_session_settings = MagicMock(side_effect=BadUserDataException('help'))303    magic.configure('', "I CAN'T PARSE THIS AS JSON")304    _assert_magic_successful_event_emitted_once('configure')305    assert_equals(ipython_display.send_error.call_count, 1)306@with_setup(_setup, _teardown)307def test_get_session_settings():308    assert magic.get_session_settings("something", False) == "something"309    assert magic.get_session_settings("something    ", False) == "something"310    assert magic.get_session_settings("    something", False) == "something"311    assert magic.get_session_settings("-f something", True) == "something"312    assert magic.get_session_settings("something -f", True) == "something"313    assert magic.get_session_settings("something", True) is None314@with_setup(_setup, _teardown)315def test_spark():316    line = ""317    cell = "some spark code"318    spark_controller.run_command = MagicMock(return_value=(True, line))319    magic.spark(line, cell)320    ipython_display.write.assert_called_once_with(line)321    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,322                                                         {"kind": constants.SESSION_KIND_PYSPARK})323    spark_controller.run_command.assert_called_once_with(Command(cell), None)324@with_setup(_setup, _teardown)325def test_spark_with_argument():326    line = "-z"327    cell = "some spark code"328    spark_controller.run_command = MagicMock(return_value=(True, line))329    magic.spark(line, cell)330    assert_equals(ipython_display.send_error.call_count, 1)331@with_setup(_setup, _teardown)332def test_spark_error():333    line = ""334    cell = "some spark code"335    spark_controller.run_command = MagicMock(return_value=(False, line))336    magic.spark(line, cell)337    ipython_display.send_error.assert_called_once_with(line)338    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,339                                                         {"kind": constants.SESSION_KIND_PYSPARK})340    spark_controller.run_command.assert_called_once_with(Command(cell), None)341@with_setup(_setup, _teardown)342def test_spark_failed_session_start():343    line = ""344    cell = "some spark code"345    magic._do_not_call_start_session = MagicMock(return_value=False)346    ret = magic.spark(line, cell)347    assert_is(ret, None)348    assert_equals(ipython_display.write.call_count, 0)349    assert_equals(spark_controller.add_session.call_count, 0)350    assert_equals(spark_controller.run_command.call_count, 0)351@with_setup(_setup, _teardown)352def test_spark_unexpected_exception():353    line = ""354    cell = "some spark code"355    spark_controller.run_command = MagicMock(side_effect=Exception('oups'))356    magic.spark(line, cell)357    spark_controller.run_command.assert_called_once_with(Command(cell), None)358    ipython_display.send_error.assert_called_once_with(constants.INTERNAL_ERROR_MSG359                                                       .format(spark_controller.run_command.side_effect))360@with_setup(_setup, _teardown)361def test_spark_expected_exception():362    line = ""363    cell = "some spark code"364    spark_controller.run_command = MagicMock(side_effect=SessionManagementException('oups'))365    magic.spark(line, cell)366    spark_controller.run_command.assert_called_once_with(Command(cell), None)367    ipython_display.send_error.assert_called_once_with(constants.EXPECTED_ERROR_MSG368                                                       .format(spark_controller.run_command.side_effect))369@with_setup(_setup, _teardown)370def test_spark_unexpected_exception_in_storing():371    line = "-o var_name"372    cell = "some spark code"373    side_effect = [(True,'ok'), Exception('oups')]374    spark_controller.run_command = MagicMock(side_effect=side_effect)375    magic.spark(line, cell)376    assert_equals(spark_controller.run_command.call_count, 2)377    spark_controller.run_command.assert_any_call(Command(cell), None)378    ipython_display.send_error.assert_called_with(constants.INTERNAL_ERROR_MSG379                                                       .format(side_effect[1]))380@with_setup(_setup, _teardown)381def test_spark_expected_exception_in_storing():382    line = "-o var_name"383    cell = "some spark code"384    side_effect = [(True,'ok'), SessionManagementException('oups')]385    spark_controller.run_command = MagicMock(side_effect=side_effect)386    magic.spark(line, cell)387    assert spark_controller.run_command.call_count == 2388    spark_controller.run_command.assert_any_call(Command(cell), None)389    ipython_display.send_error.assert_called_with(constants.EXPECTED_ERROR_MSG390                                                  .format(side_effect[1]))391@with_setup(_setup, _teardown)392def test_spark_sample_options():393    line = "-o var_name -m sample -n 142 -r 0.3 -c True"394    cell = ""395    magic.execute_spark = MagicMock()396    ret = magic.spark(line, cell)397    magic.execute_spark.assert_called_once_with(cell, "var_name", "sample", 142, 0.3, None, True)398@with_setup(_setup, _teardown)399def test_spark_false_coerce():400    line = "-o var_name -m sample -n 142 -r 0.3 -c False"401    cell = ""402    magic.execute_spark = MagicMock()403    ret = magic.spark(line, cell)404    magic.execute_spark.assert_called_once_with(cell, "var_name", "sample", 142, 0.3, None, False)405@with_setup(_setup, _teardown)406def test_sql_without_output():407    line = ""408    cell = "some spark code"409    magic.execute_sqlquery = MagicMock()410    magic.sql(line, cell)411    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,412                                                         {"kind": constants.SESSION_KIND_PYSPARK})413    magic.execute_sqlquery.assert_called_once_with(cell, None, None, None, None, None, False, None)414@with_setup(_setup, _teardown)415def test_sql_with_output():416    line = "-o my_var"417    cell = "some spark code"418    magic.execute_sqlquery = MagicMock()419    magic.sql(line, cell)420    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,421                                                         {"kind": constants.SESSION_KIND_PYSPARK})422    magic.execute_sqlquery.assert_called_once_with(cell, None, None, None, None, "my_var", False, None)423@with_setup(_setup, _teardown)424def test_sql_exception():425    line = "-o my_var"426    cell = "some spark code"427    magic.execute_sqlquery = MagicMock(side_effect=ValueError('HAHAHAHAH'))428    magic.sql(line, cell)429    magic.execute_sqlquery.assert_called_once_with(cell, None, None, None, None, "my_var", False, None)430    ipython_display.send_error.assert_called_once_with(constants.INTERNAL_ERROR_MSG431                                                       .format(magic.execute_sqlquery.side_effect))432@with_setup(_setup, _teardown)433def test_sql_expected_exception():434    line = "-o my_var"435    cell = "some spark code"436    magic.execute_sqlquery = MagicMock(side_effect=HttpClientException('HAHAHAHAH'))437    magic.sql(line, cell)438    magic.execute_sqlquery.assert_called_once_with(cell, None, None, None, None, "my_var", False, None)439    ipython_display.send_error.assert_called_once_with(constants.EXPECTED_ERROR_MSG440                                                       .format(magic.execute_sqlquery.side_effect))441@with_setup(_setup, _teardown)442def test_sql_failed_session_start():443    line = ""444    cell = "some spark code"445    magic._do_not_call_start_session = MagicMock(return_value=False)446    ret = magic.sql(line, cell)447    assert_is(ret, None)448    assert_equals(spark_controller.add_session.call_count, 0)449    assert_equals(spark_controller.execute_sqlquery.call_count, 0)450@with_setup(_setup, _teardown)451def test_sql_quiet():452    line = "-q -o Output"453    cell = ""454    magic.execute_sqlquery = MagicMock()455    ret = magic.sql(line, cell)456    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,457                                                         {"kind": constants.SESSION_KIND_PYSPARK})458    magic.execute_sqlquery.assert_called_once_with(cell, None, None, None, None, "Output", True, None)459@with_setup(_setup, _teardown)460def test_sql_sample_options():461    line = "-q -m sample -n 142 -r 0.3 -c True"462    cell = ""463    magic.execute_sqlquery = MagicMock()464    ret = magic.sql(line, cell)465    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,466                                                         {"kind": constants.SESSION_KIND_PYSPARK})467    magic.execute_sqlquery.assert_called_once_with(cell, "sample", 142, 0.3, None, None, True, True)468@with_setup(_setup, _teardown)469def test_sql_false_coerce():470    line = "-q -m sample -n 142 -r 0.3 -c False"471    cell = ""472    magic.execute_sqlquery = MagicMock()473    ret = magic.sql(line, cell)474    spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,475                                                         {"kind": constants.SESSION_KIND_PYSPARK})476    magic.execute_sqlquery.assert_called_once_with(cell, "sample", 142, 0.3, None, None, True, False)477@with_setup(_setup, _teardown)478def test_cleanup_without_force():479    line = ""480    cell = ""481    magic.session_started = True482    spark_controller.cleanup_endpoint = MagicMock()483    spark_controller.delete_session_by_name = MagicMock()484    magic.cleanup(line, cell)485    _assert_magic_successful_event_emitted_once('cleanup')486    assert_equals(ipython_display.send_error.call_count, 1)487    assert_equals(spark_controller.cleanup_endpoint.call_count, 0)488@with_setup(_setup, _teardown)489def test_cleanup_with_force():490    line = "-f"491    cell = ""492    magic.session_started = True493    spark_controller.cleanup_endpoint = MagicMock()494    spark_controller.delete_session_by_name = MagicMock()495    magic.cleanup(line, cell)496    _assert_magic_successful_event_emitted_once('cleanup')497    spark_controller.cleanup_endpoint.assert_called_once_with(magic.endpoint)498    spark_controller.delete_session_by_name.assert_called_once_with(magic.session_name)499@with_setup(_setup, _teardown)500def test_cleanup_with_cell_content():501    line = "-f"502    cell = "HEHEHE"503    msg = "Cell body for %%cleanup magic must be empty; got 'HEHEHE' instead"504    magic.session_started = True505    spark_controller.cleanup_endpoint = MagicMock()506    spark_controller.delete_session_by_name = MagicMock()507    magic.cleanup(line, cell)508    assert_equals(ipython_display.send_error.call_count, 1)509    _assert_magic_failure_event_emitted_once('cleanup', BadUserDataException(msg))510@with_setup(_setup, _teardown)511def test_cleanup_exception():512    line = "-f"513    cell = ""514    magic.session_started = True515    spark_controller.cleanup_endpoint = MagicMock(side_effect=ArithmeticError('DIVISION BY ZERO OH NO'))516    magic.cleanup(line, cell)517    _assert_magic_failure_event_emitted_once('cleanup', spark_controller.cleanup_endpoint.side_effect)518    spark_controller.cleanup_endpoint.assert_called_once_with(magic.endpoint)519    ipython_display.send_error.assert_called_once_with(constants.INTERNAL_ERROR_MSG520                                                       .format(spark_controller.cleanup_endpoint.side_effect))521@with_setup(_setup, _teardown)522def test_delete_without_force():523    session_id = 0524    line = "-s {}".format(session_id)525    cell = ""526    spark_controller.delete_session_by_id = MagicMock()527    spark_controller.get_session_id_for_client = MagicMock(return_value=session_id)528    magic.delete(line, cell)529    _assert_magic_successful_event_emitted_once('delete')530    assert_equals(ipython_display.send_error.call_count, 1)531    assert_equals(spark_controller.delete_session_by_id.call_count, 0)532@with_setup(_setup, _teardown)533def test_delete_without_session_id():534    session_id = 0535    line = ""536    cell = ""537    spark_controller.delete_session_by_id = MagicMock()538    spark_controller.get_session_id_for_client = MagicMock(return_value=session_id)539    magic.delete(line, cell)540    _assert_magic_successful_event_emitted_once('delete')541    assert_equals(ipython_display.send_error.call_count, 1)542    assert_equals(spark_controller.delete_session_by_id.call_count, 0)543@with_setup(_setup, _teardown)544def test_delete_with_force_same_session():545    session_id = 0546    line = "-f -s {}".format(session_id)547    cell = ""548    spark_controller.delete_session_by_id = MagicMock()549    spark_controller.get_session_id_for_client = MagicMock(return_value=session_id)550    magic.delete(line, cell)551    _assert_magic_successful_event_emitted_once('delete')552    assert_equals(ipython_display.send_error.call_count, 1)553    assert_equals(spark_controller.delete_session_by_id.call_count, 0)554@with_setup(_setup, _teardown)555def test_delete_with_force_none_session():556    # This happens when session has not been created557    session_id = 0558    line = "-f -s {}".format(session_id)559    cell = ""560    spark_controller.delete_session_by_id = MagicMock()561    spark_controller.get_session_id_for_client = MagicMock(return_value=None)562    magic.delete(line, cell)563    _assert_magic_successful_event_emitted_once('delete')564    spark_controller.get_session_id_for_client.assert_called_once_with(magic.session_name)565    spark_controller.delete_session_by_id.assert_called_once_with(magic.endpoint, session_id)566@with_setup(_setup, _teardown)567def test_delete_with_cell_content():568    # This happens when session has not been created569    session_id = 0570    line = "-f -s {}".format(session_id)571    cell = "~~~"572    msg = "Cell body for %%delete magic must be empty; got '~~~' instead"573    spark_controller.delete_session_by_id = MagicMock()574    spark_controller.get_session_id_for_client = MagicMock(return_value=None)575    magic.delete(line, cell)576    _assert_magic_failure_event_emitted_once('delete', BadUserDataException(msg))577    assert_equals(ipython_display.send_error.call_count, 1)578@with_setup(_setup, _teardown)579def test_delete_with_force_different_session():580    # This happens when session has not been created581    session_id = 0582    line = "-f -s {}".format(session_id)583    cell = ""584    spark_controller.delete_session_by_id = MagicMock()585    spark_controller.get_session_id_for_client = MagicMock(return_value="1")586    magic.delete(line, cell)587    _assert_magic_successful_event_emitted_once('delete')588    spark_controller.get_session_id_for_client.assert_called_once_with(magic.session_name)589    spark_controller.delete_session_by_id.assert_called_once_with(magic.endpoint, session_id)590@with_setup(_setup, _teardown)591def test_delete_exception():592    # This happens when session has not been created593    session_id = 0594    line = "-f -s {}".format(session_id)595    cell = ""596    spark_controller.delete_session_by_id = MagicMock(side_effect=DataFrameParseException('wow'))597    spark_controller.get_session_id_for_client = MagicMock()598    magic.delete(line, cell)599    _assert_magic_failure_event_emitted_once('delete', spark_controller.delete_session_by_id.side_effect)600    spark_controller.get_session_id_for_client.assert_called_once_with(magic.session_name)601    spark_controller.delete_session_by_id.assert_called_once_with(magic.endpoint, session_id)602    ipython_display.send_error.assert_called_once_with(constants.INTERNAL_ERROR_MSG603                                                       .format(spark_controller.delete_session_by_id.side_effect))604@with_setup(_setup, _teardown)605def test_delete_expected_exception():606    # This happens when session has not been created607    session_id = 0608    line = "-f -s {}".format(session_id)609    cell = ""610    spark_controller.delete_session_by_id = MagicMock(side_effect=LivyClientTimeoutException('wow'))611    spark_controller.get_session_id_for_client = MagicMock()612    magic.delete(line, cell)613    _assert_magic_failure_event_emitted_once('delete', spark_controller.delete_session_by_id.side_effect)614    spark_controller.get_session_id_for_client.assert_called_once_with(magic.session_name)615    spark_controller.delete_session_by_id.assert_called_once_with(magic.endpoint, session_id)616    ipython_display.send_error.assert_called_once_with(constants.EXPECTED_ERROR_MSG617                                                       .format(spark_controller.delete_session_by_id.side_effect))618@with_setup(_setup, _teardown)619def test_start_session_displays_fatal_error_when_session_throws():620    e = ValueError("Failed to create the SqlContext.\nError, '{}'".format("Exception"))621    magic.spark_controller.add_session = MagicMock(side_effect=e)622    magic.language = constants.LANG_SCALA623    magic.ipython_display = ipython_display624    magic.ipython_display.send_error = MagicMock()625    magic._do_not_call_start_session("Test Line")626    magic.spark_controller.add_session.assert_called_once_with(magic.session_name, magic.endpoint, False,627                                                               {"kind": constants.SESSION_KIND_SPARK})628    assert magic.fatal_error629    assert magic.fatal_error_message == conf.fatal_error_suggestion().format(str(e))630@with_setup(_setup, _teardown)631def test_kernel_magics_names():632    """The magics machinery in IPython depends on the docstrings and633    method names matching up correctly"""634    assert_equals(magic.help.__name__, 'help')635    assert_equals(magic.local.__name__, 'local')636    assert_equals(magic.info.__name__, 'info')637    assert_equals(magic.logs.__name__, 'logs')638    assert_equals(magic.configure.__name__, 'configure')639    assert_equals(magic.spark.__name__, 'spark')640    assert_equals(magic.sql.__name__, 'sql')641    assert_equals(magic.cleanup.__name__, 'cleanup')642    assert_equals(magic.delete.__name__, 'delete')643def _assert_magic_successful_event_emitted_once(name):644    magic._generate_uuid.assert_called_once_with()645    spark_events.emit_magic_execution_start_event.assert_called_once_with(name, constants.SESSION_KIND_PYSPARK,646                                                                          magic._generate_uuid.return_value)647    spark_events.emit_magic_execution_end_event.assert_called_once_with(name, constants.SESSION_KIND_PYSPARK,648                                                                        magic._generate_uuid.return_value, True,649                                                                        '', '')650def _assert_magic_failure_event_emitted_once(name, error):651    magic._generate_uuid.assert_called_once_with()652    spark_events.emit_magic_execution_start_event.assert_called_once_with(name, constants.SESSION_KIND_PYSPARK,653                                                                          magic._generate_uuid.return_value)654    spark_events.emit_magic_execution_end_event.assert_called_once_with(name, constants.SESSION_KIND_PYSPARK,655                                                                        magic._generate_uuid.return_value, False,...test_remotesparkmagics.py
Source:test_remotesparkmagics.py  
1from mock import MagicMock2from nose.tools import with_setup3import sparkmagic.utils.configuration as conf4from sparkmagic.utils.constants import EXPECTED_ERROR_MSG, AUTH_BASIC, NO_AUTH5from sparkmagic.magics.remotesparkmagics import RemoteSparkMagics6from sparkmagic.livyclientlib.command import Command7from sparkmagic.livyclientlib.endpoint import Endpoint8from sparkmagic.livyclientlib.exceptions import *9from sparkmagic.livyclientlib.sqlquery import SQLQuery10from sparkmagic.livyclientlib.sparkstorecommand import SparkStoreCommand11magic = None12spark_controller = None13shell = None14ipython_display = None15def _setup():16    global magic, spark_controller, shell, ipython_display17    conf.override_all({})18    magic = RemoteSparkMagics(shell=None, widget=MagicMock())19    magic.shell = shell = MagicMock()20    magic.ipython_display = ipython_display = MagicMock()21    magic.spark_controller = spark_controller = MagicMock()22def _teardown():23    pass24@with_setup(_setup, _teardown)25def test_info_command_parses():26    print_info_mock = MagicMock()27    magic._print_local_info = print_info_mock28    command = "info"29    magic.spark(command)30    print_info_mock.assert_called_once_with()31@with_setup(_setup, _teardown)32def test_info_endpoint_command_parses():33    print_info_mock = MagicMock()34    magic._print_endpoint_info = print_info_mock35    command = "info -u http://microsoft.com"36    spark_controller.get_all_sessions_endpoint_info = MagicMock(return_value=None)37    magic.spark(command)38    print_info_mock.assert_called_once_with(None)39@with_setup(_setup, _teardown)40def test_info_command_exception():41    print_info_mock = MagicMock(side_effect=LivyClientTimeoutException('OHHHHHOHOHOHO'))42    magic._print_local_info = print_info_mock43    command = "info"44    magic.spark(command)45    print_info_mock.assert_called_once_with()46    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG47                                                       .format(print_info_mock.side_effect))48@with_setup(_setup, _teardown)49def test_add_sessions_command_parses():50    # Do not skip and python51    add_sessions_mock = MagicMock()52    spark_controller.add_session = add_sessions_mock53    command = "add"54    name = "-s name"55    language = "-l python"56    connection_string = "-u http://url.com -t {} -a sdf -p w".format(AUTH_BASIC)57    line = " ".join([command, name, language, connection_string])58    magic.spark(line)59    add_sessions_mock.assert_called_once_with("name", Endpoint("http://url.com", AUTH_BASIC, "sdf", "w"),60                                              False, {"kind": "pyspark"})61    # Skip and scala - upper case62    add_sessions_mock = MagicMock()63    spark_controller.add_session = add_sessions_mock64    command = "add"65    name = "-s name"66    language = "-l scala"67    connection_string = "--url http://location:port"68    line = " ".join([command, name, language, connection_string, "-k"])69    magic.spark(line)70    add_sessions_mock.assert_called_once_with("name", Endpoint("http://location:port", NO_AUTH),71                                              True, {"kind": "spark"})72@with_setup(_setup, _teardown)73def test_add_sessions_command_exception():74    # Do not skip and python75    add_sessions_mock = MagicMock(side_effect=BadUserDataException('hehe'))76    spark_controller.add_session = add_sessions_mock77    command = "add"78    name = "-s name"79    language = "-l python"80    connection_string = "-u http://url.com -t {} -a sdf -p w".format(AUTH_BASIC)81    line = " ".join([command, name, language, connection_string])82    magic.spark(line)83    add_sessions_mock.assert_called_once_with("name", Endpoint("http://url.com", AUTH_BASIC, "sdf", "w"),84                                              False, {"kind": "pyspark"})85    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG86                                                       .format(add_sessions_mock.side_effect))87@with_setup(_setup, _teardown)88def test_add_sessions_command_extra_properties():89    conf.override_all({})90    magic.spark("config", "{\"extra\": \"yes\"}")91    assert conf.session_configs() == {"extra": "yes"}92    add_sessions_mock = MagicMock()93    spark_controller.add_session = add_sessions_mock94    command = "add"95    name = "-s name"96    language = "-l scala"97    connection_string = "-u http://livyendpoint.com"98    line = " ".join([command, name, language, connection_string])99    magic.spark(line)100    add_sessions_mock.assert_called_once_with("name", Endpoint("http://livyendpoint.com", NO_AUTH),101                                              False, {"kind": "spark", "extra": "yes"})102    conf.override_all({})103@with_setup(_setup, _teardown)104def test_delete_sessions_command_parses():105    mock_method = MagicMock()106    spark_controller.delete_session_by_name = mock_method107    command = "delete -s name"108    magic.spark(command)109    mock_method.assert_called_once_with("name")110    command = "delete -u URL -t {} -a username -p password -i 4".format(AUTH_BASIC)111    mock_method = MagicMock()112    spark_controller.delete_session_by_id = mock_method113    magic.spark(command)114    mock_method.assert_called_once_with(Endpoint("URL", AUTH_BASIC, "username", "password"), 4)115@with_setup(_setup, _teardown)116def test_delete_sessions_command_exception():117    mock_method = MagicMock(side_effect=LivyUnexpectedStatusException('FEEEEEELINGS'))118    spark_controller.delete_session_by_name = mock_method119    command = "delete -s name"120    magic.spark(command)121    mock_method.assert_called_once_with("name")122    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG123                                                       .format(mock_method.side_effect))124@with_setup(_setup, _teardown)125def test_cleanup_command_parses():126    mock_method = MagicMock()127    spark_controller.cleanup = mock_method128    line = "cleanup"129    magic.spark(line)130    mock_method.assert_called_once_with()131@with_setup(_setup, _teardown)132def test_cleanup_command_exception():133    mock_method = MagicMock(side_effect=SessionManagementException('Livy did something VERY BAD'))134    spark_controller.cleanup = mock_method135    line = "cleanup"136    magic.spark(line)137    mock_method.assert_called_once_with()138    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG139                                                       .format(mock_method.side_effect))140@with_setup(_setup, _teardown)141def test_cleanup_endpoint_command_parses():142    mock_method = MagicMock()143    spark_controller.cleanup_endpoint = mock_method144    line = "cleanup -u endp"145    magic.spark(line)146    mock_method.assert_called_once_with(Endpoint("endp", NO_AUTH))147    line = "cleanup -u endp -a user -p passw -t {}".format(AUTH_BASIC)148    magic.spark(line)149    mock_method.assert_called_with(Endpoint("endp", AUTH_BASIC, "user", "passw"))150@with_setup(_setup, _teardown)151def test_bad_command_writes_error():152    line = "bad_command"153    usage = "Please look at usage of %spark by executing `%spark?`."154    magic.spark(line)155    ipython_display.send_error.assert_called_once_with("Subcommand '{}' not found. {}".format(line, usage))156@with_setup(_setup, _teardown)157def test_run_cell_command_parses():158    run_cell_method = MagicMock()159    result_value = ""160    run_cell_method.return_value = (True, result_value)161    spark_controller.run_command = run_cell_method162    command = "-s"163    name = "sessions_name"164    line = " ".join([command, name])165    cell = "cell code"166    result = magic.spark(line, cell)167    run_cell_method.assert_called_once_with(Command(cell), name)168    assert result is None169    ipython_display.write.assert_called_once_with(result_value)170@with_setup(_setup, _teardown)171def test_run_cell_command_writes_to_err():172    run_cell_method = MagicMock()173    result_value = ""174    run_cell_method.return_value = (False, result_value)175    spark_controller.run_command = run_cell_method176    command = "-s"177    name = "sessions_name"178    line = " ".join([command, name])179    cell = "cell code"180    result = magic.spark(line, cell)181    run_cell_method.assert_called_once_with(Command(cell), name)182    assert result is None183    ipython_display.send_error.assert_called_once_with(result_value)184@with_setup(_setup, _teardown)185def test_run_cell_command_exception():186    run_cell_method = MagicMock()187    run_cell_method.side_effect = HttpClientException('meh')188    spark_controller.run_command = run_cell_method189    command = "-s"190    name = "sessions_name"191    line = " ".join([command, name])192    cell = "cell code"193    result = magic.spark(line, cell)194    run_cell_method.assert_called_once_with(Command(cell), name)195    assert result is None196    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG197                                                       .format(run_cell_method.side_effect))198@with_setup(_setup, _teardown)199def test_run_spark_command_parses():200    magic.execute_spark = MagicMock()201    command = "-s"202    name = "sessions_name"203    context = "-c"204    context_name = "spark"205    meth = "-m"206    method_name = "sample"207    line = " ".join([command, name, context, context_name, meth, method_name])208    cell = "cell code"209    result = magic.spark(line, cell)210    magic.execute_spark.assert_called_once_with("cell code",211                                                None, "sample", None, None, "sessions_name", None)212@with_setup(_setup, _teardown)213def test_run_spark_command_parses_with_coerce():214    magic.execute_spark = MagicMock()215    command = "-s"216    name = "sessions_name"217    context = "-c"218    context_name = "spark"219    meth = "-m"220    method_name = "sample"221    coer = "--coerce"222    coerce_value = "True"223    line = " ".join([command, name, context, context_name, meth, method_name, coer, coerce_value])224    cell = "cell code"225    result = magic.spark(line, cell)226    magic.execute_spark.assert_called_once_with("cell code",227                                                None, "sample", None, None, "sessions_name", True)228@with_setup(_setup, _teardown)229def test_run_spark_command_parses_with_coerce_false():230    magic.execute_spark = MagicMock()231    command = "-s"232    name = "sessions_name"233    context = "-c"234    context_name = "spark"235    meth = "-m"236    method_name = "sample"237    coer = "--coerce"238    coerce_value = "False"239    line = " ".join([command, name, context, context_name, meth, method_name, coer, coerce_value])240    cell = "cell code"241    result = magic.spark(line, cell)242    magic.execute_spark.assert_called_once_with("cell code",243                                                None, "sample", None, None, "sessions_name", False)244@with_setup(_setup, _teardown)245def test_run_sql_command_parses_with_coerce_false():246    magic.execute_sqlquery = MagicMock()247    command = "-s"248    name = "sessions_name"249    context = "-c"250    context_name = "sql"251    meth = "-m"252    method_name = "sample"253    coer = "--coerce"254    coerce_value = "False"255    line = " ".join([command, name, context, context_name, meth, method_name, coer, coerce_value])256    cell = "cell code"257    result = magic.spark(line, cell)258    magic.execute_sqlquery.assert_called_once_with("cell code",259                                                "sample", None, None, "sessions_name", None, False, False)260@with_setup(_setup, _teardown)261def test_run_spark_with_store_command_parses():262    magic.execute_spark = MagicMock()263    command = "-s"264    name = "sessions_name"265    context = "-c"266    context_name = "spark"267    meth = "-m"268    method_name = "sample"269    output = "-o"270    output_var = "var_name"271    line = " ".join([command, name, context, context_name, meth, method_name, output, output_var])272    cell = "cell code"273    result = magic.spark(line, cell)274    magic.execute_spark.assert_called_once_with("cell code",275                                                "var_name", "sample", None, None, "sessions_name", None)276    277@with_setup(_setup, _teardown)278def test_run_spark_with_store_correct_calls():279    run_cell_method = MagicMock()280    run_cell_method.return_value = (True, "")281    spark_controller.run_command = run_cell_method282    command = "-s"283    name = "sessions_name"284    context = "-c"285    context_name = "spark"286    meth = "-m"287    method_name = "sample"288    output = "-o"289    output_var = "var_name"290    coer = "--coerce"291    coerce_value = "True"292    line = " ".join([command, name, context, context_name, meth, method_name, output, output_var, coer, coerce_value])293    cell = "cell code"294    result = magic.spark(line, cell)295    run_cell_method.assert_any_call(Command(cell), name)296    run_cell_method.assert_any_call(SparkStoreCommand(output_var, samplemethod=method_name, coerce=True), name)297@with_setup(_setup, _teardown)298def test_run_spark_command_exception():299    run_cell_method = MagicMock()300    run_cell_method.side_effect = LivyUnexpectedStatusException('WOW')301    spark_controller.run_command = run_cell_method302    command = "-s"303    name = "sessions_name"304    context = "-c"305    context_name = "spark"306    meth = "-m"307    method_name = "sample"308    output = "-o"309    output_var = "var_name"310    line = " ".join([command, name, context, context_name, meth, method_name, output, output_var])311    cell = "cell code"312    result = magic.spark(line, cell)313    run_cell_method.assert_any_call(Command(cell), name)314    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG315                                                       .format(run_cell_method.side_effect))316@with_setup(_setup, _teardown)317def test_run_spark_command_exception_while_storing():318    run_cell_method = MagicMock()319    exception = LivyUnexpectedStatusException('WOW')320    run_cell_method.side_effect = [(True, ""), exception]321    spark_controller.run_command = run_cell_method322    command = "-s"323    name = "sessions_name"324    context = "-c"325    context_name = "spark"326    meth = "-m"327    method_name = "sample"328    output = "-o"329    output_var = "var_name"330    line = " ".join([command, name, context, context_name, meth, method_name, output, output_var])331    cell = "cell code"332    result = magic.spark(line, cell)333    run_cell_method.assert_any_call(Command(cell), name)334    run_cell_method.assert_any_call(SparkStoreCommand(output_var, samplemethod=method_name), name)335    ipython_display.write.assert_called_once_with("")336    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG337                                                       .format(exception))338@with_setup(_setup, _teardown)339def test_run_sql_command_parses():340    run_cell_method = MagicMock()341    run_cell_method.return_value = (True, "")342    spark_controller.run_sqlquery = run_cell_method343    command = "-s"344    name = "sessions_name"345    context = "-c"346    context_name = "sql"347    meth = "-m"348    method_name = "sample"349    line = " ".join([command, name, context, context_name, meth, method_name])350    cell = "cell code"351    result = magic.spark(line, cell)352    run_cell_method.assert_called_once_with(SQLQuery(cell, samplemethod=method_name), name)353    assert result is not None354@with_setup(_setup, _teardown)355def test_run_sql_command_exception():356    run_cell_method = MagicMock()357    run_cell_method.side_effect = LivyUnexpectedStatusException('WOW')358    spark_controller.run_sqlquery = run_cell_method359    command = "-s"360    name = "sessions_name"361    context = "-c"362    context_name = "sql"363    meth = "-m"364    method_name = "sample"365    line = " ".join([command, name, context, context_name, meth, method_name])366    cell = "cell code"367    result = magic.spark(line, cell)368    run_cell_method.assert_called_once_with(SQLQuery(cell, samplemethod=method_name), name)369    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG370                                                       .format(run_cell_method.side_effect))371@with_setup(_setup, _teardown)372def test_run_sql_command_knows_how_to_be_quiet():373    run_cell_method = MagicMock()374    run_cell_method.return_value = (True, "")375    spark_controller.run_sqlquery = run_cell_method376    command = "-s"377    name = "sessions_name"378    context = "-c"379    context_name = "sql"380    quiet = "-q"381    meth = "-m"382    method_name = "sample"383    line = " ".join([command, name, context, context_name, quiet, meth, method_name])384    cell = "cell code"385    result = magic.spark(line, cell)386    run_cell_method.assert_called_once_with(SQLQuery(cell, samplemethod=method_name), name)387    assert result is None388@with_setup(_setup, _teardown)389def test_logs_subcommand():390    get_logs_method = MagicMock()391    result_value = ""392    get_logs_method.return_value = result_value393    spark_controller.get_logs = get_logs_method394    command = "logs -s"395    name = "sessions_name"396    line = " ".join([command, name])397    cell = "cell code"398    result = magic.spark(line, cell)399    get_logs_method.assert_called_once_with(name)400    assert result is None401    ipython_display.write.assert_called_once_with(result_value)402@with_setup(_setup, _teardown)403def test_logs_exception():404    get_logs_method = MagicMock(side_effect=LivyUnexpectedStatusException('How did this happen?'))405    result_value = ""406    get_logs_method.return_value = result_value407    spark_controller.get_logs = get_logs_method408    command = "logs -s"409    name = "sessions_name"410    line = " ".join([command, name])411    cell = "cell code"412    result = magic.spark(line, cell)413    get_logs_method.assert_called_once_with(name)414    assert result is None415    ipython_display.send_error.assert_called_once_with(EXPECTED_ERROR_MSG...test_sparkcontroller.py
Source:test_sparkcontroller.py  
1from mock import MagicMock, patch2from nose.tools import with_setup, assert_equals, raises3import json4from sparkmagic.livyclientlib.sparkcontroller import SparkController5from sparkmagic.livyclientlib.endpoint import Endpoint6from sparkmagic.livyclientlib.exceptions import SessionManagementException, HttpClientException7import sparkmagic.utils.configuration as conf8from sparkmagic.utils.constants import NO_AUTH9client_manager = None10controller = None11ipython_display = None12class DummyResponse:13    def __init__(self, status_code, json_text):14        self._status_code = status_code15        self._json_text = json_text16    def json(self):17        return json.loads(self._json_text)18    @property19    def status_code(self):20        return self._status_code21def _setup():22    global client_manager, controller, ipython_display23    client_manager = MagicMock()24    ipython_display = MagicMock()25    spark_events = MagicMock()26    controller = SparkController(ipython_display)27    controller.session_manager = client_manager28    controller.spark_events = spark_events29def _teardown():30    pass31@with_setup(_setup, _teardown)32def test_add_session():33    name = "name"34    properties = {"kind": "spark"}35    endpoint = Endpoint("http://location:port", NO_AUTH, "name", "word")36    session = MagicMock()37    controller._livy_session = MagicMock(return_value=session)38    controller._http_client = MagicMock(return_value=MagicMock())39    controller.add_session(name, endpoint, False, properties)40    controller._livy_session.assert_called_once_with(controller._http_client.return_value, properties, ipython_display)41    controller.session_manager.add_session.assert_called_once_with(name, session)42    session.start.assert_called_once()43@with_setup(_setup, _teardown)44def test_add_session_skip():45    name = "name"46    language = "python"47    connection_string = "url=http://location:port;username=name;password=word"48    client = "client"49    session = MagicMock()50    controller._livy_session = MagicMock(return_value=session)51    controller._http_client = MagicMock(return_value=client)52    client_manager.get_sessions_list.return_value = [name]53    controller.add_session(name, language, connection_string, True)54    assert controller._livy_session.create_session.call_count == 055    assert controller._http_client.build_client.call_count == 056    assert client_manager.add_session.call_count == 057    assert session.start.call_count == 058@with_setup(_setup, _teardown)59def test_delete_session():60    name = "name"61    controller.delete_session_by_name(name)62    client_manager.delete_client.assert_called_once_with(name)63@with_setup(_setup, _teardown)64def test_cleanup():65    controller.cleanup()66    client_manager.clean_up_all.assert_called_once_with()67@with_setup(_setup, _teardown)68def test_run_cell():69    default_client = MagicMock()70    chosen_client = MagicMock()71    client_manager.get_any_session = MagicMock(return_value=default_client)72    client_manager.get_session = MagicMock(return_value=chosen_client)73    name = "session_name"74    command = MagicMock()75    controller.run_command(command, name)76    command.execute.assert_called_with(chosen_client)77    controller.run_command(command, None)78    command.execute.assert_called_with(default_client)79@with_setup(_setup, _teardown)80def test_run_sql():81    default_client = MagicMock()82    chosen_client = MagicMock()83    client_manager.get_any_session = MagicMock(return_value=default_client)84    client_manager.get_session = MagicMock(return_value=chosen_client)85    name = "session_name"86    sqlquery = MagicMock()87    controller.run_sqlquery(sqlquery, name)88    sqlquery.execute.assert_called_with(chosen_client)89    controller.run_sqlquery(sqlquery, None)90    sqlquery.execute.assert_called_with(default_client)91@with_setup(_setup, _teardown)92def test_get_client_keys():93    controller.get_client_keys()94    client_manager.get_sessions_list.assert_called_once_with()95@with_setup(_setup, _teardown)96def test_get_all_sessions():97    http_client = MagicMock()98    http_client.get_sessions.return_value = json.loads('{"from":0,"total":2,"sessions":[{"id":0,"state":"idle","kind":'99                                                       '"spark","log":[""]}, {"id":1,"state":"busy","kind":"spark","log"'100                                                       ':[""]}]}')101    controller._http_client = MagicMock(return_value=http_client)102    controller._livy_session = MagicMock()103    sessions = controller.get_all_sessions_endpoint("conn_str")104    assert len(sessions) == 2105@with_setup(_setup, _teardown)106def test_cleanup_endpoint():107    s0 = MagicMock()108    s1 = MagicMock()109    controller.get_all_sessions_endpoint = MagicMock(return_value=[s0, s1])110    controller.cleanup_endpoint("conn_str")111    s0.delete.assert_called_once_with()112    s1.delete.assert_called_once_with()113@with_setup(_setup, _teardown)114def test_delete_session_by_id_existent_non_managed():115    http_client = MagicMock()116    http_client.get_session.return_value = json.loads('{"id":0,"state":"starting","kind":"spark","log":[]}')117    controller._http_client = MagicMock(return_value=http_client)118    session = MagicMock()119    controller._livy_session = MagicMock(return_value=session)120    controller.delete_session_by_id("conn_str", 0)121    controller._livy_session.assert_called_once_with(http_client, {"kind": "spark"}, ipython_display, 0)122    session.delete.assert_called_once_with()123@with_setup(_setup, _teardown)124def test_delete_session_by_id_existent_managed():125    name = "name"126    controller.session_manager.get_session_name_by_id_endpoint = MagicMock(return_value=name)127    controller.session_manager.get_sessions_list = MagicMock(return_value=[name])128    controller.delete_session_by_name = MagicMock()129    controller.delete_session_by_id("conn_str", 0)130    controller.delete_session_by_name.assert_called_once_with(name)131@with_setup(_setup, _teardown)132@raises(HttpClientException)133def test_delete_session_by_id_non_existent():134    http_client = MagicMock()135    http_client.get_session.side_effect = HttpClientException136    controller._http_client = MagicMock(return_value=http_client)137    session = MagicMock()138    controller._livy_session = MagicMock(return_value=session)139    controller.delete_session_by_id("conn_str", 0)140@with_setup(_setup, _teardown)141def test_get_app_id():142    chosen_client = MagicMock()143    controller.get_session_by_name_or_default = MagicMock(return_value=chosen_client)144    result = controller.get_app_id()145    assert_equals(result, chosen_client.get_app_id.return_value)146    chosen_client.get_app_id.assert_called_with()147@with_setup(_setup, _teardown)148def test_get_driver_log():149    chosen_client = MagicMock()150    controller.get_session_by_name_or_default = MagicMock(return_value=chosen_client)151    result = controller.get_driver_log_url()152    assert_equals(result, chosen_client.get_driver_log_url.return_value)153    chosen_client.get_driver_log_url.assert_called_with()154@with_setup(_setup, _teardown)155def test_get_logs():156    chosen_client = MagicMock()157    controller.get_session_by_name_or_default = MagicMock(return_value=chosen_client)158    result = controller.get_logs()159    assert_equals(result, chosen_client.get_logs.return_value)160    chosen_client.get_logs.assert_called_with()161@with_setup(_setup, _teardown)162@raises(SessionManagementException)163def test_get_logs_error():164    chosen_client = MagicMock()165    controller.get_session_by_name_or_default = MagicMock(side_effect=SessionManagementException('THERE WAS A SPOOKY GHOST'))166    result = controller.get_logs()167@with_setup(_setup, _teardown)168def test_get_session_id_for_client():169    assert controller.get_session_id_for_client("name") is not None170    client_manager.get_session_id_for_client.assert_called_once_with("name")171@with_setup(_setup, _teardown)172def test_get_spark_ui_url():173    chosen_client = MagicMock()174    controller.get_session_by_name_or_default = MagicMock(return_value=chosen_client)175    result = controller.get_spark_ui_url()176    assert_equals(result, chosen_client.get_spark_ui_url.return_value)177    chosen_client.get_spark_ui_url.assert_called_with()178@with_setup(_setup, _teardown)179def test_add_session_throws_when_session_start_fails():180    name = "name"181    properties = {"kind": "spark"}182    endpoint = Endpoint("http://location:port", NO_AUTH, "name", "word")183    session = MagicMock()184    controller._livy_session = MagicMock(return_value=session)185    controller._http_client = MagicMock(return_value=MagicMock())186    e = ValueError("Failed to create the SqlContext.\nError, '{}'".format("Exception"))187    session.start = MagicMock(side_effect=e)188    try:189        controller.add_session(name, endpoint, False, properties)190        assert False191    except ValueError as ex:192        assert str(ex) == str(e)...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
