@@ -12,6 +12,7 @@ This directory contains modules used to test the Node.js implementation.
12
12
* [ Fixtures module] ( #fixtures-module )
13
13
* [ Internet module] ( #internet-module )
14
14
* [ WPT module] ( #wpt-module )
15
+ * [ HTTP2 module] ( #http2-module )
15
16
16
17
## Benchmark Module
17
18
@@ -565,6 +566,143 @@ Node.js
565
566
implementation with tests from
566
567
[ W3C Web Platform Tests] ( https://github.com/w3c/web-platform-tests ) .
567
568
569
+ ## HTTP/2 Module
570
+
571
+ The http2.js module provides a handful of utilities for creating mock HTTP/2
572
+ frames for testing of HTTP/2 endpoints
573
+
574
+ <!-- eslint-disable strict -->
575
+ <!-- eslint-disable required-modules -->
576
+ <!-- eslint-disable no-unused-vars -->
577
+ <!-- eslint-disable no-undef -->
578
+ ``` js
579
+ const http2 = require (' ../common/http2' );
580
+ ```
581
+
582
+ ### Class: Frame
583
+
584
+ The ` http2.Frame ` is a base class that creates a ` Buffer ` containing a
585
+ serialized HTTP/2 frame header.
586
+
587
+ <!-- eslint-disable strict -->
588
+ <!-- eslint-disable required-modules -->
589
+ <!-- eslint-disable no-unused-vars -->
590
+ <!-- eslint-disable no-undef -->
591
+ ``` js
592
+ // length is a 24-bit unsigned integer
593
+ // type is an 8-bit unsigned integer identifying the frame type
594
+ // flags is an 8-bit unsigned integer containing the flag bits
595
+ // id is the 32-bit stream identifier, if any.
596
+ const frame = new http2.Frame (length, type, flags, id);
597
+
598
+ // Write the frame data to a socket
599
+ socket .write (frame .data );
600
+ ```
601
+
602
+ The serialized ` Buffer ` may be retrieved using the ` frame.data ` property.
603
+
604
+ ### Class: DataFrame extends Frame
605
+
606
+ The ` http2.DataFrame ` is a subclass of ` http2.Frame ` that serializes a ` DATA `
607
+ frame.
608
+
609
+ <!-- eslint-disable strict -->
610
+ <!-- eslint-disable required-modules -->
611
+ <!-- eslint-disable no-unused-vars -->
612
+ <!-- eslint-disable no-undef -->
613
+ ``` js
614
+ // id is the 32-bit stream identifier
615
+ // payload is a Buffer containing the DATA payload
616
+ // padlen is an 8-bit integer giving the number of padding bytes to include
617
+ // final is a boolean indicating whether the End-of-stream flag should be set,
618
+ // defaults to false.
619
+ const data = new http2.DataFrame (id, payload, padlen, final);
620
+
621
+ socket .write (frame .data );
622
+ ```
623
+
624
+ ### Class: HeadersFrame
625
+
626
+ The ` http2.HeadersFrame ` is a subclass of ` http2.Frame ` that serializes a
627
+ ` HEADERS ` frame.
628
+
629
+ <!-- eslint-disable strict -->
630
+ <!-- eslint-disable required-modules -->
631
+ <!-- eslint-disable no-unused-vars -->
632
+ <!-- eslint-disable no-undef -->
633
+ ``` js
634
+ // id is the 32-bit stream identifier
635
+ // payload is a Buffer containing the HEADERS payload (see either
636
+ // http2.kFakeRequestHeaders or http2.kFakeResponseHeaders).
637
+ // padlen is an 8-bit integer giving the number of padding bytes to include
638
+ // final is a boolean indicating whether the End-of-stream flag should be set,
639
+ // defaults to false.
640
+ const data = new http2.HeadersFrame (id, http2 .kFakeRequestHeaders ,
641
+ padlen, final);
642
+
643
+ socket .write (frame .data );
644
+ ```
645
+
646
+ ### Class: SettingsFrame
647
+
648
+ The ` http2.SettingsFrame ` is a subclass of ` http2.Frame ` that serializes an
649
+ empty ` SETTINGS ` frame.
650
+
651
+ <!-- eslint-disable strict -->
652
+ <!-- eslint-disable required-modules -->
653
+ <!-- eslint-disable no-unused-vars -->
654
+ <!-- eslint-disable no-undef -->
655
+ ``` js
656
+ // ack is a boolean indicating whether or not to set the ACK flag.
657
+ const frame = new http2.SettingsFrame (ack);
658
+
659
+ socket .write (frame .data );
660
+ ```
661
+
662
+ ### http2.kFakeRequestHeaders
663
+
664
+ Set to a ` Buffer ` instance that contains a minimal set of serialized HTTP/2
665
+ request headers to be used as the payload of a ` http2.HeadersFrame ` .
666
+
667
+ <!-- eslint-disable strict -->
668
+ <!-- eslint-disable required-modules -->
669
+ <!-- eslint-disable no-unused-vars -->
670
+ <!-- eslint-disable no-undef -->
671
+ ``` js
672
+ const frame = new http2.HeadersFrame (1 , http2 .kFakeRequestHeaders , 0 , true );
673
+
674
+ socket .write (frame .data );
675
+ ```
676
+
677
+ ### http2.kFakeResponseHeaders
678
+
679
+ Set to a ` Buffer ` instance that contains a minimal set of serialized HTTP/2
680
+ response headers to be used as the payload a ` http2.HeadersFrame ` .
681
+
682
+ <!-- eslint-disable strict -->
683
+ <!-- eslint-disable required-modules -->
684
+ <!-- eslint-disable no-unused-vars -->
685
+ <!-- eslint-disable no-undef -->
686
+ ``` js
687
+ const frame = new http2.HeadersFrame (1 , http2 .kFakeResponseHeaders , 0 , true );
688
+
689
+ socket .write (frame .data );
690
+ ```
691
+
692
+ ### http2.kClientMagic
693
+
694
+ Set to a ` Buffer ` containing the preamble bytes an HTTP/2 client must send
695
+ upon initial establishment of a connection.
696
+
697
+ <!-- eslint-disable strict -->
698
+ <!-- eslint-disable required-modules -->
699
+ <!-- eslint-disable no-unused-vars -->
700
+ <!-- eslint-disable no-undef -->
701
+ ``` js
702
+ socket .write (http2 .kClientMagic );
703
+ ```
704
+
705
+
568
706
[ < ; Array>] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
569
707
[ < ; ArrayBufferView[ ;] ; >] : https://developer.mozilla.org/en-US/docs/Web/API/ArrayBufferView
570
708
[ < ; Boolean>] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type
0 commit comments