annotate mp4_ssi.t @ 1248:70192b1baf01

Tests: added exception test to stream_js.t using 'require'. The stream js tests introduced in edf5a3c9e36a fail on njs 0.1.14. It doesn't currently provide an easy way to check its version, whilst we are obligated to gracefully handle such cases somehow. With such an addition of 'require', now the tests are skipped instead on the previous versions.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 21 Nov 2017 13:16:39 +0300
parents 1e41a0de0772
children 673c3e12214e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1056
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
1 #!/usr/bin/perl
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
2
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
3 # (C) Sergey Kandaurov
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
4 # (C) Nginx, Inc.
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
5
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
6 # Test for mp4 module in subrequests.
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
7
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
8 ###############################################################################
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
9
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
10 use warnings;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
11 use strict;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
12
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
13 use Test::More;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
14
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
15 use Config;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
16
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
17 BEGIN { use FindBin; chdir($FindBin::Bin); }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
18
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
19 use lib 'lib';
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
20 use Test::Nginx;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
21
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
22 ###############################################################################
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
23
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
24 select STDERR; $| = 1;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
25 select STDOUT; $| = 1;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
26
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
27 my $t = Test::Nginx->new()->has(qw/http mp4 ssi/)->has_daemon('ffprobe')
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 ->has_daemon('ffmpeg')->write_file_expand('nginx.conf', <<'EOF');
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
29
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
30 %%TEST_GLOBALS%%
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
31
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
32 daemon off;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
33
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
34 events {
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
35 }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
36
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
37 http {
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
38 %%TEST_GLOBALS_HTTP%%
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
39
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
40 server {
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
41 listen 127.0.0.1:8080;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
42 server_name localhost;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
44 location / {
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
45 ssi on;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
46 }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
47 location /ssi {
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
48 mp4;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
49 }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
50 }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
51 }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
53 EOF
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
54
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
55 plan(skip_all => 'no lavfi')
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
56 unless grep /lavfi/, `ffmpeg -loglevel quiet -formats`;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 system('ffmpeg -loglevel quiet -y '
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
58 . '-f lavfi -i testsrc=duration=10:size=320x200:rate=15 '
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
59 . '-f lavfi -i testsrc=duration=20:size=320x200:rate=15 '
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
60 . '-map 0:0 -map 1:0 -pix_fmt yuv420p -g 15 -c:v libx264 '
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
61 . "${\($t->testdir())}/ssi.mp4") == 0
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
62 or die "Can't create mp4 file: $!";
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
64 $t->write_file('index.html', 'X<!--#include virtual="/ssi.mp4?end=1" -->X');
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
65
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 $t->run()->plan(1);
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
67
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
68 ###############################################################################
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
69
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
70 TODO: {
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
71 local $TODO = 'not yet' unless $t->has_version('1.11.5');
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
72
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
73 (my $r = get('/')) =~ s/([^\x20-\x7e])/sprintf('\\x%02x', ord($1))/gmxe;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
74 unlike($r, qr/\\x0d(\\x0a)?0\\x0d(\\x0a)?\\x0d(\\x0a)?\w/, 'only final chunk');
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
75
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
77
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
78 ###############################################################################
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
79
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
80 sub get {
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
81 my ($url, $extra) = @_;
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
82 return http(<<EOF);
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
83 GET $url HTTP/1.1
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
84 Host: localhost
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
85 Connection: close
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
86
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
87 EOF
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
88 }
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
89
1e41a0de0772 Tests: various last_buf tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
90 ###############################################################################