def setUp(self):
        self.start_delta = datetime.timedelta(hours=1)
        self.end_delta = datetime.timedelta(hours=2)

        def _create_mock_dap_client(var_name):

            def _gtia(date):
                return date + self.start_delta

            def _gtib(date):
                return date - self.end_delta

            def _data(lat, lon, date):
                return len(var_name) * lat * lon + date

            def _desc():
                return var_name + "_desc"

            def _lat_lon_index(lat, lon):
                return lat, lon

            def _time_index(date):
                start = datetime.datetime(1900, 1, 1)
                secs = (date - start).total_seconds()
                return int(secs / (60 * 30))

            mock_dap_client = MagicMock()
            mock_dap_client.get_time_immediately_after = _gtia
            mock_dap_client.get_time_immediately_before = _gtib
            mock_dap_client.get_data_at = _data
            mock_dap_client.get_longname = _desc
            mock_dap_client.get_lat_lon_index = _lat_lon_index
            mock_dap_client.get_time_index = _time_index
            return mock_dap_client

        def _create_dap_client(url):
            if "file1" in url:
                return _create_mock_dap_client("variable1")
            elif "file2" in url:
                return _create_mock_dap_client("v2")

        mock_dap_client_factory = DapClientFactory()
        mock_dap_client_factory.get_dap_client = MagicMock(side_effect=_create_dap_client)

        self.download_helper = AsciiDownloadHelper("test_url", dap_client_factory=mock_dap_client_factory)
        self.model_run_service = ModelRunService()
        self.nvars = 2
        self.period = 30 * 60
        with session_scope(Session) as session:
            driving_data = DrivingDataset()
            driving_data.name = "Test Driving Dataset"

            pv1 = DrivingDatasetParameterValue(self.model_run_service, driving_data,
                                               constants.JULES_PARAM_DRIVE_DATA_PERIOD, self.period)
            pv2 = DrivingDatasetParameterValue(self.model_run_service, driving_data,
                                               constants.JULES_PARAM_DRIVE_NVARS, self.nvars)
            pv3 = DrivingDatasetParameterValue(self.model_run_service, driving_data,
                                               constants.JULES_PARAM_DRIVE_VAR, "'var1'    'var2'")
            pv4 = DrivingDatasetParameterValue(self.model_run_service, driving_data,
                                               constants.JULES_PARAM_DRIVE_INTERP, "'i'    'nf'")
            ddl1 = DrivingDatasetLocation()
            ddl1.base_url = "data/file1.nc"
            ddl1.var_name = "var1"
            ddl1.driving_dataset = driving_data

            ddl2 = DrivingDatasetLocation()
            ddl2.base_url = "data/file2.nc"
            ddl2.var_name = "var2"
            ddl2.driving_dataset = driving_data

            session.add_all([driving_data])
        self.driving_data = DatasetService().get_driving_dataset_by_id(driving_data.id)