@@ -634,6 +634,54 @@ public void testRetryTimeout_notSupportedForWebSocket() {
634634 "not supported for WebSocket" );
635635 }
636636
637+ @ Test
638+ public void testStoreAndForwardMaxSegmentBytes () {
639+ Sender .LineSenderBuilder builder = Sender .builder (Sender .Transport .WEBSOCKET );
640+
641+ Assert .assertSame (builder , builder .storeAndForwardMaxSegmentBytes (64 * 1024L ));
642+ Assert .assertEquals (
643+ 64 * 1024L ,
644+ ((Number ) builder .wsConfigSnapshotForTest ().get ("sf_max_segment_bytes" )).longValue ()
645+ );
646+ }
647+
648+ @ Test
649+ public void testStoreAndForwardMaxSegmentBytesRejectsNonPositiveValues () {
650+ long [] rejected = {0L , -1L };
651+ for (long value : rejected ) {
652+ try {
653+ Sender .builder (Sender .Transport .WEBSOCKET )
654+ .storeAndForwardMaxSegmentBytes (value );
655+ Assert .fail ("expected storeAndForwardMaxSegmentBytes(" + value + ") to fail" );
656+ } catch (LineSenderException expected ) {
657+ Assert .assertEquals (
658+ "sf_max_segment_bytes must be positive: " + value ,
659+ expected .getMessage ()
660+ );
661+ }
662+ }
663+ }
664+
665+ @ Test
666+ public void testStoreAndForwardMaxSegmentBytesRejectedForNonWebSocketTransports () {
667+ Sender .Transport [] rejected = {
668+ Sender .Transport .HTTP ,
669+ Sender .Transport .TCP ,
670+ Sender .Transport .UDP
671+ };
672+ for (Sender .Transport transport : rejected ) {
673+ try {
674+ Sender .builder (transport ).storeAndForwardMaxSegmentBytes (64 * 1024L );
675+ Assert .fail ("expected " + transport + " to reject storeAndForwardMaxSegmentBytes" );
676+ } catch (LineSenderException expected ) {
677+ Assert .assertEquals (
678+ "store_and_forward is only supported for WebSocket transport" ,
679+ expected .getMessage ()
680+ );
681+ }
682+ }
683+ }
684+
637685 @ Test
638686 public void testSyncModeAutoFlushDefaults () throws Exception {
639687 // Regression test: connect() must not hardcode autoFlush to 0.
0 commit comments