xref: /spdk/test/json_config/json_diff.sh (revision eb53c23236cccb6b698b7ca70ee783da1c574b5f)
1651d9158SPawel Wodkowski#!/usr/bin/env bash
2*eb53c232Spaul luse#  SPDX-License-Identifier: BSD-3-Clause
3*eb53c232Spaul luse#  Copyright (C) 2018 Intel Corporation
4*eb53c232Spaul luse#  All rights reserved.
5*eb53c232Spaul luse#
6651d9158SPawel Wodkowskiset -x
7651d9158SPawel Wodkowski
8651d9158SPawel Wodkowskiif [ $# -ne 2 ]; then
9651d9158SPawel Wodkowski	echo "This script need exactly two arguments"
10651d9158SPawel Wodkowski	exit 1
11651d9158SPawel Wodkowskifi
12651d9158SPawel Wodkowski
13651d9158SPawel Wodkowskirootdir=$(readlink -f $(dirname $0)/../..)
14651d9158SPawel Wodkowski
15651d9158SPawel Wodkowski# Compare two JSON files.
16651d9158SPawel Wodkowski#
17651d9158SPawel Wodkowski# NOTE: Order of objects in JSON can change by just doing loads -> dumps so all JSON objects (not arrays) are sorted by
18651d9158SPawel Wodkowski# config_filter.py script. Sorted output is used to compare JSON output.
19651d9158SPawel Wodkowski#
20651d9158SPawel Wodkowski
21651d9158SPawel Wodkowskitmp_file_1=$(mktemp /tmp/$(basename ${1}).XXX)
22651d9158SPawel Wodkowskitmp_file_2=$(mktemp /tmp/$(basename ${2}).XXX)
23651d9158SPawel Wodkowskiret=0
24651d9158SPawel Wodkowski
250cd9241aSPawel Kaminski$rootdir/test/json_config/config_filter.py -method "sort" < $1 > $tmp_file_1
260cd9241aSPawel Kaminski$rootdir/test/json_config/config_filter.py -method "sort" < $2 > $tmp_file_2
27651d9158SPawel Wodkowski
28651d9158SPawel Wodkowskiif ! diff -u $tmp_file_1 $tmp_file_2; then
29651d9158SPawel Wodkowski	ret=1
30651d9158SPawel Wodkowski
31651d9158SPawel Wodkowski	echo "=== Start of file: $tmp_file_1 ==="
32651d9158SPawel Wodkowski	cat $tmp_file_1
33651d9158SPawel Wodkowski	echo "=== End of file: $tmp_file_1 ==="
34651d9158SPawel Wodkowski	echo ""
35651d9158SPawel Wodkowski	echo "=== Start of file: $tmp_file_2 ==="
36651d9158SPawel Wodkowski	cat $tmp_file_2
37651d9158SPawel Wodkowski	echo "=== End of file: $tmp_file_2 ==="
38651d9158SPawel Wodkowski	echo ""
39651d9158SPawel Wodkowskielse
40651d9158SPawel Wodkowski	echo "INFO: JSON config files are the same"
41651d9158SPawel Wodkowskifi
42651d9158SPawel Wodkowski
43651d9158SPawel Wodkowskirm $tmp_file_1 $tmp_file_2
44651d9158SPawel Wodkowskiexit $ret
45