def test_collections_returns_all_collections(self):
     collection_watcher = CollectionWatcher('/foo', Mock(), Mock())
     collection_watcher._collections_by_dir = {
         "/foo": {
             Collection("id1", "var1", "path1", 1, 2, datetime.now(), datetime.now()),
             Collection("id2", "var2", "path2", 3, 4, datetime.now(), datetime.now()),
         },
         "/bar": {
             Collection("id3", "var3", "path3", 5, 6, datetime.now(), datetime.now()),
             Collection("id4", "var4", "path4", 7, 8, datetime.now(), datetime.now()),
         }
     }
     flattened_collections = collection_watcher._collections()
     self.assertEqual(len(flattened_collections), 4)
예제 #2
0
 def test_directory_with_directory(self):
     directory = os.path.join(os.path.dirname(__file__),
                              "../resources/data")
     collection = Collection(dataset_id="test_dataset",
                             path=directory,
                             projection="Grid",
                             slices={},
                             dimension_names={},
                             historical_priority=1,
                             forward_processing_priority=2,
                             date_from=None,
                             date_to=None)
     self.assertEqual(directory, collection.directory())
예제 #3
0
 def test_owns_file_does_not_match(self):
     directory = os.path.join(os.path.dirname(__file__),
                              "../resources/data")
     collection = Collection(dataset_id="test_dataset",
                             path=directory,
                             projection="Grid",
                             slices={},
                             dimension_names={},
                             historical_priority=1,
                             forward_processing_priority=2,
                             date_from=None,
                             date_to=None)
     self.assertFalse(collection.owns_file("test_file.nc"))
예제 #4
0
 def test_owns_file_raises_exception_with_directory(self):
     directory = os.path.join(os.path.dirname(__file__),
                              "../resources/data")
     collection = Collection(dataset_id="test_dataset",
                             path=directory,
                             projection="Grid",
                             slices={},
                             dimension_names={},
                             historical_priority=1,
                             forward_processing_priority=2,
                             date_from=None,
                             date_to=None)
     self.assertRaises(IsADirectoryError, collection.owns_file, directory)
    def test_validate_collection_with_relative_path(self):
        collections_path = os.path.join(os.path.dirname(__file__), '../resources/collections.yml')
        collection_watcher = CollectionWatcher(collections_path, Mock(), Mock())

        collection = Collection(dataset_id="test_dataset",
                                path="relative/path",
                                projection="Grid",
                                slices=frozenset(),
                                dimension_names=frozenset(),
                                historical_priority=1,
                                forward_processing_priority=2,
                                date_from=None,
                                date_to=None)
        self.assertRaises(RelativePathCollectionError, collection_watcher._validate_collection, collection)
    def test_validate_collection(self):
        collections_path = os.path.join(os.path.dirname(__file__), '../resources/collections.yml')
        collection_watcher = CollectionWatcher(collections_path, Mock(), Mock())

        collection = Collection(dataset_id="test_dataset",
                                path="/absolute/path",
                                projection="Grid",
                                slices=frozenset(),
                                dimension_names=frozenset(),
                                historical_priority=1,
                                forward_processing_priority=2,
                                date_from=None,
                                date_to=None)
        collection_watcher._validate_collection(collection)
예제 #7
0
 def test_owns_file_matches_pattern(self):
     directory = os.path.join(os.path.dirname(__file__),
                              "../resources/data")
     pattern = os.path.join(directory, "test_*.nc")
     collection = Collection(dataset_id="test_dataset",
                             path=pattern,
                             projection="Grid",
                             slices={},
                             dimension_names={},
                             historical_priority=1,
                             forward_processing_priority=2,
                             date_from=None,
                             date_to=None)
     file_path = os.path.join(directory, "test_file.nc")
     self.assertTrue(collection.owns_file(file_path))
예제 #8
0
    def test_from_dict_missing_optional_values(self):
        collection_dict = {
            'id': 'test_id',
            'projection': 'Grid',
            'dimensionNames': {
                'latitude': 'lat',
                'longitude': 'lon',
                'variable': 'test_var'
            },
            'slices': {
                'lat': 30,
                'lon': 30,
                'time': 1
            },
            'path': '/some/path',
            'priority': 3
        }

        expected_collection = Collection(dataset_id='test_id',
                                         projection="Grid",
                                         slices=frozenset([('lat', 30),
                                                           ('lon', 30),
                                                           ('time', 1)]),
                                         dimension_names=frozenset([
                                             ('latitude', 'lat'),
                                             ('longitude', 'lon'),
                                             ('variable', 'test_var')
                                         ]),
                                         path='/some/path',
                                         historical_priority=3,
                                         forward_processing_priority=None,
                                         date_from=None,
                                         date_to=None)

        self.assertEqual(expected_collection,
                         Collection.from_dict(collection_dict))
예제 #9
0
    def test_from_dict(self):
        collection_dict = {
            'id': 'test_id',
            'path': '/some/path',
            'projection': 'Grid',
            'dimensionNames': {
                'latitude': 'lat',
                'longitude': 'lon',
                'variable': 'test_var'
            },
            'slices': {
                'lat': 30,
                'lon': 30,
                'time': 1
            },
            'priority': 1,
            'forward-processing-priority': 2,
            'from': '2020-01-01T00:00:00+00:00',
            'to': '2020-02-01T00:00:00+00:00'
        }

        expected_collection = Collection(
            dataset_id='test_id',
            projection="Grid",
            slices=frozenset([('lat', 30), ('lon', 30), ('time', 1)]),
            dimension_names=frozenset([('latitude', 'lat'),
                                       ('longitude', 'lon'),
                                       ('variable', 'test_var')]),
            path='/some/path',
            historical_priority=1,
            forward_processing_priority=2,
            date_from=datetime(2020, 1, 1, 0, 0, 0, tzinfo=timezone.utc),
            date_to=datetime(2020, 2, 1, 0, 0, 0, tzinfo=timezone.utc))

        self.assertEqual(expected_collection,
                         Collection.from_dict(collection_dict))