Browse Source

MT#55283 tests: add support for NG over HTTP

Change-Id: Ic0736e7e0ea5ddc7fc30a82ca715ecbc0f3e7751
pull/1938/head
Richard Fuchs 7 months ago
parent
commit
fb99f31818
2 changed files with 19 additions and 5 deletions
  1. +1
    -0
      debian/control
  2. +18
    -5
      perl/NGCP/Rtpengine.pm

+ 1
- 0
debian/control View File

@ -47,6 +47,7 @@ Build-Depends:
libtest2-suite-perl,
liburing-dev (>= 2.3) <!pkg.ngcp-rtpengine.nouring>,
libwebsockets-dev,
libwww-perl,
libxtables-dev (>= 1.4) | iptables-dev (>= 1.4),
ngcp-libcodec-chain-dev (>= 13.3) <pkg.ngcp-rtpengine.codec-chain>,
pandoc,


+ 18
- 5
perl/NGCP/Rtpengine.pm View File

@ -9,6 +9,7 @@ use IO::Socket::IP;
use Bencode;
use Data::Dumper;
use JSON;
use LWP::UserAgent;
our $req_cb;
@ -23,6 +24,9 @@ sub new {
if (ref($addr)) {
$self->{socket} = $addr;
}
elsif ($addr =~ /^http/) {
$self->{uri} = $addr;
}
else {
$self->{socket} = IO::Socket::IP->new(Type => &SOCK_DGRAM, Proto => 'udp',
PeerHost => $addr, PeerPort => $port);
@ -36,12 +40,21 @@ sub req {
my $cookie = rand() . ' ';
my $p = $cookie . ($self->{json} ? encode_json($packet) : Bencode::bencode($packet));
$self->{socket}->send($p, 0) or die $!;
if ($req_cb) {
$req_cb->();
}
my $ret;
$self->{socket}->recv($ret, 65535) or die $!;
if ($self->{uri}) {
my $ua = LWP::UserAgent->new();
my $resp = $ua->post($self->{uri},
'Content-type' => "application/x-rtpengine-ng",
Content => $p);
$ret = $resp->decoded_content;
}
else {
$self->{socket}->send($p, 0) or die $!;
if ($req_cb) {
$req_cb->();
}
$self->{socket}->recv($ret, 65535) or die $!;
}
$ret =~ s/^\Q$cookie\E//s or die $ret;
my $resp = $self->{json} ? decode_json($ret) : Bencode::bdecode($ret, 1);


Loading…
Cancel
Save