#!/usr/bin/perl 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; my $capture = 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"; $capture = $1; print STDERR "capture is $capture"; $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); $child = fork(); if ( ! $child ) { CLIENT->autoflush(1); while() { 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 CLIENT "GET DATA /demo-congrats \"\"\n"; my $result = ; print STDERR "result is $result"; &checkresult($result); if($capture==1){ print STDERR "Going to ask to play tt-monkeys"; print CLIENT "GET DATA tt-monkeys \"\"\n"; my $result = ; &checkresult($result); } elsif($capture==2){ print STDERR "Going to ask to play demo-congrats"; print CLIENT "GET DATA demo-instruct \"\"\n"; my $result = ; &checkresult($result); } else{ print STDERR "In else condition"; } print STDERR "================== Complete ======================\n"; print STDERR "$tests tests completed, $pass passed, $fail failed\n"; print STDERR "==================================================\n"; close(CLIENT); exit(); #kill (9, $child); } close(SERVER); }