blob: 6c8b815a49c957ae3663564d38d23cf2dc3dd277 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Apache TomEE</title>
<meta name="description"
content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." />
<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
<meta name="author" content="Luka Cvetinovic for Codrops" />
<link rel="icon" href="../favicon.ico">
<link rel="icon" type="image/png" href="../favicon.png">
<meta name="msapplication-TileColor" content="#80287a">
<meta name="theme-color" content="#80287a">
<link rel="stylesheet" type="text/css" href="../css/normalize.css">
<link rel="stylesheet" type="text/css" href="../css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="../css/owl.css">
<link rel="stylesheet" type="text/css" href="../css/animate.css">
<link rel="stylesheet" type="text/css" href="../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="../fonts/eleganticons/et-icons.css">
<link rel="stylesheet" type="text/css" href="../css/jqtree.css">
<link rel="stylesheet" type="text/css" href="../css/idea.css">
<link rel="stylesheet" type="text/css" href="../css/cardio.css">
<script type="text/javascript">
<!-- Matomo -->
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function () {
var u = "//matomo.privacy.apache.org/";
_paq.push(['setTrackerUrl', u + 'matomo.php']);
_paq.push(['setSiteId', '5']);
var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0];
g.async = true;
g.src = u + 'matomo.js';
s.parentNode.insertBefore(g, s);
})();
<!-- End Matomo Code -->
</script>
</head>
<body>
<div class="preloader">
<img src="../img/loader.gif" alt="Preloader image">
</div>
<nav class="navbar">
<div class="container">
<div class="row"> <div class="col-md-12">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/" title="Apache TomEE">
<span>
<img
src="../img/apache_tomee-logo.svg"
onerror="this.src='../img/apache_tomee-logo.jpg'"
height="50"
>
</span>
</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right main-nav">
<li><a href="../docs.html">Documentation</a></li>
<li><a href="../community/index.html">Community</a></li>
<li><a href="../security/security.html">Security</a></li>
<li><a class="btn btn-accent accent-orange no-shadow" href="../download.html">Downloads</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div></div>
</div>
<!-- /.container-fluid -->
</nav>
<div id="main-block" class="container main-block">
<div class="row title">
<div class="col-md-12">
<div class='page-header'>
<h1>Arquillian Test Porting Initiative</h1>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<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>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_unite_the_armies_to_fight_the_bugs">Unite the Armies to fight the Bugs!</h2>
<div class="sectionbody">
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<p>There&#8217;s a saying that if it isn&#8217;t documented it doesn&#8217;t exist.
Likely more true is that if it isn&#8217;t tested it it might as well not exist, documentation or not.</p>
</div>
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<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>
</div>
<div class="paragraph">
<p>Such a thing has never been done at the ASF.
Be ready to blaze some trails and be a pioneer.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_kingdoms">The Kingdoms</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are far more than 3,000 test classes we could port across the various projects, each using it&#8217;s own flavor of home-made setup code.
The coverage is also not what you&#8217;d expect.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Activemq 1281</p>
</li>
<li>
<p>CXF 979</p>
</li>
<li>
<p>TomEE 802</p>
</li>
<li>
<p>OpenEJB 215</p>
</li>
<li>
<p>MyFaces 171</p>
</li>
<li>
<p>OpenWebBeans 165</p>
</li>
<li>
<p>Bval 56</p>
</li>
<li>
<p>OpenJPA 33</p>
</li>
<li>
<p>Tomcat 20</p>
</li>
</ul>
</div>
<div class="paragraph">
<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>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_generals_needed">Generals Needed</h2>
<div class="sectionbody">
<div class="paragraph">
<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&#8217;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&#8201;&#8212;&#8201;aka.
they get busy :)</p>
</div>
<div class="paragraph">
<p>Even with 300 people each contributing 10 tests each, it&#8217;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>
</div>
<div class="paragraph">
<p>Porting 50 tests yourself is impressive.
Leading the charge on 500 tests being ported is astonishing.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_early_stage">Early stage</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The tests in question are located more or less here:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/activemq/trunk" class="bare">http://svn.apache.org/repos/asf/activemq/trunk</a></p>
</li>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/bval/trunk" class="bare">http://svn.apache.org/repos/asf/bval/trunk</a></p>
</li>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/cxf/trunk" class="bare">http://svn.apache.org/repos/asf/cxf/trunk</a></p>
</li>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/myfaces/core/trunk" class="bare">http://svn.apache.org/repos/asf/myfaces/core/trunk</a></p>
</li>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/tomee/tomee/trunk/itests" class="bare">http://svn.apache.org/repos/asf/tomee/tomee/trunk/itests</a></p>
</li>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/openjpa/branches/2.2.x" class="bare">http://svn.apache.org/repos/asf/openjpa/branches/2.2.x</a></p>
</li>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/openwebbeans/trunk" class="bare">http://svn.apache.org/repos/asf/openwebbeans/trunk</a></p>
</li>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk" class="bare">http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk</a></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>While not part of TomEE, Wink has some wonderful JAX-RS tests we could use:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>svn co <a href="http://svn.apache.org/repos/asf/wink/trunk" class="bare">http://svn.apache.org/repos/asf/wink/trunk</a></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>At this stage there&#8217;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>
</div>
<div class="paragraph">
<p>The call goes out to all you would-be Generals!</p>
</div>
<div class="paragraph">
<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&#8217;s a JIRA we can use to move the discussion along:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="https://issues.apache.org/jira/browse/TOMEE-746" class="bare">https://issues.apache.org/jira/browse/TOMEE-746</a></p>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="margin-bottom: 30px;"></div>
<footer>
<div class="container">
<div class="row">
<div class="col-sm-6 text-center-mobile">
<h3 class="white">Be simple. Be certified. Be Tomcat.</h3>
<h5 class="light regular light-white">"A good application in a good server"</h5>
<ul class="social-footer">
<li><a href="https://www.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
</ul>
<h5 class="light regular light-white">
<a href="../privacy-policy.html" class="white">Privacy Policy</a>
</h5>
</div>
<div class="col-sm-6 text-center-mobile">
<div class="row opening-hours">
<div class="col-sm-3 text-center-mobile">
<h5><a href="../latest/docs/" class="white">Documentation</a></h5>
<ul class="list-unstyled">
<li><a href="../latest/docs/admin/configuration/index.html" class="regular light-white">How to configure</a></li>
<li><a href="../latest/docs/admin/file-layout.html" class="regular light-white">Dir. Structure</a></li>
<li><a href="../latest/docs/developer/testing/index.html" class="regular light-white">Testing</a></li>
<li><a href="../latest/docs/admin/cluster/index.html" class="regular light-white">Clustering</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../latest/examples/" class="white">Examples</a></h5>
<ul class="list-unstyled">
<li><a href="../latest/examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li>
<li><a href="../latest/examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li>
<li><a href="../latest/examples/ejb-examples.html" class="regular light-white">EJB</a></li>
<li><a href="../latest/examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../community/index.html" class="white">Community</a></h5>
<ul class="list-unstyled">
<li><a href="../community/contributors.html" class="regular light-white">Contributors</a></li>
<li><a href="../community/social.html" class="regular light-white">Social</a></li>
<li><a href="../community/sources.html" class="regular light-white">Sources</a></li>
</ul>
</div>
<div class="col-sm-3 text-center-mobile">
<h5><a href="../security/index.html" class="white">Security</a></h5>
<ul class="list-unstyled">
<li><a href="https://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
<li><a href="https://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
<li><a href="https://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="row bottom-footer text-center-mobile">
<div class="col-sm-12 light-white">
<p>Copyright &copy; 1999-2022 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>
</div>
</div>
</div>
</footer>
<!-- Holder for mobile navigation -->
<div class="mobile-nav">
<ul>
<li><a hef="../latest/docs/admin/index.html">Administrators</a>
<li><a hef="../latest/docs/developer/index.html">Developers</a>
<li><a hef="../latest/docs/advanced/index.html">Advanced</a>
<li><a hef="../community/index.html">Community</a>
</ul>
<a href="#" class="close-link"><i class="arrow_up"></i></a>
</div>
<!-- Scripts -->
<script src="../js/jquery-1.11.1.min.js"></script>
<script src="../js/owl.carousel.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/wow.min.js"></script>
<script src="../js/typewriter.js"></script>
<script src="../js/jquery.onepagenav.js"></script>
<script src="../js/tree.jquery.js"></script>
<script src="../js/highlight.pack.js"></script>
<script src="../js/main.js"></script>
</body>
</html>