You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/10/26 11:03:02 UTC

svn commit: r1766664 - /tomcat/trunk/test/org/apache/coyote/http2/TestAbstractStream.java

Author: markt
Date: Wed Oct 26 11:03:02 2016
New Revision: 1766664

URL: http://svn.apache.org/viewvc?rev=1766664&view=rev
Log:
Add a couple of tests to explicitly check Tomcat doesn't allow clients to create circular dependencies between streams.

Modified:
    tomcat/trunk/test/org/apache/coyote/http2/TestAbstractStream.java

Modified: tomcat/trunk/test/org/apache/coyote/http2/TestAbstractStream.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/coyote/http2/TestAbstractStream.java?rev=1766664&r1=1766663&r2=1766664&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/coyote/http2/TestAbstractStream.java (original)
+++ tomcat/trunk/test/org/apache/coyote/http2/TestAbstractStream.java Wed Oct 26 11:03:02 2016
@@ -169,4 +169,81 @@ public class TestAbstractStream {
         Assert.assertTrue(c.getChildStreams().contains(e));
         Assert.assertEquals(0,  e.getChildStreams().size());
     }
+
+
+    @Test
+    public void testCircular01() {
+        // Setup
+        Http2UpgradeHandler handler = new Http2UpgradeHandler(null, null);
+        Stream a = new Stream(Integer.valueOf(1), handler);
+        Stream b = new Stream(Integer.valueOf(2), handler);
+        Stream c = new Stream(Integer.valueOf(3), handler);
+
+        b.rePrioritise(a, false, 16);
+        c.rePrioritise(b, false, 16);
+
+        // Action
+        a.rePrioritise(c, false, 16);
+
+        // Check parents
+        Assert.assertEquals(c, a.getParentStream());
+        Assert.assertEquals(a, b.getParentStream());
+        Assert.assertEquals(handler, c.getParentStream());
+
+        // Check children
+        Assert.assertEquals(1,  handler.getChildStreams().size());
+        Assert.assertTrue(handler.getChildStreams().contains(c));
+        Assert.assertEquals(1,  a.getChildStreams().size());
+        Assert.assertTrue(a.getChildStreams().contains(b));
+        Assert.assertEquals(0,  b.getChildStreams().size());
+        Assert.assertEquals(1,  c.getChildStreams().size());
+        Assert.assertTrue(c.getChildStreams().contains(a));
+    }
+
+
+    @Test
+    public void testCircular02() {
+        // Setup
+        Http2UpgradeHandler handler = new Http2UpgradeHandler(null, null);
+        Stream a = new Stream(Integer.valueOf(1), handler);
+        Stream b = new Stream(Integer.valueOf(2), handler);
+        Stream c = new Stream(Integer.valueOf(3), handler);
+        Stream d = new Stream(Integer.valueOf(4), handler);
+        Stream e = new Stream(Integer.valueOf(5), handler);
+        Stream f = new Stream(Integer.valueOf(6), handler);
+
+        b.rePrioritise(a, false, 16);
+        c.rePrioritise(b, false, 16);
+        e.rePrioritise(d, false, 16);
+        f.rePrioritise(e, false, 16);
+
+        // Action
+        a.rePrioritise(f, false, 16);
+        d.rePrioritise(c, false, 16);
+
+        // Check parents
+        Assert.assertEquals(f, a.getParentStream());
+        Assert.assertEquals(a, b.getParentStream());
+        Assert.assertEquals(handler, c.getParentStream());
+        Assert.assertEquals(c, d.getParentStream());
+        Assert.assertEquals(d, e.getParentStream());
+        Assert.assertEquals(e, f.getParentStream());
+
+        // Check children
+        Assert.assertEquals(1,  handler.getChildStreams().size());
+        Assert.assertTrue(handler.getChildStreams().contains(c));
+        Assert.assertEquals(1,  a.getChildStreams().size());
+        Assert.assertTrue(a.getChildStreams().contains(b));
+        Assert.assertEquals(0,  b.getChildStreams().size());
+        Assert.assertEquals(1,  c.getChildStreams().size());
+        Assert.assertTrue(c.getChildStreams().contains(d));
+        Assert.assertEquals(1,  d.getChildStreams().size());
+        Assert.assertTrue(d.getChildStreams().contains(e));
+        Assert.assertEquals(1,  e.getChildStreams().size());
+        Assert.assertTrue(e.getChildStreams().contains(f));
+        Assert.assertEquals(1,  f.getChildStreams().size());
+        Assert.assertTrue(f.getChildStreams().contains(a));
+
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org