Skip to content

Commit fbaaf26

Browse files
committed
NLB-3682: add unit tests for http3 and quic
1 parent c9b9d6c commit fbaaf26

File tree

1 file changed

+180
-0
lines changed

1 file changed

+180
-0
lines changed

analyze_test.go

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,3 +1093,183 @@ func TestAnalyze_nap_app_protect_reconnect_period_seconds(t *testing.T) {
10931093
})
10941094
}
10951095
}
1096+
1097+
//nolint:funlen
1098+
func TestAnalyze_http3(t *testing.T) {
1099+
t.Parallel()
1100+
testcases := map[string]struct {
1101+
stmt *Directive
1102+
ctx blockCtx
1103+
wantErr bool
1104+
}{
1105+
"http3 ok": {
1106+
&Directive{
1107+
Directive: "http3",
1108+
Args: []string{"on"},
1109+
Line: 5,
1110+
},
1111+
blockCtx{"http", "server"},
1112+
false,
1113+
},
1114+
"http3 not ok": {
1115+
&Directive{
1116+
Directive: "http3",
1117+
Args: []string{"somevalue"},
1118+
Line: 5,
1119+
},
1120+
blockCtx{"http", "server"},
1121+
true,
1122+
},
1123+
"http3_hq ok": {
1124+
&Directive{
1125+
Directive: "http3",
1126+
Args: []string{"on"},
1127+
Line: 5,
1128+
},
1129+
blockCtx{"http", "server"},
1130+
false,
1131+
},
1132+
"http3_hq not ok": {
1133+
&Directive{
1134+
Directive: "http3",
1135+
Args: []string{"somevalue"},
1136+
Line: 5,
1137+
},
1138+
blockCtx{"http", "server"},
1139+
true,
1140+
},
1141+
"http3_max_concurrent_streams ok": {
1142+
&Directive{
1143+
Directive: "http3_max_concurrent_streams",
1144+
Args: []string{"10"},
1145+
Line: 5,
1146+
},
1147+
blockCtx{"http", "server"},
1148+
false,
1149+
},
1150+
"http3_stream_buffer_size ok": {
1151+
&Directive{
1152+
Directive: "http3_stream_buffer_size",
1153+
Args: []string{"128k"},
1154+
Line: 5,
1155+
},
1156+
blockCtx{"http", "server"},
1157+
false,
1158+
},
1159+
}
1160+
1161+
for name, tc := range testcases {
1162+
tc := tc
1163+
t.Run(name, func(t *testing.T) {
1164+
t.Parallel()
1165+
err := analyze("nginx.conf", tc.stmt, ";", tc.ctx, &ParseOptions{})
1166+
1167+
if !tc.wantErr && err != nil {
1168+
t.Fatal(err)
1169+
}
1170+
1171+
if tc.wantErr && err == nil {
1172+
t.Fatal("expected error, got nil")
1173+
}
1174+
})
1175+
}
1176+
}
1177+
1178+
//nolint:funlen
1179+
func TestAnalyze_quic(t *testing.T) {
1180+
t.Parallel()
1181+
testcases := map[string]struct {
1182+
stmt *Directive
1183+
ctx blockCtx
1184+
wantErr bool
1185+
}{
1186+
"quic_active_connection_id_limit ok": {
1187+
&Directive{
1188+
Directive: "quic_active_connection_id_limit",
1189+
Args: []string{"2"},
1190+
Line: 5,
1191+
},
1192+
blockCtx{"http", "server"},
1193+
false,
1194+
},
1195+
"quic_bpf ok": {
1196+
&Directive{
1197+
Directive: "quic_bpf",
1198+
Args: []string{"on"},
1199+
Line: 5,
1200+
},
1201+
blockCtx{"main"},
1202+
false,
1203+
},
1204+
"quic_bpf not ok": {
1205+
&Directive{
1206+
Directive: "quic_bpf",
1207+
Args: []string{"on"},
1208+
Line: 5,
1209+
},
1210+
blockCtx{"http", "server"},
1211+
true,
1212+
},
1213+
"quic_gso ok": {
1214+
&Directive{
1215+
Directive: "quic_gso",
1216+
Args: []string{"on"},
1217+
Line: 5,
1218+
},
1219+
blockCtx{"http", "server"},
1220+
false,
1221+
},
1222+
"quic_gso not ok": {
1223+
&Directive{
1224+
Directive: "quic_gso",
1225+
Args: []string{"somevalue"},
1226+
Line: 5,
1227+
},
1228+
blockCtx{"http", "server"},
1229+
true,
1230+
},
1231+
"quic_host_key ok": {
1232+
&Directive{
1233+
Directive: "http3_max_concurrent_streams",
1234+
Args: []string{"somefile"},
1235+
Line: 5,
1236+
},
1237+
blockCtx{"http", "server"},
1238+
false,
1239+
},
1240+
"quic_retry ok": {
1241+
&Directive{
1242+
Directive: "quic_retry",
1243+
Args: []string{"off"},
1244+
Line: 5,
1245+
},
1246+
blockCtx{"http", "server"},
1247+
false,
1248+
},
1249+
"quic_retry not ok": {
1250+
&Directive{
1251+
Directive: "quic_retry",
1252+
Args: []string{"somevalue"},
1253+
Line: 5,
1254+
},
1255+
blockCtx{"http", "server"},
1256+
true,
1257+
},
1258+
}
1259+
1260+
for name, tc := range testcases {
1261+
tc := tc
1262+
t.Run(name, func(t *testing.T) {
1263+
t.Parallel()
1264+
err := analyze("nginx.conf", tc.stmt, ";", tc.ctx, &ParseOptions{})
1265+
1266+
if !tc.wantErr && err != nil {
1267+
t.Fatal(err)
1268+
}
1269+
1270+
if tc.wantErr && err == nil {
1271+
t.Fatal("expected error, got nil")
1272+
}
1273+
})
1274+
}
1275+
}

0 commit comments

Comments
 (0)