blob: b43ad809ceb7288584d1b38363576c674a4f7eb9 [file]
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import warnings
from pyspark.sql.tests.test_sql_context import SQLContextTestsMixin
from pyspark.testing.connectutils import ReusedConnectTestCase, should_test_connect
# Connect SQLContext is only importable when grpc is present, so the import is guarded and the
# ``-> "SQLContext"`` annotation below is quoted to avoid evaluating it when grpc is absent.
if should_test_connect:
from pyspark.sql.connect.context import SQLContext
class SQLContextParityTests(SQLContextTestsMixin, ReusedConnectTestCase):
def setUp(self) -> None:
super().setUp()
SQLContext._instantiatedContext = None
def tearDown(self) -> None:
super().tearDown()
SQLContext._instantiatedContext = None
def _make_ctx(self) -> "SQLContext":
with warnings.catch_warnings():
warnings.simplefilter("ignore", FutureWarning)
return SQLContext(self.spark)
def test_newSession_returns_distinct_instance(self) -> None:
ctx = self._make_ctx()
ctx2 = ctx.newSession()
try:
self.assertIsNot(ctx, ctx2)
finally:
# Release only the new server-side session and close its own client channel,
# not SparkSession.stop(). See SQLContextConnectTests.test_newSession_returns
# _fresh_state in test_connect_context.py for why: stop() would terminate the
# shared local Connect server, while leaving the client open hangs the suite
# in the client's atexit hook once the server goes away.
client = ctx2.sparkSession.client
try:
client.release_session()
except Exception:
pass
client.close()
if __name__ == "__main__":
from pyspark.testing import main
main()