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>
+ >> this announcement is available online at <a href="http://s.apache.org/q2L">http://s.apache.org/q2L</a><br> <br>by Ted Liu, event co-organizer <br> <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> <br> <a href="http://jackrabbit.apache.org/downloads.html">http://jackrabbit.apache.org/downloads.html</a><br> <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, 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"]