Modified: websites/staging/thrift/trunk/content/lib/php.html
==============================================================================
--- websites/staging/thrift/trunk/content/lib/php.html (original)
+++ websites/staging/thrift/trunk/content/lib/php.html Sat Sep 26 12:54:26 2015
@@ -73,18 +73,29 @@
 </div>
 
        <div class="container">
-          <h1 id="using-thrift-with-php">Using Thrift with PHP</h1>
+          <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>
+<h1 id="using-thrift-with-php">Using Thrift with PHP<a class="headerlink" 
href="#using-thrift-with-php" title="Permanent link">&para;</a></h1>
 <p>Thrift requires PHP 5. Thrift makes as few assumptions about your PHP
 environment as possible while trying to make some more advanced PHP
 features (i.e. APC cacheing using asbolute path URLs) as simple as 
possible.</p>
 <p>To use Thrift in your PHP codebase, take the following steps:</p>
-<h1 id="1-copy-all-of-thriftlibphplib-into-your-php-codebase">1) Copy all of 
thrift/lib/php/lib into your PHP codebase</h1>
-<h1 id="2-configure-symfony-autoloader-or-whatever-you-usually-use">2) 
Configure Symfony Autoloader (or whatever you usually use)</h1>
+<h1 id="1-copy-all-of-thriftlibphplib-into-your-php-codebase">1) Copy all of 
thrift/lib/php/lib into your PHP codebase<a class="headerlink" 
href="#1-copy-all-of-thriftlibphplib-into-your-php-codebase" title="Permanent 
link">&para;</a></h1>
+<h1 id="2-configure-symfony-autoloader-or-whatever-you-usually-use">2) 
Configure Symfony Autoloader (or whatever you usually use)<a class="headerlink" 
href="#2-configure-symfony-autoloader-or-whatever-you-usually-use" 
title="Permanent link">&para;</a></h1>
 <p>After that, you have to manually include the Thrift package
 created by the compiler:</p>
 <p>require_once 'packages/Service/Service.php';
 require_once 'packages/Service/Types.php';</p>
-<h1 id="dependencies">Dependencies</h1>
+<h1 id="dependencies">Dependencies<a class="headerlink" href="#dependencies" 
title="Permanent link">&para;</a></h1>
 <p>PHP_INT_SIZE</p>
 <p>This built-in signals whether your architecture is 32 or 64 bit and is
   used by the TBinaryProtocol to properly use pack() and unpack() to

Modified: websites/staging/thrift/trunk/content/lib/py.html
==============================================================================
--- websites/staging/thrift/trunk/content/lib/py.html (original)
+++ websites/staging/thrift/trunk/content/lib/py.html Sat Sep 26 12:54:26 2015
@@ -73,7 +73,18 @@
 </div>
 
        <div class="container">
-          <h1 id="using-thrift-with-python">Using Thrift with Python</h1>
+          <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>
+<h1 id="using-thrift-with-python">Using Thrift with Python<a 
class="headerlink" href="#using-thrift-with-python" title="Permanent 
link">&para;</a></h1>
 <p>Thrift is provided as a set of Python packages. The top level package is
 thrift, and there are subpackages for the protocol, transport, and server
 code. Each package contains modules using standard Thrift naming conventions

Modified: websites/staging/thrift/trunk/content/lib/rb.html
==============================================================================
--- websites/staging/thrift/trunk/content/lib/rb.html (original)
+++ websites/staging/thrift/trunk/content/lib/rb.html Sat Sep 26 12:54:26 2015
@@ -73,7 +73,18 @@
 </div>
 
        <div class="container">
-          <p>== DESCRIPTION:</p>
+          <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>
+<p>== DESCRIPTION:</p>
 <p>Thrift is a strongly-typed language-agnostic RPC system.
 This library is the ruby implementation for both clients and servers.</p>
 <p>== INSTALL:</p>

Modified: websites/staging/thrift/trunk/content/lib/st.html
==============================================================================
--- websites/staging/thrift/trunk/content/lib/st.html (original)
+++ websites/staging/thrift/trunk/content/lib/st.html Sat Sep 26 12:54:26 2015
@@ -73,7 +73,18 @@
 </div>
 
        <div class="container">
-          <h1 id="library">Library</h1>
+          <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>
+<h1 id="library">Library<a class="headerlink" href="#library" title="Permanent 
link">&para;</a></h1>
 <p>To get started, just file in thrift.st with Squeak, run thrift -st
 on the tutorial .thrift files (and file in the resulting code), and
 then:</p>

Modified: websites/staging/thrift/trunk/content/mailing.html
==============================================================================
--- websites/staging/thrift/trunk/content/mailing.html (original)
+++ websites/staging/thrift/trunk/content/mailing.html Sat Sep 26 12:54:26 2015
@@ -73,23 +73,34 @@
 </div>
 
        <div class="container">
-          <p>In accordance with the principles of the Apache Software 
Foundation, Thrift encourages a collaborative and community-based development 
environment.</p>
+          <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>
+<p>In accordance with the principles of the Apache Software Foundation, Thrift 
encourages a collaborative and community-based development environment.</p>
 <p>All project discussion is carried out publicly, on the following archived 
lists.</p>
 <hr />
-<h3 id="user-mailing-list">User Mailing List</h3>
+<h3 id="user-mailing-list">User Mailing List<a class="headerlink" 
href="#user-mailing-list" title="Permanent link">&para;</a></h3>
 <p>If you use Apache Thrift, please subscribe to the Thrift user mailing list. 
This list is for questions about Thrift and announcements from the team 
relevant to all users</p>
 <p><a href="mailto:[email protected]";>Subscribe</a> | <a 
href="mailto:[email protected]";>Unsubscribe</a> | <a 
href="http://mail-archives.apache.org/mod_mbox/thrift-user";>View Archives</a> | 
<a href="http://mail-archives.apache.org/mod_mbox/incubator-thrift-user";>View 
Archives (Incubator)</a></p>
 <hr />
-<h3 id="developers-mailing-list">Developers Mailing List</h3>
+<h3 id="developers-mailing-list">Developers Mailing List<a class="headerlink" 
href="#developers-mailing-list" title="Permanent link">&para;</a></h3>
 <p>If you would like to contribute to Apache Thrift, subscribe to the Thrift 
developer mailing list.</p>
 <p><a href="mailto:[email protected]";>Subscribe</a> | <a 
href="mailto:[email protected]";>Unsubscribe</a> | <a 
href="http://mail-archives.apache.org/mod_mbox/thrift-dev";>View Archives</a> | 
<a href="http://mail-archives.apache.org/mod_mbox/incubator-thrift-dev";>View 
Archives (Incubator)</a></p>
 <hr />
-<h3 id="commits-mailing-list">Commits Mailing List</h3>
+<h3 id="commits-mailing-list">Commits Mailing List<a class="headerlink" 
href="#commits-mailing-list" title="Permanent link">&para;</a></h3>
 <p>This list receives notifications about all code changes made to Apache 
Thrift.</p>
 <p><a href="mailto:[email protected]";>Subscribe</a> | <a 
href="mailto:[email protected]";>Unsubscribe</a> | <a 
href="http://mail-archives.apache.org/mod_mbox/thrift-commits";>View 
Archives</a> | <a 
href="http://mail-archives.apache.org/mod_mbox/incubator-thrift-commits";>View 
Archives (Incubator)</a></p>
 <hr />
 <p>Note: subscription is required to post to all lists.</p>
-<h3 id="irc">IRC</h3>
+<h3 id="irc">IRC<a class="headerlink" href="#irc" title="Permanent 
link">&para;</a></h3>
 <p>Many of the Apache Thrift developers and community members hang out in the 
#thrift channel on irc.freenode.net.</p>
 <p>If you are new to IRC, you can use a client such as <a 
href="http://www.xchat.org";>xchat</a> or <a 
href="http://www.irssi.org";>Irssi</a> or a <a 
href="http://webchat.freenode.net/?channels=#thrift";>web-based client</a>.</p>
        </div>

Modified: websites/staging/thrift/trunk/content/sitemap.html
==============================================================================
--- websites/staging/thrift/trunk/content/sitemap.html (original)
+++ websites/staging/thrift/trunk/content/sitemap.html Sat Sep 26 12:54:26 2015
@@ -73,7 +73,18 @@
 </div>
 
        <div class="container">
-          <ul>
+          <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>
+<ul>
 <li><a href="/">Home</a><ul>
 <li><a href="/about">About</a></li>
 <li><a href="/developers">Developers</a></li>

Modified: websites/staging/thrift/trunk/content/test/ThriftTest.html
==============================================================================
--- websites/staging/thrift/trunk/content/test/ThriftTest.html (original)
+++ websites/staging/thrift/trunk/content/test/ThriftTest.html Sat Sep 26 
12:54:26 2015
@@ -73,7 +73,30 @@
 </div>
 
        <div class="container">
-          <table class="codehilitetable"><tr><td class="linenos"><div 
class="linenodiv"><pre>  1
+          <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>
+<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>
+
+<table class="codehilitetable"><tr><td class="linenos"><div 
class="linenodiv"><pre>  1
   2
   3
   4
@@ -458,7 +481,21 @@
 383
 384
 385
-386</pre></div></td><td class="code"><div class="codehilite"><pre>/*
+386
+387
+388
+389
+390
+391
+392
+393
+394
+395
+396
+397
+398
+399
+400</pre></div></td><td class="code"><div class="codehilite"><pre>/*
  * 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
@@ -604,6 +641,13 @@ service ThriftTest
   string       testString(1: string thing),
 
   /**
+   * Prints &#39;testBool(&quot;%s&quot;)&#39; where &#39;%s&#39; with thing 
as &#39;true&#39; or &#39;false&#39;
+   * @param bool  thing - the bool data to print
+   * @return bool  - returns the bool &#39;thing&#39;
+   */
+  bool         testBool(1: bool thing),
+
+  /**
    * Prints &#39;testByte(&quot;%d&quot;)&#39; with thing as &#39;%d&#39;
    * @param byte thing - the byte to print
    * @return byte - returns the byte &#39;thing&#39;
@@ -632,7 +676,14 @@ service ThriftTest
   double       testDouble(1: double thing),
 
   /**
-   * Prints &#39;testStruct(&quot;{%s}&quot;)&#39; where thing has been 
formatted into a string of comma seperated values
+   * Prints &#39;testBinary(&quot;%s&quot;)&#39; where &#39;%s&#39; is a 
hex-formatted string of thing&#39;s data
+   * @param binary  thing - the binary data to print
+   * @return binary  - returns the binary &#39;thing&#39;
+   */
+  binary       testBinary(1: binary thing),
+
+  /**
+   * Prints &#39;testStruct(&quot;{%s}&quot;)&#39; where thing has been 
formatted into a string of comma separated values
    * @param Xtruct thing - the Xtruct to print
    * @return Xtruct - returns the Xtruct &#39;thing&#39;
    */
@@ -647,7 +698,7 @@ service ThriftTest
 
   /**
    * Prints &#39;testMap(&quot;{%s&quot;)&#39; where thing has been formatted 
into a string of  &#39;key =&gt; value&#39; pairs
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param map&lt;i32,i32&gt; thing - the map&lt;i32,i32&gt; to print
    * @return map&lt;i32,i32&gt; - returns the map&lt;i32,i32&gt; 
&#39;thing&#39;
    */
@@ -655,7 +706,7 @@ service ThriftTest
 
   /**
    * Prints &#39;testStringMap(&quot;{%s}&quot;)&#39; where thing has been 
formatted into a string of  &#39;key =&gt; value&#39; pairs
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param map&lt;string,string&gt; thing - the map&lt;string,string&gt; to 
print
    * @return map&lt;string,string&gt; - returns the map&lt;string,string&gt; 
&#39;thing&#39;
    */
@@ -663,7 +714,7 @@ service ThriftTest
 
   /**
    * Prints &#39;testSet(&quot;{%s}&quot;)&#39; where thing has been formatted 
into a string of  values
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param set&lt;i32&gt; thing - the set&lt;i32&gt; to print
    * @return set&lt;i32&gt; - returns the set&lt;i32&gt; &#39;thing&#39;
    */
@@ -671,7 +722,7 @@ service ThriftTest
 
   /**
    * Prints &#39;testList(&quot;{%s}&quot;)&#39; where thing has been 
formatted into a string of  values
-   *  seperated by commas and new lines
+   *  separated by commas and new lines
    * @param list&lt;i32&gt; thing - the list&lt;i32&gt; to print
    * @return list&lt;i32&gt; - returns the list&lt;i32&gt; &#39;thing&#39;
    */

Modified: websites/staging/thrift/trunk/content/test/index.html
==============================================================================
--- websites/staging/thrift/trunk/content/test/index.html (original)
+++ websites/staging/thrift/trunk/content/test/index.html Sat Sep 26 12:54:26 
2015
@@ -73,43 +73,146 @@
 </div>
 
        <div class="container">
-          <h1 id="apache-thrift-integration-test-suite">Apache Thrift - 
integration test suite</h1>
-<p>This is the cross everything integration test suite for Apache Thrift.
-executed by</p>
+          <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>
+<h1 id="apache-thrift-integration-test-suite">Apache Thrift - integration test 
suite<a class="headerlink" href="#apache-thrift-integration-test-suite" 
title="Permanent link">&para;</a></h1>
+<p>This is the cross everything integration test suite for Apache Thrift.</p>
+<h2 id="run">Run<a class="headerlink" href="#run" title="Permanent 
link">&para;</a></h2>
+<h3 id="a-using-make">A. Using Make<a class="headerlink" href="#a-using-make" 
title="Permanent link">&para;</a></h3>
+<p>The test can be executed by:</p>
 <div class="codehilite"><pre><span class="n">make</span> <span 
class="nb">cross</span>
 </pre></div>
 
 
-<p>at the moment, this starts the test.sh script which does the real cross test
-with different transports, protocols and languages.</p>
-<p>Unit tests for languages ar usually located under lib/<lang>/test/
-cross language tests acording to <a href="ThriftTest">ThriftTest.thrift</a> 
shall be
+<p>This starts the <a href="test">test.py</a> script which does the real cross 
test with
+different transports, protocols and languages.</p>
+<p>Note that this skips any language that is not built locally. It also skips
+tests that are known to be failing. If you need more control over which tests
+to run, read following section.</p>
+<h3 id="b-using-test-script-directly">B. Using test script directly<a 
class="headerlink" href="#b-using-test-script-directly" title="Permanent 
link">&para;</a></h3>
+<p>Alternatively, you can invoke <a href="test">test.py</a> directly. You need 
to run<code>make
+precross</code> once before executing it for the first time.</p>
+<p>For example, if you changed something in <code>nodejs</code> library and 
need to verify
+the patch, you can skip everything except <code>nodejs</code> itself and some 
reference
+implementation (currently <code>cpp</code> and <code>java</code> are 
recommended) like this:</p>
+<div class="codehilite"><pre><span class="o">./</span><span 
class="n">configure</span> <span class="o">--</span><span 
class="n">without</span><span class="o">-</span><span class="n">c_glib</span> 
<span class="o">-</span><span class="n">without</span><span 
class="o">-</span><span class="n">csharp</span> <span class="o">--</span><span 
class="n">without</span><span class="o">-</span><span class="n">erlang</span> 
<span class="o">--</span><span class="n">without</span><span 
class="o">-</span><span class="n">lua</span> <span class="p">...</span>
+<span class="n">make</span> <span class="n">precross</span> <span 
class="o">-</span><span class="n">j8</span>
+<span class="n">test</span><span class="o">/</span><span 
class="n">test</span><span class="p">.</span><span class="n">py</span> <span 
class="o">--</span><span class="n">server</span> <span 
class="n">cpp</span><span class="p">,</span><span class="n">java</span> <span 
class="o">--</span><span class="n">client</span> <span class="n">nodejs</span>
+<span class="n">test</span><span class="o">/</span><span 
class="n">test</span><span class="p">.</span><span class="n">py</span> <span 
class="o">--</span><span class="n">server</span> <span class="n">nodejs</span> 
<span class="o">--</span><span class="n">client</span> <span 
class="n">cpp</span><span class="p">,</span><span class="n">java</span>
+</pre></div>
+
+
+<h2 id="test-case-definition-file">Test case definition file<a 
class="headerlink" href="#test-case-definition-file" title="Permanent 
link">&para;</a></h2>
+<p>The cross test cases are defined in <a href="tests">tests.json</a>.
+The root element is collection of test target definitions.
+Each test target definition looks like this:</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  &quot;<span class="n">name</span>&quot;<span class="p">:</span> &quot;<span 
class="n">somelib</span>&quot;<span class="p">,</span>
+
+  &quot;<span class="n">client</span>&quot;<span class="p">:</span> <span 
class="p">{</span>
+    &quot;<span class="n">command</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span 
class="n">somelib_client_executable</span>&quot;<span class="p">],</span>
+    &quot;<span class="n">workdir</span>&quot;<span class="p">:</span> 
&quot;<span class="n">somelib</span><span class="o">/</span><span 
class="n">bin</span>&quot;<span class="p">,</span>
+    &quot;<span class="n">protocols</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">binary</span>&quot;<span 
class="p">],</span>
+    &quot;<span class="n">transports</span>&quot;<span class="p">:</span> 
<span class="p">[</span>&quot;<span class="n">buffered</span>&quot;<span 
class="p">],</span>
+    &quot;<span class="n">sockets</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">ip</span>&quot;<span class="p">],</span>
+  <span class="p">},</span>
+  &quot;<span class="n">server</span>&quot;<span class="p">:</span> <span 
class="p">{</span>
+    &quot;<span class="n">command</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span 
class="n">somelib_server_executable</span>&quot;<span class="p">],</span>
+    &quot;<span class="n">workdir</span>&quot;<span class="p">:</span> 
&quot;<span class="n">somelib</span><span class="o">/</span><span 
class="n">bin</span>&quot;<span class="p">,</span>
+    &quot;<span class="n">protocols</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">binary</span>&quot;<span 
class="p">],</span>
+    &quot;<span class="n">transports</span>&quot;<span class="p">:</span> 
<span class="p">[</span>&quot;<span class="n">buffered</span>&quot;<span 
class="p">],</span>
+    &quot;<span class="n">sockets</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">ip</span>&quot;<span class="p">,</span> 
&quot;<span class="n">ip</span><span class="o">-</span><span 
class="n">ssl</span>&quot;<span class="p">],</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Either client or server definition or both should be present.</p>
+<p>Parameters that are common to both <code>client</code> and 
<code>server</code> can be put to target
+definition root:</p>
+<div class="codehilite"><pre><span class="p">{</span>
+  &quot;<span class="n">name</span>&quot;<span class="p">:</span> &quot;<span 
class="n">somelib</span>&quot;<span class="p">,</span>
+
+  &quot;<span class="n">workdir</span>&quot;<span class="p">:</span> 
&quot;<span class="n">somelib</span><span class="o">/</span><span 
class="n">bin</span>&quot;<span class="p">,</span>
+  &quot;<span class="n">protocols</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">binary</span>&quot;<span 
class="p">],</span>
+  &quot;<span class="n">transports</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">buffered</span>&quot;<span 
class="p">],</span>
+  &quot;<span class="n">sockets</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">ip</span>&quot;<span class="p">],</span>
+
+  &quot;<span class="n">client</span>&quot;<span class="p">:</span> <span 
class="p">{</span> &quot;<span class="n">command</span>&quot;<span 
class="p">:</span> <span class="p">[</span>&quot;<span 
class="n">somelib_client_executable</span>&quot;<span class="p">]</span> <span 
class="p">},</span>
+  &quot;<span class="n">server</span>&quot;<span class="p">:</span> <span 
class="p">{</span>
+    &quot;<span class="n">command</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span 
class="n">somelib_server_executable</span>&quot;<span class="p">],</span>
+    &quot;<span class="n">sockets</span>&quot;<span class="p">:</span> <span 
class="p">[</span>&quot;<span class="n">ip</span><span class="o">-</span><span 
class="n">ssl</span>&quot;<span class="p">]</span>
+  <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>For the complete list of supported keys and their effect, see source code
+comment at the opt of <a 
href="crossrunner/collect">crossrunner/collect.py</a>.</p>
+<h2 id="list-of-known-failures">List of known failures<a class="headerlink" 
href="#list-of-known-failures" title="Permanent link">&para;</a></h2>
+<p>Since many cross tests currently fail (mainly due to partial incompatibility
+around exception handling), the test script specifically report for "not known
+before" failures.</p>
+<p>For this purpose, test cases known to (occasionally) fail are listed in
+<code>known_failures_&lt;platform&gt;.json</code> where 
<code>&lt;platform&gt;</code> matches with python
+<code>platform.system()</code> string.</p>
+<p>Currently, only Linux version is included.</p>
+<p>FYI, the file is initially generated by</p>
+<div class="codehilite"><pre><span class="n">test</span><span 
class="o">/</span><span class="n">test</span><span class="p">.</span><span 
class="n">py</span> <span class="o">--</span><span class="n">update</span><span 
class="o">-</span><span class="n">expected</span><span class="o">-</span><span 
class="n">failures</span><span class="p">=</span><span 
class="n">overwrite</span>
+</pre></div>
+
+
+<p>after a full test run, then repeatedly</p>
+<div class="codehilite"><pre><span class="n">test</span><span 
class="o">/</span><span class="n">test</span><span class="p">.</span><span 
class="n">py</span> <span class="o">--</span><span class="n">skip</span><span 
class="o">-</span><span class="n">known</span><span class="o">-</span><span 
class="n">failures</span>
+<span class="n">test</span><span class="o">/</span><span 
class="n">test</span><span class="p">.</span><span class="n">py</span> <span 
class="o">--</span><span class="n">update</span><span class="o">-</span><span 
class="n">expected</span><span class="o">-</span><span 
class="n">failures</span><span class="p">=</span><span class="n">merge</span>
+</pre></div>
+
+
+<p>to update the known failures, run</p>
+<div class="codehilite"><pre><span class="n">make</span> <span 
class="n">fail</span>
+</pre></div>
+
+
+<h2 id="test-executable-specification">Test executable specification<a 
class="headerlink" href="#test-executable-specification" title="Permanent 
link">&para;</a></h2>
+<h3 id="command-line-parameters">Command line parameters<a class="headerlink" 
href="#command-line-parameters" title="Permanent link">&para;</a></h3>
+<p>Unit tests for languages are usually located under lib/<lang>/test/
+cross language tests according to <a href="ThriftTest">ThriftTest.thrift</a> 
shall be
 provided for every language including executables with the following command
-line interface for servers:</p>
+line interface:</p>
+<p><strong>Server command line interface:</strong></p>
 <div class="codehilite"><pre>$ <span class="o">./</span><span 
class="n">cpp</span><span class="o">/</span><span class="n">TestServer</span> 
<span class="o">-</span><span class="n">h</span>
 <span class="n">Allowed</span> <span class="n">options</span><span 
class="p">:</span>
   <span class="o">-</span><span class="n">h</span> <span class="p">[</span> 
<span class="o">--</span><span class="n">help</span> <span class="p">]</span>   
            <span class="n">produce</span> <span class="n">help</span> <span 
class="n">message</span>
   <span class="o">--</span><span class="n">port</span> <span 
class="n">arg</span> <span class="p">(=</span>9090<span class="p">)</span>      
    <span class="n">Port</span> <span class="n">number</span> <span 
class="n">to</span> <span class="n">listen</span>
   <span class="o">--</span><span class="n">domain</span><span 
class="o">-</span><span class="n">socket</span> <span class="n">arg</span>      
   <span class="n">Unix</span> <span class="n">Domain</span> <span 
class="n">Socket</span> <span class="p">(</span><span class="n">e</span><span 
class="p">.</span><span class="n">g</span><span class="p">.</span> <span 
class="o">/</span><span class="n">tmp</span><span class="o">/</span><span 
class="n">ThriftTest</span><span class="p">.</span><span 
class="n">thrift</span><span class="p">)</span>
   <span class="o">--</span><span class="n">named</span><span 
class="o">-</span><span class="n">pipe</span> <span class="n">arg</span>        
    <span class="n">Windows</span> <span class="n">Named</span> <span 
class="n">Pipe</span> <span class="p">(</span><span class="n">e</span><span 
class="p">.</span><span class="n">g</span><span class="p">.</span> <span 
class="n">MyThriftPipe</span><span class="p">)</span>
-  <span class="o">--</span><span class="n">server</span><span 
class="o">-</span><span class="n">type</span> <span class="n">arg</span> <span 
class="p">(=</span><span class="n">simple</span><span class="p">)</span> <span 
class="n">type</span> <span class="n">of</span> <span 
class="n">server</span><span class="p">,</span> &quot;<span 
class="n">simple</span>&quot;<span class="p">,</span> &quot;<span 
class="n">thread</span><span class="o">-</span><span 
class="n">pool</span>&quot;<span class="p">,</span> 
+  <span class="o">--</span><span class="n">server</span><span 
class="o">-</span><span class="n">type</span> <span class="n">arg</span> <span 
class="p">(=</span><span class="n">simple</span><span class="p">)</span> <span 
class="n">type</span> <span class="n">of</span> <span 
class="n">server</span><span class="p">,</span> &quot;<span 
class="n">simple</span>&quot;<span class="p">,</span> &quot;<span 
class="n">thread</span><span class="o">-</span><span 
class="n">pool</span>&quot;<span class="p">,</span>
                               &quot;<span class="n">threaded</span>&quot;<span 
class="p">,</span> <span class="n">or</span> &quot;<span 
class="n">nonblocking</span>&quot;
   <span class="o">--</span><span class="n">transport</span> <span 
class="n">arg</span> <span class="p">(=</span><span 
class="n">buffered</span><span class="p">)</span> <span 
class="n">transport</span><span class="p">:</span> <span 
class="n">buffered</span><span class="p">,</span> <span 
class="n">framed</span><span class="p">,</span> <span 
class="n">http</span><span class="p">,</span> <span class="n">anonpipe</span>
   <span class="o">--</span><span class="n">protocol</span> <span 
class="n">arg</span> <span class="p">(=</span><span 
class="n">binary</span><span class="p">)</span>    <span 
class="n">protocol</span><span class="p">:</span> <span 
class="n">binary</span><span class="p">,</span> <span 
class="n">compact</span><span class="p">,</span> <span class="n">json</span>
   <span class="o">--</span><span class="n">ssl</span>                       
<span class="n">Encrypted</span> <span class="n">Transport</span> <span 
class="n">using</span> <span class="n">SSL</span>
   <span class="o">--</span><span class="n">processor</span><span 
class="o">-</span><span class="k">events</span>          <span 
class="n">processor</span><span class="o">-</span><span class="k">events</span>
-  <span class="o">-</span><span class="n">n</span> <span class="p">[</span> 
<span class="o">--</span><span class="n">workers</span> <span 
class="p">]</span> <span class="n">arg</span> <span class="p">(=</span>4<span 
class="p">)</span>   <span class="n">Number</span> <span class="n">of</span> 
<span class="n">thread</span> <span class="n">pools</span> <span 
class="n">workers</span><span class="p">.</span> <span class="n">Only</span> 
<span class="n">valid</span> <span class="k">for</span> 
+  <span class="o">-</span><span class="n">n</span> <span class="p">[</span> 
<span class="o">--</span><span class="n">workers</span> <span 
class="p">]</span> <span class="n">arg</span> <span class="p">(=</span>4<span 
class="p">)</span>   <span class="n">Number</span> <span class="n">of</span> 
<span class="n">thread</span> <span class="n">pools</span> <span 
class="n">workers</span><span class="p">.</span> <span class="n">Only</span> 
<span class="n">valid</span> <span class="k">for</span>
                           <span class="n">thread</span><span 
class="o">-</span><span class="n">pool</span> <span class="n">server</span> 
<span class="n">type</span>
 </pre></div>
 
 
-<p>and this for clients:</p>
+<p><strong>Client command line interface:</strong></p>
 <div class="codehilite"><pre>$ <span class="o">./</span><span 
class="n">cpp</span><span class="o">/</span><span class="n">TestClient</span> 
<span class="o">-</span><span class="n">h</span>
 <span class="n">Allowed</span> <span class="n">options</span><span 
class="p">:</span>
   <span class="o">-</span><span class="n">h</span> <span class="p">[</span> 
<span class="o">--</span><span class="n">help</span> <span class="p">]</span>   
            <span class="n">produce</span> <span class="n">help</span> <span 
class="n">message</span>
   <span class="o">--</span><span class="n">host</span> <span 
class="n">arg</span> <span class="p">(=</span><span 
class="n">localhost</span><span class="p">)</span>     <span 
class="n">Host</span> <span class="n">to</span> <span class="n">connect</span>
   <span class="o">--</span><span class="n">port</span> <span 
class="n">arg</span> <span class="p">(=</span>9090<span class="p">)</span>      
    <span class="n">Port</span> <span class="n">number</span> <span 
class="n">to</span> <span class="n">connect</span>
-  <span class="o">--</span><span class="n">domain</span><span 
class="o">-</span><span class="n">socket</span> <span class="n">arg</span>      
   <span class="n">Domain</span> <span class="n">Socket</span> <span 
class="p">(</span><span class="n">e</span><span class="p">.</span><span 
class="n">g</span><span class="p">.</span> <span class="o">/</span><span 
class="n">tmp</span><span class="o">/</span><span 
class="n">ThriftTest</span><span class="p">.</span><span 
class="n">thrift</span><span class="p">),</span> 
+  <span class="o">--</span><span class="n">domain</span><span 
class="o">-</span><span class="n">socket</span> <span class="n">arg</span>      
   <span class="n">Domain</span> <span class="n">Socket</span> <span 
class="p">(</span><span class="n">e</span><span class="p">.</span><span 
class="n">g</span><span class="p">.</span> <span class="o">/</span><span 
class="n">tmp</span><span class="o">/</span><span 
class="n">ThriftTest</span><span class="p">.</span><span 
class="n">thrift</span><span class="p">),</span>
                               <span class="n">instead</span> <span 
class="n">of</span> <span class="n">host</span> <span class="n">and</span> 
<span class="n">port</span>
   <span class="o">--</span><span class="n">named</span><span 
class="o">-</span><span class="n">pipe</span> <span class="n">arg</span>        
    <span class="n">Windows</span> <span class="n">Named</span> <span 
class="n">Pipe</span> <span class="p">(</span><span class="n">e</span><span 
class="p">.</span><span class="n">g</span><span class="p">.</span> <span 
class="n">MyThriftPipe</span><span class="p">)</span>
   <span class="o">--</span><span class="n">anon</span><span 
class="o">-</span><span class="n">pipes</span> <span class="n">hRead</span> 
<span class="n">hWrite</span>   <span class="n">Windows</span> <span 
class="n">Anonymous</span> <span class="n">Pipes</span> <span 
class="n">pair</span> <span class="p">(</span><span 
class="n">handles</span><span class="p">)</span>
@@ -123,8 +226,9 @@ line interface for servers:</p>
 
 <p>If you have executed the <strong>make check</strong> or <strong>make 
cross</strong> then you will be able to browse
 <a href="gen-html/ThriftTest">gen-html/ThriftTest.html</a> with the test 
documentation.</p>
-<p>The return code (exit code) shall be 0 on success, or an integer in the 
range 1 - 255 on errors. 
-In order to signal failed tests, the return code shall be composed from these 
bits to indicate 
+<h3 id="return-code">Return code<a class="headerlink" href="#return-code" 
title="Permanent link">&para;</a></h3>
+<p>The return code (exit code) shall be 0 on success, or an integer in the 
range 1 - 255 on errors.
+In order to signal failed tests, the return code shall be composed from these 
bits to indicate
 failing tests:</p>
 <div class="codehilite"><pre>  <span class="c">#define TEST_BASETYPES     1  
// 0000 0001</span>
   <span class="c">#define TEST_STRUCTS       2  // 0000 0010</span>
@@ -135,12 +239,12 @@ failing tests:</p>
 
 
 <p>Tests that have not been executed at all count as errors.</p>
-<h3 id="example">Example:</h3>
-<p>During tests, the test client notices that some of the Struct tests fail. 
-Furthermore, due to some other problem none of the Exception tests is 
executed. 
-Therefore, the test client returns the code <code>10 = 2 | 8</code>, 
indicating the failure 
-of both test 2 (TEST_STRUCTS) and test 8 (TEST_EXCEPTIONS). </p>
-<h2 id="ssl">SSL</h2>
+<p><strong>Example:</strong></p>
+<p>During tests, the test client notices that some of the Struct tests fail.
+Furthermore, due to some other problem none of the Exception tests is executed.
+Therefore, the test client returns the code <code>10 = 2 | 8</code>, 
indicating the failure
+of both test 2 (TEST_STRUCTS) and test 8 (TEST_EXCEPTIONS).</p>
+<h2 id="ssl">SSL<a class="headerlink" href="#ssl" title="Permanent 
link">&para;</a></h2>
 <p>Test Keys and Certificates are provided in multiple formats under the 
following
 directory <a href="keys">test/keys</a></p>
 <p class='snippet_footer'>

Modified: websites/staging/thrift/trunk/content/test/keys.html
==============================================================================
--- websites/staging/thrift/trunk/content/test/keys.html (original)
+++ websites/staging/thrift/trunk/content/test/keys.html Sat Sep 26 12:54:26 
2015
@@ -73,7 +73,18 @@
 </div>
 
        <div class="container">
-          <h1 id="test-keys-and-certificates">Test Keys and Certificates</h1>
+          <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>
+<h1 id="test-keys-and-certificates">Test Keys and Certificates<a 
class="headerlink" href="#test-keys-and-certificates" title="Permanent 
link">&para;</a></h1>
 <p>This folder is dedicated to test keys and certificates provided in multiple 
formats.
 Primary use are unit test suites and cross language tests.</p>
 <div class="codehilite"><pre><span class="n">test</span><span 
class="o">/</span><span class="n">keys</span>
@@ -81,8 +92,8 @@ Primary use are unit test suites and cro
 
 
 <p><strong>The files in this directory must never be used on production 
systems.</strong></p>
-<h2 id="ssl-keys-and-certificates">SSL Keys and Certificates</h2>
-<h2 id="create-certificates">create certificates</h2>
+<h2 id="ssl-keys-and-certificates">SSL Keys and Certificates<a 
class="headerlink" href="#ssl-keys-and-certificates" title="Permanent 
link">&para;</a></h2>
+<h2 id="create-certificates">create certificates<a class="headerlink" 
href="#create-certificates" title="Permanent link">&para;</a></h2>
 <p>we use the following parameters for test key and certificate creation</p>
 <div class="codehilite"><pre><span class="n">C</span><span 
class="p">=</span><span class="n">US</span><span class="p">,</span>
 <span class="n">ST</span><span class="p">=</span><span 
class="n">Maryland</span><span class="p">,</span>
@@ -93,7 +104,7 @@ Primary use are unit test suites and cro
 </pre></div>
 
 
-<h3 id="create-self-signed-server-key-and-certificate">create self-signed 
server key and certificate</h3>
+<h3 id="create-self-signed-server-key-and-certificate">create self-signed 
server key and certificate<a class="headerlink" 
href="#create-self-signed-server-key-and-certificate" title="Permanent 
link">&para;</a></h3>
 <div class="codehilite"><pre><span class="n">openssl</span> <span 
class="n">req</span> <span class="o">-</span><span class="n">new</span> <span 
class="o">-</span><span class="n">x509</span> <span class="o">-</span><span 
class="n">nodes</span>  <span class="o">-</span><span class="n">days</span> 
3000 <span class="o">-</span><span class="n">out</span> <span 
class="n">server</span><span class="p">.</span><span class="n">crt</span> <span 
class="o">-</span><span class="n">keyout</span> <span 
class="n">server</span><span class="p">.</span><span class="n">key</span>
 <span class="n">openssl</span> <span class="n">x509</span> <span 
class="o">-</span><span class="n">in</span> <span class="n">server</span><span 
class="p">.</span><span class="n">crt</span> <span class="o">-</span><span 
class="n">text</span> <span class="o">&gt;</span> <span 
class="n">CA</span><span class="p">.</span><span class="n">pem</span>
 <span class="nb">cat</span> <span class="n">server</span><span 
class="p">.</span><span class="n">crt</span> <span class="n">server</span><span 
class="p">.</span><span class="n">key</span> <span class="o">&gt;</span> <span 
class="n">server</span><span class="p">.</span><span class="n">pem</span>
@@ -105,7 +116,7 @@ Primary use are unit test suites and cro
 </pre></div>
 
 
-<h3 id="create-client-key-and-certificate">create client key and 
certificate</h3>
+<h3 id="create-client-key-and-certificate">create client key and certificate<a 
class="headerlink" href="#create-client-key-and-certificate" title="Permanent 
link">&para;</a></h3>
 <div class="codehilite"><pre><span class="n">openssl</span> <span 
class="n">genrsa</span> <span class="o">-</span><span class="n">out</span> 
<span class="n">client</span><span class="p">.</span><span class="n">key</span>
 </pre></div>
 
@@ -130,7 +141,7 @@ Primary use are unit test suites and cro
 </pre></div>
 
 
-<h2 id="java-key-and-certificate-import">Java key and certificate import</h2>
+<h2 id="java-key-and-certificate-import">Java key and certificate import<a 
class="headerlink" href="#java-key-and-certificate-import" title="Permanent 
link">&para;</a></h2>
 <p>Java Test Environment uses key and trust store password 
<strong>thrift</strong></p>
 <p>list keystore entries</p>
 <div class="codehilite"><pre><span class="n">keytool</span> <span 
class="o">-</span><span class="n">list</span> <span class="o">-</span><span 
class="n">storepass</span> <span class="n">thrift</span> <span 
class="o">-</span><span class="n">keystore</span> <span class="p">.</span><span 
class="o">./</span><span class="p">.</span><span class="o">./</span><span 
class="n">lib</span><span class="o">/</span><span class="n">java</span><span 
class="o">/</span><span class="n">test</span><span class="o">/</span><span 
class="p">.</span><span class="n">keystore</span>
@@ -157,7 +168,7 @@ Primary use are unit test suites and cro
 </pre></div>
 
 
-<h1 id="test-ssl-server-and-clients">Test SSL server and clients</h1>
+<h1 id="test-ssl-server-and-clients">Test SSL server and clients<a 
class="headerlink" href="#test-ssl-server-and-clients" title="Permanent 
link">&para;</a></h1>
 <div class="codehilite"><pre><span class="n">openssl</span> <span 
class="n">s_client</span> <span class="o">-</span><span 
class="n">connect</span> <span class="n">localhost</span><span 
class="p">:</span>9090
 <span class="n">openssl</span> <span class="n">s_server</span> <span 
class="o">-</span><span class="n">accept</span> 9090 <span 
class="o">-</span><span class="n">www</span>
 </pre></div>

Modified: websites/staging/thrift/trunk/content/tutorial/as3.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/as3.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/as3.html Sat Sep 26 12:54:26 
2015
@@ -73,9 +73,20 @@
 </div>
 
        <div class="container">
-          <h2 id="actionscript-30-tutorial">Actionscript 3.0 Tutorial</h2>
+          <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>
+<h2 id="actionscript-30-tutorial">Actionscript 3.0 Tutorial<a 
class="headerlink" href="#actionscript-30-tutorial" title="Permanent 
link">&para;</a></h2>
 <hr />
-<h3 id="introduction">Introduction</h3>
+<h3 id="introduction">Introduction<a class="headerlink" href="#introduction" 
title="Permanent link">&para;</a></h3>
 <p>All Apache Thrift tutorials require that you have:</p>
 <ol>
 <li>Built and installed the Apache Thrift Compiler and Libraries, see <a 
href="/docs/BuildingFromSource">Building from source</a> for more details.</li>
@@ -90,10 +101,21 @@
 <p>Followed all prerequisites listed below.</p>
 </li>
 </ol>
-<h3 id="prerequisites">Prerequisites</h3>
-<h3 id="client">Client</h3>
+<h3 id="prerequisites">Prerequisites<a class="headerlink" 
href="#prerequisites" title="Permanent link">&para;</a></h3>
+<h3 id="client">Client<a class="headerlink" href="#client" title="Permanent 
link">&para;</a></h3>
 <p>To initialize client you can use code similar to:</p>
-<p><div class="codehilite"><pre>    <span class="kd">private</span> <span 
class="n">function</span> <span class="nf">initConnection</span><span 
class="o">():</span><span class="kt">void</span> <span class="o">{</span>
+<p><style type="text/css">
+/<em> The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css 
</em>/
+/<em>
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ </em>/
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover &gt; .headerlink, h3:hover &gt; .headerlink, h1:hover &gt; 
.headerlink, h6:hover &gt; .headerlink, h4:hover &gt; .headerlink, h5:hover 
&gt; .headerlink, dt:hover &gt; .elementid-permalink { visibility: visible 
}</style>
+<div class="codehilite"><pre>    <span class="kd">private</span> <span 
class="n">function</span> <span class="nf">initConnection</span><span 
class="o">():</span><span class="kt">void</span> <span class="o">{</span>
       <span class="n">mTransport</span> <span class="o">=</span> <span 
class="k">new</span> <span class="n">TSocket</span><span 
class="o">(</span><span class="s">&quot;127.0.0.1&quot;</span><span 
class="o">,</span> <span class="mi">9090</span><span class="o">);</span> <span 
class="c1">// we connect to server</span>
       <span class="n">mTransport</span><span class="o">.</span><span 
class="na">open</span><span class="o">();</span>
       <span class="c1">// initialize protocol:</span>
@@ -105,12 +127,12 @@
   This snippet was generated by Apache Thrift's <strong>source tree 
docs</strong>:
   <a 
href="http://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob;f=tutorial/as3/src/CalculatorUI.as;hb=HEAD";</a>tutorial/as3/src/CalculatorUI.as</a>
 </p></p>
-<h3 id="server">Server</h3>
+<h3 id="server">Server<a class="headerlink" href="#server" title="Permanent 
link">&para;</a></h3>
 <p>The example client above can be tested against a java tutorial server.</p>
-<h3 id="additional-information">Additional Information</h3>
+<h3 id="additional-information">Additional Information<a class="headerlink" 
href="#additional-information" title="Permanent link">&para;</a></h3>
 <p>You might find server failing due to out of memory exception. This might 
happen because of flash crossdomain policy. See
 next passage on how to fix this.</p>
-<h3 id="flash-crossdomain-policy">Flash crossdomain policy</h3>
+<h3 id="flash-crossdomain-policy">Flash crossdomain policy<a 
class="headerlink" href="#flash-crossdomain-policy" title="Permanent 
link">&para;</a></h3>
 <p>Flash does not allow movies to connect to arbitrary servers. This is done 
for security reasons. To override this
 restriction, however, servers' owners can create special file - crossdomain 
xml file, which lists the rules according to
 which some flash movies can connect to the server.</p>
@@ -119,7 +141,18 @@ which some flash movies can connect to t
 Also, you can find a simple python/perl server script to serve this file 
there. For same host, you can serve
 crossdomain.xml from any port. So, you can start your RPC servers on ports 
9090 and 9091, and serve polisy file from
 port 9092. To tell flash about this, you can use code from tutorial file:</p>
-<p><div class="codehilite"><pre>    <span class="kd">private</span> <span 
class="n">function</span> <span class="nf">initSecurity</span><span 
class="o">():</span><span class="kt">void</span> <span class="o">{</span>
+<p><style type="text/css">
+/<em> The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css 
</em>/
+/<em>
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ </em>/
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover &gt; .headerlink, h3:hover &gt; .headerlink, h1:hover &gt; 
.headerlink, h6:hover &gt; .headerlink, h4:hover &gt; .headerlink, h5:hover 
&gt; .headerlink, dt:hover &gt; .elementid-permalink { visibility: visible 
}</style>
+<div class="codehilite"><pre>    <span class="kd">private</span> <span 
class="n">function</span> <span class="nf">initSecurity</span><span 
class="o">():</span><span class="kt">void</span> <span class="o">{</span>
       <span class="n">Security</span><span class="o">.</span><span 
class="na">loadPolicyFile</span><span class="o">(</span><span 
class="s">&quot;xmlsocket://127.0.0.1:9092&quot;</span><span class="o">);</span>
     <span class="o">}</span>
 </pre></div>

Modified: websites/staging/thrift/trunk/content/tutorial/c_glib.html
==============================================================================
--- websites/staging/thrift/trunk/content/tutorial/c_glib.html (original)
+++ websites/staging/thrift/trunk/content/tutorial/c_glib.html Sat Sep 26 
12:54:26 2015
@@ -73,9 +73,20 @@
 </div>
 
        <div class="container">
-          <h2 id="c_glib-tutorial">c_glib Tutorial</h2>
+          <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>
+<h2 id="c_glib-tutorial">c_glib Tutorial<a class="headerlink" 
href="#c_glib-tutorial" title="Permanent link">&para;</a></h2>
 <hr />
-<h3 id="introduction">Introduction</h3>
+<h3 id="introduction">Introduction<a class="headerlink" href="#introduction" 
title="Permanent link">&para;</a></h3>
 <p>All Apache Thrift tutorials require that you have:</p>
 <ol>
 <li>Built and installed the Apache Thrift Compiler and Libraries, see <a 
href="/docs/BuildingFromSource">Building from source</a> for more details.</li>
@@ -90,7 +101,19 @@
 <p>Followed all prerequisites listed below.</p>
 </li>
 </ol>
-<h3 id="client">Client</h3>
+<h3 id="client">Client<a class="headerlink" href="#client" title="Permanent 
link">&para;</a></h3>
+<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>
+
 <div class="codehilite"><pre><span class="cp">#include &lt;stdio.h&gt;</span>
 <span class="cp">#include &lt;glib-object.h&gt;</span>
 
@@ -269,7 +292,19 @@
   <a 
href="http://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob;f=tutorial/c_glib/c_glib_client.c;hb=HEAD";</a>tutorial/c_glib/c_glib_client.c</a>
 </p>
 
-<h3 id="server">Server</h3>
+<h3 id="server">Server<a class="headerlink" href="#server" title="Permanent 
link">&para;</a></h3>
+<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>
+
 <div class="codehilite"><pre><span class="cp">#include 
&lt;glib-object.h&gt;</span>
 <span class="cp">#include &lt;signal.h&gt;</span>
 <span class="cp">#include &lt;stdio.h&gt;</span>
@@ -353,7 +388,7 @@
 
 <span class="n">G_DEFINE_TYPE</span> <span class="p">(</span><span 
class="n">TutorialCalculatorHandler</span><span class="p">,</span>
                <span class="n">tutorial_calculator_handler</span><span 
class="p">,</span>
-               <span class="n">TYPE_CALCULATOR_HANDLER</span><span 
class="p">);</span>
+               <span class="n">TYPE_CALCULATOR_HANDLER</span><span 
class="p">)</span>
 
 <span class="cm">/* Each of a handler&#39;s methods accepts at least two 
parameters: A</span>
 <span class="cm">   pointer to the service-interface implementation (the 
handler object</span>
@@ -365,7 +400,7 @@
 <span class="cm">   set. (Methods should not return FALSE without first 
setting the</span>
 <span class="cm">   error parameter.) */</span>
 <span class="k">static</span> <span class="n">gboolean</span>
-<span class="nf">tutorial_calculator_handler_ping</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
+<span class="n">tutorial_calculator_handler_ping</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
                                   <span class="n">GError</span>       <span 
class="o">**</span><span class="n">error</span><span class="p">)</span>
 <span class="p">{</span>
   <span class="n">THRIFT_UNUSED_VAR</span> <span class="p">(</span><span 
class="n">iface</span><span class="p">);</span>
@@ -389,7 +424,7 @@
 <span class="cm">   list *_return will point to a pre-allocated data structure 
that</span>
 <span class="cm">   does not need to be re-allocated and should not be 
destroyed. */</span>
 <span class="k">static</span> <span class="n">gboolean</span>
-<span class="nf">tutorial_calculator_handler_add</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
+<span class="n">tutorial_calculator_handler_add</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
                                  <span class="n">gint32</span>        <span 
class="o">*</span><span class="n">_return</span><span class="p">,</span>
                                  <span class="k">const</span> <span 
class="n">gint32</span>   <span class="n">num1</span><span class="p">,</span>
                                  <span class="k">const</span> <span 
class="n">gint32</span>   <span class="n">num2</span><span class="p">,</span>
@@ -419,15 +454,13 @@
 <span class="cm">   Unlike return values, exception objects are never 
pre-created; this</span>
 <span class="cm">   is always the responsibility of the handler method. 
*/</span>
 <span class="k">static</span> <span class="n">gboolean</span>
-<span class="nf">tutorial_calculator_handler_calculate</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>      <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
+<span class="n">tutorial_calculator_handler_calculate</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>      <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
                                        <span class="n">gint32</span>           
 <span class="o">*</span><span class="n">_return</span><span class="p">,</span>
                                        <span class="k">const</span> <span 
class="n">gint32</span>       <span class="n">logid</span><span 
class="p">,</span>
                                        <span class="k">const</span> <span 
class="n">Work</span>        <span class="o">*</span><span 
class="n">w</span><span class="p">,</span>
                                        <span class="n">InvalidOperation</span> 
<span class="o">**</span><span class="n">ouch</span><span class="p">,</span>
                                        <span class="n">GError</span>           
<span class="o">**</span><span class="n">error</span><span class="p">)</span>
 <span class="p">{</span>
-  <span class="n">THRIFT_UNUSED_VAR</span> <span class="p">(</span><span 
class="n">error</span><span class="p">);</span>
-
   <span class="n">TutorialCalculatorHandler</span> <span 
class="o">*</span><span class="n">self</span><span class="p">;</span>
 
   <span class="n">gint</span> <span class="o">*</span><span 
class="n">log_key</span><span class="p">;</span>
@@ -439,6 +472,8 @@
   <span class="n">Operation</span> <span class="n">op</span><span 
class="p">;</span>
   <span class="n">gboolean</span> <span class="n">result</span> <span 
class="o">=</span> <span class="n">TRUE</span><span class="p">;</span>
 
+  <span class="n">THRIFT_UNUSED_VAR</span> <span class="p">(</span><span 
class="n">error</span><span class="p">);</span>
+
   <span class="n">g_return_val_if_fail</span> <span class="p">(</span><span 
class="n">IS_TUTORIAL_CALCULATOR_HANDLER</span> <span class="p">(</span><span 
class="n">iface</span><span class="p">),</span>
                         <span class="n">FALSE</span><span class="p">);</span>
   <span class="n">self</span> <span class="o">=</span> <span 
class="n">TUTORIAL_CALCULATOR_HANDLER</span> <span class="p">(</span><span 
class="n">iface</span><span class="p">);</span>
@@ -528,7 +563,7 @@
 <span class="cm">/* A one-way method has the same signature as an equivalent, 
regular</span>
 <span class="cm">   method that returns no value. */</span>
 <span class="k">static</span> <span class="n">gboolean</span>
-<span class="nf">tutorial_calculator_handler_zip</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
+<span class="n">tutorial_calculator_handler_zip</span> <span 
class="p">(</span><span class="n">CalculatorIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
                                  <span class="n">GError</span>       <span 
class="o">**</span><span class="n">error</span><span class="p">)</span>
 <span class="p">{</span>
   <span class="n">THRIFT_UNUSED_VAR</span> <span class="p">(</span><span 
class="n">iface</span><span class="p">);</span>
@@ -548,19 +583,19 @@
 <span class="cm">   Here we provide an implementation for the getStruct method 
from the</span>
 <span class="cm">   parent service. */</span>
 <span class="k">static</span> <span class="n">gboolean</span>
-<span class="nf">tutorial_calculator_handler_get_struct</span> <span 
class="p">(</span><span class="n">SharedServiceIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
+<span class="n">tutorial_calculator_handler_get_struct</span> <span 
class="p">(</span><span class="n">SharedServiceIf</span>  <span 
class="o">*</span><span class="n">iface</span><span class="p">,</span>
                                         <span class="n">SharedStruct</span>    
<span class="o">**</span><span class="n">_return</span><span class="p">,</span>
                                         <span class="k">const</span> <span 
class="n">gint32</span>      <span class="n">key32</span><span 
class="p">,</span>
                                         <span class="n">GError</span>          
<span class="o">**</span><span class="n">error</span><span class="p">)</span>
 <span class="p">{</span>
-  <span class="n">THRIFT_UNUSED_VAR</span> <span class="p">(</span><span 
class="n">error</span><span class="p">);</span>
-
   <span class="n">gint</span> <span class="n">key</span> <span 
class="o">=</span> <span class="p">(</span><span class="n">gint</span><span 
class="p">)</span><span class="n">key32</span><span class="p">;</span>
   <span class="n">TutorialCalculatorHandler</span> <span 
class="o">*</span><span class="n">self</span><span class="p">;</span>
   <span class="n">SharedStruct</span> <span class="o">*</span><span 
class="n">log_struct</span><span class="p">;</span>
   <span class="n">gint</span> <span class="n">log_key</span><span 
class="p">;</span>
   <span class="n">gchar</span> <span class="o">*</span><span 
class="n">log_value</span><span class="p">;</span>
 
+  <span class="n">THRIFT_UNUSED_VAR</span> <span class="p">(</span><span 
class="n">error</span><span class="p">);</span>
+
   <span class="n">g_return_val_if_fail</span> <span class="p">(</span><span 
class="n">IS_TUTORIAL_CALCULATOR_HANDLER</span> <span class="p">(</span><span 
class="n">iface</span><span class="p">),</span>
                         <span class="n">FALSE</span><span class="p">);</span>
   <span class="n">self</span> <span class="o">=</span> <span 
class="n">TUTORIAL_CALCULATOR_HANDLER</span> <span class="p">(</span><span 
class="n">iface</span><span class="p">);</span>
@@ -598,7 +633,7 @@
 
 <span class="cm">/* TutorialCalculatorHandler&#39;s instance finalizer 
(destructor) */</span>
 <span class="k">static</span> <span class="kt">void</span>
-<span class="nf">tutorial_calculator_handler_finalize</span> <span 
class="p">(</span><span class="n">GObject</span> <span class="o">*</span><span 
class="n">object</span><span class="p">)</span>
+<span class="n">tutorial_calculator_handler_finalize</span> <span 
class="p">(</span><span class="n">GObject</span> <span class="o">*</span><span 
class="n">object</span><span class="p">)</span>
 <span class="p">{</span>
   <span class="n">TutorialCalculatorHandler</span> <span 
class="o">*</span><span class="n">self</span> <span class="o">=</span>
     <span class="n">TUTORIAL_CALCULATOR_HANDLER</span> <span 
class="p">(</span><span class="n">object</span><span class="p">);</span>
@@ -614,7 +649,7 @@
 
 <span class="cm">/* TutorialCalculatorHandler&#39;s instance initializer 
(constructor) */</span>
 <span class="k">static</span> <span class="kt">void</span>
-<span class="nf">tutorial_calculator_handler_init</span> <span 
class="p">(</span><span class="n">TutorialCalculatorHandler</span> <span 
class="o">*</span><span class="n">self</span><span class="p">)</span>
+<span class="n">tutorial_calculator_handler_init</span> <span 
class="p">(</span><span class="n">TutorialCalculatorHandler</span> <span 
class="o">*</span><span class="n">self</span><span class="p">)</span>
 <span class="p">{</span>
   <span class="cm">/* Create our calculation-log hash table */</span>
   <span class="n">self</span><span class="o">-&gt;</span><span 
class="n">log</span> <span class="o">=</span> <span 
class="n">g_hash_table_new_full</span> <span class="p">(</span><span 
class="n">g_int_hash</span><span class="p">,</span>
@@ -625,7 +660,7 @@
 
 <span class="cm">/* TutorialCalculatorHandler&#39;s class initializer */</span>
 <span class="k">static</span> <span class="kt">void</span>
-<span class="nf">tutorial_calculator_handler_class_init</span> <span 
class="p">(</span><span class="n">TutorialCalculatorHandlerClass</span> <span 
class="o">*</span><span class="n">klass</span><span class="p">)</span>
+<span class="n">tutorial_calculator_handler_class_init</span> <span 
class="p">(</span><span class="n">TutorialCalculatorHandlerClass</span> <span 
class="o">*</span><span class="n">klass</span><span class="p">)</span>
 <span class="p">{</span>
   <span class="n">GObjectClass</span> <span class="o">*</span><span 
class="n">gobject_class</span> <span class="o">=</span> <span 
class="n">G_OBJECT_CLASS</span> <span class="p">(</span><span 
class="n">klass</span><span class="p">);</span>
   <span class="n">SharedServiceHandlerClass</span> <span 
class="o">*</span><span class="n">shared_service_handler_class</span> <span 
class="o">=</span>
@@ -693,7 +728,7 @@
 
   <span class="k">struct</span> <span class="n">sigaction</span> <span 
class="n">sigint_action</span><span class="p">;</span>
 
-  <span class="n">GError</span> <span class="o">*</span><span 
class="n">error</span><span class="p">;</span>
+  <span class="n">GError</span> <span class="o">*</span><span 
class="n">error</span> <span class="o">=</span> <span 
class="nb">NULL</span><span class="p">;</span>
   <span class="kt">int</span> <span class="n">exit_status</span> <span 
class="o">=</span> <span class="mi">0</span><span class="p">;</span>
 
 <span class="cp">#if (!GLIB_CHECK_VERSION (2, 36, 0))</span>


Reply via email to