@@ -6452,7 +6452,8 @@ def test_session(self) -> None:
6452
6452
@requires_pydap
6453
6453
@network
6454
6454
@pytest .mark .parametrize ("protocol" , ["dap2" , "dap4" ])
6455
- def test_batchdap4_downloads (protocol ) -> None :
6455
+ @pytest .mark .parametrize ("batch" , [False , True ])
6456
+ def test_batchdap4_downloads (protocol , batch ) -> None :
6456
6457
"""Test that in dap4, all dimensions are downloaded at once"""
6457
6458
import pydap
6458
6459
from requests_cache import CachedSession
@@ -6462,20 +6463,36 @@ def test_batchdap4_downloads(protocol) -> None:
6462
6463
session .cache .clear ()
6463
6464
url = "https://test.opendap.org/opendap/hyrax/data/nc/coads_climatology.nc"
6464
6465
6465
- open_dataset (
6466
- url .replace ("https" , protocol ),
6467
- engine = "pydap" ,
6468
- session = session ,
6469
- decode_times = False ,
6470
- )
6466
+ args = {
6467
+ "filename_or_obj" : url .replace ("https" , protocol ),
6468
+ "engine" : "pydap" ,
6469
+ "session" : session ,
6470
+ "decode_times" : False ,
6471
+ }
6472
+
6471
6473
if protocol == "dap4" :
6474
+ ds = open_dataset (** args , batch = batch )
6472
6475
if _version_ > Version ("3.5.5" ):
6473
- # should download 2 urls only (1 dmr and 1 dap)
6476
+ # total downloads are:
6477
+ # 1 dmr + 1 dap (dimensions)
6474
6478
assert len (session .cache .urls ()) == 2
6479
+ # now load the rest of the variables
6480
+ ds .load ()
6481
+ if batch :
6482
+ # all non-dimensions are downloaded in a single https requests
6483
+ assert len (session .cache .urls ()) == 2 + 1
6484
+ if not batch :
6485
+ # each non-dimension array is downloaded with an individual
6486
+ # https requests
6487
+ assert len (session .cache .urls ()) == 2 + 4
6475
6488
else :
6476
6489
assert len (session .cache .urls ()) == 4
6477
- # das + dds + 3 dods urls
6490
+ ds .load ()
6491
+ assert len (session .cache .urls ()) == 4 + 4
6478
6492
elif protocol == "dap2" :
6493
+ ds = open_dataset (** args )
6494
+ # das + dds + 3 dods urls
6495
+
6479
6496
assert len (session .cache .urls ()) == 5
6480
6497
6481
6498
0 commit comments