comparison range_flv.t @ 148:b714d6df958c

Tests: rename some tests for better sorting. Use underscore instead of dash. Addtionally, rename some tests to better match "module" + "details" scheme used: use "http_" prefix for http core module tests, use "mail_" prefix for mail module tests.
author Maxim Dounin <mdounin@mdounin.ru>
date Fri, 04 Mar 2011 16:07:15 +0300
parents range-flv.t@8ac1faaddd2c
children c0ae29632905
comparison
equal deleted inserted replaced
147:fd865ada95c8 148:b714d6df958c
1 #!/usr/bin/perl
2
3 # (C) Maxim Dounin
4
5 # Tests for range filter module.
6
7 ###############################################################################
8
9 use warnings;
10 use strict;
11
12 use Test::More;
13
14 BEGIN { use FindBin; chdir($FindBin::Bin); }
15
16 use lib 'lib';
17 use Test::Nginx;
18
19 ###############################################################################
20
21 select STDERR; $| = 1;
22 select STDOUT; $| = 1;
23
24 my $t = Test::Nginx->new()->has(qw/http flv/)->plan(12);
25
26 $t->write_file_expand('nginx.conf', <<'EOF');
27
28 %%TEST_GLOBALS%%
29
30 master_process off;
31 daemon off;
32
33 events {
34 }
35
36 http {
37 %%TEST_GLOBALS_HTTP%%
38
39 server {
40 listen 127.0.0.1:8080;
41 server_name localhost;
42 location / {
43 flv;
44 }
45 }
46 }
47
48 EOF
49
50 $t->write_file('t1.flv',
51 join('', map { sprintf "X%03dXXXXXX", $_ } (0 .. 99)));
52 $t->run();
53
54 ###############################################################################
55
56 my $t1;
57
58 # FLV has 13 byte header at start.
59
60 $t1 = http_get_range('/t1.flv?start=100', 'Range: bytes=0-9');
61 like($t1, qr/206/, 'first bytes - 206 partial reply');
62 like($t1, qr/Content-Length: 10/, 'first bytes - correct length');
63 like($t1, qr/Content-Range: bytes 0-9\/913/, 'first bytes - content range');
64 like($t1, qr/^FLV.{7}$/m, 'first bytes - correct content');
65
66 $t1 = http_get_range('/t1.flv?start=100', 'Range: bytes=-10');
67 like($t1, qr/206/, 'final bytes - 206 partial reply');
68 like($t1, qr/Content-Length: 10/, 'final bytes - content length');
69 like($t1, qr/Content-Range: bytes 903-912\/913/,
70 'final bytes - content range');
71 like($t1, qr/^X099XXXXXX$/m, 'final bytes - correct content');
72
73 $t1 = http_get_range('/t1.flv?start=100', 'Range: bytes=0-99');
74 like($t1, qr/206/, 'multi buffers - 206 partial reply');
75 like($t1, qr/Content-Length: 100/, 'multi buffers - content length');
76 like($t1, qr/Content-Range: bytes 0-99\/913/, 'multi buffers - content range');
77 like($t1, qr/^FLV.{10}X010XXXXXX(X01[1-7]XXXXXX){7}X018XXX$/m,
78 'multi buffers - correct content');
79
80 ###############################################################################
81
82 sub http_get_range {
83 my ($url, $extra) = @_;
84 return http(<<EOF);
85 GET $url HTTP/1.1
86 Host: localhost
87 Connection: close
88 $extra
89
90 EOF
91 }
92
93 ###############################################################################