Re: [PATCH nft 1/1] tests: prettify JSON in test output and add helper

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2023-11-22 at 13:33 +0100, Pablo Neira Ayuso wrote:
> Hi,
> 
> On Wed, Nov 22, 2023 at 12:19:40PM +0100, Thomas Haller wrote:
> > - add helper script "json-pretty.sh" for prettify/format JSON.
> >   It uses either `jq` or a `python` fallback. In my tests, they
> >   produce the same output, but the output is not guaranteed to be
> >   stable. This is mainly for informational purpose.
> > 
> > - add a "json-diff-pretty.sh" which prettifies two JSON inputs and
> >   shows a diff of them.
> > 
> > - in "test-wrapper.sh", after the check for a .json-nft dump fails,
> > also
> >   call "json-diff-pretty.sh" and write the output to "ruleset-
> > diff.json.pretty".
> >   This is beside "ruleset-diff.json", which contains the original
> > diff.
> 
> One silly question: Does the prettify hightlights the difference?

Yes. That that is the idea.

> 
> tests/py clearly shows what is the difference in the JSON diff that
> quickly helps you identify what is missing.


As always, you will find some result files in /tmp/nft-
test.latest.$USER/, which I usually read with

  $ grep --color=always ^ -aR /tmp/nft-test.latest.*/ | less -R

there will be a new file there, named "ruleset-diff.json.pretty".

It contains the content of "./tests/shell/helpers/json-diff-pretty.sh"
output.


For example:

  $ cp tests/shell/testcases/bitwise/dumps/0040mark_binop_2.json-nft tests/shell/testcases/bitwise/dumps/0040mark_binop_3.json-nft
  $ ./tests/shell/run-tests.sh tests/shell/testcases/bitwise/0040mark_binop_3


leaves a file

     /tmp/nft-test.latest.*/test-tests-shell-testcases-bitwise-0040mark_binop_3.1/ruleset-diff.json.pretty


with the following content:


Cmd: "./tests/shell/helpers/json-diff-pretty.sh" "tests/shell/testcases/bitwise/dumps/0040mark_binop_3.json-nft" "/tmp/nft-test.20231122-135045.550.28uKHu/test-tests-shell-testcases-bitwise-0040mark_binop_3.1/ruleset-after.json"
--- tests/shell/testcases/bitwise/dumps/0040mark_binop_3.json-nft	2023-11-22 13:50:12.114098356 +0100
+++ /tmp/nft-test.20231122-135045.550.28uKHu/test-tests-shell-testcases-bitwise-0040mark_binop_3.1/ruleset-after.json	2023-11-22 13:50:45.622065923 +0100
@@ -1 +1 @@
-{"nftables": [{"metainfo": {"version": "VERSION", "release_name": "RELEASE_NAME", "json_schema_version": 1}}, {"table": {"family": "ip", "name": "t", "handle": 0}}, {"chain": {"family": "ip", "table": "t", "name": "c", "handle": 0, "type": "filter", "hook": "output", "prio": 0, "policy": "accept"}}, {"rule": {"family": "ip", "table": "t", "chain": "c", "handle": 0, "expr": [{"mangle": {"key": {"ct": {"key": "mark"}}, "value": {"|": [{"<<": [{"payload": {"protocol": "ip", "field": "dscp"}}, 2]}, 16]}}}]}}]}
+{"nftables": [{"metainfo": {"version": "VERSION", "release_name": "RELEASE_NAME", "json_schema_version": 1}}, {"table": {"family": "ip", "name": "t", "handle": 0}}, {"chain": {"family": "ip", "table": "t", "name": "c", "handle": 0, "type": "filter", "hook": "input", "prio": 0, "policy": "accept"}}, {"rule": {"family": "ip", "table": "t", "chain": "c", "handle": 0, "expr": [{"mangle": {"key": {"meta": {"key": "mark"}}, "value": {"|": [{"<<": [{"payload": {"protocol": "ip", "field": "dscp"}}, 2]}, 16]}}}]}}]}
--- /dev/fd/63	2023-11-22 13:50:45.627065918 +0100
+++ /dev/fd/62	2023-11-22 13:50:45.627065918 +0100
@@ -21,7 +21,7 @@
         "name": "c",
         "handle": 0,
         "type": "filter",
-        "hook": "output",
+        "hook": "input",
         "prio": 0,
         "policy": "accept"
       }
@@ -36,7 +36,7 @@
           {
             "mangle": {
               "key": {
-                "ct": {
+                "meta": {
                   "key": "mark"
                 }
               },





[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux