4
die "The PERCONA_TOOLKIT_BRANCH environment variable is not set.\n"
5
unless $ENV{PERCONA_TOOLKIT_BRANCH} && -d $ENV{PERCONA_TOOLKIT_BRANCH};
6
unshift @INC, "$ENV{PERCONA_TOOLKIT_BRANCH}/lib";
10
use warnings FATAL => 'all';
11
use English qw(-no_match_vars);
14
use File::Temp qw(tempdir);
17
use Percona::Test::Mock::UserAgent;
18
use Percona::Test::Mock::AgentLogger;
19
require "$trunk/bin/pt-agent";
21
Percona::Toolkit->import(qw(Dumper have_required_args));
22
Percona::WebAPI::Representation->import(qw(as_hashref));
25
my $logger = Percona::Test::Mock::AgentLogger->new(log => \@log);
26
pt_agent::_logger($logger);
28
my $sample = "t/pt-agent/samples";
30
# #############################################################################
31
# Create mock client and Agent
32
# #############################################################################
34
# These aren't the real tests yet: to run_agent(), first we need
35
# a client and Agent, so create mock ones.
37
my $json = JSON->new->canonical([1])->pretty;
38
$json->allow_blessed([]);
39
$json->convert_blessed([]);
41
my $ua = Percona::Test::Mock::UserAgent->new(
42
encode => sub { my $c = shift; return $json->encode($c || {}) },
45
# Create cilent, get entry links
48
config => '/agents/1/config',
49
services => '/agents/1/services',
50
'query-history' => '/query-history',
53
$ua->{responses}->{get} = [
60
Percona::WebAPI::Client->new(
71
my $agent = Percona::WebAPI::Resource::Agent->new(
86
# #############################################################################
88
# #############################################################################
90
my $tmpdir = tempdir("/tmp/pt-agent.$PID.XXXXXX", CLEANUP => 1);
91
pt_agent::init_lib_dir(
95
pt_agent::init_spool_dir(
97
service => 'query-history',
101
`cp $trunk/$sample/query-history/data001.json $tmpdir/query-history/1.data001.data`;
102
`cp $trunk/$sample/service001 $tmpdir/services/query-history`;
104
$ua->{responses}->{get} = [
106
headers => { 'X-Percona-Resource-Type' => 'Agent' },
107
content => as_hashref($agent, with_links => 1),
111
$ua->{responses}->{post} = [
121
service => 'query-history',
123
spool_dir => $tmpdir,
124
# optional, for testing:
126
entry_links => $links,
128
log_file => "$tmpdir/log",
135
scalar @{$client->ua->{content}->{post}},
137
"Only sent 1 resource"
140
Dumper($client->ua->{content}->{post}),
141
`cat $tmpdir/logs/query-history.send`
148
'POST /query-history/data',
150
"POST to Service.links.data"
155
$client->ua->{content}->{post}->[0] || '',
156
"$sample/query-history/data001.send",
159
"Sent data file as multi-part resource (query-history/data001)"
160
) or diag(Dumper($client->ua->{content}->{post}));
163
!-f "$tmpdir/query-history/1.data001.data",
164
"Removed data file after sending successfully"
168
$ua->{request_objs}->[-1]->header('content-type'),
169
'multipart/form-data; boundary=Ym91bmRhcnk',
170
'Content-Type=multipart/form-data; boundary=Ym91bmRhcnk'
171
) or diag(Dumper($ua));
173
# #############################################################################
175
# #############################################################################