On 15 June 2015 at 19:35, Andy Zhou <az...@nicira.com> wrote:

> Add unit tests for ovsdb-tools that deals with multiple schemas.
>
> Signed-off-by: Andy Zhou <az...@nicira.com>
> ---
>  tests/ovsdb-tool.at | 152
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 152 insertions(+)
>

This series don't address two following things:
1. How ovs-vsctl would have to be enhanced to understand tables and columns
that came from the schema that was merged-inside the default schema
2. How build process would have to be enhanced to generate vswitch-idl.c
for the second schema.

Also, another approach (besides merging schemas) would have been to
introduce some ovsdb-tool commands that would allow to create individual
tables and columns at tun-time (just like MySQL does. I think it is
commented here - http://dev.mysql.com/doc/refman/5.1/en/create-table.html).
But I think your approach is actually quite similar to that already because
the schema that is about to be merged in might simply contain a single
table or column. So, I am ok with what you have here.

Also would one:
1. have to stop all OVS processes that read OVSDB before executing these
ovsdb-tool commands?
2. if they can still be left running, then would they need to be restarted
after schema merge?
3. What about deleting tables and columns?
Perhaps. all three things above need to be unit tested and documented as
well.



> diff --git a/tests/ovsdb-tool.at b/tests/ovsdb-tool.at
> index 0d3219b..e61ae79 100644
> --- a/tests/ovsdb-tool.at
> +++ b/tests/ovsdb-tool.at
> @@ -341,3 +341,155 @@ AT_CHECK([diff schema schema2], [1], [ignore])
>  AT_CHECK([ovsdb-tool needs-conversion db schema2], [0], [yes
>  ])
>  AT_CLEANUP
> +
> +m4_divert_push([PREPARE_TESTS])
> +[
> +
> +extened_ordinal_schema () {
> +    cat <<'EOF'
> +    {"name": "ordinals",
> +     "tables": {
> +       "ordinals": {
> +         "columns": {
> +           "number": {"type": "integer"},
> +           "name": {"type": "string"},
> +           "comment": {"type": "string"}},
> +         "indexes": [["number"]]}},
> +     "version": "5.2.3",
> +     "cksum": "22345678 9"}
> +EOF
> +}
> +
> +reduced_ordinal_schema () {
> +    cat <<'EOF'
> +    {"name": "ordinals",
> +     "tables": {
> +       "ordinals": {
> +         "columns": {
> +           "number": {"type": "integer"}},
> +         "indexes": [["number"]]}},
> +     "version": "6.1.3",
> +     "cksum": "32345678 9"}
> +EOF
> +}
> +
> +incompatible_ordinal_schema () {
> +    cat <<'EOF'
> +    {"name": "ordinals",
> +     "tables": {
> +       "ordinals": {
> +         "columns": {
> +           "name": {"type": "string"},
> +           "number": {"type": "string"}},
> +         "indexes": [["number"]]}},
> +     "version": "5.1.4",
> +     "cksum": "42345678 9"}
> +EOF
> +}
> +
> +]
> +m4_divert_pop([PREPARE_TESTS])
> +
> +AT_SETUP([ovsdb-tool create join compatibles])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +reduced_ordinal_schema > reduced
> +touch .db.~lock~
> +AT_CHECK([ovsdb-tool create db 'schema, extended, reduced'], [0], [],
> [ignore])
> +AT_CHECK([[ovsdb-tool transact db '
> +    ["ordinals",
> +     {"op": "insert",
> +      "table": "ordinals",
> +      "row": {"number": 5}}
> +    ]']], [0], [stdout], [ignore])
> +AT_CHECK([grep "\"number\":5" db], [0], [ignore])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool reject join incompatible])
> +AT_KEYWORDS([ovsdb file join negative])
> +ordinal_schema > schema
> +incompatible_ordinal_schema > incompatible
> +touch .db.~lock~
> +AT_CHECK([ovsdb-tool create db 'schema, incompatible'], [0], [], [ignore])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool reject join idential schema])
> +AT_KEYWORDS([ovsdb file join negative])
> +ordinal_schema > schema0
> +ordinal_schema > schema1
> +touch .db.~lock~
> +AT_CHECK([ovsdb-tool create db 'schema0, schema1'], [0], [], [ignore])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool convert joined schema to single])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +touch .db.~lock~
> +AT_CHECK([ovsdb-tool create db 'schema, extended'], [0], [], [ignore])
> +AT_CHECK([ovsdb-tool convert db schema], [0], [ignore])
> +AT_CHECK([ovsdb-tool db-version db], [0], [5.1.3
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool convert single schema to joined])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +touch .db.~lock~
> +AT_CHECK([ovsdb-tool create db 'schema'], [0], [], [ignore])
> +AT_CHECK([ovsdb-tool convert db 'schema, extended'], [0], [ignore])
> +AT_CHECK([ovsdb-tool db-version db], [0], [5.1.3
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool needs-conversion joined schema])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +reduced_ordinal_schema > reduced
> +touch .db.~lock~
> +AT_CHECK([ovsdb-tool create db 'schema, extended'], [0], [], [ignore])
> +AT_CHECK([ovsdb-tool needs-conversion db 'schema, reduced'], [0], [yes
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool db-version joined schema])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +touch .db.~lock~
> +AT_CHECK([ovsdb-tool create db 'schema, extended'], [0], [], [ignore])
> +AT_CHECK([ovsdb-tool db-version db], [0], [ordinals:5.1.3
> +ordinals:5.2.3
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool schema-version joined schema])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +AT_CHECK([ovsdb-tool schema-version 'schema, extended'], [0],
> [ordinals:5.1.3
> +ordinals:5.2.3
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool db-cksum joined schema])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +AT_CHECK([ovsdb-tool create db 'schema, extended'], [0], [], [ignore])
> +AT_CHECK([ovsdb-tool db-cksum db], [0], [ordinals:12345678 9
> +ordinals:22345678 9
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([ovsdb-tool schema-cksum joined schema])
> +AT_KEYWORDS([ovsdb file join positive])
> +ordinal_schema > schema
> +extened_ordinal_schema > extended
> +AT_CHECK([ovsdb-tool schema-cksum 'schema, extended'], [0],
> [ordinals:12345678 9
> +ordinals:22345678 9
> +])
> +AT_CLEANUP
> --
> 1.9.1
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to