@@ -5968,7 +5968,8 @@ def test_session(self) -> None:
5968
5968
@requires_pydap
5969
5969
@network
5970
5970
@pytest .mark .parametrize ("protocol" , ["dap2" , "dap4" ])
5971
- def test_batchdap4_downloads (protocol ) -> None :
5971
+ @pytest .mark .parametrize ("batch" , [False , True ])
5972
+ def test_batchdap4_downloads (protocol , batch ) -> None :
5972
5973
"""Test that in dap4, all dimensions are downloaded at once"""
5973
5974
import pydap
5974
5975
from requests_cache import CachedSession
@@ -5978,20 +5979,36 @@ def test_batchdap4_downloads(protocol) -> None:
5978
5979
session .cache .clear ()
5979
5980
url = "https://test.opendap.org/opendap/hyrax/data/nc/coads_climatology.nc"
5980
5981
5981
- open_dataset (
5982
- url .replace ("https" , protocol ),
5983
- engine = "pydap" ,
5984
- session = session ,
5985
- decode_times = False ,
5986
- )
5982
+ args = {
5983
+ "filename_or_obj" : url .replace ("https" , protocol ),
5984
+ "engine" : "pydap" ,
5985
+ "session" : session ,
5986
+ "decode_times" : False ,
5987
+ }
5988
+
5987
5989
if protocol == "dap4" :
5990
+ ds = open_dataset (** args , batch = batch )
5988
5991
if _version_ > Version ("3.5.5" ):
5989
- # should download 2 urls only (1 dmr and 1 dap)
5992
+ # total downloads are:
5993
+ # 1 dmr + 1 dap (dimensions)
5990
5994
assert len (session .cache .urls ()) == 2
5995
+ # now load the rest of the variables
5996
+ ds .load ()
5997
+ if batch :
5998
+ # all non-dimensions are downloaded in a single https requests
5999
+ assert len (session .cache .urls ()) == 2 + 1
6000
+ if not batch :
6001
+ # each non-dimension array is downloaded with an individual
6002
+ # https requests
6003
+ assert len (session .cache .urls ()) == 2 + 4
5991
6004
else :
5992
6005
assert len (session .cache .urls ()) == 4
5993
- # das + dds + 3 dods urls
6006
+ ds .load ()
6007
+ assert len (session .cache .urls ()) == 4 + 4
5994
6008
elif protocol == "dap2" :
6009
+ ds = open_dataset (** args )
6010
+ # das + dds + 3 dods urls
6011
+
5995
6012
assert len (session .cache .urls ()) == 5
5996
6013
5997
6014
0 commit comments