Beispiel #1
0
    def test_execute_stream_request_multiple_streams_invalid_input(self):
        input_data = json.load(open(os.path.join(DATA_DIR, 'multiple_stream_request_no_parameter.json')))

        with self.assertRaises(InvalidParameterException):
            validate(input_data)

        input_data = json.load(open(os.path.join(DATA_DIR, 'multiple_stream_request_bad_parameter.json')))

        with self.assertRaises(InvalidParameterException):
            validate(input_data)
    def test_execute_stream_request_multiple_streams_invalid_input(self):
        input_data = json.load(open(os.path.join(DATA_DIR, 'multiple_stream_request_no_parameter.json')))

        with self.assertRaises(InvalidParameterException):
            validate(input_data)

        input_data = json.load(open(os.path.join(DATA_DIR, 'multiple_stream_request_bad_parameter.json')))

        with self.assertRaises(InvalidParameterException):
            validate(input_data)
    def test_execute_stream_request_multiple_streams(self):
        input_data = json.load(
            open(os.path.join(DATA_DIR, 'multiple_stream_request.json')))

        ctdpf_fn = 'ctdpf_sbe43_sample.nc'
        echo_fn = 'echo_sounding.nc'
        ctd_ds = xr.open_dataset(os.path.join(DATA_DIR, ctdpf_fn),
                                 decode_times=False)
        echo_ds = xr.open_dataset(os.path.join(DATA_DIR, echo_fn),
                                  decode_times=False)

        ctd_ds = ctd_ds.isel(obs=np.arange(0, 100))
        echo_ds = echo_ds.isel(obs=np.arange(0, 100))

        def mock_fetch_raw_data(self):
            if StreamRequestTest.call_cnt % 2 == 0:
                self.datasets[self.stream_key] = StreamDataset(
                    self.stream_key, self.uflags, [], self.request_id)
                self.datasets[self.stream_key]._insert_dataset(ctd_ds)
                self.datasets[self.stream_key].events = AssetEvents('test', [])

            else:
                self.datasets[self.stream_key] = StreamDataset(
                    self.stream_key, self.uflags, [], self.request_id)
                self.datasets[self.stream_key]._insert_dataset(echo_ds)
                self.datasets[self.stream_key].events = AssetEvents('test', [])

            StreamRequestTest.call_cnt += 1

        with mock.patch('util.stream_request.StreamRequest.fetch_raw_data',
                        new=mock_fetch_raw_data):
            with mock.patch(
                    'util.stream_request.StreamRequest._collapse_times'):
                sr = execute_stream_request(validate(input_data), True)
                self.assertEqual(len(sr.external_includes), 1)

                sr = execute_stream_request(validate(input_data))
                # stream engine should only return requested parameters
                self.assertEqual(len(sr.external_includes),
                                 len(input_data['streams']))
                self.assertIn(self.echo_sk, sr.external_includes)
                expected = {Parameter.query.get(2575)}
                self.assertEqual(expected, sr.external_includes[self.echo_sk])

                self.assertIn(self.nut_sk, sr.external_includes)
                expected = Parameter.query.get(2327)
                self.assertIn(expected, sr.external_includes[self.nut_sk])
                expected = Parameter.query.get(2328)
                self.assertIn(expected, sr.external_includes[self.nut_sk])
                expected = Parameter.query.get(2329)
                self.assertIn(expected, sr.external_includes[self.nut_sk])
    def test_execute_stream_request_multiple_streams(self):
        input_data = json.load(open(os.path.join(DATA_DIR, 'multiple_stream_request.json')))

        ctdpf_fn = 'ctdpf_sbe43_sample.nc'
        echo_fn = 'echo_sounding.nc'
        ctd_ds = xr.open_dataset(os.path.join(DATA_DIR, ctdpf_fn), decode_times=False)
        echo_ds = xr.open_dataset(os.path.join(DATA_DIR, echo_fn), decode_times=False)

        ctd_ds = ctd_ds.isel(obs=np.arange(0, 100))
        echo_ds = echo_ds.isel(obs=np.arange(0, 100))

        def mock_fetch_raw_data(self):
            if StreamRequestTest.call_cnt % 2 == 0:
                self.datasets[self.stream_key] = StreamDataset(self.stream_key, self.uflags, [], self.request_id)
                self.datasets[self.stream_key]._insert_dataset(ctd_ds)
                self.datasets[self.stream_key].events = AssetEvents('test', [])

            else:
                self.datasets[self.stream_key] = StreamDataset(self.stream_key, self.uflags, [], self.request_id)
                self.datasets[self.stream_key]._insert_dataset(echo_ds)
                self.datasets[self.stream_key].events = AssetEvents('test', [])

            StreamRequestTest.call_cnt += 1

        with mock.patch('util.stream_request.StreamRequest.fetch_raw_data', new=mock_fetch_raw_data):
            with mock.patch('util.stream_request.StreamRequest._collapse_times'):
                sr = execute_stream_request(validate(input_data), True)
                self.assertEqual(len(sr.external_includes), 1)

                sr = execute_stream_request(validate(input_data))
                self.assertIn(self.echo_sk, sr.external_includes)
                expected = {Parameter.query.get(2575)}
                self.assertEqual(expected, sr.external_includes[self.echo_sk])

                self.assertIn(self.nut_sk, sr.external_includes)
                expected = Parameter.query.get(2327)
                self.assertIn(expected, sr.external_includes[self.nut_sk])
                expected = Parameter.query.get(2328)
                self.assertIn(expected, sr.external_includes[self.nut_sk])
                expected = Parameter.query.get(2329)
                self.assertIn(expected, sr.external_includes[self.nut_sk])