@@ -22,31 +22,108 @@ local tests = {
22
22
{{Fields = {remote_addr = " foobar" }}, " remote_addr" , {remote_addr = " foobar" }},
23
23
{{Fields = {remote_addr = " 192.168.1.1" }}, " remote_addr" , {remote_addr = " 192.168.1.1" }},
24
24
{{Fields = {remote_addr = " 192.168.1.2" }}, " other_addr" , {remote_addr = " 192.168.1.2" }},
25
- {{Fields = {remote_addr = " 192.168.1.2" }}, " remote_addr" , {remote_addr = " 192.168.1.2" , remote_addr_city = " Mountain View" , remote_addr_country = " US" }},
25
+ {{Fields = {remote_addr = " 192.168.1.2" }}, " remote_addr" , {
26
+ remote_addr = " 192.168.1.2" ,
27
+ remote_addr_city = " Mountain View" ,
28
+ remote_addr_country = " US" }
29
+ },
26
30
{{Fields = {remote_addr = 7 }}, " remote_addr" , {remote_addr = 7 }},
31
+ {{Fields = {remote_addr = {value = " 192.168.1.2" , representation = " ipv4" }}},
32
+ " remote_addr" ,
33
+ {
34
+ remote_addr = {value = " 192.168.1.2" , representation = " ipv4" },
35
+ remote_addr_city = " Mountain View" ,
36
+ remote_addr_country = " US"
37
+ }
38
+ },
39
+ {{Fields = {remote_addrs = {" 192.168.1.2" , " 192.168.1.1" }}},
40
+ " remote_addrs" ,
41
+ {
42
+ remote_addrs = {" 192.168.1.2" , " 192.168.1.1" },
43
+ remote_addrs_city = {" Mountain View" , " " },
44
+ remote_addrs_country = {" US" , " " }
45
+ }
46
+ },
47
+ {{Fields = {remote_addrs = {value = {" 192.168.1.2" , " 192.168.1.1" }, representation = " ipv4" }}},
48
+ " remote_addrs" ,
49
+ {
50
+ remote_addrs = {value = {" 192.168.1.2" , " 192.168.1.1" }, representation = " ipv4" },
51
+ remote_addrs_city = {" Mountain View" , " " },
52
+ remote_addrs_country = {" US" , " " }
53
+ }
54
+ },
55
+ {{Fields = {remote_addrs = {" 192.168.1.3" , " 192.168.1.4" }}},
56
+ " remote_addrs" ,
57
+ {
58
+ remote_addrs = {" 192.168.1.3" , " 192.168.1.4" }
59
+ }
60
+ },
27
61
}
28
62
29
- local function verify_table (idx , t , expected )
30
- if t == nil and expected ~= nil then
63
+ local function verify_field (idx , k , expected , received )
64
+ local ev = expected
65
+ local rv = received
66
+ if ev .value then
67
+ if ev .representation ~= rv .representation then
68
+ error (string.format (" test: %d field: %s representation expected: %s received: %s" ,
69
+ idx , k , tostring (ev .representation ), tostring (rv .represntation )))
70
+ end
71
+ ev = ev .value
72
+ rv = rv .value
73
+ end
74
+
75
+ if type (ev ) == " table" then
76
+ for i ,v in ipairs (ev ) do
77
+ if v ~= rv [i ] then
78
+ error (string.format (" test: %d field: %s idx: %d expected: %s received: %s" ,
79
+ idx , k , i , tostring (v ), tostring (rv [i ])))
80
+ end
81
+ end
82
+ elseif ev ~= rv then
83
+ error (string.format (" test: %d field: %s expected: %s received: %s" ,
84
+ idx , k , tostring (ev ), tostring (rv )))
85
+ end
86
+ end
87
+
88
+
89
+ local function verify_msg_fields (idx , expected , received )
90
+ if expected == nil and received ~= nil then
31
91
error (string.format (" test: %d failed Fields not nil" , idx ))
32
92
end
33
- if not t then return end
93
+ if not expected then return end
34
94
35
- for k ,r in pairs (t ) do
36
- local e = expected [k ]
37
- if e ~= r then
38
- error (string.format (" test: %d field: %s expected: %s received: %s" , idx , k , tostring (e ), tostring (r )))
95
+ for k ,e in pairs (expected ) do
96
+ local r = received [k ]
97
+ local etyp = type (e )
98
+ local rtyp = type (r )
99
+ if etyp ~= rtyp then
100
+ error (string.format (" test: %d field: %s type expected: %s received: %s" ,
101
+ idx , k , etyp , rtyp ))
102
+ end
103
+ if etyp == " table" then
104
+ verify_field (idx , k , e , r )
105
+ elseif e ~= r then
106
+ error (string.format (" test: %d field: %s expected: %s received: %s" ,
107
+ idx , k , tostring (e ), tostring (r )))
39
108
end
40
109
end
110
+ if idx > 0 then
111
+ verify_msg_fields (- idx , received , expected )
112
+ end
41
113
end
42
114
43
115
for i ,v in ipairs (tests ) do
44
116
gh .add_geoip (v [1 ], v [2 ])
45
- verify_table (i , v [1 ]. Fields , v [3 ] )
117
+ verify_msg_fields (i , v [3 ] , v [1 ]. Fields )
46
118
end
47
119
120
+ cfg .geoip_heka .lookup = {city = " " } -- replace the field
121
+ local msg = {Fields = {remote_addr = " 192.168.1.2" }}
122
+ gh .add_geoip (msg , " remote_addr" )
123
+ verify_msg_fields (98 , {remote_addr = " Mountain View" }, msg .Fields )
124
+
125
+ cfg .geoip_heka .lookup = {city = " _city" }
48
126
cfg .geoip_heka .remove_original_field = true
49
127
local msg = {Fields = {remote_addr = " 192.168.1.2" }}
50
128
gh .add_geoip (msg , " remote_addr" )
51
- verify_table (99 , msg .Fields , tests [6 ][3 ])
52
- assert (not msg .Fields .remote_addr )
129
+ verify_msg_fields (99 , {remote_addr_city = " Mountain View" }, msg .Fields )
0 commit comments