1
1
package org .jboss .resteasy .test .providers .sse ;
2
2
3
+ import java .nio .file .Files ;
4
+ import java .nio .file .Paths ;
3
5
import java .util .ArrayList ;
4
6
import java .util .Arrays ;
5
7
import java .util .List ;
8
+ import java .util .Map ;
6
9
import java .util .SortedSet ;
7
10
import java .util .TreeSet ;
8
11
import java .util .concurrent .CountDownLatch ;
40
43
import org .junit .Test ;
41
44
import org .junit .runner .RunWith ;
42
45
46
+ import com .fasterxml .jackson .databind .ObjectMapper ;
47
+
43
48
@ RunWith (Arquillian .class )
44
49
@ RunAsClient
45
50
public class SseTest
@@ -52,14 +57,16 @@ public static Archive<?> deploy()
52
57
{
53
58
WebArchive war = TestUtil .prepareArchive (SseTest .class .getSimpleName ());
54
59
war .addClass (SseTest .class );
60
+ war .addAsResource ("org/jboss/resteasy/test/providers/sse/bigmsg.json" , "org/jboss/resteasy/test/providers/sse/bigmsg.json" );
55
61
war .addAsWebInfResource ("org/jboss/resteasy/test/providers/sse/web.xml" , "web.xml" );
56
62
war .addAsWebResource ("org/jboss/resteasy/test/providers/sse/index.html" , "index.html" );
57
63
war .addAsManifestResource (EmptyAsset .INSTANCE , "beans.xml" );
58
64
war .addAsManifestResource (PermissionUtil .createPermissionsXmlAsset (
59
65
new RuntimePermission ("modifyThread" )
60
66
), "permissions.xml" );
61
67
return TestUtil .finishContainerPrepare (war , null , SseApplication .class , GreenHouse .class , SseResource .class ,
62
- AnotherSseResource .class , EscapingSseResource .class , ExecutorServletContextListener .class );
68
+ AnotherSseResource .class , EscapingSseResource .class , ExecutorServletContextListener .class );
69
+
63
70
}
64
71
65
72
private String generateURL (String path )
@@ -559,7 +566,45 @@ public void testNoContent() throws Exception
559
566
Assert .assertTrue ("error is not expected" , errors .get () == 0 );
560
567
client .close ();
561
568
}
562
-
569
+ //Test for RESTEASY-2689 which is reported in quarkus: https://github.com/quarkusio/quarkus/issues/11824
570
+ @ Test
571
+ @ InSequence (14 )
572
+ public void testBigMessage () throws Exception
573
+ {
574
+ final CountDownLatch latch = new CountDownLatch (1 );
575
+ final AtomicInteger errors = new AtomicInteger (0 );
576
+ final List <String > results = new ArrayList <String >();
577
+ Client client = ClientBuilder .newBuilder ().build ();
578
+ WebTarget target = client .target (generateURL ("/service/server-sent-events/bigmsg" ));
579
+ SseEventSource msgEventSource = SseEventSource .target (target ).build ();
580
+ try (SseEventSource eventSource = msgEventSource )
581
+ {
582
+ Assert .assertEquals (SseEventSourceImpl .class , eventSource .getClass ());
583
+ eventSource .register (event -> {
584
+ results .add (event .readData ());
585
+ latch .countDown ();
586
+ }, ex -> {
587
+ errors .incrementAndGet ();
588
+ logger .error (ex .getMessage (), ex );
589
+ throw new RuntimeException (ex );
590
+ }) ;
591
+ eventSource .open ();
592
+ boolean waitResult = latch .await (30 , TimeUnit .SECONDS );
593
+ Assert .assertEquals (0 , errors .get ());
594
+ Assert .assertTrue ("Waiting for event to be delivered has timed out." , waitResult );
595
+ }
596
+ Assert .assertFalse ("SseEventSource is not closed" , msgEventSource .isOpen ());
597
+ Assert .assertTrue ("1 messages are expected, but is : " + results .size (), results .size () == 1 );
598
+ java .nio .file .Path filepath = Paths .get (SseTest .class .getResource ("bigmsg.json" ).toURI ());
599
+ String bigMsg = new String (Files .readAllBytes (filepath ));
600
+ ObjectMapper om = new ObjectMapper ();
601
+ @ SuppressWarnings ("unchecked" )
602
+ Map <String , Object > m1 = (Map <String , Object >)(om .readValue (bigMsg , Map .class ));
603
+ @ SuppressWarnings ("unchecked" )
604
+ Map <String , Object > m2 = (Map <String , Object >)(om .readValue (results .get (0 ), Map .class ));
605
+ Assert .assertTrue ("Unexpceted big size message" , m1 .equals (m2 ));
606
+ client .close ();
607
+ }
563
608
// @Test
564
609
// //This will open a browser and test with html sse client
565
610
// public void testHtmlSse() throws Exception
0 commit comments