You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ic...@apache.org on 2021/09/23 08:56:34 UTC

svn commit: r1893542 [10/12] - in /httpd/httpd/branches/2.4.x: ./ test/modules/ test/modules/http2/ test/modules/http2/conf/ test/modules/http2/data/ test/modules/http2/htdocs/ test/modules/http2/htdocs/cgi/ test/modules/http2/htdocs/cgi/files/ test/mo...

Added: httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/apache.org.html
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/apache.org.html?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/apache.org.html (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/apache.org.html Thu Sep 23 08:56:33 2021
@@ -0,0 +1,899 @@
+<!DOCTYPE html>
+<html lang="en"><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <meta name="description" content="Home page of The Apache Software Foundation">
+  <link rel="apple-touch-icon" sizes="57x57" href="http://apache.org/favicons/apple-touch-icon-57x57.png">
+  <link rel="apple-touch-icon" sizes="60x60" href="http://apache.org/favicons/apple-touch-icon-60x60.png">
+  <link rel="apple-touch-icon" sizes="72x72" href="http://apache.org/favicons/apple-touch-icon-72x72.png">
+  <link rel="apple-touch-icon" sizes="76x76" href="http://apache.org/favicons/apple-touch-icon-76x76.png">
+  <link rel="apple-touch-icon" sizes="114x114" href="http://apache.org/favicons/apple-touch-icon-114x114.png">
+  <link rel="apple-touch-icon" sizes="120x120" href="http://apache.org/favicons/apple-touch-icon-120x120.png">
+  <link rel="apple-touch-icon" sizes="144x144" href="http://apache.org/favicons/apple-touch-icon-144x144.png">
+  <link rel="apple-touch-icon" sizes="152x152" href="http://apache.org/favicons/apple-touch-icon-152x152.png">
+  <link rel="apple-touch-icon" sizes="180x180" href="http://apache.org/favicons/apple-touch-icon-180x180.png">
+  <link rel="icon" type="image/png" href="http://apache.org/favicons/favicon-32x32.png" sizes="32x32">
+  <link rel="icon" type="image/png" href="http://apache.org/favicons/favicon-194x194.png" sizes="194x194">
+  <link rel="icon" type="image/png" href="http://apache.org/favicons/favicon-96x96.png" sizes="96x96">
+  <link rel="icon" type="image/png" href="http://apache.org/favicons/android-chrome-192x192.png" sizes="192x192">
+  <link rel="icon" type="image/png" href="http://apache.org/favicons/favicon-16x16.png" sizes="16x16">
+  <link rel="manifest" href="http://apache.org/favicons/manifest.json">
+  <link rel="shortcut icon" href="http://apache.org/favicons/favicon.ico">
+  <meta name="msapplication-TileColor" content="#603cba">
+  <meta name="msapplication-TileImage" content="/favicons/mstile-144x144.png">
+  <meta name="msapplication-config" content="/favicons/browserconfig.xml">
+  <meta name="theme-color" content="#303284">
+
+  <title>Welcome to The Apache Software Foundation!</title>
+  <link href="apache.org-files/css.css" rel="stylesheet" type="text/css">
+  <link href="apache.org-files/min.css" rel="stylesheet">
+  <link href="apache.org-files/styles.css" rel="stylesheet">  
+    
+
+    
+    
+
+<script type="text/javascript" src="apache.org-files/jsapi.js"></script>
+<link rel="stylesheet" href="apache.org-files/defaulten.css" type="text/css">
+<link rel="stylesheet" href="apache.org-files/default.css" type="text/css">
+<script src="apache.org-files/defaulten.js" type="text/javascript"></script>
+<style type="text/css">
+.gsc-control-cse {
+font-family: Arial, sans-serif;
+border-color: #FFFFFF;
+background-color: #FFFFFF;
+}
+.gsc-control-cse .gsc-table-result {
+font-family: Arial, sans-serif;
+}
+input.gsc-input, .gsc-input-box, .gsc-input-box-hover, .gsc-input-box-focus {
+border-color: #D9D9D9;
+}
+input.gsc-search-button, input.gsc-search-button:hover, input.gsc-search-button:focus {
+border-color: #666666;
+background-color: #CECECE;
+background-image: none;
+filter: none;
+}
+.gsc-tabHeader.gsc-tabhInactive {
+border-color: #E9E9E9;
+background-color: #E9E9E9;
+}
+.gsc-tabHeader.gsc-tabhActive {
+border-color: #FF9900;
+border-bottom-color: #FFFFFF;
+background-color: #FFFFFF;
+}
+.gsc-tabsArea {
+border-color: #FF9900;
+}
+.gsc-webResult.gsc-result,
+.gsc-results .gsc-imageResult {
+border-color: #FFFFFF;
+background-color: #FFFFFF;
+}
+.gsc-webResult.gsc-result:hover,
+.gsc-imageResult:hover {
+border-color: #FFFFFF;
+background-color: #FFFFFF;
+}
+.gs-webResult.gs-result a.gs-title:link,
+.gs-webResult.gs-result a.gs-title:link b,
+.gs-imageResult a.gs-title:link,
+.gs-imageResult a.gs-title:link b {
+color: #0000CC;
+}
+.gs-webResult.gs-result a.gs-title:visited,
+.gs-webResult.gs-result a.gs-title:visited b,
+.gs-imageResult a.gs-title:visited,
+.gs-imageResult a.gs-title:visited b {
+color: #0000CC;
+}
+.gs-webResult.gs-result a.gs-title:hover,
+.gs-webResult.gs-result a.gs-title:hover b,
+.gs-imageResult a.gs-title:hover,
+.gs-imageResult a.gs-title:hover b {
+color: #0000CC;
+}
+.gs-webResult.gs-result a.gs-title:active,
+.gs-webResult.gs-result a.gs-title:active b,
+.gs-imageResult a.gs-title:active,
+.gs-imageResult a.gs-title:active b {
+color: #0000CC;
+}
+.gsc-cursor-page {
+color: #0000CC;
+}
+a.gsc-trailing-more-results:link {
+color: #0000CC;
+}
+.gs-webResult .gs-snippet,
+.gs-imageResult .gs-snippet,
+.gs-fileFormatType {
+color: #000000;
+}
+.gs-webResult div.gs-visibleUrl,
+.gs-imageResult div.gs-visibleUrl {
+color: #008000;
+}
+.gs-webResult div.gs-visibleUrl-short {
+color: #008000;
+}
+.gs-webResult div.gs-visibleUrl-short {
+display: none;
+}
+.gs-webResult div.gs-visibleUrl-long {
+display: block;
+}
+.gs-promotion div.gs-visibleUrl-short {
+display: none;
+}
+.gs-promotion div.gs-visibleUrl-long {
+display: block;
+}
+.gsc-cursor-box {
+border-color: #FFFFFF;
+}
+.gsc-results .gsc-cursor-box .gsc-cursor-page {
+border-color: #E9E9E9;
+background-color: #FFFFFF;
+color: #0000CC;
+}
+.gsc-results .gsc-cursor-box .gsc-cursor-current-page {
+border-color: #FF9900;
+background-color: #FFFFFF;
+color: #0000CC;
+}
+.gsc-webResult.gsc-result.gsc-promotion {
+border-color: #336699;
+background-color: #FFFFFF;
+}
+.gsc-completion-title {
+color: #0000CC;
+}
+.gsc-completion-snippet {
+color: #000000;
+}
+.gs-promotion a.gs-title:link,
+.gs-promotion a.gs-title:link *,
+.gs-promotion .gs-snippet a:link {
+color: #0000CC;
+}
+.gs-promotion a.gs-title:visited,
+.gs-promotion a.gs-title:visited *,
+.gs-promotion .gs-snippet a:visited {
+color: #0000CC;
+}
+.gs-promotion a.gs-title:hover,
+.gs-promotion a.gs-title:hover *,
+.gs-promotion .gs-snippet a:hover {
+color: #0000CC;
+}
+.gs-promotion a.gs-title:active,
+.gs-promotion a.gs-title:active *,
+.gs-promotion .gs-snippet a:active {
+color: #0000CC;
+}
+.gs-promotion .gs-snippet,
+.gs-promotion .gs-title .gs-promotion-title-right,
+.gs-promotion .gs-title .gs-promotion-title-right * {
+color: #000000;
+}
+.gs-promotion .gs-visibleUrl,
+.gs-promotion .gs-visibleUrl-short {
+color: #008000;
+}</style>
+<style type="text/css">.gscb_a{display:inline-block;font:27px/13px arial,sans-serif}.gsst_a .gscb_a{color:#a1b9ed;cursor:pointer}.gsst_a:hover .gscb_a,.gsst_a:focus .gscb_a{color:#36c}.gsst_a{display:inline-block}.gsst_a{cursor:pointer;padding:0 4px}.gsst_a:hover{text-decoration:none!important}.gsst_b{font-size:16px;padding:0 2px;position:relative;user-select:none;-moz-user-select:none;white-space:nowrap}.gsst_e{opacity:0.55;}.gsst_a:hover .gsst_e,.gsst_a:focus .gsst_e{opacity:0.72;}.gsst_a:active .gsst_e{opacity:1;}.gsst_f{background:white;text-align:left}.gsst_g{background-color:white;border:1px solid #ccc;border-top-color:#d9d9d9;box-shadow:0 2px 4px rgba(0,0,0,0.2);-moz-box-shadow:0 2px 4px rgba(0,0,0,0.2);margin:-1px -3px;padding:0 6px}.gsst_h{background-color:white;height:1px;margin-bottom:-1px;position:relative;top:-1px}.gsib_a{width:100%;padding:4px 6px 0}.gsib_a,.gsib_b{vertical-align:top}.gssb_c{border:0;position:absolute;z-index:989}.gssb_e{border:1px solid #ccc;border-to
 p-color:#d9d9d9;box-shadow:0 2px 4px rgba(0,0,0,0.2);-moz-box-shadow:0 2px 4px rgba(0,0,0,0.2);cursor:default}.gssb_f{visibility:hidden;white-space:nowrap}.gssb_k{border:0;display:block;position:absolute;top:0;z-index:988}.gsdd_a{border:none!important}.gsq_a{padding:0}.gsq_a{padding:0}.gscsep_a{display:none}.gssb_a{padding:0 7px}.gssb_a,.gssb_a td{white-space:nowrap;overflow:hidden;line-height:22px}#gssb_b{font-size:11px;color:#36c;text-decoration:none}#gssb_b:hover{font-size:11px;color:#36c;text-decoration:underline}.gssb_g{text-align:center;padding:8px 0 7px;position:relative}.gssb_h{font-size:15px;height:28px;margin:0.2em}.gssb_i{background:#eee}.gss_ifl{visibility:hidden;padding-left:5px}.gssb_i .gss_ifl{visibility:visible}a.gssb_j{font-size:13px;color:#36c;text-decoration:none;line-height:100%}a.gssb_j:hover{text-decoration:underline}.gssb_l{height:1px;background-color:#e5e5e5}.gssb_m{color:#000;background:#fff}.gsfe_a{border:1px solid #b9b9b9;border-top-color:#a0a0a0;box-shado
 w:inset 0px 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0px 1px 2px rgba(0,0,0,0.1);-webkit-box-shadow:inset 0px 1px 2px rgba(0,0,0,0.1);}.gsfe_b{border:1px solid #4d90fe;outline:none;box-shadow:inset 0px 1px 2px rgba(0,0,0,0.3);-moz-box-shadow:inset 0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:inset 0px 1px 2px rgba(0,0,0,0.3);}.gssb_a{padding:0 9px}.gsib_a{padding-right:8px;padding-left:8px}.gsst_a{padding-top:3px}.gssb_e{border:0}.gssb_l{margin:5px 0}.gssb_c .gsc-completion-container{position:static}.gssb_c{z-index:5000}.gsc-completion-container table{background:transparent;font-size:inherit;font-family:inherit}.gssb_c > tbody > tr,.gssb_c > tbody > tr > td,.gssb_d,.gssb_d > tbody > tr,.gssb_d > tbody > tr > td,.gssb_e,.gssb_e > tbody > tr,.gssb_e > tbody > tr > td{padding:0;margin:0;border:0}.gssb_a table,.gssb_a table tr,.gssb_a table tr td{padding:0;margin:0;border:0}</style>
+</head>
+
+<body>
+<!-- Navigation -->  
+<header>
+  <nav class="navbar navbar-default navbar-fixed-top">
+    <div class="container">
+      <div class="navbar-header">
+        <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#mainnav-collapse">
+          <span class="sr-only">Toggle navigation</span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
+        <a href="#" class="navbar-brand"><span class="glyphicon glyphicon-home"></span></a>
+      </div>
+      <div class="collapse navbar-collapse" id="mainnav-collapse">
+        <div style="line-height:20px; padding-top:5px; float:left"><a href="http://apache.org/">Home</a></div>
+        <ul class="nav navbar-nav navbar-right">
+          <li class="dropdown">
+          	<a href="#" class="dropdown-toggle" data-toggle="dropdown">About <span class="caret"></span></a>
+          	<ul class="dropdown-menu" role="menu">
+      				<li><a href="http://apache.org/foundation">Overview</a></li>
+      				<li><a href="http://apache.org/foundation/members.html">Members</a></li>
+      				<li><a href="http://apache.org/foundation/how-it-works.html">Process</a></li>
+      				<li><a href="http://apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+      				<li><a href="http://apache.org/foundation/glossary.html">Glossary</a></li>
+      				<li><a href="http://apache.org/foundation/preFAQ.html">FAQ</a></li>
+      				<li><a href="http://apache.org/foundation/contact.html">Contact</a></li>      				
+          	</ul>
+          </li>
+			<li><a href="http://apache.org/index.html#projects-list">Projects</a></li>
+  				<li class="dropdown">
+	        	<a href="#" class="dropdown-toggle" data-toggle="dropdown">People <span class="caret"></span></a>
+	        	<ul class="dropdown-menu" role="menu">
+  						<li><a href="http://people.apache.org/">Overview</a></li>
+  						<li><a href="http://people.apache.org/committer-index.html">Committers</a></li>
+  						<li><a href="http://apache.org/foundation/how-it-works.html#meritocracy">Meritocracy</a></li>
+  						<li><a href="http://apache.org/foundation/how-it-works.html#roles">Roles</a></li>
+  						<li><a href="http://planet.apache.org/">Planet Apache</a></li>
+	        	</ul>
+	        </li>
+          <li class="dropdown">
+            <a href="#" class="dropdown-toggle" data-toggle="dropdown">Get Involved <span class="caret"></span></a>
+            <ul class="dropdown-menu" role="menu">
+              <li><a href="http://apache.org/foundation/getinvolved.html">Overview</a></li>
+      				<li><a href="http://community.apache.org/">Community Development</a></li>
+      				<li><a href="http://www.apachecon.com/">ApacheCon</a></li>
+            </ul>
+  				</li>
+          <li><a href="http://apache.org/dyn/closer.cgi">Download</a></li>
+          <li class="dropdown">
+          	<a href="#" class="dropdown-toggle" data-toggle="dropdown">Support Apache <span class="caret"></span></a>
+          	<ul class="dropdown-menu" role="menu">
+      				<li><a href="http://apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+      				<li><a href="http://apache.org/foundation/contributing.html">Donations</a></li>
+      				<li><a href="http://apache.org/foundation/buy_stuff.html">Buy Stuff</a></li>
+      				<li><a href="http://apache.org/foundation/thanks.html">Thanks</a></li>
+          	</ul>
+          </li>
+        </ul>
+      </div>
+    </div>
+  </nav>
+</header>
+<!-- / Navigation -->
+<div class="container">
+  <div class="row">
+    <div class="col-md-9 col-sm-8 col-xs-12">
+      <img src="apache.org-files/asf_logo.png" alt="Apache Logo" style="max-width: 100%;">
+    </div>
+    <div class="col-md-3 col-sm-4 col-xs-12">
+      <div class="input-group" style="margin-bottom: 5px;">
+				<script src="apache.org-files/cse.js" async="" type="text/javascript"></script>
+			<a role="button" class="btn btn-block btn-default btn-xs" href="http://apache.org/foundation/governance/">The Apache Way</a>
+			<a role="button" class="btn btn-block btn-default btn-xs" href="https://community.apache.org/contributors/">Contribute</a>
+			<a role="button" class="btn btn-block btn-default btn-xs" href="http://apache.org/foundation/thanks.html">ASF Sponsors</a>
+    </div>
+  </div>
+</div>
+
+<!-- Apache Statements Section -->
+<section class="bg-gray">
+  <div class="container">
+    <div class="row">
+      <div class="col-md-4">
+        <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h3>Open.</h3>
+
+<h5 class="no-btm-margin">The Apache Software Foundation</h5>
+
+<p class="small">provides support for the Apache Community of open-source software projects, which provide software products for the public good.</p>
+      </div>
+      <div class="col-md-4">
+        <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h3>Innovation.</h3>
+
+<h5 class="no-btm-margin">The Apache projects are defined</h5>
+
+<p class="small">by collaborative consensus based processes, an open, 
+pragmatic software license and a desire to create high quality software 
+that leads the way in its field.</p>
+      </div>
+      <div class="col-md-4">
+        <style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, dt:hover > .elementid-permalink { visibility: visible }</style>
+<h3>Community.</h3>
+
+<h5 class="no-btm-margin">We consider ourselves</h5>
+
+<p class="small">not simply a group of projects sharing a server, but rather a community of developers and users.</p>
+      </div>
+    </div>
+  </div>
+</section>
+<!-- / Apache Statements Section -->
+<!-- Apache Featured Projects Section    -->
+<section class="container">
+  <div class="row">
+    <div class="col-md-12">
+      <h2>Apache Projects</h2>
+      <p>The all-volunteer ASF develops, stewards, and incubates more 
+than 350 Open Source projects and initiatives that cover a wide range of
+ technologies. 
+        From Abdera to Zookeeper, if you are looking for a rewarding 
+experience in Open Source and industry leading software, chances are you
+ are going to find it here.
+        <a href="http://apache.org/foundation/press/kit/#powerby">Are you powered by Apache?</a>
+      </p>
+<!-- Featured Projects Section    -->
+      <div class="container">
+        <div class="row">
+          <h3>Featured Project<span class="visible-md-inline visible-lg-inline">s</span></h3>     
+          <div class="col-md-3 col-sm-12">
+            <!-- tabs left -->
+            <div class="tabbable tabs-left visible-md-inline visible-lg-inline">
+              <ul class="nav nav-tabs">
+                
+                  <li class="active">
+                    <a href="#1" data-toggle="tab">Apache MRUnit</a>
+                  </li>
+                
+                  <li>
+                    <a href="#2" data-toggle="tab">Apache Synapse</a>
+                  </li>
+                
+                  <li>
+                    <a href="#3" data-toggle="tab">Apache Ant</a>
+                  </li>
+                
+              </ul>
+            </div>
+          </div>
+          <div class="col-md-9 col-sm-12">
+            <div class="tab-content">
+              
+                <div class="tab-pane fade in active" id="1">
+                  <div class="row">
+                    <div class="col-sm-2">
+                      <img class="img-responsive center-block" src="apache.org-files/mrunit.jpg" alt="Logo">
+                    </div>
+                    <div class="col-sm-10">
+                      <h4 class="no-btm-margin"><a href="http://mrunit.apache.org/">Apache MRUnit</a></h4>
+                      <p>The Apache MRUnit is a Java library that helps developers unit test Apache Hadoop map reduce jobs.</p>
+                      <a class="btn btn-default btn-sm" href="http://mrunit.apache.org/" role="button">Learn More...</a>
+                    </div>
+                  </div>
+                </div>
+              
+                <div class="tab-pane fade in " id="2">
+                  <div class="row">
+                    <div class="col-sm-2">
+                      <img class="img-responsive center-block" src="apache.org-files/synapse.jpg" alt="Logo">
+                    </div>
+                    <div class="col-sm-10">
+                      <h4 class="no-btm-margin"><a href="http://synapse.apache.org/">Apache Synapse</a></h4>
+                      <p>Apache Synapse is a simple and highly effective ESB, Web Services intermediary and SOA framework. It can be
+added to your existing network very simply either as a services gateway or as an HTTP proxy. Once Apache
+Synapse is mediating your service requests it can perform many functions including routing,...</p>
+                      <a class="btn btn-default btn-sm" href="http://synapse.apache.org/" role="button">Learn More...</a>
+                    </div>
+                  </div>
+                </div>
+              
+                <div class="tab-pane fade in " id="3">
+                  <div class="row">
+                    <div class="col-sm-2">
+                      <img class="img-responsive center-block" src="apache.org-files/ant.jpg" alt="Logo">
+                    </div>
+                    <div class="col-sm-10">
+                      <h4 class="no-btm-margin"><a href="http://ant.apache.org/">Apache Ant</a></h4>
+                      <p>Apache Ant is a Java-based build tool.</p>
+                      <a class="btn btn-default btn-sm" href="http://ant.apache.org/" role="button">Learn More...</a>
+                    </div>
+                  </div>
+                </div>
+              
+            </div><!-- /tab-content -->
+          </div><!-- /container -->
+        </div><!-- /tabs -->
+      </div><!-- /column -->
+<!-- / Featured Projects Section    -->
+    </div>
+  </div>
+</section>
+<!-- / Apache Featured Projects Section -->
+<!-- Updates Section    -->
+<section class="bg-gray">
+  <div class="bg-info">
+    <div class="container">
+      <h2 class="no-btm-margin">Latest News</h2>
+      <p class="small">
+        Keep up with the ASF's news and announcements by
+        <a href="http://apache.org/foundation/mailinglists.html#foundation-announce">subscribing to the Apache Announcements List</a>,
+        and following the <a href="https://blogs.apache.org/foundation/">Foundation Blog</a>
+        and <a href="https://twitter.com/TheASF">@TheASF on Twitter</a>.
+      </p>
+    </div>
+  </div>
+  <br>
+  <div class="container">
+    <div class="row">
+      <div class="col-md-8">
+        <div class="panel panel-default">
+          <div class="panel-body">
+            
+              <h4><a href="http://mail-archives.us.apache.org/mod_mbox/www-announce/201511.mbox/%3c1766075582.6448050.1447364293441.JavaMail.yahoo@mail.yahoo.com%3e">Summary of the Apache Roadshow 2015 - China</a></h4>
+              &gt;&gt; this announcement is available online at <a href="http://s.apache.org/q2L">http://s.apache.org/q2L</a><br>&nbsp;<br>by Ted Liu, event co-organizer <br>&nbsp;<br>On 24-25 October, The Apache Roadshow 2015 - China in Beijing was successfully concluded.
+It...
+              <hr>
+            
+              <h4><a href="http://mail-archives.us.apache.org/mod_mbox/www-announce/201511.mbox/%3c56449B7A.90008@apache.org%3e">[ANNOUNCE] Apache Jackrabbit Oak 1.3.10 released</a></h4>
+              The Apache Jackrabbit community is pleased to announce the release of
+Apache Jackrabbit Oak 1.3.10 The release is available for download at:<br>&nbsp;<br>    <a href="http://jackrabbit.apache.org/downloads.html">http://jackrabbit.apache.org/downloads.html</a><br>&nbsp;<br>See the full release notes...
+              <hr>
+            
+              <h4><a href="http://mail-archives.us.apache.org/mod_mbox/www-announce/201511.mbox/%3cCAGvacBnoz+m5b30dZ27H4NnAacCUt9HaMt3h2mU9LMiJFMmUDA@mail.gmail.com%3e">[ANNOUNCEMENT] Apache Camel 2.14.4 Released</a></h4>
+              The Apache Camel community announces the immediate availability of the
+new patch release Apache Camel 2.14.4. This release contains 18 fixes
+applied in the past few weeks by the community...
+              
+                
+          </div>
+        </div>
+      </div>
+      <div class="col-md-4">
+        <div class="panel panel-default">
+          <div class="panel-heading">
+            <h4 class="panel-title">Latest Activity</h4>
+          </div>
+          <div class="panel-body">
+            
+              <div>
+                <a href="https://twitter.com/TheASF/statuses/664920266397646848">@</a>
+                <a href="http://twitter.com/TheASF">TheASF</a>: Summary of the Apache Roadshow 2015 - China <a href="https://t.co/HrxlmcHz51">https://t.co/HrxlmcHz51</a> <a href="http://twitter.com/search?q=%23Apache">#Apache</a> <a href="http://twitter.com/search?q=%23Community">#Community</a> <a href="http://twitter.com/search?q=%23China">#China</a> <a href="http://twitter.com/search?q=%23Beijing">#Beijing</a> <a href="http://twitter.com/brettporter">@brettporter</a> <a href="http://twitter.com/ke4qqq">@ke4qqq</a> <a href="http://twitter.com/jaaronfarr">@jaaronfarr</a>
+              </div>
+              <hr>
+            
+              <div>
+                <a href="https://twitter.com/TheASF/statuses/664035393797537792">@</a>
+                <a href="http://twitter.com/TheASF">TheASF</a>: The Apache Software Foundation announces Apache Cassandra v3.0 <a href="https://t.co/KR134FEnak">https://t.co/KR134FEnak</a> <a href="http://twitter.com/search?q=%23BigData">#BigData</a> <a href="http://twitter.com/search?q=%23distributed">#distributed</a> <a href="http://twitter.com/search?q=%23database">#database</a> <a href="http://twitter.com/cassandra">@cassandra</a>
+              </div>
+              <hr>
+            
+              <div>
+                <a href="https://twitter.com/TheASF/statuses/664023691051843584">@</a>
+                <a href="http://twitter.com/TheASF">TheASF</a>: Apache Commons statement to widespread Java object de-serialisation vulnerability <a href="https://t.co/gFRLOIMXe1">https://t.co/gFRLOIMXe1</a> <a href="http://twitter.com/ApacheCommons">@ApacheCommons</a> <a href="http://twitter.com/search?q=%23security">#security</a> <a href="http://twitter.com/search?q=%23Java">#Java</a>
+              </div>
+              
+            
+          </div>
+        </div>
+      </div>
+      <div class="col-md-12">
+        <div class="panel panel-default">
+          <div class="panel-heading">
+            <h4 class="panel-title">Apache Blogs</h4>
+          </div>
+          <div class="panel-body">
+            
+              <h5><a class="entryTitle" href="https://blogs.apache.org/foundation/entry/summary_of_the_apache_roadshow">Summary of the Apache Roadshow 2015 - China</a></h5>
+              <p></p><p><i>by Ted Liu, event organizing committee 
+member,&nbsp;co-founder of KAIYUANSHE, and Principal Technical 
+Evangelist, Open Technology Center, Microsoft China</i></p> 
+  <p>On 24-25 October, The Apache Roadshow 2015 - China in Beijing was...</p><p></p>
+              <hr>
+            
+              <h5><a class="entryTitle" href="https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces82">The Apache Software Foundation announces Apache™ Cassandra™ v3.0</a></h5>
+              <p></p><div><b><i>Open Source distributed database 
+management system simplifies Big Data application development with new 
+features, performance optimizations, and significant storage savings</i></b></div> 
+  <div><b><br></b></div> 
+  <div><b>Forest Hill, MD —10 November 2015—</b> The Apache Software Foundation...</div><p></p>
+              <hr>
+            
+              <h5><a class="entryTitle" href="https://blogs.apache.org/foundation/entry/apache_commons_statement_to_widespread">Apache Commons statement to widespread Java object de-serialisation vulnerability</a></h5>
+              <p></p><div><strong><em>Authors: Bernd Eckenfels, Committer, and Gary Gregory, Vice President of Apache Commons</em></strong></div> 
+  <div><br></div> 
+  <div>In their talk <a href="http://frohoff.github.io/appseccali-marshalling-pickles/">"Marshalling Pickles - how deserializing objects will ruin your day"</a> at AppSecCali2015 Gabriel Lawrence (...</div><p></p>
+              
+                  
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</section>
+<!-- / Updates Section    -->
+<!-- Apache Projects List -->
+<section id="projects-list">
+  <div class="container">
+    <div class="row">
+      <div class="col-sm-12">
+        <h2>Apache Project List</h2>
+      </div>
+      <div class="col-sm-2" id="by_category"><!-- id for eventual use by whimsy; do not move -->
+        <h4>By Category</h4>
+        <ul class="list-unstyled">
+          <li><a href="http://projects.apache.org/">Overview</a></li>
+          <li><a href="http://projects.apache.org/indexes/alpha.html">All Projects</a></li>
+          <li><a href="http://attic.apache.org/" title="A home for dormant projects">Attic</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#big-data">Big Data</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#build-management">Build Management</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#cloud">Cloud</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#content">Content</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#database">Databases</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#ftp">FTP</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#graphics">Graphics</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#http">HTTP</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#httpd-module">HTTP-module</a></li>
+          <li><a href="http://incubator.apache.org/" title="Entry path for projects and codebases wishing to become part of the Foundation's efforts">Incubating</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#javaee">JavaEE</a></li>
+          <li><a href="http://labs.apache.org/" title="A place for innovation where committers of the foundation can experiment with new ideas">Labs</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#library">Libraries</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#mail">Mail</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#mobile">Mobile</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#network-client">Network-client</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#network-server">Network-server</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#osgi">OSGi</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#regexp">RegExp</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#retired">Retired</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#testing">Testing</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#virtual-machine">Virtual-machine</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#web-framework">Web-framework</a></li>
+          <li><a href="http://projects.apache.org/indexes/category.html#xml">XML</a></li>
+          <li><a href="http://apache.org/foundation/preFAQ.html">FAQ</a></li>
+        </ul>
+      </div>
+      <div class="col-sm-10">
+        <div class="row">
+          <div class="col-md-12" id="by_name"><!-- id for eventual use by whimsy; do not move -->
+            <h4>By Name</h4>
+            <div class="col-lg-4 col-sm-4">
+              <div class="row">
+                <div class="col-lg-6 col-md-12 border-right">
+                  <ul class="list-unstyled" style="margin-bottom: 0px;">
+                    <li><a href="http://httpd.apache.org/" title="Apache Web Server (httpd)">HTTP Server</a></li>
+                    <li class="letter-header">A</li>
+                    <li><a href="http://abdera.apache.org/" title="Atom Publishing Protocol Implementation">Abdera</a></li>
+                    <li><a href="http://accumulo.apache.org/" title="Sorted, distributed key/value store">Accumulo</a></li>
+                    <li><a href="http://ace.apache.org/" title="Centralized life cycle management and deployment of OSGi based and related modular software artifacts for distribution.">ACE</a></li>
+                    <li><a href="http://activemq.apache.org/" title="Distributed Messaging System">ActiveMQ</a></li>
+                    <li><a href="http://airavata.apache.org/" title="Workflow and Computational Job Management Middleware">Airavata</a></li>
+                    <li><a href="http://allura.apache.org/" title="Forge software for hosting software projects">Allura</a></li>
+                    <li><a href="http://ambari.apache.org/" title="Hadoop cluster management">Ambari</a></li>
+                    <li><a href="http://ant.apache.org/" title="Java-based build tool">Ant</a></li>
+                    <li><a href="http://any23.apache.org/" title="Anything to Triples">Any23</a></li>
+                    <li><a href="http://apr.apache.org/" title="Apache Portable Runtime libraries">APR</a></li>
+                    <li><a href="http://archiva.apache.org/" title="Build Artifact Repository Manager">Archiva</a></li>
+                    <li><a href="http://aries.apache.org/" title="Enterprise OSGi application programming model">Aries</a></li>
+                    <li><a href="http://aurora.apache.org/" title="Mesos framework for long-running services and cron jobs">Aurora</a></li>
+                    <li><a href="http://avro.apache.org/" title="A Serialization System">Avro</a></li>
+                    <li><a href="http://axis.apache.org/" title="Java SOAP Engine">Axis</a></li>
+                    <li class="letter-header">B</li>
+                    <li><a href="http://bigtop.apache.org/" title="Apache Hadoop ecosystem integration and distribution project">Bigtop</a></li>
+                    <li><a href="http://bloodhound.apache.org/" title="Issue tracking, wiki and repository browser">Bloodhound</a></li>
+                    <li><a href="http://bookkeeper.apache.org/" title="Replicated log service which can be used to build replicated state machines">BookKeeper</a></li>
+                    <li><a href="http://buildr.apache.org/" title="Simple and intuitive build system for Java applications">Buildr</a></li>
+                    <li><a href="http://bval.apache.org/" title="Apache BVal: JSR-303 Bean Validation Implementation and Extensions">BVal</a></li>
+                    <li class="letter-header">C</li>
+                    <li><a href="http://camel.apache.org/" title="Spring based Integration Framework which implements the Enterprise Integration Patterns">Camel</a></li>
+                    <li><a href="http://cassandra.apache.org/" title="Highly scalable second-generation distributed database">Cassandra</a></li>
+                    <li><a href="http://cayenne.apache.org/" title="User-friendly Java ORM with Tools">Cayenne</a></li>
+                    <li><a href="http://celix.apache.org/" title="Implementation of the OSGi specification adapted to C">Celix</a></li>
+                    <li><a href="http://chemistry.apache.org/" title="CMIS (Content Managment Interoperability Services) Clients and Servers">Chemistry</a></li>
+                    <li><a href="http://chukwa.apache.org/" title="Open source data collection system for monitoring large distributed systems.">Chukwa</a></li>
+                    <li><a href="http://clerezza.apache.org/" title="Semantically linked data for OSGi">Clerezza</a></li>
+                    <li><a href="http://cloudstack.apache.org/" title="Infrastructure as a Service solution">CloudStack</a></li>
+                    <li><a href="http://cocoon.apache.org/" title="Web development framework: separation of concerns, component-based">Cocoon</a></li>
+                  </ul>
+                </div>
+                <div class="col-lg-6 col-md-12 border-right">
+                  <ul class="list-unstyled" style="margin-bottom: 0px;">
+                    <li><a href="http://commons.apache.org/" title="Reusable Java components">Commons</a></li>
+                    <li><a href="http://continuum.apache.org/" title="Continuous Integration and Build Server">Continuum</a></li>
+                    <li><a href="http://cordova.apache.org/" title="Platform for building native mobile applications using HTML, CSS and JavaScript">Cordova</a></li>
+                    <li><a href="http://couchdb.apache.org/" title="RESTful document database">CouchDB</a></li>
+                    <li><a href="http://creadur.apache.org/" title="Comprehension and auditing of software distributions">Creadur</a></li>
+                    <li><a href="http://crunch.apache.org/" title="Simple and Efficient MapReduce Pipelines">Crunch</a></li>
+                    <li><a href="http://ctakes.apache.org/" title="Natural language processing (NLP) tool for information extraction from electronic medical record clinical free-text">cTAKES</a></li>
+                    <li><a href="http://curator.apache.org/" title="Java libraries that make using Apache ZooKeeper easier">Curator</a></li>
+                    <li><a href="http://cxf.apache.org/" title="Service Framework">CXF</a></li>
+                    <li class="letter-header">D</li>
+                    <li><a href="http://db.apache.org/" title="Database access">DB</a></li>
+                    <li><a href="http://deltaspike.apache.org/" title="Portable CDI extensions that provide useful features for Java application developers">DeltaSpike</a></li>
+                    <li><a href="http://devicemap.apache.org/" title="data repository containing device information, images and other relevant information for all sorts of mobile devices">DeviceMap</a></li>
+                    <li><a href="http://directory.apache.org/" title="Apache Directory Server">Directory</a></li>
+                    <li><a href="http://drill.apache.org/" title="Schema-free SQL Query Engine for Hadoop, NoSQL and Cloud Storage">Drill</a></li>
+                    <li class="letter-header">E</li>
+                    <li><a href="http://empire-db.apache.org/" title="Relational Data Persistence">Empire-db</a></li>
+                    <li><a href="http://etch.apache.org/" title="Cross-platform, language- and transport-independent RPC-like messaging framework">Etch</a></li>
+                    <li class="letter-header">F</li>
+                    <li><a href="http://falcon.apache.org/" title="Data management and processing platform.">Falcon</a></li>
+                    <li><a href="http://felix.apache.org/" title="OSGi Framework and components.">Felix</a></li>
+                    <li><a href="http://flex.apache.org/" title="Application framework for expressive web applications that deploy to all major browsers, desktops and devices.">Flex</a></li>
+                    <li><a href="http://flink.apache.org/" title="platform for scalable batch and stream data processing">Flink</a></li>
+                    <li><a href="http://flume.apache.org/" title="A reliable service for efficiently collecting, aggregating, and moving large amounts of log data">Flume</a></li>
+                    <li><a href="http://forrest.apache.org/" title="Aggregated multi-channel documentation, separation of concerns">Forrest</a></li>
+                    <li class="letter-header">G</li>
+                    <li><a href="http://geronimo.apache.org/" title="Java2, Enterprise Edition (J2EE) container">Geronimo</a></li>
+                    <li><a href="http://giraph.apache.org/" title="Iterative graph processing system built for high scalability">Giraph</a></li>
+                    <li><a href="http://gora.apache.org/" title="ORM framework for column stores such as Apache HBase and Apache Cassandra with a specific focus on Hadoop">Gora</a></li>
+                    <li><a href="http://gump.apache.org/" title="Continuous integration of open source projects">Gump</a></li>
+                  </ul>
+                </div>
+              </div>
+            </div>
+            <div class="col-lg-4 col-sm-4">
+              <div class="row">
+                <div class="col-lg-6 col-md-12 border-right">
+                  <ul class="list-unstyled" style="margin-bottom: 0px;">
+                    <li class="letter-header">H</li>
+                    <li><a href="http://hadoop.apache.org/" title="Distributed computing platform">Hadoop</a></li>
+                    <li><a href="http://hama.apache.org/" title="a Bulk Synchronous Parallel computing framework on top of Hadoop">Hama</a></li>
+                    <li><a href="http://hbase.apache.org/" title="Hadoop Database">HBase</a></li>
+                    <li><a href="http://helix.apache.org/" title="A cluster management framework for partitioned and replicated distributed resources">Helix</a></li>
+                    <li><a href="http://hive.apache.org/" title="Data warehouse infrastructure using the Hadoop Database">Hive</a></li>
+                    <li><a href="http://hc.apache.org/" title="Java toolset of low level HTTP components">HttpComponents</a></li>
+                    <li class="letter-header">I</li>
+                    <li><a href="http://isis.apache.org/" title="Framework for rapidly developing domain-driven apps in Java">Isis</a></li>
+                    <li><a href="http://ignite.apache.org/" title="High-performance, integrated and distributed in-memory platform for computing and transacting on large-scale data sets in real-time">Ignite</a></li>
+                    <li class="letter-header">J</li>
+                    <li><a href="http://jackrabbit.apache.org/" title="Content Repository for Java">Jackrabbit</a></li>
+                    <li><a href="http://james.apache.org/" title="Java Apache Mail Enterprise Server">James</a></li>
+                    <li><a href="http://jclouds.apache.org/" title="Java cloud APIs and abstractions">jclouds</a></li>
+                    <li><a href="http://jena.apache.org/" title="Java framework for building Semantic Web applications">Jena</a></li>
+                    <li><a href="http://jmeter.apache.org/" title="Java performance and functional testing">JMeter</a></li>
+                    <li><a href="http://jspwiki.apache.org/" title="Leading open source WikiWiki engine, feature-rich and built around standard J2EE components (Java, servlets, JSP). ">JSPWiki</a></li>
+                    <li><a href="http://juddi.apache.org/" title="Java implementation of the Universal Description, Discovery, and Integration specification">jUDDI</a></li>
+                    <li class="letter-header">K</li>
+                    <li><a href="http://kafka.apache.org/" title="Distributed publish-subscribe messaging system">Kafka</a></li>
+                    <li><a href="http://karaf.apache.org/" title="Server-side OSGi distribution">Karaf</a></li>
+                    <li><a href="http://knox.apache.org/" title="Simplify and normalize the deployment and implementation of secure Hadoop clusters">Knox</a></li>
+                    <li class="letter-header">L</li>
+                    <li><a href="http://lens.apache.org/" title="Unified analytics platform">Lens</a></li>
+                    <li><a href="http://libcloud.apache.org/" title="Unified interface to the cloud">Libcloud</a></li>
+                    <li><a href="http://logging.apache.org/" title="Cross-language logging services">Logging</a></li>
+                    <li><a href="http://lucene.apache.org/" title="Search engine library">Lucene</a></li>
+                    <li><a href="http://lucenenet.apache.org/" title="Search engine library targeted at .NET runtime users.">Lucene.Net</a></li>
+                    <li><a href="http://lucy.apache.org/" title="Search engine library for dynamic languages">Lucy</a></li>
+                  </ul>
+                </div>
+                <div class="col-lg-6 col-md-12 border-right">
+                  <ul class="list-unstyled" style="margin-bottom: 0px;">
+                    <li class="letter-header">M</li>
+                    <li><a href="http://mahout.apache.org/" title="Scalable machine learning library">Mahout</a></li>
+                    <li><a href="http://manifoldcf.apache.org/" title="Framework for connecting source content repositories to target repositories or indexes.">ManifoldCF</a></li>
+                    <li><a href="http://marmotta.apache.org/" title="An Open Platform for Linked Data">Marmotta</a></li>
+                    <li><a href="http://maven.apache.org/" title="Java project management and comprehension tools">Maven</a></li>
+                    <li><a href="http://mesos.apache.org/" title="a cluster manager that provides efficient resource isolation and sharing across distributed applications">Mesos</a></li>
+                    <li><a href="http://metamodel.apache.org/" title="common interface for discovery, exploration of metadata and querying of different types of data sources">MetaModel</a></li>
+                    <li><a href="http://mina.apache.org/" title="Multipurpose Infrastructure for Network Application">MINA</a></li>
+                    <li><a href="http://mrunit.apache.org/" title="Java library that helps developers unit test Apache Hadoop map reduce jobs">MRUnit</a></li>
+                    <li><a href="http://myfaces.apache.org/" title="JavaServer(tm) Faces implementation and components">MyFaces</a></li>
+                    <li class="letter-header">N</li>
+                    <li><a href="http://nutch.apache.org/" title="Open Source Web Search Software">Nutch</a></li>
+                    <li><a href="http://nifi.apache.org/" title="Easy to use, powerful, and reliable system to process and distribute data">Nifi</a></li>
+                    <li class="letter-header">O</li>
+                    <li><a href="http://ode.apache.org/" title="Orchestration Director Engine: Business Process Management (BPM), Process Orchestration and Workflow through service composition.">ODE</a></li>
+                    <li><a href="http://ofbiz.apache.org/" title="Open for Business: enterprise automation software">OFBiz</a></li>
+                    <li><a href="http://olingo.apache.org/" title="OASIS OData protocol libraries">Olingo</a></li>
+                    <li><a href="http://oltu.apache.org/" title="OAuth protocol implementation in Java">Oltu</a></li>
+                    <li><a href="http://onami.apache.org/" title="Development and maintenance of a set of Google Guice extensions">Onami</a></li>
+                    <li><a href="http://oodt.apache.org/" title="Object Oriented Data Technology (middleware metadata)">OODT</a></li>
+                    <li><a href="http://oozie.apache.org/" title="A workflow scheduler system to manage Apache Hadoop jobs.">Oozie</a></li>
+                    <li><a href="http://climate.apache.org/" title="Climate model evaluation">Open Climate Workbench</a></li>
+                    <li><a href="http://openjpa.apache.org/" title="OpenJPA: Object Relational Mapping for Java">OpenJPA</a></li>
+                    <li><a href="http://openmeetings.apache.org/" title="OpenMeetings: Web-Conferencing and real-time collaboration">OpenMeetings</a></li>
+                    <li><a href="http://opennlp.apache.org/" title="Machine learning based toolkit for the processing of natural language text">OpenNLP</a></li>
+                    <li><a href="http://openoffice.apache.org/" title="An open-source, office-document productivity suite">OpenOffice</a></li>
+                    <li><a href="http://openwebbeans.apache.org/" title="OpenWebBeans: JSR-299 Context and Dependency Injection for Java EE Platform Implementation">OpenWebBeans</a></li>
+                    <li><a href="http://orc.apache.org/" title="the smallest, fastest columnar storage for Hadoop workloads">Orc</a></li>
+                    <li class="letter-header">P</li>
+                    <li><a href="http://parquet.apache.org/" title="columnar storage format available to any project in the Hadoop ecosystem">Parquet</a></li>
+                    <li><a href="http://pdfbox.apache.org/" title="Java library for working with PDF documents">PDFBox</a></li>
+                    <li><a href="http://perl.apache.org/" title="Dynamic websites using Perl">Perl</a></li>
+                    <li><a href="http://phoenix.apache.org/" title="High performance relational database layer over HBase for low latency applications">Phoenix</a></li>
+                    <li><a href="http://pig.apache.org/" title="Platform for analyzing large data sets">Pig</a></li>
+                            <!-- N.B. entries for "P" are continued below -->
+                  </ul>
+                </div>
+              </div>
+            </div>
+            <div class="col-lg-4 col-sm-4">
+              <div class="row">
+                <div class="col-lg-6 col-md-12 border-right">
+                  <ul class="list-unstyled" style="margin-bottom: 0px;">
+                    <li><a href="http://pivot.apache.org/" title="Rich Internet applications in Java">Pivot</a></li>
+                    <li><a href="http://poi.apache.org/" title="Java API for OLE 2 Compound and OOXML Documents">POI</a></li>                                  
+                    <li><a href="http://portals.apache.org/" title="Portal technology">Portals</a></li>
+                    <li class="letter-header">Q</li>
+                    <li><a href="http://qpid.apache.org/" title="Multiple language implementation of the latest Advanced Message Queuing Protocol (AMQP)">Qpid</a></li>
+                    <li class="letter-header">R</li>
+                    <li><a href="http://rave.apache.org/" title="Web and social mashup engine">Rave</a></li>
+                    <li><a href="http://river.apache.org/" title="Jini service oriented architecture">River</a></li>
+                    <li><a href="http://roller.apache.org/" title="Java blog server">Roller</a></li>
+                    <li class="letter-header">S</li>
+                    <li><a href="http://samza.apache.org/" title="distributed stream processing framework">Samza</a></li>
+                    <li><a href="http://santuario.apache.org/" title="XML Security in Java and C++">Santuario</a></li>
+                    <li><a href="http://serf.apache.org/" title="High performance C-based HTTP client library built upon the Apache Portable Runtime (APR) library">Serf</a></li>
+                    <li><a href="http://servicemix.apache.org/" title="Enterprise Service Bus">ServiceMix</a></li>
+                    <li><a href="http://shindig.apache.org/" title="Opensocial Reference Implementation">Shindig</a></li>
+                    <li><a href="http://shiro.apache.org/" title="Powerful and easy-to-use application security framework">Shiro</a></li>
+                    <li><a href="http://sis.apache.org/" title="Spatial Information System">SIS</a></li>
+                    <li><a href="http://sling.apache.org/" title="Web Framework for JCR Content Repositories">Sling</a></li>
+                    <li><a href="http://spamassassin.apache.org/" title="Mail filter to identify spam">SpamAssassin</a></li>
+                    <li><a href="http://spark.apache.org/" title="Fast and general engine for large-scale data processing">Spark</a></li>
+                    <li><a href="http://sqoop.apache.org/" title="Bulk Data Transfer for Hadoop and Structured Datastores">Sqoop</a></li>
+                    <li><a href="http://stanbol.apache.org/" title="Reusable components for semantic content management">Stanbol</a></li>
+                    <li><a href="http://steve.apache.org/" title="Apache's Python based single transferable vote software system">STeVe</a></li>
+                    <li><a href="http://storm.apache.org/" title="Distributed, real-time computation system">Storm</a></li>
+                    <li><a href="http://stratos.apache.org/" title="highly-extensible Platform-as-a-Service (PaaS) framework">Stratos</a></li>
+                    <li><a href="http://struts.apache.org/" title="Model 2 framework for building Java web applications">Struts</a></li>
+                    <li><a href="http://subversion.apache.org/" title="Version Control">Subversion</a></li>
+                    <li><a href="http://synapse.apache.org/" title="Enterprise Service Bus and Mediation Framework">Synapse</a></li>
+                    <li><a href="http://syncope.apache.org/" title="Managing digital identities in enterprise environments">Syncope</a></li>
+                    <li class="letter-header">T</li>
+                    <li><a href="http://tajo.apache.org/" title="Big data warehouse system on Hadoop">Tajo</a></li>
+                    <li><a href="http://tapestry.apache.org/" title="Component-based Java Web Application Framework">Tapestry</a></li>
+                    <li><a href="http://tcl.apache.org/" title="Dynamic websites using TCL">Tcl</a></li>
+                                            <!-- N.B. entries for "T" are continued below -->
+                  </ul>
+                </div>
+                <div class="col-lg-6 col-md-12">
+                  <ul class="list-unstyled" style="margin-bottom: 0px;">
+                    <li><a href="http://tez.apache.org/" title="High-performance and scalable distributed data processing framework">Tez</a></li>
+                    <li><a href="http://thrift.apache.org/" title="Framework for scalable cross-language services development">Thrift</a></li>
+                    <li><a href="http://tika.apache.org/" title="Content Analysis and Detection Toolkit">Tika</a></li>
+                    <li><a href="http://tiles.apache.org/" title="A templating framework for web application user interfaces">Tiles</a></li>
+                    <li><a href="http://tomcat.apache.org/" title="A Java Servlet and JSP Container">Tomcat</a></li>
+                    <li><a href="http://tomee.apache.org/" title="Java EE Web Profile built on Tomcat">TomEE</a></li>
+                    <li><a href="http://trafficserver.apache.org/" title="A fast, scalable and extensible HTTP/1.1 compliant caching proxy server">Traffic Server</a></li>
+                    <li><a href="http://turbine.apache.org/" title="A Java Servlet Web Application Framework and associated component library">Turbine</a></li>
+                    <li><a href="http://tuscany.apache.org/" title="An SCA based Service Composition Framework">Tuscany</a></li>
+                    <li class="letter-header">U</li>
+                    <li><a href="http://uima.apache.org/" title="Framework and annotators for unstructured information analysis">UIMA</a></li>
+                    <li><a href="http://usergrid.apache.org/" title="The BaaS Framework you run">Usergrid</a></li>
+                    <li class="letter-header">V</li>
+                    <li><a href="http://vcl.apache.org/" title="Virtual Computing Lab">VCL</a></li>
+                    <li><a href="http://velocity.apache.org/" title="A Java Templating Engine">Velocity</a></li>
+                    <li><a href="http://vxquery.apache.org/" title="A parallel XQuery processor">VXQuery</a></li>
+                    <li class="letter-header">W</li>
+                    <li><a href="http://ws.apache.org/" title="Projects related to Web Services">Web Services</a></li>
+                    <li><a href="http://whimsy.apache.org/" title="Tools that help automate various administrative tasks or information lookup activities">Whimsy</a></li>
+                    <li><a href="http://wicket.apache.org/" title="Component-based Java Web Application Framework.">Wicket</a></li>
+                    <li><a href="http://wink.apache.org/" title="RESTful Web services Framework">Wink</a></li>
+                    <li><a href="http://wookie.apache.org/" title="Widgets for Applications">Wookie</a></li>
+                    <li class="letter-header">X</li>
+                    <li><a href="http://xalan.apache.org/" title="XSLT processors in Java and C++">Xalan</a></li>
+                    <li><a href="http://xerces.apache.org/" title="XML parsers in Java, C++ and Perl">Xerces</a></li>
+                    <li><a href="http://xmlbeans.apache.org/" title="XML-Java binding tool">XMLBeans</a></li>
+                    <li><a href="http://xmlgraphics.apache.org/" title="Conversion from XML to graphical output">XML Graphics</a></li>
+                    <li class="letter-header">Y</li>
+                    <li><a href="http://yetus.apache.org/" title="Collection of libraries and tools that enable contribution and release processes for software projects">Yetus</a></li>
+                    <li class="letter-header">Z</li>
+                    <li><a href="http://zest.apache.org/" title="community based effort exploring Composite Oriented Programming for domain centric application development">Zest</a></li>
+                    <li><a href="http://zookeeper.apache.org/" title="Centralized service for maintaining configuration information">ZooKeeper</a></li>
+                  </ul>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</section>
+<!-- / Projects List -->
+
+
+<!-- Footer -->
+
+<footer class="bg-primary">
+  <div class="container">
+			<div class="row">
+				<br>
+				<div class="col-sm-1">
+					
+				</div>
+				<div class="col-sm-2">
+		        	<h5 class="white">Community</h5>
+		        	<ul class="list-unstyled white" role="menu">
+						<li><a href="http://community.apache.org/">Overview</a></li>
+						<li><a href="http://apache.org/foundation/conferences.html">Conferences</a></li>
+						<li><a href="http://community.apache.org/gsoc.html">Summer of Code</a></li>
+						<li><a href="http://community.apache.org/newcomers/">Getting Started</a></li>
+						<li><a href="http://apache.org/foundation/how-it-works.html">The Apache Way</a></li>
+						<li><a href="http://apache.org/travel/">Travel Assistance</a></li>
+						<li><a href="http://apache.org/foundation/getinvolved.html">Get Involved</a></li>
+						<li><a href="http://community.apache.org/newbiefaq.html">Community FAQ</a></li>
+		        	</ul>
+				</div>
+				
+				<div class="col-sm-2">
+					<h5 class="white">Innovation</h5>
+		        	<ul class="list-unstyled white" role="menu">
+						<li><a href="http://incubator.apache.org/">Incubator</a></li>
+						<li><a href="http://labs.apache.org/">Labs</a></li>
+						<li><a href="http://apache.org/licenses/">Licensing</a></li>
+						<li><a href="http://apache.org/foundation/license-faq.html">Licensing FAQ</a></li>
+						<li><a href="http://apache.org/foundation/marks/">Trademark Policy</a></li>
+						<li><a href="http://apache.org/foundation/contact.html">Contacts</a></li>
+		        	</ul>
+				</div>
+
+				<div class="col-sm-2">
+					<h5 class="white">Tech Operations</h5>
+		        <ul class="list-unstyled white" role="menu">
+  						<li><a href="http://apache.org/dev/">Developer Information</a></li>
+  						<li><a href="http://apache.org/dev/infrastructure.html">Infrastructure</a></li>
+  						<li><a href="http://apache.org/security/">Security</a></li>
+  						<li><a href="http://status.apache.org/">Status</a></li>
+  						<li><a href="http://apache.org/foundation/contact.html">Contacts</a></li>
+		        </ul>
+				</div>
+
+				<div class="col-sm-2">
+					<h5 class="white">Press</h5>
+        	<ul class="list-unstyled white" role="menu">
+						<li><a href="http://apache.org/press/">Overview</a></li>
+						<li><a href="https://blogs.apache.org/">ASF News</a></li>
+						<li><a href="https://blogs.apache.org/foundation/">Announcements</a></li>
+						<li><a href="https://twitter.com/TheASF">Twitter Feed</a></li>
+						<li><a href="http://apache.org/press/#contact">Contacts</a></li>
+        	</ul>
+				</div>
+				
+				<div class="col-sm-2">
+					<h5 class="white">Legal</h5>
+        	<ul class="list-unstyled white" role="menu">
+						<li><a href="http://apache.org/legal/">Legal Affairs</a></li>
+						<li><a href="http://apache.org/licenses/">Licenses</a></li>
+						<li><a href="http://apache.org/foundation/marks/">Trademark Policy</a></li>
+						<li><a href="http://apache.org/foundation/records/">Public Records</a></li>
+            <li><a href="http://apache.org/foundation/policies/privacy.html">Privacy Policy</a></li>
+						<li><a href="http://apache.org/licenses/exports/">Export Information</a></li>
+						<li><a href="http://apache.org/foundation/license-faq.html">License/Distribution FAQ</a></li>
+						<li><a href="http://apache.org/foundation/contact.html">Contacts</a></li>
+        	</ul>
+				</div>
+
+				<div class="col-sm-1">
+				</div>
+
+			</div>
+			<hr class="col-lg-12 hr-white">
+			<div class="row">
+				<div class="col-lg-12">
+					<p class="text-center">Copyright © 2015 The Apache Software Foundation, Licensed under the <a class="white" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+					<p class="text-center">Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
+				</div>
+			</div>
+		</div>
+
+</footer>
+
+<!-- / Footer -->
+
+<script src="apache.org-files/jquery-2.js"></script>
+
+
+<table class="gstl_50 gssb_c" style="width: 146px; display: none; top: 93px; left: 927px; position: absolute;" cellpadding="0" cellspacing="0"><tbody><tr><td class="gssb_f"></td><td style="width: 100%;" class="gssb_e"></td></tr></tbody></table></body></html>
\ No newline at end of file

Added: httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/index.html
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/index.html?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/index.html (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test1/index.html Thu Sep 23 08:56:33 2021
@@ -0,0 +1,46 @@
+<html>
+    <head>
+        <title>mod_h2 test site</title>
+    </head>
+    <body>
+        <h1>mod_h2 test site</h1>
+        <p></p>
+        <h2>served directly</h2>
+        <ul>
+            <li><a href="001.html">01: html</a></li>
+            <li><a href="002.jpg">02: image</a></li>
+            <li><a href="003.html">03: html+image</a></li>
+            <li><a href="004.html">04: tiled image</a></li>
+            <li><a href="005.txt">05: large text</a></li>
+            <li><a href="006.html">06: html/js/css</a></li>
+            <li><a href="007.html">07: form submit</a></li>
+            <li><a href="upload.py">08: upload</a></li>
+            <li><a href="009.py">09: small chunks</a></li>
+        </ul>
+        <h2>mod_proxyied</h2>
+        <ul>
+            <li><a href="proxy/001.html">01: html</a></li>
+            <li><a href="proxy/002.jpg">02: image</a></li>
+            <li><a href="proxy/003.html">03: html+image</a></li>
+            <li><a href="proxy/004.html">04: tiled image</a></li>
+            <li><a href="proxy/005.txt">05: large text</a></li>
+            <li><a href="proxy/006.html">06: html/js/css</a></li>
+            <li><a href="proxy/007.html">07: form submit</a></li>
+            <li><a href="proxy/upload.py">08: upload</a></li>
+            <li><a href="proxy/009.py">09: small chunks</a></li>
+        </ul>
+        <h2>mod_rewritten</h2>
+        <ul>
+            <li><a href="rewrite/001.html">01: html</a></li>
+            <li><a href="rewrite/002.jpg">02: image</a></li>
+            <li><a href="rewrite/003.html">03: html+image</a></li>
+            <li><a href="rewrite/004.html">04: tiled image</a></li>
+            <li><a href="rewrite/005.txt">05: large text</a></li>
+            <li><a href="rewrite/006.html">06: html/js/css</a></li>
+            <li><a href="rewrite/007.html">07: form submit</a></li>
+            <li><a href="rewrite/upload.py">08: upload</a></li>
+            <li><a href="rewrite/009.py">09: small chunks</a></li>
+        </ul>
+    </body>
+</html>
+

Added: httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test2/alive.json
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test2/alive.json?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test2/alive.json (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/htdocs/test2/alive.json Thu Sep 23 08:56:33 2021
@@ -0,0 +1,4 @@
+{
+    "host" : "test2",
+    "alive" : true
+}

Added: httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.c?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.c (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.c Thu Sep 23 08:56:33 2021
@@ -0,0 +1,165 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <apr_optional.h>
+#include <apr_optional_hooks.h>
+#include <apr_strings.h>
+#include <apr_time.h>
+#include <apr_want.h>
+
+#include <httpd.h>
+#include <http_protocol.h>
+#include <http_request.h>
+#include <http_log.h>
+
+#include "mod_h2test.h"
+
+static void h2test_hooks(apr_pool_t *pool);
+
+AP_DECLARE_MODULE(h2test) = {
+    STANDARD20_MODULE_STUFF,
+    NULL, /* func to create per dir config */
+    NULL,  /* func to merge per dir config */
+    NULL, /* func to create per server config */
+    NULL,  /* func to merge per server config */
+    NULL,              /* command handlers */
+    h2test_hooks,
+#if defined(AP_MODULE_FLAG_NONE)
+    AP_MODULE_FLAG_ALWAYS_MERGE
+#endif
+};
+
+
+static int h2test_post_config(apr_pool_t *p, apr_pool_t *plog,
+                              apr_pool_t *ptemp, server_rec *s)
+{
+    void *data = NULL;
+    const char *mod_h2_init_key = "mod_h2test_init_counter";
+    
+    (void)plog;(void)ptemp;
+
+    apr_pool_userdata_get(&data, mod_h2_init_key, s->process->pool);
+    if ( data == NULL ) {
+        /* dry run */
+        apr_pool_userdata_set((const void *)1, mod_h2_init_key,
+                              apr_pool_cleanup_null, s->process->pool);
+        return APR_SUCCESS;
+    }
+    
+    
+    return APR_SUCCESS;
+}
+
+static void h2test_child_init(apr_pool_t *pool, server_rec *s)
+{
+    (void)pool;
+    (void)s;
+}
+
+static int h2test_echo_handler(request_rec *r)
+{
+    conn_rec *c = r->connection;
+    apr_bucket_brigade *bb;
+    apr_bucket *b;
+    apr_status_t rv;
+    char buffer[8192];
+    const char *ct;
+    long l;
+    
+    if (strcmp(r->handler, "h2test-echo")) {
+        return DECLINED;
+    }
+    if (r->method_number != M_GET && r->method_number != M_POST) {
+        return DECLINED;
+    }
+
+    ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "echo_handler: processing request");
+    r->status = 200;
+    r->clength = -1;
+    r->chunked = 1;
+    apr_table_unset(r->headers_out, "Content-Length");
+    /* Discourage content-encodings */
+    apr_table_unset(r->headers_out, "Content-Encoding");
+    apr_table_setn(r->subprocess_env, "no-brotli", "1");
+    apr_table_setn(r->subprocess_env, "no-gzip", "1");
+
+    ct = apr_table_get(r->headers_in, "content-type");
+    ap_set_content_type(r, ct? ct : "application/octet-stream");
+
+    bb = apr_brigade_create(r->pool, c->bucket_alloc);
+    /* copy any request body into the response */
+    if ((rv = ap_setup_client_block(r, REQUEST_CHUNKED_DECHUNK))) goto cleanup;
+    if (ap_should_client_block(r)) {
+        while (0 < (l = ap_get_client_block(r, &buffer[0], sizeof(buffer)))) {
+            ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
+                          "echo_handler: copying %ld bytes from request body", l);
+            rv = apr_brigade_write(bb, NULL, NULL, buffer, l);
+            if (APR_SUCCESS != rv) goto cleanup;
+            rv = ap_pass_brigade(r->output_filters, bb);
+            if (APR_SUCCESS != rv) goto cleanup;
+            ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r,
+                          "echo_handler: passed %ld bytes from request body", l);
+        }
+    }
+    /* we are done */
+    b = apr_bucket_eos_create(c->bucket_alloc);
+    APR_BRIGADE_INSERT_TAIL(bb, b);
+    ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "echo_handler: request read");
+
+    if (r->trailers_in && !apr_is_empty_table(r->trailers_in)) {
+        ap_log_rerror(APLOG_MARK, APLOG_TRACE2, 0, r,
+                      "echo_handler: seeing incoming trailers");
+        apr_table_setn(r->trailers_out, "h2test-trailers-in", 
+                       apr_itoa(r->pool, 1));
+    }
+    
+    rv = ap_pass_brigade(r->output_filters, bb);
+    
+cleanup:
+    if (rv == APR_SUCCESS
+        || r->status != HTTP_OK
+        || c->aborted) {
+        ap_log_rerror(APLOG_MARK, APLOG_TRACE1, rv, r, "echo_handler: request handled");
+        return OK;
+    }
+    else {
+        /* no way to know what type of error occurred */
+        ap_log_rerror(APLOG_MARK, APLOG_TRACE1, rv, r, "h2test_echo_handler failed");
+        return AP_FILTER_ERROR;
+    }
+    return DECLINED;
+}
+
+/* Install this module into the apache2 infrastructure.
+ */
+static void h2test_hooks(apr_pool_t *pool)
+{
+    static const char *const mod_h2[] = { "mod_h2.c", NULL};
+    
+    ap_log_perror(APLOG_MARK, APLOG_TRACE1, 0, pool, "installing hooks and handlers");
+    
+    /* Run once after configuration is set, but before mpm children initialize.
+     */
+    ap_hook_post_config(h2test_post_config, mod_h2, NULL, APR_HOOK_MIDDLE);
+    
+    /* Run once after a child process has been created.
+     */
+    ap_hook_child_init(h2test_child_init, NULL, NULL, APR_HOOK_MIDDLE);
+
+    /* test h2 echo handler */
+    ap_hook_handler(h2test_echo_handler, NULL, NULL, APR_HOOK_MIDDLE);
+}
+

Added: httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.h
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.h?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.h (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.h Thu Sep 23 08:56:33 2021
@@ -0,0 +1,21 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __MOD_H2TEST_H__
+#define __MOD_H2TEST_H__
+
+
+#endif

Added: httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.slo
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/mod_h2test/mod_h2test.slo?rev=1893542&view=auto
==============================================================================
    (empty)

Added: httpd/httpd/branches/2.4.x/test/modules/http2/test_000_infra.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/test_000_infra.py?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/test_000_infra.py (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/test_000_infra.py Thu Sep 23 08:56:33 2021
@@ -0,0 +1,17 @@
+#
+# mod-h2 test suite
+# check that our test infrastructure is sane
+#
+import pytest
+
+
+class TestStore:
+
+    @pytest.fixture(autouse=True, scope='class')
+    def _class_scope(self, env):
+        env.setup_data_1k_1m()
+        yield
+
+    def test_000_00(self):
+        assert 1 == 1
+

Added: httpd/httpd/branches/2.4.x/test/modules/http2/test_001_httpd_alive.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/test_001_httpd_alive.py?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/test_001_httpd_alive.py (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/test_001_httpd_alive.py Thu Sep 23 08:56:33 2021
@@ -0,0 +1,28 @@
+import pytest
+
+from h2_conf import HttpdConf
+
+
+class TestStore:
+
+    @pytest.fixture(autouse=True, scope='class')
+    def _class_scope(self, env):
+        HttpdConf(env).add_vhost_test1().install()
+        assert env.apache_restart() == 0
+
+    # we expect to see the document from the generic server
+    def test_001_01(self, env):
+        r = env.curl_get(f"https://{env.domain_test1}:{env.https_port}/alive.json", 5)
+        assert r.exit_code == 0, r.stderr + r.stdout
+        assert r.response["json"]
+        assert True == r.response["json"]["alive"]
+        assert "test1" == r.response["json"]["host"]
+
+    # we expect to see the document from the generic server
+    def test_001_02(self, env):
+        r = env.curl_get(f"https://{env.domain_test1}:{env.https_port}/alive.json", 5)
+        assert r.exit_code == 0, r.stderr
+        assert r.response["json"]
+        assert True == r.response["json"]["alive"]
+        assert "test1" == r.response["json"]["host"]
+

Added: httpd/httpd/branches/2.4.x/test/modules/http2/test_002_curl_basics.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/test_002_curl_basics.py?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/test_002_curl_basics.py (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/test_002_curl_basics.py Thu Sep 23 08:56:33 2021
@@ -0,0 +1,68 @@
+import pytest
+
+from h2_conf import HttpdConf
+
+
+class TestStore:
+
+    @pytest.fixture(autouse=True, scope='class')
+    def _class_scope(self, env):
+        HttpdConf(env).add_vhost_test1().add_vhost_test2().install()
+        assert env.apache_restart() == 0
+
+    # check that we see the correct documents when using the test1 server name over http:
+    def test_002_01(self, env):
+        url = env.mkurl("http", "test1", "/alive.json")
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/1.1" == r.response["protocol"]
+        assert True == r.response["json"]["alive"]
+        assert "test1" == r.response["json"]["host"]
+
+    # check that we see the correct documents when using the test1 server name over https:
+    def test_002_02(self, env):
+        url = env.mkurl("https", "test1", "/alive.json")
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert r.response["json"]["alive"] is True
+        assert "test1" == r.response["json"]["host"]
+        assert "application/json" == r.response["header"]["content-type"]
+
+    # enforce HTTP/1.1
+    def test_002_03(self, env):
+        url = env.mkurl("https", "test1", "/alive.json")
+        r = env.curl_get(url, 5, [ "--http1.1" ])
+        assert 200 == r.response["status"]
+        assert "HTTP/1.1" == r.response["protocol"]
+
+    # enforce HTTP/2
+    def test_002_04(self, env):
+        url = env.mkurl("https", "test1", "/alive.json")
+        r = env.curl_get(url, 5, [ "--http2" ])
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+
+    # default is HTTP/2 on this host
+    def test_002_04b(self, env):
+        url = env.mkurl("https", "test1", "/alive.json")
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        assert "test1" == r.response["json"]["host"]
+
+    # although, without ALPN, we cannot select it
+    def test_002_05(self, env):
+        url = env.mkurl("https", "test1", "/alive.json")
+        r = env.curl_get(url, 5, [ "--no-alpn" ])
+        assert 200 == r.response["status"]
+        assert "HTTP/1.1" == r.response["protocol"]
+        assert "test1" == r.response["json"]["host"]
+
+    # default is HTTP/1.1 on the other
+    def test_002_06(self, env):
+        url = env.mkurl("https", "test2", "/alive.json")
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/1.1" == r.response["protocol"]
+        assert "test2" == r.response["json"]["host"]
+

Added: httpd/httpd/branches/2.4.x/test/modules/http2/test_003_get.py
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/test/modules/http2/test_003_get.py?rev=1893542&view=auto
==============================================================================
--- httpd/httpd/branches/2.4.x/test/modules/http2/test_003_get.py (added)
+++ httpd/httpd/branches/2.4.x/test/modules/http2/test_003_get.py Thu Sep 23 08:56:33 2021
@@ -0,0 +1,213 @@
+import re
+import pytest
+
+from h2_conf import HttpdConf
+
+
+class TestStore:
+
+    @pytest.fixture(autouse=True, scope='class')
+    def _class_scope(self, env):
+        HttpdConf(env).add_vhost_cgi(
+            proxy_self=True, h2proxy_self=True
+        ).add_vhost_test1(
+            proxy_self=True, h2proxy_self=True
+        ).install()
+        assert env.apache_restart() == 0
+
+    # check SSL environment variables from CGI script
+    def test_003_01(self, env):
+        url = env.mkurl("https", "cgi", "/hello.py")
+        r = env.curl_get(url, 5, ["--tlsv1.2"])
+        assert 200 == r.response["status"]
+        assert "HTTP/2.0" == r.response["json"]["protocol"]
+        assert "on" == r.response["json"]["https"]
+        tls_version = r.response["json"]["ssl_protocol"]
+        assert tls_version in ["TLSv1.2", "TLSv1.3"]
+        assert "on" == r.response["json"]["h2"]
+        assert "off" == r.response["json"]["h2push"]
+
+        r = env.curl_get(url, 5, ["--http1.1", "--tlsv1.2"])
+        assert 200 == r.response["status"]
+        assert "HTTP/1.1" == r.response["json"]["protocol"]
+        assert "on" == r.response["json"]["https"]
+        tls_version = r.response["json"]["ssl_protocol"]
+        assert tls_version in ["TLSv1.2", "TLSv1.3"]
+        assert "" == r.response["json"]["h2"]
+        assert "" == r.response["json"]["h2push"]
+
+    # retrieve a html file from the server and compare it to its source
+    def test_003_02(self, env):
+        with open(env.test_src("htdocs/test1/index.html"), mode='rb') as file:
+            src = file.read()
+
+        url = env.mkurl("https", "test1", "/index.html")
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        assert src == r.response["body"]
+
+        url = env.mkurl("https", "test1", "/index.html")
+        r = env.curl_get(url, 5, ["--http1.1"])
+        assert 200 == r.response["status"]
+        assert "HTTP/1.1" == r.response["protocol"]
+        assert src == r.response["body"]
+
+    # retrieve chunked content from a cgi script
+    def check_necho(self, env, n, text):
+        url = env.mkurl("https", "cgi", "/necho.py")
+        r = env.curl_get(url, 5, ["-F", f"count={n}", "-F", f"text={text}"])
+        assert 200 == r.response["status"]
+        exp = ""
+        for i in range(n):
+            exp += text + "\n"
+        assert exp == r.response["body"].decode('utf-8')
+    
+    def test_003_10(self, env):
+        self.check_necho(env, 10, "0123456789")
+
+    def test_003_11(self, env):
+        self.check_necho(env, 100, "0123456789")
+
+    def test_003_12(self, env):
+        self.check_necho(env, 1000, "0123456789")
+
+    def test_003_13(self, env):
+        self.check_necho(env, 10000, "0123456789")
+
+    def test_003_14(self, env):
+        self.check_necho(env, 100000, "0123456789")
+
+    # github issue #126
+    def test_003_20(self, env):
+        url = env.mkurl("https", "test1", "/006/")
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        body = r.response["body"].decode('utf-8')
+        # our doctype varies between branches and in time, lets not compare
+        body = re.sub(r'^<!DOCTYPE[^>]+>', '', body)
+        assert '''
+<html>
+ <head>
+  <title>Index of /006</title>
+ </head>
+ <body>
+<title>My Header Title</title>
+<ul><li><a href="/"> Parent Directory</a></li>
+<li><a href="006.css"> 006.css</a></li>
+<li><a href="006.js"> 006.js</a></li>
+<li><a href="header.html"> header.html</a></li>
+</ul>
+</body></html>
+''' == body
+
+    # github issue #133
+    def clean_header(self, s):
+        s = re.sub(r'\r\n', '\n', s, flags=re.MULTILINE)
+        s = re.sub(r'^date:.*\n', '', s, flags=re.MULTILINE)
+        s = re.sub(r'^server:.*\n', '', s, flags=re.MULTILINE)
+        s = re.sub(r'^last-modified:.*\n', '', s, flags=re.MULTILINE)
+        s = re.sub(r'^etag:.*\n', '', s, flags=re.MULTILINE)
+        s = re.sub(r'^vary:.*\n', '', s, flags=re.MULTILINE)
+        return re.sub(r'^accept-ranges:.*\n', '', s, flags=re.MULTILINE)
+        
+    def test_003_21(self, env):
+        url = env.mkurl("https", "test1", "/index.html")
+        r = env.curl_get(url, 5, ["-I"])
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        s = self.clean_header(r.response["body"].decode('utf-8'))
+        assert '''HTTP/2 200 
+content-length: 2007
+content-type: text/html
+
+''' == s
+
+        r = env.curl_get(url, 5, ["-I", url])
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        s = self.clean_header(r.response["body"].decode('utf-8'))
+        assert '''HTTP/2 200 
+content-length: 2007
+content-type: text/html
+
+HTTP/2 200 
+content-length: 2007
+content-type: text/html
+
+''' == s
+
+    # test conditionals: if-modified-since
+    @pytest.mark.parametrize("path", [
+        "/004.html", "/proxy/004.html", "/h2proxy/004.html"
+    ])
+    def test_003_30(self, env, path):
+        url = env.mkurl("https", "test1", path)
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        h = r.response["header"]
+        assert "last-modified" in h
+        lastmod = h["last-modified"]
+        r = env.curl_get(url, 5, ['-H', ("if-modified-since: %s" % lastmod)])
+        assert 304 == r.response["status"]
+
+    # test conditionals: if-etag
+    @pytest.mark.parametrize("path", [
+        "/004.html", "/proxy/004.html", "/h2proxy/004.html"
+    ])
+    def test_003_31(self, env, path):
+        url = env.mkurl("https", "test1", path)
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        h = r.response["header"]
+        assert "etag" in h
+        etag = h["etag"]
+        r = env.curl_get(url, 5, ['-H', ("if-none-match: %s" % etag)])
+        assert 304 == r.response["status"]
+
+    # test various response body lengths to work correctly 
+    def test_003_40(self, env):
+        n = 1001
+        while n <= 1025024:
+            url = env.mkurl("https", "cgi", f"/mnot164.py?count={n}&text=X")
+            r = env.curl_get(url, 5)
+            assert 200 == r.response["status"]
+            assert "HTTP/2" == r.response["protocol"]
+            assert n == len(r.response["body"])
+            n *= 2
+
+    # test various response body lengths to work correctly 
+    @pytest.mark.parametrize("n", [
+        0, 1, 1291, 1292, 80000, 80123, 81087, 98452
+    ])
+    def test_003_41(self, env, n):
+        url = env.mkurl("https", "cgi", f"/mnot164.py?count={n}&text=X")
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        assert n == len(r.response["body"])
+        
+    # test ranges
+    @pytest.mark.parametrize("path", [
+        "/004.html", "/proxy/004.html", "/h2proxy/004.html"
+    ])
+    def test_003_50(self, env, path):
+        # check that the resource supports ranges and we see its raw content-length
+        url = env.mkurl("https", "test1", path)
+        r = env.curl_get(url, 5)
+        assert 200 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        h = r.response["header"]
+        assert "accept-ranges" in h
+        assert "bytes" == h["accept-ranges"]
+        assert "content-length" in h
+        clen = h["content-length"]
+        # get the first 1024 bytes of the resource, 206 status, but content-length as original
+        r = env.curl_get(url, 5, options=["-H", "range: bytes=0-1023"])
+        assert 206 == r.response["status"]
+        assert "HTTP/2" == r.response["protocol"]
+        assert 1024 == len(r.response["body"])
+        assert "content-length" in h
+        assert clen == h["content-length"]