summaryrefslogtreecommitdiffstats
path: root/tests/shell/testcases/sets/automerge_0
blob: 7530b3db73170aa8d447bd9a1b8ac71f5c35fbe1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/bash

set -e

RULESET="table inet x {
	set y {
		type inet_service
		flags interval
		auto-merge
	}
}"

$NFT -f - <<< $RULESET

tmpfile=$(mktemp)
echo -n "add element inet x y { " > $tmpfile
for ((i=0;i<65535;i+=2))
do
	echo -n "$i, " >> $tmpfile
	if [ $i -eq 65534 ]
	then
		echo -n "$i" >> $tmpfile
	fi
done
echo "}" >> $tmpfile

$NFT -f $tmpfile

tmpfile2=$(mktemp)
for ((i=1;i<65535;i+=2))
do
	echo "$i" >> $tmpfile2
done

tmpfile3=$(mktemp)
shuf $tmpfile2 > $tmpfile3
i=0
cat $tmpfile3 | while read line && [ $i -lt 10 ]
do
	$NFT add element inet x y { $line }
	if [ $? -ne 0 ]
	then
		echo "failed to add $line"
		exit 1
	fi
	i=$((i+1))
done

for ((i=0;i<10;i++))
do
	from=$(($RANDOM%65535))
	to=$(($from+100))
	$NFT add element inet x y { $from-$to }
	if [ $? -ne 0 ]
	then
		echo "failed to add $from-$to"
		exit 1
	fi

	$NFT get element inet x y { $from-$to } 1>/dev/null
	if [ $? -ne 0 ]
	then
		echo "failed to get $from-$to"
		exit 1
	fi

	# partial removals in the previous random range
	from2=$(($from+10))
	to2=$(($to-10))
	$NFT delete element inet x y { $from, $to, $from2-$to2 }
	if [ $? -ne 0 ]
	then
		echo "failed to delete $from, $to, $from2-$to2"
		exit 1
	fi

	# check deletions are correct
	from=$(($from+1))
	$NFT get element inet x y { $from } 1>/dev/null
	if [ $? -ne 0 ]
	then
		echo "failed to get $from"
		exit 1
	fi

	to=$(($to-1))
	$NFT get element inet x y { $to } 1>/dev/null
	if [ $? -ne 0 ]
	then
		echo "failed to get $to"
		exit 1
	fi

	from2=$(($from2-1))
	$NFT get element inet x y { $from2 } 1>/dev/null
	if [ $? -ne 0 ]
	then
		echo "failed to get $from2"
		exit 1
	fi
	to2=$(($to2+1))

	$NFT get element inet x y { $to2 } 1>/dev/null
	if [ $? -ne 0 ]
	then
		echo "failed to get $to2"
		exit 1
	fi
done

rm -f $tmpfile
rm -f $tmpfile2
rm -f $tmpfile3