fix: small improvements

This commit is contained in:
Eugene Grebenschikov 2023-06-08 19:29:15 -07:00
parent 45e37dfda7
commit 3d172545d1
4 changed files with 102 additions and 160 deletions

View file

@ -175,17 +175,18 @@ my ($t_headers_ignore, $tp_headers_ignore, $t_headers_extract,
$tp_headers_extract, $t_headers_inject, $tp_headers_inject, $tp_headers_extract, $t_headers_inject, $tp_headers_inject,
$t_headers_propagate, $tp_headers_propagate); $t_headers_propagate, $tp_headers_propagate);
my ($tp_headers, $tp_resp) = http2_get_traceparent('/trace-on'); my ($tp_headers, $tp_resp) = http2_get('/trace-on', trace_headers => 1);
my ($t_headers, $t_resp) = http2_get_ssl('/trace-on'); my ($t_headers, $t_resp) = http2_get('/trace-on', ssl => 1);
($t_headers_ignore, $_) = http2_get('/context-ignore'); ($t_headers_ignore, $_) = http2_get('/context-ignore');
($tp_headers_ignore, $_) = http2_get_traceparent('/context-ignore'); ($tp_headers_ignore, $_) = http2_get('/context-ignore', trace_headers => 1);
($t_headers_extract, $_) = http2_get('/context-extract'); ($t_headers_extract, $_) = http2_get('/context-extract');
($tp_headers_extract, $_) = http2_get_traceparent('/context-extract'); ($tp_headers_extract, $_) = http2_get('/context-extract', trace_headers => 1);
($t_headers_inject, $_) = http2_get('/context-inject'); ($t_headers_inject, $_) = http2_get('/context-inject');
($tp_headers_inject, $_) = http2_get_traceparent('/context-inject'); ($tp_headers_inject, $_) = http2_get('/context-inject', trace_headers => 1);
($t_headers_propagate, $_) = http2_get('/context-propagate'); ($t_headers_propagate, $_) = http2_get('/context-propagate');
($tp_headers_propagate, $_) = http2_get_traceparent('/context-propagate'); ($tp_headers_propagate, $_) =
http2_get('/context-propagate', trace_headers => 1);
my $frames = $f->{http_start}(); my $frames = $f->{http_start}();
my ($frame) = grep { $_->{type} eq "DATA" } @$frames; my ($frame) = grep { $_->{type} eq "DATA" } @$frames;
@ -365,59 +366,31 @@ is($tp_headers_propagate->{'x-otel-tracestate'},
############################################################################### ###############################################################################
sub http2_get { sub http2_get {
my ($path) = @_; my ($path, %extra) = @_;
my ($frames, $frame); my ($frames, $frame);
my $s = Test::Nginx::HTTP2->new(); my $s = $extra{ssl}
? Test::Nginx::HTTP2->new(
undef, socket => get_ssl_socket(8082, ['h2']))
: Test::Nginx::HTTP2->new();
my $sid = $s->new_stream({ path => $path }); my $sid = $extra{trace_headers}
$frames = $s->read(all => [{ sid => $sid, fin => 1 }]); ? $s->new_stream({ headers => [
{ name => ':method', value => 'GET' },
($frame) = grep { $_->{type} eq "HEADERS" } @$frames; { name => ':scheme', value => 'http' },
my $headers = $frame->{headers}; { name => ':path', value => $path },
{ name => ':authority', value => 'localhost' },
($frame) = grep { $_->{type} eq "DATA" } @$frames; { name => 'user-agent', value => 'nginx-tests', mode => 2 },
my $data = $frame->{data}; { name => 'traceparent',
value => '00-0af7651916cd43dd8448eb211c80319c-' .
return $headers, $data; 'b9c7c989f97918e1-01',
} mode => 2
},
sub http2_get_traceparent { { name => 'tracestate',
my ($path) = @_; value => 'congo=ucfJifl5GOE,rojo=00f067aa0ba902b7',
my ($frames, $frame); mode => 2
}]})
my $s = Test::Nginx::HTTP2->new(); : $s->new_stream({ path => $path });
my $sid = $s->new_stream({ headers => [
{ name => ':method', value => 'GET' },
{ name => ':scheme', value => 'http' },
{ name => ':path', value => $path },
{ name => ':authority', value => 'localhost' },
{ name => 'user-agent', value => 'nginx-tests', mode => 2 },
{ name => 'traceparent',
value => '00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01',
mode => 2 },
{ name => 'tracestate',
value => 'congo=ucfJifl5GOE,rojo=00f067aa0ba902b7', mode => 2 }]});
$frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
my $headers = $frame->{headers};
($frame) = grep { $_->{type} eq "DATA" } @$frames;
my $data = $frame->{data};
return $headers, $data;
}
sub http2_get_ssl {
my ($path) = @_;
my ($frames, $frame);
my $s = Test::Nginx::HTTP2->new(undef,
socket => get_ssl_socket(8082, ['h2']));
my $sid = $s->new_stream({ path => $path });
$frames = $s->read(all => [{ sid => $sid, fin => 1 }]); $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
($frame) = grep { $_->{type} eq "HEADERS" } @$frames; ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;

View file

@ -180,17 +180,18 @@ my ($t_headers_ignore, $tp_headers_ignore, $t_headers_extract,
$tp_headers_extract, $t_headers_inject, $tp_headers_inject, $tp_headers_extract, $t_headers_inject, $tp_headers_inject,
$t_headers_propagate, $tp_headers_propagate); $t_headers_propagate, $tp_headers_propagate);
my ($tp_headers, $tp_resp) = http2_get_traceparent('/trace-on'); my ($tp_headers, $tp_resp) = http2_get('/trace-on', trace_headers => 1);
my ($t_headers, $t_resp) = http2_get_ssl('/trace-on'); my ($t_headers, $t_resp) = http2_get('/trace-on', ssl => 1);
($t_headers_ignore, $_) = http2_get('/context-ignore'); ($t_headers_ignore, $_) = http2_get('/context-ignore');
($tp_headers_ignore, $_) = http2_get_traceparent('/context-ignore'); ($tp_headers_ignore, $_) = http2_get('/context-ignore', trace_headers => 1);
($t_headers_extract, $_) = http2_get('/context-extract'); ($t_headers_extract, $_) = http2_get('/context-extract');
($tp_headers_extract, $_) = http2_get_traceparent('/context-extract'); ($tp_headers_extract, $_) = http2_get('/context-extract', trace_headers => 1);
($t_headers_inject, $_) = http2_get('/context-inject'); ($t_headers_inject, $_) = http2_get('/context-inject');
($tp_headers_inject, $_) = http2_get_traceparent('/context-inject'); ($tp_headers_inject, $_) = http2_get('/context-inject', trace_headers => 1);
($t_headers_propagate, $_) = http2_get('/context-propagate'); ($t_headers_propagate, $_) = http2_get('/context-propagate');
($tp_headers_propagate, $_) = http2_get_traceparent('/context-propagate'); ($tp_headers_propagate, $_) =
http2_get('/context-propagate', trace_headers => 1);
#batch1 (5 reqeusts) #batch1 (5 reqeusts)
http2_get('/trace-on') for (1..5); http2_get('/trace-on') for (1..5);
@ -371,59 +372,31 @@ is($tp_headers_propagate->{'x-otel-tracestate'},
############################################################################### ###############################################################################
sub http2_get { sub http2_get {
my ($path) = @_; my ($path, %extra) = @_;
my ($frames, $frame); my ($frames, $frame);
my $s = Test::Nginx::HTTP2->new(); my $s = $extra{ssl}
? Test::Nginx::HTTP2->new(
undef, socket => get_ssl_socket(8082, ['h2']))
: Test::Nginx::HTTP2->new();
my $sid = $s->new_stream({ path => $path }); my $sid = $extra{trace_headers}
$frames = $s->read(all => [{ sid => $sid, fin => 1 }]); ? $s->new_stream({ headers => [
{ name => ':method', value => 'GET' },
($frame) = grep { $_->{type} eq "HEADERS" } @$frames; { name => ':scheme', value => 'http' },
my $headers = $frame->{headers}; { name => ':path', value => $path },
{ name => ':authority', value => 'localhost' },
($frame) = grep { $_->{type} eq "DATA" } @$frames; { name => 'user-agent', value => 'nginx-tests', mode => 2 },
my $data = $frame->{data}; { name => 'traceparent',
value => '00-0af7651916cd43dd8448eb211c80319c-' .
return $headers, $data; 'b9c7c989f97918e1-01',
} mode => 2
},
sub http2_get_traceparent { { name => 'tracestate',
my ($path) = @_; value => 'congo=ucfJifl5GOE,rojo=00f067aa0ba902b7',
my ($frames, $frame); mode => 2
}]})
my $s = Test::Nginx::HTTP2->new(); : $s->new_stream({ path => $path });
my $sid = $s->new_stream({ headers => [
{ name => ':method', value => 'GET' },
{ name => ':scheme', value => 'http' },
{ name => ':path', value => $path },
{ name => ':authority', value => 'localhost' },
{ name => 'user-agent', value => 'nginx-tests', mode => 2 },
{ name => 'traceparent',
value => '00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01',
mode => 2 },
{ name => 'tracestate',
value => 'congo=ucfJifl5GOE,rojo=00f067aa0ba902b7', mode => 2 }]});
$frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
my $headers = $frame->{headers};
($frame) = grep { $_->{type} eq "DATA" } @$frames;
my $data = $frame->{data};
return $headers, $data;
}
sub http2_get_ssl {
my ($path) = @_;
my ($frames, $frame);
my $s = Test::Nginx::HTTP2->new(undef,
socket => get_ssl_socket(8082, ['h2']));
my $sid = $s->new_stream({ path => $path });
$frames = $s->read(all => [{ sid => $sid, fin => 1 }]); $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
($frame) = grep { $_->{type} eq "HEADERS" } @$frames; ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;

View file

@ -165,20 +165,20 @@ my $p = port(4317);
my $f = grpc(); my $f = grpc();
#do requests #do requests
my $t_off_resp = http_get('/trace-off'); my $t_off_resp = http1_get('/trace-off');
#batch0 (10 requests) #batch0 (10 requests)
my $tp_resp = http_get_traceparent('/trace-on'); my $tp_resp = http1_get('/trace-on', trace_headers => 1);
my $t_resp = http_get_ssl('/trace-on'); my $t_resp = http1_get('/trace-on', ssl => 1);
my $t_resp_ignore = http_get('/context-ignore'); my $t_resp_ignore = http1_get('/context-ignore');
my $tp_resp_ignore = http_get_traceparent('/context-ignore'); my $tp_resp_ignore = http1_get('/context-ignore', trace_headers => 1);
my $t_resp_extract = http_get('/context-extract'); my $t_resp_extract = http1_get('/context-extract');
my $tp_resp_extract = http_get_traceparent('/context-extract'); my $tp_resp_extract = http1_get('/context-extract', trace_headers => 1);
my $t_resp_inject = http_get('/context-inject'); my $t_resp_inject = http1_get('/context-inject');
my $tp_resp_inject = http_get_traceparent('/context-inject'); my $tp_resp_inject = http1_get('/context-inject', trace_headers => 1);
my $t_resp_propagate = http_get('/context-propagate'); my $t_resp_propagate = http1_get('/context-propagate');
my $tp_resp_propagate = http_get_traceparent('/context-propagate'); my $tp_resp_propagate = http1_get('/context-propagate', trace_headers => 1);
my $frames = $f->{http_start}(); my $frames = $f->{http_start}();
my ($frame) = grep { $_->{type} eq "DATA" } @$frames; my ($frame) = grep { $_->{type} eq "DATA" } @$frames;
@ -187,7 +187,7 @@ my $batch0 = to_hash(decode_protobuf(substr($frame->{data}, 8)));
my $spans = $$batch0{scope_spans}; my $spans = $$batch0{scope_spans};
#batch1 (5 reqeusts) #batch1 (5 reqeusts)
http_get('/trace-on') for (1..5); http1_get('/trace-on') for (1..5);
$frames = $f->{http_start}(); $frames = $f->{http_start}();
($frame) = grep { $_->{type} eq "DATA" } @$frames; ($frame) = grep { $_->{type} eq "DATA" } @$frames;
@ -246,7 +246,7 @@ is(get_attr("http.scheme", "string_value", $$spans{span1}), 'https',
'http.scheme metric - trace on (https)'); 'http.scheme metric - trace on (https)');
is(get_attr("http.flavor", "string_value", $$spans{span1}), '1.0', is(get_attr("http.flavor", "string_value", $$spans{span1}), '1.0',
'http.flavor metric - trace on (https)'); 'http.flavor metric - trace on (https)');
isnt(get_attr("http.user_agent", "string_value", $$spans{span1}), is(get_attr("http.user_agent", "string_value", $$spans{span1}),
'nginx-tests', 'http.user_agent metric - trace on (https)'); 'nginx-tests', 'http.user_agent metric - trace on (https)');
is(get_attr("http.request_content_length", "int_value", $$spans{span1}), 0, is(get_attr("http.request_content_length", "int_value", $$spans{span1}), 0,
'http.request_content_length metric - trace on (https)'); 'http.request_content_length metric - trace on (https)');
@ -358,25 +358,23 @@ like($tp_resp_propagate,
############################################################################### ###############################################################################
sub http_get_traceparent { sub http1_get {
my ($path) = @_; my ($path, %extra) = @_;
return http(<<EOF); my $s = $extra{ssl} ? get_ssl_socket(8081) : undef;
my $r = <<EOF;
GET $path HTTP/1.0 GET $path HTTP/1.0
Host: localhost Host: localhost
User-agent: nginx-tests User-agent: nginx-tests
EOF
$r .= <<EOF if $extra{trace_headers};
Traceparent: 00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01 Traceparent: 00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01
Tracestate: congo=ucfJifl5GOE,rojo=00f067aa0ba902b7 Tracestate: congo=ucfJifl5GOE,rojo=00f067aa0ba902b7
EOF EOF
}
sub http_get_ssl { return http($r . "\n", socket => $s);
my ($path) = @_;
my $s = get_ssl_socket(8081) or return;
return http_get($path, socket => $s);
} }
sub get_ssl_socket { sub get_ssl_socket {

View file

@ -170,23 +170,23 @@ $t->try_run('no OTEL module')->plan(65);
############################################################################### ###############################################################################
#do requests #do requests
my $t_off_resp = http_get('/trace-off'); my $t_off_resp = http1_get('/trace-off');
#batch0 (10 requests) #batch0 (10 requests)
my $tp_resp = http_get_traceparent('/trace-on'); my $tp_resp = http1_get('/trace-on', trace_headers => 1);
my $t_resp = http_get_ssl('/trace-on'); my $t_resp = http1_get('/trace-on', ssl => 1);
my $t_resp_ignore = http_get('/context-ignore'); my $t_resp_ignore = http1_get('/context-ignore');
my $tp_resp_ignore = http_get_traceparent('/context-ignore'); my $tp_resp_ignore = http1_get('/context-ignore', trace_headers => 1);
my $t_resp_extract = http_get('/context-extract'); my $t_resp_extract = http1_get('/context-extract');
my $tp_resp_extract = http_get_traceparent('/context-extract'); my $tp_resp_extract = http1_get('/context-extract', trace_headers => 1);
my $t_resp_inject = http_get('/context-inject'); my $t_resp_inject = http1_get('/context-inject');
my $tp_resp_inject = http_get_traceparent('/context-inject'); my $tp_resp_inject = http1_get('/context-inject', trace_headers => 1);
my $t_resp_propagate = http_get('/context-propagate'); my $t_resp_propagate = http1_get('/context-propagate');
my $tp_resp_propagate = http_get_traceparent('/context-propagate'); my $tp_resp_propagate = http1_get('/context-propagate', trace_headers => 1);
#batch1 (5 reqeusts) #batch1 (5 reqeusts)
http_get('/trace-on') for (1..5); http1_get('/trace-on') for (1..5);
#waiting batch1 is sent to collector for 1s #waiting batch1 is sent to collector for 1s
select undef, undef, undef, 1; select undef, undef, undef, 1;
@ -263,7 +263,7 @@ is(get_attr("http.scheme", "stringValue", $$spans[1]), 'https',
'http.scheme metric - trace on (https)'); 'http.scheme metric - trace on (https)');
is(get_attr("http.flavor", "stringValue", $$spans[1]), '1.0', is(get_attr("http.flavor", "stringValue", $$spans[1]), '1.0',
'http.flavor metric - trace on (https)'); 'http.flavor metric - trace on (https)');
isnt(get_attr("http.user_agent", "stringValue", $$spans[1]), 'nginx-tests', is(get_attr("http.user_agent", "stringValue", $$spans[1]), 'nginx-tests',
'http.user_agent metric - trace on (https)'); 'http.user_agent metric - trace on (https)');
is(get_attr("http.request_content_length", "intValue", $$spans[1]), 0, is(get_attr("http.request_content_length", "intValue", $$spans[1]), 0,
'http.request_content_length metric - trace on (https)'); 'http.request_content_length metric - trace on (https)');
@ -362,25 +362,23 @@ like($tp_resp_propagate,
############################################################################### ###############################################################################
sub http_get_traceparent { sub http1_get {
my ($path) = @_; my ($path, %extra) = @_;
return http(<<EOF); my $s = $extra{ssl} ? get_ssl_socket(8081) : undef;
my $r = <<EOF;
GET $path HTTP/1.0 GET $path HTTP/1.0
Host: localhost Host: localhost
User-agent: nginx-tests User-agent: nginx-tests
EOF
$r .= <<EOF if $extra{trace_headers};
Traceparent: 00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01 Traceparent: 00-0af7651916cd43dd8448eb211c80319c-b9c7c989f97918e1-01
Tracestate: congo=ucfJifl5GOE,rojo=00f067aa0ba902b7 Tracestate: congo=ucfJifl5GOE,rojo=00f067aa0ba902b7
EOF EOF
}
sub http_get_ssl { return http($r . "\n", socket => $s);
my ($path) = @_;
my $s = get_ssl_socket(8081) or return;
return http_get($path, socket => $s);
} }
sub get_ssl_socket { sub get_ssl_socket {