Skip to content

Commit 406b1b8

Browse files
committed
add template test
Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com> Signed-off-by: Haywood Shannon <5781935+haywoodsh@users.noreply.github.com>
1 parent 40f6962 commit 406b1b8

File tree

3 files changed

+195
-8
lines changed

3 files changed

+195
-8
lines changed

internal/configs/configmaps_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1393,14 +1393,14 @@ func TestOpenTelemetryConfigurationSuccess(t *testing.T) {
13931393
configMap: &v1.ConfigMap{
13941394
Data: map[string]string{
13951395
"otel-exporter-endpoint": "https://otel-collector:4317",
1396-
"otel-service-name": "nginx-ingress-controller",
1396+
"otel-service-name": "nginx-ingress-controller:nginx",
13971397
},
13981398
},
13991399
expectedLoadModule: true,
14001400
expectedExporterEndpoint: "https://otel-collector:4317",
14011401
expectedExporterHeaderName: "",
14021402
expectedExporterHeaderValue: "",
1403-
expectedServiceName: "nginx-ingress-controller",
1403+
expectedServiceName: "nginx-ingress-controller:nginx",
14041404
msg: "endpoint set, minimal config",
14051405
},
14061406
{
@@ -1410,15 +1410,15 @@ func TestOpenTelemetryConfigurationSuccess(t *testing.T) {
14101410
"otel-exporter-trusted-ca": "otel-ca-secret",
14111411
"otel-exporter-header-name": "X-Custom-Header",
14121412
"otel-exporter-header-value": "custom-value",
1413-
"otel-service-name": "nginx-ingress-controller",
1413+
"otel-service-name": "nginx-ingress-controller:nginx",
14141414
"otel-trace-in-http": "true",
14151415
},
14161416
},
14171417
expectedLoadModule: true,
14181418
expectedExporterEndpoint: "https://otel-collector:4317",
14191419
expectedExporterHeaderName: "X-Custom-Header",
14201420
expectedExporterHeaderValue: "custom-value",
1421-
expectedServiceName: "nginx-ingress-controller",
1421+
expectedServiceName: "nginx-ingress-controller:nginx",
14221422
expectedTraceInHTTP: true,
14231423
msg: "endpoint set, full config",
14241424
},
@@ -1482,7 +1482,7 @@ func TestOpenTelemetryConfigurationInvalid(t *testing.T) {
14821482
configMap: &v1.ConfigMap{
14831483
Data: map[string]string{
14841484
"otel-exporter-endpoint": " ",
1485-
"otel-service-name": "nginx-ingress-controller",
1485+
"otel-service-name": "nginx-ingress-controller:nginx",
14861486
},
14871487
},
14881488
expectedLoadModule: false,
@@ -1493,7 +1493,7 @@ func TestOpenTelemetryConfigurationInvalid(t *testing.T) {
14931493
Data: map[string]string{
14941494
"otel-exporter-endpoint": "https://otel-collector:4317",
14951495
"otel-exporter-header-name": "X-Custom-Header",
1496-
"otel-service-name": "nginx-ingress-controller",
1496+
"otel-service-name": "nginx-ingress-controller:nginx",
14971497
},
14981498
},
14991499
expectedLoadModule: true,
@@ -1504,7 +1504,7 @@ func TestOpenTelemetryConfigurationInvalid(t *testing.T) {
15041504
Data: map[string]string{
15051505
"otel-exporter-endpoint": "https://otel-collector:4317",
15061506
"otel-exporter-header-value": "custom-value",
1507-
"otel-service-name": "nginx-ingress-controller",
1507+
"otel-service-name": "nginx-ingress-controller:nginx",
15081508
},
15091509
},
15101510
expectedLoadModule: true,
@@ -1524,7 +1524,7 @@ func TestOpenTelemetryConfigurationInvalid(t *testing.T) {
15241524
configMap: &v1.ConfigMap{
15251525
Data: map[string]string{
15261526
"otel-exporter-endpoint": "https://otel-collector:4317",
1527-
"otel-service-name": "nginx-ingress-controller",
1527+
"otel-service-name": "nginx-ingress-controller:nginx",
15281528
"otel-trace-in-http": "invalid",
15291529
},
15301530
},

internal/configs/version1/__snapshots__/template_test.snap

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4263,6 +4263,154 @@ stream {
42634263
42644264
---
42654265
4266+
[TestExecuteTemplate_ForMainForNGINXWithOtel - 1]
4267+
worker_processes ;
4268+
4269+
daemon off;
4270+
4271+
error_log stderr ;
4272+
pid /var/lib/nginx/nginx.pid;
4273+
load_module modules/ngx_otel_module.so;
4274+
load_module modules/ngx_fips_check_module.so;
4275+
4276+
load_module modules/ngx_http_js_module.so;
4277+
4278+
events {
4279+
worker_connections ;
4280+
}
4281+
4282+
http {
4283+
include /etc/nginx/mime.types;
4284+
default_type application/octet-stream;
4285+
map_hash_max_size ;
4286+
map_hash_bucket_size ;
4287+
4288+
js_import /etc/nginx/njs/apikey_auth.js;
4289+
js_set $apikey_auth_hash apikey_auth.hash;
4290+
4291+
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
4292+
'$status $body_bytes_sent "$http_referer" '
4293+
'"$http_user_agent" "$http_x_forwarded_for"';
4294+
4295+
map $upstream_trailer_grpc_status $grpc_status {
4296+
default $upstream_trailer_grpc_status;
4297+
'' $sent_http_grpc_status;
4298+
}
4299+
4300+
access_log ;
4301+
4302+
sendfile on;
4303+
#tcp_nopush on;
4304+
4305+
keepalive_timeout ;
4306+
keepalive_requests 0;
4307+
4308+
#gzip on;
4309+
4310+
server_names_hash_max_size ;
4311+
4312+
4313+
variables_hash_bucket_size 0;
4314+
variables_hash_max_size 0;
4315+
4316+
map $request_uri $request_uri_no_args {
4317+
"~^(?P<path>[^?]*)(\?.*)?$" $path;
4318+
}
4319+
4320+
map $http_upgrade $connection_upgrade {
4321+
default upgrade;
4322+
'' close;
4323+
}
4324+
map $http_upgrade $vs_connection_header {
4325+
default upgrade;
4326+
'' $default_connection_header;
4327+
}
4328+
otel_exporter {
4329+
endpoint https://otel-collector:4317;
4330+
header X-Custom-Header "custom-value";
4331+
}
4332+
4333+
4334+
otel_service_name nginx-ingress-controller:nginx;
4335+
4336+
otel_trace on;
4337+
4338+
4339+
4340+
4341+
server {
4342+
# required to support the Websocket protocol in VirtualServer/VirtualServerRoutes
4343+
set $default_connection_header "";
4344+
set $resource_type "";
4345+
set $resource_name "";
4346+
set $resource_namespace "";
4347+
set $service "";
4348+
4349+
listen 0 default_server;listen [::]:0 default_server;
4350+
listen 0 ssl default_server;
4351+
listen [::]:0 ssl default_server;
4352+
ssl_certificate /etc/nginx/secrets/default;
4353+
ssl_certificate_key /etc/nginx/secrets/default;
4354+
4355+
server_name _;
4356+
server_tokens "";
4357+
4358+
location / {
4359+
return ;
4360+
}
4361+
}
4362+
4363+
# NGINX Plus API over unix socket
4364+
server {
4365+
listen unix:/var/lib/nginx/nginx-plus-api.sock;
4366+
access_log off;
4367+
4368+
# $config_version_mismatch is defined in /etc/nginx/config-version.conf
4369+
location /configVersionCheck {
4370+
if ($config_version_mismatch) {
4371+
return 503;
4372+
}
4373+
return 200;
4374+
}
4375+
4376+
location /api {
4377+
api write=on;
4378+
}
4379+
}
4380+
4381+
include /etc/nginx/config-version.conf;
4382+
include /etc/nginx/conf.d/*.conf;
4383+
4384+
server {
4385+
listen unix:/var/lib/nginx/nginx-418-server.sock;
4386+
access_log off;
4387+
4388+
return 418;
4389+
}
4390+
}
4391+
4392+
stream {
4393+
log_format stream-main '$remote_addr [$time_local] '
4394+
'$protocol $status $bytes_sent $bytes_received '
4395+
'$session_time "$ssl_preread_server_name"';
4396+
4397+
access_log /dev/stdout stream-main;
4398+
4399+
4400+
4401+
map_hash_max_size ;
4402+
4403+
include /etc/nginx/stream-conf.d/*.conf;
4404+
}
4405+
4406+
mgmt {
4407+
license_token /license.jwt;
4408+
enforce_initial_report off;
4409+
deployment_context /etc/nginx/reporting/tracking.info;
4410+
}
4411+
4412+
---
4413+
42664414
[TestExecuteTemplate_ForMainForNGINXWithZoneSyncEnabledCustomPort - 1]
42674415
worker_processes ;
42684416

internal/configs/version1/template_test.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,6 +1080,36 @@ func TestExecuteTemplate_ForMainForNGINXWithZoneSyncEnabledCustomResolverAddress
10801080
snaps.MatchSnapshot(t, buf.String())
10811081
}
10821082

1083+
func TestExecuteTemplate_ForMainForNGINXWithOtel(t *testing.T) {
1084+
t.Parallel()
1085+
1086+
tmpl := newNGINXPlusMainTmpl(t)
1087+
buf := &bytes.Buffer{}
1088+
1089+
err := tmpl.Execute(buf, mainCfgWithOTel)
1090+
t.Log(buf.String())
1091+
1092+
if err != nil {
1093+
t.Fatalf("Failed to write template %v", err)
1094+
}
1095+
1096+
wantDirectives := []string{
1097+
"otel_exporter {",
1098+
"endpoint https://otel-collector:4317;",
1099+
"header X-Custom-Header \"custom-value\";",
1100+
"otel_service_name nginx-ingress-controller:nginx;",
1101+
"otel_trace on;",
1102+
}
1103+
1104+
mainConf := buf.String()
1105+
for _, want := range wantDirectives {
1106+
if !strings.Contains(mainConf, want) {
1107+
t.Errorf("want %q in generated config", want)
1108+
}
1109+
}
1110+
snaps.MatchSnapshot(t, buf.String())
1111+
}
1112+
10831113
func TestExecuteTemplate_ForIngressForNGINXWithProxySetHeadersAnnotationWithDefaultValue(t *testing.T) {
10841114
t.Parallel()
10851115

@@ -2589,6 +2619,15 @@ var (
25892619
},
25902620
}
25912621

2622+
mainCfgWithOTel = MainConfig{
2623+
MainOtelLoadModule: true,
2624+
MainOtelGlobalTraceEnabled: true,
2625+
MainOtelExporterEndpoint: "https://otel-collector:4317",
2626+
MainOtelExporterHeaderName: "X-Custom-Header",
2627+
MainOtelExporterHeaderValue: "custom-value",
2628+
MainOtelServiceName: "nginx-ingress-controller:nginx",
2629+
}
2630+
25922631
// Vars for Mergable Ingress Master - Minion tests
25932632

25942633
coffeeUpstreamNginxPlus = Upstream{

0 commit comments

Comments
 (0)