blob: 6013e5c6c7a55bb60876ad7eab11d5f593744a29 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Arquillian Test Porting Initiative</title>
<meta name="description" content="Apache TomEE">
<meta name="author" content="Apache TomEE">
<meta name="google-translate-customization" content="f36a520c08f4c9-0a04e86a9c075ce9-g265f3196f697cf8f-10">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate, max-age=0">
<!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- Le styles -->
<link href="./../resources/css/bootstrap.css" rel="stylesheet">
<link href="./../resources/css/prettify.css" rel="stylesheet">
<!--link href="./../resources/css/bootstrap-mods.css" rel="stylesheet"-->
<link href="./../resources/css/main.css" rel="stylesheet">
<link href="./../resources/font-awesome-4.6.3/css/font-awesome.min.css" rel="stylesheet">
<script type="text/javascript">
var t = encodeURIComponent(document.title.replace(/^\s+|\s+$/g,""));
var u = encodeURIComponent(""+document.URL);
function fbshare () {
window.open(
"http://www.facebook.com/sharer/sharer.php?u="+u,
'Share on Facebook',
'width=640,height=426');
};
function gpshare () {
window.open(
"https://plus.google.com/share?url="+u,
'Share on Google+',
'width=584,height=385');
};
function twshare () {
window.open(
"https://twitter.com/intent/tweet?url="+u+"&text="+t,
'Share on Twitter',
'width=800,height=526');
};
function pinshare () {
window.open("//www.pinterest.com/pin/create/button/?url="+u+"&media=http%3A%2F%2Ftomee.apache.org%2Fresources%2Fimages%2Ffeather-logo.png&description="+t,
'Share on Pinterest',
'width=800,height=526');
};
</script>
<!-- Le fav and touch icons -->
<link rel="shortcut icon" href="./../favicon.ico">
<link rel="apple-touch-icon" href="./../resources/images/apple-touch-icon.png">
<link rel="apple-touch-icon" sizes="72x72" href="./../resources/images/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="114x114" href="./../resources/images/apple-touch-icon-114x114.png">
<script src="./../resources/js/prettify.js" type="text/javascript"></script>
<script src="./../resources/js/jquery-latest.js"></script>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
<script src="./../resources/js/common.js"></script>
<script src="./../resources/js/prettyprint.js"></script>
<!--script src="//assets.pinterest.com/js/pinit.js" type="text/javascript" async></script//-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-2717626-1']);
_gaq.push(['_setDomainName', 'apache.org']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<div class="topbar" data-dropdown="dropdown">
<div class="fill">
<div class="container">
<a class="brand" href="./../index.html">Apache TomEE</a>
<ul class="nav">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
Apache
<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<!-- <li><a href="./../misc/whoweare.html">Who we are?</a></li> -->
<!-- <li><a href="./../misc/heritage.html">Heritage</a></li> -->
<li><a href="http://www.apache.org">Apache Home</a></li>
<!-- <li><a href="./../misc/resources.html">Resources</a></li> -->
<li><a href="./../misc/contact.html">Contact</a></li>
<li><a href="./../misc/legal.html">Legal</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li class="divider"/>
<li><a href="http://www.apache.org/security">Security</a></li>
</ul>
</li>
<li><a href="./../index.html">Home</a></li>
<li><a href="./../downloads.html">Downloads</a></li>
<li><a href="./../documentation.html">Documentation</a></li>
<li><a href="./../examples-trunk/index.html">Examples</a></li>
<li><a href="./../support.html">Support</a></li>
<li><a href="./../contribute.html">Contribute</a></li>
<li><a href="./../security/index.html">Security</a></li>
</ul>
<!-- Google CSE Search Box Begins -->
<FORM class="pull-right" id="searchbox_010475492895890475512:_t4iqjrgx90" action="http://www.google.com/cse">
<INPUT type="hidden" name="cx" value="010475492895890475512:_t4iqjrgx90">
<INPUT type="hidden" name="cof" value="FORID:0">
<INPUT size="18" width="130" style="width:130px" name="q" type="text" placeholder="Search">
</FORM>
<!--<SCRIPT type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_010475492895890475512:_t4iqjrgx90"></SCRIPT>-->
<!-- Google CSE Search Box Ends -->
</div>
</div>
</div>
<div class="container">
<div class="page-header">
<small><a href="./../index.html">Home</a>&nbsp;&raquo&nbsp;<a href="./../dev/">Dev</a></small><br>
<h1>Arquillian Test Porting Initiative
<div style="float: right; position: relative; bottom: -10px; ">
<a onclick="javascript:gpshare()" class="gp-share sprite" title="Share on Google+">share [gp]</a>
<a onclick="javascript:fbshare()" class="fb-share sprite" title="Share on Facebook">share [fb]</a>
<a onclick="javascript:twshare()" class="tw-share sprite" title="Share on Twitter">share [tw]</a>
<a onclick="javascript:pinshare()" class="pin-share sprite" title="Share on Pinterest">share [pin]</a>
<a data-toggle="modal" href="#edit" class="edit-page" title="Contribute to this Page">contribute</a>
</div>
</h1>
</div>
<p>First things, first. You can contribute your ideas by clicking the blue pencile icon in the upper right. Edit this page and help shape the initiative!</p>
<h1>Unite the Armies to fight the Bugs!</h1>
<p>Testing is the most crucial part of any project. A project that incorporates as much functionality as TomEE does needs a <em>lot</em> of tests.</p>
<p>There's a saying that if it isn't documented it doesn't exist. Likely more true is that if it isn't tested it it might as well not exist,
documentation or not.</p>
<p>The simple truth is many of the critical tests that apply to functionality in TomEE actuall exist, but are spread across the numberous projects
that TomEE incorporates. Just as TomEE is about unifying and integrating all these projects together, the same vision and initative
must be given into unifying and integrating all these tests.</p>
<p>If we could port them all to a common testing framework like Arquillian and consolidate them all into one codebase, the result would be nothing short
of a marvel. An unparalleled feat.</p>
<p>Such a thing has never been done at the ASF. Be ready to blaze some trails and be a pioneer.</p>
<h1>The Kingdoms</h1>
<p>There are far more than 3,000 test classes we could port across the various projects, each using it's own flavor of home-made setup code.
The coverage is also not what you'd expect.</p>
<ul>
<li>Activemq 1281</li>
<li>CXF 979</li>
<li>TomEE 802</li>
<li>OpenEJB 215</li>
<li>MyFaces 171</li>
<li>OpenWebBeans 165</li>
<li>Bval 56</li>
<li>OpenJPA 33</li>
<li>Tomcat 20</li>
</ul>
<p>The above results are no dount eye-opening. In all fairness, the projects with so few test are not as "untested" as they appear, they simply rely more heavily
on the proprietary Java EE TCK which is closed source. This is adequate, but not fantastic. <strong>An open source project should have open tests.</strong></p>
<h1>Generals Needed</h1>
<p>This is no small feet. With over 3,000 tests porting them all is not realistc. If we had 10 people working full time, that's till 300 tests each person
would need to port. This simply is not realistic. More realistic would be for a person to port say 10 tests before they get an injury and need to leave the
battlefield with hopes of joining the glorious fight another day -- aka. they get busy :)</p>
<p>Even with 300 people each contributing 10 tests each, it's still quite a lot of patches for a small team to apply. Organizing 300 people and shaping an initiative
like this is als no small feat. What we need are Generals. Individuals to survey the land and plan attacks with small groups of soldiers.</p>
<p>Porting 50 tests yourself is impressive. Leading the charge on 500 tests being ported is astonishing.</p>
<h1>Early stage</h1>
<p>The tests in question are located more or less here:</p>
<ul>
<li>svn co http://svn.apache.org/repos/asf/activemq/trunk</li>
<li>svn co http://svn.apache.org/repos/asf/bval/trunk</li>
<li>svn co http://svn.apache.org/repos/asf/cxf/trunk</li>
<li>svn co http://svn.apache.org/repos/asf/myfaces/core/trunk</li>
<li>svn co http://svn.apache.org/repos/asf/tomee/tomee/trunk/itests</li>
<li>svn co http://svn.apache.org/repos/asf/openjpa/branches/2.2.x</li>
<li>svn co http://svn.apache.org/repos/asf/openwebbeans/trunk</li>
<li>svn co http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk</li>
</ul>
<p>While not part of TomEE, Wink has some wonderful JAX-RS tests we could use:</p>
<ul>
<li>svn co http://svn.apache.org/repos/asf/wink/trunk</li>
</ul>
<p>At this stage there's still quite a lot of information needed to mobilize the troops. How to write Arquillian tests, which tests are most important, how should
they be divided?</p>
<p>The call goes out to all you would-be Generals!</p>
<p>Any mode of cooperation is acceptable. Discussions on the <code>dev (at) tomee.apache.org</code> list welcome. This document can be edited by anyone. As well there's a
JIRA we can use to move the discussion along:</p>
<ul>
<li>https://issues.apache.org/jira/browse/TOMEE-746</li>
</ul>
<div id="edit" class="modal hide fade in" style="display: none; ">
<div class="modal-header">
<a class="close" data-dismiss="modal">x</a>
<h3>Thank you for contributing to the documentation!</h3>
</div>
<div class="modal-body">
<h4>Any help with the documentation is greatly appreciated.</h4>
<p>All edits are reviewed before going live, so feel free to do much more than fix typos or links. If you see a page that could benefit from an entire rewrite, we'd be thrilled to review it. Don't be surprised if we like it so much we ask you for help with other pages :)</p>
<small>NOTICE: unless indicated otherwise on the pages in question, all editable content available from apache.org is presumed to be licensed under the Apache License (AL) version 2.0 and hence all submissions to apache.org treated as formal Contributions under the license terms.</small>
<!--[if gt IE 6]>
<h4>Internet Explorer Users</h4>
<p>If you are not an Apache committer, click the Yes link and enter a <i>anonymous</i> for the username and leave the password empty</p>
<![endif]-->
</div>
<div class="modal-footer">
Do you have an Apache ID?
<a href="javascript:void(location.href='https://cms.apache.org/redirect?uri='+escape(location.href))" class="btn">Yes</a>
<a href="javascript:void(location.href='https://anonymous:@cms.apache.org/redirect?uri='+escape(location.href))" class="btn">No</a>
</div>
</div>
<script src="./../resources/js/bootstrap-modal.js"></script>
<footer>
<p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.
Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation.
All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
</footer>
</div> <!-- /container -->
<!-- Javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="./../resources/js/bootstrap-dropdown.js"></script>
</body>
</html>