Mercurial > hg > nginx-tests
comparison spdy.t @ 529:42810c40ebb8
Tests: removed races from SPDY tests with consecutive streams.
Some tests expect that such streams are processed in sequence. Ensure
that the first stream is processed before creating a subsequent stream.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 04 Mar 2015 16:53:10 +0300 |
parents | 071e8941e3bf |
children | 907e89fba9c3 |
comparison
equal
deleted
inserted
replaced
528:625cbbfd66b3 | 529:42810c40ebb8 |
---|---|
499 | 499 |
500 # stream muliplexing + priority | 500 # stream muliplexing + priority |
501 | 501 |
502 $sess = new_session(); | 502 $sess = new_session(); |
503 $sid1 = spdy_stream($sess, { path => '/t1.html', prio => 7 }); | 503 $sid1 = spdy_stream($sess, { path => '/t1.html', prio => 7 }); |
504 spdy_read($sess, all => [{ sid => $sid1, length => 2**16 }]); | |
505 | |
504 $sid2 = spdy_stream($sess, { path => '/t2.html', prio => 0 }); | 506 $sid2 = spdy_stream($sess, { path => '/t2.html', prio => 0 }); |
505 spdy_read($sess, all => [ | 507 spdy_read($sess, all => [{ sid => $sid2, fin => 0 }]); |
506 { sid => $sid1, length => 2**16 }, | |
507 { sid => $sid2, fin => 0 } | |
508 ]); | |
509 | 508 |
510 spdy_window($sess, 2**17, $sid1); | 509 spdy_window($sess, 2**17, $sid1); |
511 spdy_window($sess, 2**17, $sid2); | 510 spdy_window($sess, 2**17, $sid2); |
512 spdy_window($sess, 2**17); | 511 spdy_window($sess, 2**17); |
513 | 512 |
521 | 520 |
522 # and vice versa | 521 # and vice versa |
523 | 522 |
524 $sess = new_session(); | 523 $sess = new_session(); |
525 $sid1 = spdy_stream($sess, { path => '/t1.html', prio => 0 }); | 524 $sid1 = spdy_stream($sess, { path => '/t1.html', prio => 0 }); |
525 spdy_read($sess, all => [{ sid => $sid1, length => 2**16 }]); | |
526 | |
526 $sid2 = spdy_stream($sess, { path => '/t2.html', prio => 7 }); | 527 $sid2 = spdy_stream($sess, { path => '/t2.html', prio => 7 }); |
527 spdy_read($sess, all => [ | 528 spdy_read($sess, all => [{ sid => $sid2, fin => 0 }]); |
528 { sid => $sid1, length => 2**16 }, | |
529 { sid => $sid2, fin => 0 } | |
530 ]); | |
531 | 529 |
532 spdy_window($sess, 2**17, $sid1); | 530 spdy_window($sess, 2**17, $sid1); |
533 spdy_window($sess, 2**17, $sid2); | 531 spdy_window($sess, 2**17, $sid2); |
534 spdy_window($sess, 2**17); | 532 spdy_window($sess, 2**17); |
535 | 533 |
543 | 541 |
544 # limit_conn | 542 # limit_conn |
545 | 543 |
546 $sess = new_session(); | 544 $sess = new_session(); |
547 spdy_settings($sess, 7 => 1); | 545 spdy_settings($sess, 7 => 1); |
546 | |
548 $sid1 = spdy_stream($sess, { path => '/t3.html' }); | 547 $sid1 = spdy_stream($sess, { path => '/t3.html' }); |
549 $sid2 = spdy_stream($sess, { path => '/t3.html' }); | 548 $frames = spdy_read($sess, all => [{ sid => $sid1, fin => 0 }]); |
550 $frames = spdy_read($sess, all => [ | |
551 { sid => $sid1, fin => 0 }, | |
552 { sid => $sid2, fin => 0 } | |
553 ]); | |
554 | 549 |
555 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid1 } @$frames; | 550 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid1 } @$frames; |
556 is($frame->{headers}->{':status'}, 200, 'conn_limit 1'); | 551 is($frame->{headers}->{':status'}, 200, 'conn_limit 1'); |
552 | |
553 $sid2 = spdy_stream($sess, { path => '/t3.html' }); | |
554 $frames = spdy_read($sess, all => [{ sid => $sid2, fin => 0 }]); | |
557 | 555 |
558 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid2 } @$frames; | 556 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid2 } @$frames; |
559 is($frame->{headers}->{':status'}, 503, 'conn_limit 2'); | 557 is($frame->{headers}->{':status'}, 503, 'conn_limit 2'); |
560 | 558 |
561 spdy_settings($sess, 7 => 2**16); | 559 spdy_settings($sess, 7 => 2**16); |
567 | 565 |
568 # limit_conn + client's RST_STREAM | 566 # limit_conn + client's RST_STREAM |
569 | 567 |
570 $sess = new_session(); | 568 $sess = new_session(); |
571 spdy_settings($sess, 7 => 1); | 569 spdy_settings($sess, 7 => 1); |
570 | |
572 $sid1 = spdy_stream($sess, { path => '/t3.html' }); | 571 $sid1 = spdy_stream($sess, { path => '/t3.html' }); |
572 $frames = spdy_read($sess, all => [{ sid => $sid1, fin => 0 }]); | |
573 spdy_rst($sess, $sid1, 5); | 573 spdy_rst($sess, $sid1, 5); |
574 $sid2 = spdy_stream($sess, { path => '/t3.html' }); | |
575 $frames = spdy_read($sess, all => [ | |
576 { sid => $sid1, fin => 0 }, | |
577 { sid => $sid2, fin => 0 } | |
578 ]); | |
579 | 574 |
580 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid1 } @$frames; | 575 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid1 } @$frames; |
581 is($frame->{headers}->{':status'}, 200, 'RST_STREAM 1'); | 576 is($frame->{headers}->{':status'}, 200, 'RST_STREAM 1'); |
577 | |
578 $sid2 = spdy_stream($sess, { path => '/t3.html' }); | |
579 $frames = spdy_read($sess, all => [{ sid => $sid2, fin => 0 }]); | |
582 | 580 |
583 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid2 } @$frames; | 581 ($frame) = grep { $_->{type} eq "SYN_REPLY" && $_->{sid} == $sid2 } @$frames; |
584 is($frame->{headers}->{':status'}, 200, 'RST_STREAM 2'); | 582 is($frame->{headers}->{':status'}, 200, 'RST_STREAM 2'); |
585 | 583 |
586 # GOAWAY on SYN_STREAM with even StreamID | 584 # GOAWAY on SYN_STREAM with even StreamID |