aboutsummaryrefslogtreecommitdiffstats
path: root/agi/fastagi-test
blob: d3f13cf6b0ac14a203d4f078c43369c2372fed38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/perl
use strict;
use Socket;
use Carp;
use IO::Handle;

my $port = 4573;

$|=1;

# Setup some variables
my %AGI; my $tests = 0; my $fail = 0; my $pass = 0;

sub checkresult {
	my ($res) = @_;
	my $retval;
	$tests++;
	chomp $res;
	if ($res =~ /^200/) {
		$res =~ /result=(-?\d+)/;
		if (!length($1)) {
			print STDERR "FAIL ($res)\n";
			$fail++;
		} else {
			print STDERR "PASS ($1)\n";
			$pass++;
		}
	} else {
		print STDERR "FAIL (unexpected result '$res')\n";
		$fail++;
	}
}

socket(SERVER, PF_INET, SOCK_STREAM, 0);
setsockopt(SERVER, SOL_SOCKET, SO_REUSEADDR, pack("l", 1));
bind(SERVER, sockaddr_in($port, INADDR_ANY)) || die("can't bind\n");
listen(SERVER, SOMAXCONN);

for(;;) {
	my $raddr = accept(CLIENT, SERVER);
	my ($s, $p) = sockaddr_in($raddr);
	CLIENT->autoflush(1);
	while(<CLIENT>) {
		chomp;
		last unless length($_);
		if (/^agi_(\w+)\:\s+(.*)$/) {
			$AGI{$1} = $2;
		}
	}
	print STDERR "AGI Environment Dump from $s:$p --\n";
	foreach my $i (sort keys %AGI) {
		print STDERR " -- $i = $AGI{$i}\n";
	}

	print STDERR "1.  Testing 'sendfile'...";
	print CLIENT "STREAM FILE beep \"\"\n";
	my $result = <CLIENT>;
	&checkresult($result);

	print STDERR "2.  Testing 'sendtext'...";
	print CLIENT "SEND TEXT \"hello world\"\n";
	my $result = <CLIENT>;
	&checkresult($result);

	print STDERR "3.  Testing 'sendimage'...";
	print CLIENT "SEND IMAGE asterisk-image\n";
	my $result = <CLIENT>;
	&checkresult($result);

	print STDERR "4.  Testing 'saynumber'...";
	print CLIENT "SAY NUMBER 192837465 \"\"\n";
	my $result = <CLIENT>;
	&checkresult($result);

	print STDERR "5.  Testing 'waitdtmf'...";
	print CLIENT "WAIT FOR DIGIT 1000\n";
	my $result = <CLIENT>;
	&checkresult($result);

	print STDERR "6.  Testing 'record'...";
	print CLIENT "RECORD FILE testagi gsm 1234 3000\n";
	my $result = <CLIENT>;
	&checkresult($result);

	print STDERR "6a.  Testing 'record' playback...";
	print CLIENT "STREAM FILE testagi \"\"\n";
	my $result = <CLIENT>;
	&checkresult($result);
	close(CLIENT);
	print STDERR "================== Complete ======================\n";
	print STDERR "$tests tests completed, $pass passed, $fail failed\n";
	print STDERR "==================================================\n";
}