Exemplo n.º 1
0
    def test_missing_supported_options(self):
        config = {
            'reader': {
                'name': 'exporters.readers.random_reader.RandomReader',
                'options': {}
            },
            'writer': {
                'name': 'exporters.writers.console_writer.ConsoleWriter',
                'options': {}
            },
            'filter': {
                'name': 'exporters.filters.no_filter.NoFilter',
                'options': {}
            },
            'transform': {
                'name': 'exporters.transform.jq_transform.JQTransform',
                'options': {}
            },
            'exporter_options': {},
            'persistence': {
                'name': 'exporters.persistence.PicklePersistence',
                'options': {
                    'file_path': '/tmp'
                }
            }
        }
        with self.assertRaises(ConfigurationError) as cm:
            check_for_errors(config)

        exception = cm.exception
        expected_errors = {
            'transform': {'jq_filter': 'Option jq_filter is missing'}
            }
        self.assertEqual(expected_errors, exception.errors)
Exemplo n.º 2
0
    def test_stream_only_sections(self):
        config = valid_config_with_updates({
            "decompressor": {
                "name": "exporters.decompressors.ZLibDecompressor",
            },
            "deserializer": {
                "name": "exporters.deserializers.CSVDeserializer",
            },
        })
        with self.assertRaises(ConfigurationError) as cm:
            check_for_errors(config)

        expected_errors = {
            'decompressor': "The 'decompressor' section can only be used with a stream reader.",
            'deserializer': "The 'deserializer' section can only be used with a stream reader.",
        }
        assert expected_errors == cm.exception.errors

        config = valid_config_with_updates({
            "reader": {
                "name": "exporters.readers.fs_reader.FSReader",
                "options": {
                    "input": "."
                }
            },
            "decompressor": {
                "name": "exporters.decompressors.ZLibDecompressor",
            },
            "deserializer": {
                "name": "exporters.deserializers.CSVDeserializer",
            },
        })
        check_for_errors(config)  # should not raise
Exemplo n.º 3
0
    def test_wrong_type_supported_options(self):
        config = {
            'reader': {
                'name': 'exporters.readers.random_reader.RandomReader',
                'options': {
                    'number_of_items': {},
                    'batch_size': []
                }
            },
            'writer': {
                'name': 'exporters.writers.console_writer.ConsoleWriter',
                'options': {}
            },
            'filter': {
                'name': 'exporters.filters.no_filter.NoFilter',
                'options': {}
            },
            'transform': {
                'name': 'exporters.transform.jq_transform.JQTransform',
                'options': {
                    'jq_filter': 5
                }
            },
            'exporter_options': {},
            'persistence': {
                'name': 'exporters.persistence.PicklePersistence',
                'options': {
                    'file_path': 567
                }
            }
        }
        with self.assertRaises(ConfigurationError) as cm:
            check_for_errors(config)

        exception = cm.exception
        wrong_type_msg = 'Wrong type: found %s, expected %s'
        expected_errors = {
            'reader': {
                'number_of_items': wrong_type_msg % (dict, six.integer_types),
                'batch_size': wrong_type_msg % (list, six.integer_types)},
            'transform': {
                'jq_filter': wrong_type_msg % (int, six.string_types)},
            'persistence': {
                'file_path': wrong_type_msg % (int, six.string_types)}
        }
        self.assertEqual(expected_errors, exception.errors)
        self.assertEqual(len(exception.errors), 3)
        self.assertEqual(len(exception.errors['reader']), 2)
Exemplo n.º 4
0
 def test_validate_returns_errors(self):
     errors = check_for_errors({}, raise_exception=False)
     self.assertIsInstance(errors, dict)
     self.assertNotEqual(len(errors), 0)
Exemplo n.º 5
0
 def test_check_configuration(self):
     try:
         check_for_errors(VALID_EXPORTER_CONFIG)
     except Exception:
         self.fail("check_for_errors() raised Exception unexpectedly!")
Exemplo n.º 6
0
 def test_find_missing_sections(self):
     with self.assertRaises(ConfigurationError):
         check_for_errors({})