[ 
https://issues.apache.org/jira/browse/AVRO-230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12780714#action_12780714
 ] 

Matt Massie commented on AVRO-230:
----------------------------------

bq. I'd vote for a "valid_schemas" directory too.

Jeff: By definition, all schema in the "valid_data" directory must be valid and 
the "json_data" and "binary_data" directories are optional.  So it would be 
easy to test an array of schemas without much hassle.

e.g.

valid_data
* test_foo
** schema.json
* test_bar
** schema.json
* test_baz
** schema.json

would be all you need to test three schema without any data tests.

bq. We should probably do the same thing for valid/invalid protocols.

Jeff: +1 on your and Doug's suggestion to also include valid requests and 
responses

bq. In valid_data/binary_data, should each file contain just a single 
serialized object with no headers, etc, or should it be a data file?

Doug: I think you're correct in have a separate directory for single objects 
and objects inside a container.  This would allow people writing new language 
bindings to test objects eoncoding/decoding without needing to implement any 
containers.

bq. To support validation, we could store a random seed in data file's 
metadata. Then a validator can read the file while generating random objects 
from the seed and schema and check that the two match.

Doug: +1 I really like this idea.  Couldn't we just (1) seed with a fixed 
number, (2) encode schema with random data and then (3) save away the next 
random number?  The implementation validating the schema would then (1) seed 
with a fixed number, (2) decode the data and (3) generate a random number and 
compare to the encoders stored value?

Or did I just repeat your recommendation using different words?

> Create a shared schema test directory structure
> -----------------------------------------------
>
>                 Key: AVRO-230
>                 URL: https://issues.apache.org/jira/browse/AVRO-230
>             Project: Avro
>          Issue Type: New Feature
>          Components: c, c++, java, python
>            Reporter: Matt Massie
>            Assignee: Matt Massie
>             Fix For: 1.3.0
>
>
> This is an example of my proposed directory structure:
> * invalid_schemas/
> ** broken.json
> ** wrong.json
> * valid_data/
> ** foo_test/
> *** schema.json
> *** json_data/
> **** valid_json_test_data.json
> **** more_valid_json_test_data.json
> *** binary_data/
> **** valid_binary_test_data.bin
> **** more_test_data.bin
> ** bar_test/
> *** schema.json
> *** json_data/
> **** ...
> * invalid_data/
> ** baz_test/
> *** schema.json
> *** json_data/
> **** ...
> *** binary_data/
> **** ...
> This structure supports positive and negative tests for avro schemas, json 
> data and binary data.
> * The "invalid_schema" directory holds a number of invalid schemas that 
> should fail to parse.
> * The "valid_data" directory has a number of self-contained tests in separate 
> directories.  Each test directory is required to have a "schema.json" file 
> that valid avro schema.  The "json_data" and "binary_data" directories are 
> optional for each test.
> * The "invalid_data" directory has the same rules as the "valid_data" 
> directory.  The data files should fail during tests (negative testing).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to