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