You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2017/12/19 00:10:06 UTC

[trafficserver] branch quic-latest updated: Update tests for version negotiation

This is an automated email from the ASF dual-hosted git repository.

maskit pushed a commit to branch quic-latest
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/quic-latest by this push:
     new 48f5acb  Update tests for version negotiation
48f5acb is described below

commit 48f5acb0488b47aff70d72de2e9a319598493d82
Author: Masakazu Kitajo <ma...@apache.org>
AuthorDate: Tue Dec 19 09:09:41 2017 +0900

    Update tests for version negotiation
---
 iocore/net/quic/test/test_QUICVersionNegotiator.cc | 63 +++++++++++++++++-----
 1 file changed, 51 insertions(+), 12 deletions(-)

diff --git a/iocore/net/quic/test/test_QUICVersionNegotiator.cc b/iocore/net/quic/test/test_QUICVersionNegotiator.cc
index 2917e1c..48cc23d 100644
--- a/iocore/net/quic/test/test_QUICVersionNegotiator.cc
+++ b/iocore/net/quic/test/test_QUICVersionNegotiator.cc
@@ -26,24 +26,63 @@
 #include "quic/QUICVersionNegotiator.h"
 #include "quic/Mock.h"
 
-TEST_CASE("QUICVersionNegotiator_Normal", "[quic]")
+TEST_CASE("QUICVersionNegotiator", "[quic]")
 {
   QUICPacketFactory packet_factory;
   MockQUICCrypto crypto;
   packet_factory.set_crypto_module(&crypto);
   QUICVersionNegotiator vn;
 
-  // Check initial state
-  CHECK(vn.status() == QUICVersionNegotiationStatus::NOT_NEGOTIATED);
+  SECTION("Normal case")
+  {
+    // Check initial state
+    CHECK(vn.status() == QUICVersionNegotiationStatus::NOT_NEGOTIATED);
 
-  // Negotiate version
-  QUICPacketUPtr initial_packet = packet_factory.create_initial_packet({}, 0, QUIC_SUPPORTED_VERSIONS[0], ats_unique_malloc(0), 0);
-  vn.negotiate(initial_packet.get());
-  CHECK(vn.status() == QUICVersionNegotiationStatus::NEGOTIATED);
+    // Negotiate version
+    QUICPacketUPtr initial_packet =
+      packet_factory.create_initial_packet({}, 0, QUIC_SUPPORTED_VERSIONS[0], ats_unique_malloc(0), 0);
+    vn.negotiate(initial_packet.get());
+    CHECK(vn.status() == QUICVersionNegotiationStatus::NEGOTIATED);
 
-  // Revalidate version
-  QUICTransportParametersInClientHello tp(QUIC_SUPPORTED_VERSIONS[0]);
-  vn.revalidate(&tp);
-  CHECK(vn.status() == QUICVersionNegotiationStatus::REVALIDATED);
-  CHECK(vn.negotiated_version() == QUIC_SUPPORTED_VERSIONS[0]);
+    // Validate version
+    QUICTransportParametersInClientHello tp(QUIC_SUPPORTED_VERSIONS[0]);
+    vn.validate(&tp);
+    CHECK(vn.status() == QUICVersionNegotiationStatus::VALIDATED);
+    CHECK(vn.negotiated_version() == QUIC_SUPPORTED_VERSIONS[0]);
+  }
+
+  SECTION("Negotiation case")
+  {
+    // Check initial state
+    CHECK(vn.status() == QUICVersionNegotiationStatus::NOT_NEGOTIATED);
+
+    // Negotiate version
+    QUICPacketUPtr initial_packet =
+      packet_factory.create_initial_packet({}, 0, QUIC_SUPPORTED_VERSIONS[0], ats_unique_malloc(0), 0);
+    vn.negotiate(initial_packet.get());
+    CHECK(vn.status() == QUICVersionNegotiationStatus::NEGOTIATED);
+
+    // Validate version
+    QUICTransportParametersInClientHello tp(0xbabababa);
+    vn.validate(&tp);
+    CHECK(vn.status() == QUICVersionNegotiationStatus::VALIDATED);
+    CHECK(vn.negotiated_version() == QUIC_SUPPORTED_VERSIONS[0]);
+  }
+
+  SECTION("Downgrade case")
+  {
+    // Check initial state
+    CHECK(vn.status() == QUICVersionNegotiationStatus::NOT_NEGOTIATED);
+
+    // Negotiate version
+    QUICPacketUPtr initial_packet = packet_factory.create_initial_packet({}, 0, 0xbabababa, ats_unique_malloc(0), 0);
+    vn.negotiate(initial_packet.get());
+    CHECK(vn.status() == QUICVersionNegotiationStatus::NOT_NEGOTIATED);
+
+    // Validate version
+    QUICTransportParametersInClientHello tp(QUIC_SUPPORTED_VERSIONS[0]);
+    vn.validate(&tp);
+    CHECK(vn.status() == QUICVersionNegotiationStatus::FAILED);
+    CHECK(vn.negotiated_version() != QUIC_SUPPORTED_VERSIONS[0]);
+  }
 }

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].