Ejemplo n.º 1
0
 def test_get_without_namespace(self):
     store = SchemaStore()
     store.add_record(TestRecord)
     self.assertEquals(store.get('TestRecord'), TestRecord)
     self.assertEquals(store.get('any.namespace.should.work.TestRecord'),
                       TestRecord)
     self.assertRaises(KeyError, store.get, 'OtherRecord')
Ejemplo n.º 2
0
 def test_get_record(self):
     store = SchemaStore()
     store.add_record(namespaced_schemas.TestRecord)
     self.assertEquals(
         store.get('TestRecord').__module__, 'test.namespaced_schemas')
     self.assertEquals(
         store.get('my.namespace.TestRecord').__module__,
         'test.namespaced_schemas')
Ejemplo n.º 3
0
    def test_records_with_same_name_reversed_order(self):
        """
        Add two records to the store. Both have the same name but different namespace. The one without namespace
        should have priority when doing lookup without namespace
        """
        store = SchemaStore()

        # Record without namespace will take 2 keys in dict
        store.add_record(TestRecord)
        self.assertEquals(store.get('TestRecord'), TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'), TestRecord)

        with warnings.catch_warnings(record=True) as warninglist:
            # Record with namespace will not replace the base level record
            store.add_record(namespaced_schemas.TestRecord)
        self.assertEquals(len(warninglist), 0, msg="there shouldn't be a 'replacement' warning")
        self.assertEquals(store.get('TestRecord'), TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'), namespaced_schemas.TestRecord)
Ejemplo n.º 4
0
    def test_records_with_same_name(self):
        """
        Add two records to the store. Both have the same name but different namespace. The one without namespace
        should have priority when doing lookup without namespace
        """
        store = SchemaStore()

        # Record with namespace will take 2 keys in the dict
        store.add_record(namespaced_schemas.TestRecord)
        self.assertEquals(store.get('TestRecord'), namespaced_schemas.TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'), namespaced_schemas.TestRecord)

        with warnings.catch_warnings(record=True) as warninglist:
            # Non namespace will replace the non-namespace key in dict
            store.add_record(TestRecord)
        self.assertEquals(len(warninglist), 1)  # warning when one definition gets replaced
        self.assertEquals(store.get('TestRecord'), TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'), namespaced_schemas.TestRecord)
Ejemplo n.º 5
0
    def test_records_with_same_name_reversed_order(self):
        """
        Add two records to the store. Both have the same name but different namespace. The one without namespace
        should have priority when doing lookup without namespace
        """
        store = SchemaStore()

        # Record without namespace will take 2 keys in dict
        store.add_record(TestRecord)
        self.assertEquals(store.get('TestRecord'), TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'), TestRecord)

        with warnings.catch_warnings(record=True) as warninglist:
            # Record with namespace will not replace the base level record
            store.add_record(namespaced_schemas.TestRecord)
        self.assertEquals(len(warninglist),
                          0,
                          msg="there shouldn't be a 'replacement' warning")
        self.assertEquals(store.get('TestRecord'), TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'),
                          namespaced_schemas.TestRecord)
Ejemplo n.º 6
0
    def test_records_with_same_name(self):
        """
        Add two records to the store. Both have the same name but different namespace. The one without namespace
        should have priority when doing lookup without namespace
        """
        store = SchemaStore()

        # Record with namespace will take 2 keys in the dict
        store.add_record(namespaced_schemas.TestRecord)
        self.assertEquals(store.get('TestRecord'),
                          namespaced_schemas.TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'),
                          namespaced_schemas.TestRecord)

        with warnings.catch_warnings(record=True) as warninglist:
            # Non namespace will replace the non-namespace key in dict
            store.add_record(TestRecord)
        self.assertEquals(len(warninglist),
                          1)  # warning when one definition gets replaced
        self.assertEquals(store.get('TestRecord'), TestRecord)
        self.assertEquals(store.get('my.namespace.TestRecord'),
                          namespaced_schemas.TestRecord)
Ejemplo n.º 7
0
    def test_deprecated_namespace(self):
        @no_auto_store()
        class TestRecord(Record):
            _avro_namespace_ = 'legacy'
            a = Text()

        store = SchemaStore()

        # Verify that we get a deprecation warning when we add the record
        with warnings.catch_warnings(record=True) as w:
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            store.add_record(TestRecord)
            self.assertEquals(len(w), 1)
            self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
            self.assertEquals("_avro_namespace is deprecated, use _namespace instead", str(w[-1].message))

        self.assertEquals(store.get('legacy.TestRecord'), TestRecord)
Ejemplo n.º 8
0
    def test_deprecated_namespace(self):
        @no_auto_store()
        class TestRecord(Record):
            _avro_namespace_ = 'legacy'
            a = Text()

        store = SchemaStore()

        # Verify that we get a deprecation warning when we add the record
        with warnings.catch_warnings(record=True) as w:
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            store.add_record(TestRecord)
            self.assertEquals(len(w), 1)
            self.assertTrue(issubclass(w[-1].category, DeprecationWarning))
            self.assertEquals(
                "_avro_namespace is deprecated, use _namespace instead",
                str(w[-1].message))

        self.assertEquals(store.get('legacy.TestRecord'), TestRecord)
Ejemplo n.º 9
0
 def test_get_without_namespace_namespaced_record(self):
     store = SchemaStore()
     store.add_record(namespaced_schemas.TestRecord)
     self.assertEquals(store.get('TestRecord'), namespaced_schemas.TestRecord)
     self.assertEquals(store.get('any.namespace.should.work.TestRecord'), namespaced_schemas.TestRecord)
     self.assertRaises(KeyError, store.get, 'OtherRecord')
Ejemplo n.º 10
0
 def test_get_record(self):
     store = SchemaStore()
     store.add_record(namespaced_schemas.TestRecord)
     self.assertEquals(store.get('TestRecord').__module__, 'test.namespaced_schemas')
     self.assertEquals(store.get('my.namespace.TestRecord').__module__, 'test.namespaced_schemas')