/
bench.pl
executable file
·60 lines (51 loc) · 2.48 KB
/
bench.pl
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
#!/bin/env perl
use strict;
use warnings;
use Furl;
use Time::HiRes qw/gettimeofday tv_interval/;
my $target_ip = shift;
if (! $target_ip || ($target_ip !~ m![0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}!)) {
die "usage: $0 {IRKit ip address, ex:10.0.1.9} {number-of-requests}";
}
my $base = "http://${target_ip}";
my $number_of_requests = shift;
if (! $number_of_requests) {
die "usage: $0 {IRKit ip address, ex:10.0.1.9} {number-of-requests}";
}
my $agent = Furl->new(
agent => 'Bench/1.0',
timeout => 20,
headers => [
'X-Requested-With' => 'Furl',
],
);
my $get_message = sub {
print "GET /messages\n";
return $agent->get( "$base/messages" );
};
my $post_message = sub {
# エアコンオン
print "POST /messages\n";
return $agent->post( "$base/messages", [],
'message={"freq":38,"format":"raw","data":[6573,3257,867,824,866,825,865,2463,866,826,864,2462,867,825,864,827,863,828,863,2464,866,2462,867,826,864,826,865,826,864,2463,866,2461,868,825,865,826,864,827,864,826,865,826,864,826,865,826,864,826,865,825,866,826,864,826,865,826,864,827,864,2462,867,826,864,826,865,826,864,827,864,827,864,826,864,826,865,2461,868,825,865,826,865,826,864,827,864,2462,867,2461,867,2461,868,2461,867,2461,868,2461,867,2461,868,2461,867,826,864,826,865,2461,866,826,864,827,864,828,863,827,864,826,865,826,865,825,865,826,865,2462,867,2462,866,825,865,826,865,2462,867,825,865,826,865,825,865,826,865,2461,868,825,865,2462,867,2462,867,825,865,826,864,827,864,825,865,826,865,826,865,825,865,826,865,826,864,827,864,826,865,826,864,826,865,2462,867,825,865,827,864,825,864,827,863,827,863,829,863,827,864,827,864,826,865,826,864,826,865,826,865,825,865,827,864,827,864,826,864,827,864,826,864,826,865,826,865,826,864,826,865,826,864,827,864,827,864,826,864,827,864,826,865,2462,867,825,865,2462,867,825,865,826,864,826,865,2463,866,2461,867,826,865,825,865,827,864,2462,867,2461,867]}',
);
};
my $post_keys = sub {
print "POST /keys\n";
return $agent->post( "$base/keys", [], [] );
};
my @requests = (
$get_message,
$post_message,
# $post_keys
);
for my $i (1..$number_of_requests) {
print "[$i] ";
my $time = [gettimeofday];
my $res = $requests[ int(rand scalar @requests) ]();
die $res->status_line unless $res->is_success;
printf( " %d %s\n", $res->code, $res->body );
# $requests[ 2 ]();
my $elapsed = tv_interval( $time, [gettimeofday] );
printf( " %.2f[s]\n", $elapsed );
}