Author: manaRH Date: 2013-10-15 07:52:55 -0400 (Tue, 15 Oct 2013) New Revision: 15618
Modified: branches/enterprise/WFK-2_1/examples/booking/README.html branches/enterprise/WFK-2_1/examples/booking/README.md branches/enterprise/WFK-2_1/examples/booking/booking-ear/pom.xml Log: https://issues.jboss.org/browse/WFK2-106 added openshift profile into booking example Modified: branches/enterprise/WFK-2_1/examples/booking/README.html =================================================================== --- branches/enterprise/WFK-2_1/examples/booking/README.html 2013-10-14 08:53:38 UTC (rev 15617) +++ branches/enterprise/WFK-2_1/examples/booking/README.html 2013-10-15 11:52:55 UTC (rev 15618) @@ -1,124 +1,944 @@ -<h1>Seam Booking Example</h1> - -<p>This example demonstrates the use of Seam in a Java EE 6 environment. -Transaction and persistence context management is handled by the EJB container. This example runs on JBoss AS as an EAR.</p> - -<h2>Running the example</h2> - -<h3>Using Maven</h3> - -<p>To deploy the example to a running JBoss AS instance, follow these steps:</p> - -<ol> -<li><p>In the example root directory run:</p> - -<pre><code>mvn clean install -</code></pre></li> -<li><p>Set JBOSS_HOME environment property.</p></li> -<li><p>In the booking-ear directory run:</p> - -<pre><code>mvn jboss-as:deploy -</code></pre></li> -<li><p>Open this URL in a web browser: http://localhost:8080/seam-booking</p></li> -</ol> - -<h3>Using Ant</h3> - -<ol> -<li><p>In the example root directory run:</p> - -<p>ant clean package</p></li> -<li><p>Copy <code>seam-booking.ear</code> from directory <code>booking-ear/target</code> to the deployment directory of JBoss AS <code>($JBOSS_HOME/standalone/deployments</code> by default)</p></li> -<li><p>Open this URL in a web browser: <code>http://localhost:8080/seam-booking</code></p></li> -</ol> - -<h2>Testing the example</h2> - -<p>This example is covered by integration and functional tests. All tests use the following technologies:</p> - -<ul> -<li><strong>Arquillian</strong> - as the framework for EE testing, for managing of container lifecycle and deployment of test archive,</li> -<li><strong>ShrinkWrap</strong> - to create the test archive (WAR).</li> -</ul> - -<h3>Integration tests</h3> - -<p>Integration tests cover core application logic and reside in the EJB module. In addition to Arquillian and ShrinkWrap, the integration tests also use:</p> - -<ul> -<li><strong>JUnitSeamTest</strong> - to hook into the JSF lifecycle and assert server-side state,</li> -<li><strong>ShrinkWrap Resolver</strong> - to resolve dependencies of the project for packaging in the test archive.</li> -</ul> - -<p>The tests are executed in Maven's test phase. By default they are skipped and can be executed on JBoss AS with:</p> - -<pre><code>mvn clean test -Darquillian=jbossas-managed-7 -</code></pre> - -<p>The <code>JBOSS_HOME</code> environment variable must be set and point to a JBoss AS instance directory.</p> - -<p>To test on a running server, use</p> - -<pre><code>mvn clean test -Darquillian=jbossas-remote-7 -</code></pre> - -<h4>Using Ant</h4> - -<p>In the example root directory run:</p> - -<pre><code>ant clean test -</code></pre> - -<h3>Functional tests</h3> - -<p>Functional tests are located in a separate project and are not executed during the build of the example. They test the built archive in an application server through browser-testing. They use:</p> - -<ul> -<li><strong>Arquillian Graphene Extension</strong> - an advanced Ajax-capable type-safe Selenium-based browser testing tool,</li> -<li><strong>Arquillian Drone Extension</strong> - to automatically run and stop browser instances.</li> -</ul> - -<p><em>Note: It is necessary to first build and package the example, because the functional test references the built archive for automatic deployment to the server.</em></p> - -<p>Run the functional test on JBoss AS instance with</p> - -<pre><code>mvn -f booking-ftest/pom.xml clean test -</code></pre> - -<p>The <code>JBOSS_HOME</code> environment variable must be set and point to a JBoss AS instance directory.</p> - -<p>Several variables can be configured:</p> - -<ul> -<li><p>path to an alternative archive for testing</p> - -<pre><code>-DtestDeployment=/path/to/archive.ear -</code></pre></li> -<li><p>the browser to use for testing</p> - -<pre><code>-Dbrowser=htmlUnit -</code></pre></li> -<li><p>test on a running server</p> - -<pre><code>-Dremote -</code></pre></li> -</ul> - -<h2>Testing in JBDS</h2> - -<h3>Integration tests</h3> - -<ol> -<li><p>Open JBDS and start a configured instance of JBoss AS</p></li> -<li><p>Import the example project and its submodules</p></li> -<li><p>In the <em>Project Explorer</em>, select the EJB module project, then</p> - -<ol> -<li>Type <code>Ctrl+Alt+P</code> (<em>Select Maven Profiles</em>) and check <code>integration-tests</code> and <code>arq-jbossas-7-remote</code></li> -<li>Right-click the module and select <em>Run As</em> - <em>JUnit Test</em></li> -</ol></li> -</ol> - -<h3>Functional tests</h3> - -<p>It is not possible to run the functional tests of this example in JBDS, because they use the maven-dependency-plugin to copy test classes from a different maven artifact, which is not a configuration supported by JBDS.</p> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" /> +<meta name="generator" content="AsciiDoc 8.6.7" /> +<title></title> +<style type="text/css"> +/* Shared CSS for AsciiDoc xhtml11 and html5 backends */ + +/* Default font. */ +body { + font-family: Georgia,serif; +} + +/* Title font. */ +h1, h2, h3, h4, h5, h6, +div.title, caption.title, +thead, p.table.header, +#toctitle, +#author, #revnumber, #revdate, #revremark, +#footer { + font-family: Arial,Helvetica,sans-serif; +} + +body { + margin: 1em 5% 1em 5%; +} + +a { + color: blue; + text-decoration: underline; +} +a:visited { + color: fuchsia; +} + +em { + font-style: italic; + color: navy; +} + +strong { + font-weight: bold; + color: #083194; +} + +h1, h2, h3, h4, h5, h6 { + color: #527bbd; + margin-top: 1.2em; + margin-bottom: 0.5em; + line-height: 1.3; +} + +h1, h2, h3 { + border-bottom: 2px solid silver; +} +h2 { + padding-top: 0.5em; +} +h3 { + float: left; +} +h3 + * { + clear: left; +} +h5 { + font-size: 1.0em; +} + +div.sectionbody { + margin-left: 0; +} + +hr { + border: 1px solid silver; +} + +p { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +ul, ol, li > p { + margin-top: 0; +} +ul > li { color: #aaa; } +ul > li > * { color: black; } + +pre { + padding: 0; + margin: 0; +} + +#author { + color: #527bbd; + font-weight: bold; + font-size: 1.1em; +} +#email { +} +#revnumber, #revdate, #revremark { +} + +#footer { + font-size: small; + border-top: 2px solid silver; + padding-top: 0.5em; + margin-top: 4.0em; +} +#footer-text { + float: left; + padding-bottom: 0.5em; +} +#footer-badges { + float: right; + padding-bottom: 0.5em; +} + +#preamble { + margin-top: 1.5em; + margin-bottom: 1.5em; +} +div.imageblock, div.exampleblock, div.verseblock, +div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, +div.admonitionblock { + margin-top: 1.0em; + margin-bottom: 1.5em; +} +div.admonitionblock { + margin-top: 2.0em; + margin-bottom: 2.0em; + margin-right: 10%; + color: #606060; +} + +div.content { /* Block element content. */ + padding: 0; +} + +/* Block element titles. */ +div.title, caption.title { + color: #527bbd; + font-weight: bold; + text-align: left; + margin-top: 1.0em; + margin-bottom: 0.5em; +} +div.title + * { + margin-top: 0; +} + +td div.title:first-child { + margin-top: 0.0em; +} +div.content div.title:first-child { + margin-top: 0.0em; +} +div.content + div.title { + margin-top: 0.0em; +} + +div.sidebarblock > div.content { + background: #ffffee; + border: 1px solid #dddddd; + border-left: 4px solid #f0f0f0; + padding: 0.5em; +} + +div.listingblock > div.content { + border: 1px solid #dddddd; + border-left: 5px solid #f0f0f0; + background: #f8f8f8; + padding: 0.5em; +} + +div.quoteblock, div.verseblock { + padding-left: 1.0em; + margin-left: 1.0em; + margin-right: 10%; + border-left: 5px solid #f0f0f0; + color: #888; +} + +div.quoteblock > div.attribution { + padding-top: 0.5em; + text-align: right; +} + +div.verseblock > pre.content { + font-family: inherit; + font-size: inherit; +} +div.verseblock > div.attribution { + padding-top: 0.75em; + text-align: left; +} +/* DEPRECATED: Pre version 8.2.7 verse style literal block. */ +div.verseblock + div.attribution { + text-align: left; +} + +div.admonitionblock .icon { + vertical-align: top; + font-size: 1.1em; + font-weight: bold; + text-decoration: underline; + color: #527bbd; + padding-right: 0.5em; +} +div.admonitionblock td.content { + padding-left: 0.5em; + border-left: 3px solid #dddddd; +} + +div.exampleblock > div.content { + border-left: 3px solid #dddddd; + padding-left: 0.5em; +} + +div.imageblock div.content { padding-left: 0; } +span.image img { border-style: none; } +a.image:visited { color: white; } + +dl { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +dt { + margin-top: 0.5em; + margin-bottom: 0; + font-style: normal; + color: navy; +} +dd > *:first-child { + margin-top: 0.1em; +} + +ul, ol { + list-style-position: outside; +} +ol.arabic { + list-style-type: decimal; +} +ol.loweralpha { + list-style-type: lower-alpha; +} +ol.upperalpha { + list-style-type: upper-alpha; +} +ol.lowerroman { + list-style-type: lower-roman; +} +ol.upperroman { + list-style-type: upper-roman; +} + +div.compact ul, div.compact ol, +div.compact p, div.compact p, +div.compact div, div.compact div { + margin-top: 0.1em; + margin-bottom: 0.1em; +} + +tfoot { + font-weight: bold; +} +td > div.verse { + white-space: pre; +} + +div.hdlist { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +div.hdlist tr { + padding-bottom: 15px; +} +dt.hdlist1.strong, td.hdlist1.strong { + font-weight: bold; +} +td.hdlist1 { + vertical-align: top; + font-style: normal; + padding-right: 0.8em; + color: navy; +} +td.hdlist2 { + vertical-align: top; +} +div.hdlist.compact tr { + margin: 0; + padding-bottom: 0; +} + +.comment { + background: yellow; +} + +.footnote, .footnoteref { + font-size: 0.8em; +} + +span.footnote, span.footnoteref { + vertical-align: super; +} + +#footnotes { + margin: 20px 0 20px 0; + padding: 7px 0 0 0; +} + +#footnotes div.footnote { + margin: 0 0 5px 0; +} + +#footnotes hr { + border: none; + border-top: 1px solid silver; + height: 1px; + text-align: left; + margin-left: 0; + width: 20%; + min-width: 100px; +} + +div.colist td { + padding-right: 0.5em; + padding-bottom: 0.3em; + vertical-align: top; +} +div.colist td img { + margin-top: 0.3em; +} + +@media print { + #footer-badges { display: none; } +} + +#toc { + margin-bottom: 2.5em; +} + +#toctitle { + color: #527bbd; + font-size: 1.1em; + font-weight: bold; + margin-top: 1.0em; + margin-bottom: 0.1em; +} + +div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { + margin-top: 0; + margin-bottom: 0; +} +div.toclevel2 { + margin-left: 2em; + font-size: 0.9em; +} +div.toclevel3 { + margin-left: 4em; + font-size: 0.9em; +} +div.toclevel4 { + margin-left: 6em; + font-size: 0.9em; +} + +span.aqua { color: aqua; } +span.black { color: black; } +span.blue { color: blue; } +span.fuchsia { color: fuchsia; } +span.gray { color: gray; } +span.green { color: green; } +span.lime { color: lime; } +span.maroon { color: maroon; } +span.navy { color: navy; } +span.olive { color: olive; } +span.purple { color: purple; } +span.red { color: red; } +span.silver { color: silver; } +span.teal { color: teal; } +span.white { color: white; } +span.yellow { color: yellow; } + +span.aqua-background { background: aqua; } +span.black-background { background: black; } +span.blue-background { background: blue; } +span.fuchsia-background { background: fuchsia; } +span.gray-background { background: gray; } +span.green-background { background: green; } +span.lime-background { background: lime; } +span.maroon-background { background: maroon; } +span.navy-background { background: navy; } +span.olive-background { background: olive; } +span.purple-background { background: purple; } +span.red-background { background: red; } +span.silver-background { background: silver; } +span.teal-background { background: teal; } +span.white-background { background: white; } +span.yellow-background { background: yellow; } + +span.big { font-size: 2em; } +span.small { font-size: 0.6em; } + +span.underline { text-decoration: underline; } +span.overline { text-decoration: overline; } +span.line-through { text-decoration: line-through; } + +div.unbreakable { page-break-inside: avoid; } + + +/* + * xhtml11 specific + * + * */ + +tt { + font-family: "Courier New", Courier, monospace; + font-size: inherit; + color: navy; +} + +div.tableblock { + margin-top: 1.0em; + margin-bottom: 1.5em; +} +div.tableblock > table { + border: 3px solid #527bbd; +} +thead, p.table.header { + font-weight: bold; + color: #527bbd; +} +p.table { + margin-top: 0; +} +/* Because the table frame attribute is overriden by CSS in most browsers. */ +div.tableblock > table[frame="void"] { + border-style: none; +} +div.tableblock > table[frame="hsides"] { + border-left-style: none; + border-right-style: none; +} +div.tableblock > table[frame="vsides"] { + border-top-style: none; + border-bottom-style: none; +} + + +/* + * html5 specific + * + * */ + +.monospaced { + font-family: "Courier New", Courier, monospace; + font-size: inherit; + color: navy; +} + +table.tableblock { + margin-top: 1.0em; + margin-bottom: 1.5em; +} +thead, p.tableblock.header { + font-weight: bold; + color: #527bbd; +} +p.tableblock { + margin-top: 0; +} +table.tableblock { + border-width: 3px; + border-spacing: 0px; + border-style: solid; + border-color: #527bbd; + border-collapse: collapse; +} +th.tableblock, td.tableblock { + border-width: 1px; + padding: 4px; + border-style: solid; + border-color: #527bbd; +} + +table.tableblock.frame-topbot { + border-left-style: hidden; + border-right-style: hidden; +} +table.tableblock.frame-sides { + border-top-style: hidden; + border-bottom-style: hidden; +} +table.tableblock.frame-none { + border-style: hidden; +} + +th.tableblock.halign-left, td.tableblock.halign-left { + text-align: left; +} +th.tableblock.halign-center, td.tableblock.halign-center { + text-align: center; +} +th.tableblock.halign-right, td.tableblock.halign-right { + text-align: right; +} + +th.tableblock.valign-top, td.tableblock.valign-top { + vertical-align: top; +} +th.tableblock.valign-middle, td.tableblock.valign-middle { + vertical-align: middle; +} +th.tableblock.valign-bottom, td.tableblock.valign-bottom { + vertical-align: bottom; +} + + +/* + * manpage specific + * + * */ + +body.manpage h1 { + padding-top: 0.5em; + padding-bottom: 0.5em; + border-top: 2px solid silver; + border-bottom: 2px solid silver; +} +body.manpage h2 { + border-style: none; +} +body.manpage div.sectionbody { + margin-left: 3em; +} + +@media print { + body.manpage div#toc { display: none; } +} +</style> +<script type="text/javascript"> +/*<+'])'); + // Function that scans the DOM tree for header elements (the DOM2 + // nodeIterator API would be a better technique but not supported by all + // browsers). + var iterate = function (el) { + for (var i = el.firstChild; i != null; i = i.nextSibling) { + if (i.nodeType == 1 /* Node.ELEMENT_NODE */) { + var mo = re.exec(i.tagName); + if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") { + result[result.length] = new TocEntry(i, getText(i), mo[1]-1); + } + iterate(i); + } + } + } + iterate(el); + return result; + } + + var toc = document.getElementById("toc"); + if (!toc) { + return; + } + + // Delete existing TOC entries in case we're reloading the TOC. + var tocEntriesToRemove = []; + var i; + for (i = 0; i < toc.childNodes.length; i++) { + var entry = toc.childNodes[i]; + if (entry.nodeName.toLowerCase() == 'div' + && entry.getAttribute("class") + && entry.getAttribute("class").match(/^toclevel/)) + tocEntriesToRemove.push(entry); + } + for (i = 0; i < tocEntriesToRemove.length; i++) { + toc.removeChild(tocEntriesToRemove[i]); + } + + // Rebuild TOC entries. + var entries = tocEntries(document.getElementById("content"), toclevels); + for (var i = 0; i < entries.length; ++i) { + var entry = entries[i]; + if (entry.element.id == "") + entry.element.id = "_toc_" + i; + var a = document.createElement("a"); + a.href = "#" + entry.element.id; + a.appendChild(document.createTextNode(entry.text)); + var div = document.createElement("div"); + div.appendChild(a); + div.className = "toclevel" + entry.toclevel; + toc.appendChild(div); + } + if (entries.length == 0) + toc.parentNode.removeChild(toc); +}, + + +///////////////////////////////////////////////////////////////////// +// Footnotes generator +///////////////////////////////////////////////////////////////////// + +/* Based on footnote generation code from: + * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html + */ + +footnotes: function () { + // Delete existing footnote entries in case we're reloading the footnodes. + var i; + var noteholder = document.getElementById("footnotes"); + if (!noteholder) { + return; + } + var entriesToRemove = []; + for (i = 0; i < noteholder.childNodes.length; i++) { + var entry = noteholder.childNodes[i]; + if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote") + entriesToRemove.push(entry); + } + for (i = 0; i < entriesToRemove.length; i++) { + noteholder.removeChild(entriesToRemove[i]); + } + + // Rebuild footnote entries. + var cont = document.getElementById("content"); + var spans = cont.getElementsByTagName("span"); + var refs = {}; + var n = 0; + for (i=0; i<spans.length; i++) { + if (spans[i].className == "footnote") { + n++; + var note = spans[i].getAttribute("data-note"); + if (!note) { + // Use [\s\S] in place of . so multi-line matches work. + // Because JavaScript has no s (dotall) regex flag. + note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1]; + spans[i].innerHTML = + "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n + + "' title='View footnote' class='footnote'>" + n + "</a>]"; + spans[i].setAttribute("data-note", note); + } + noteholder.innerHTML += + "<div class='footnote' id='_footnote_" + n + "'>" + + "<a href='#_footnoteref_" + n + "' title='Return to text'>" + + n + "</a>. " + note + "</div>"; + var id =spans[i].getAttribute("id"); + if (id != null) refs["#"+id] = n; + } + } + if (n == 0) + noteholder.parentNode.removeChild(noteholder); + else { + // Process footnoterefs. + for (i=0; i<spans.length; i++) { + if (spans[i].className == "footnoteref") { + var href = spans[i].getElementsByTagName("a")[0].getAttribute("href"); + href = href.match(/#.*/)[0]; // Because IE return full URL. + n = refs[href]; + spans[i].innerHTML = + "[<a href='#_footnote_" + n + + "' title='View footnote' class='footnote'>" + n + "</a>]"; + } + } + } +}, + +install: function(toclevels) { + var timerId; + + function reinstall() { + asciidoc.footnotes(); + if (toclevels) { + asciidoc.toc(toclevels); + } + } + + function reinstallAndRemoveTimer() { + clearInterval(timerId); + reinstall(); + } + + timerId = setInterval(reinstall, 500); + if (document.addEventListener) + document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false); + else + window.onload = reinstallAndRemoveTimer; +} + +} +asciidoc.install(); +/*]]>*/ +</script> +</head> +<body class="article"> +<div id="header"> +</div> +<div id="content"> +<div class="paragraph"><p>Seam Booking Example</p></div> +<div class="exampleblock"> +<div class="content"> +<div class="paragraph"><p>This example demonstrates the use of Seam in a Java EE 6 environment. +Transaction and persistence context management is handled by the EJB container. This example runs on JBoss AS as an EAR.</p></div> +<div class="paragraph"><p># Using Maven</p></div> +<div class="paragraph"><p>To deploy the example to a running JBoss AS instance, follow these steps:</p></div> +<div class="olist arabic"><ol class="arabic"> +<li> +<p> +In the example root directory run: +</p> +<div class="literalblock"> +<div class="content"> +<pre><tt>mvn clean install</tt></pre> +</div></div> +</li> +<li> +<p> +Set JBOSS_HOME environment property. +</p> +</li> +<li> +<p> +In the booking-ear directory run: +</p> +<div class="literalblock"> +<div class="content"> +<pre><tt>mvn jboss-as:deploy</tt></pre> +</div></div> +</li> +<li> +<p> +Open this URL in a web browser: <a href="http://localhost:8080/seam-booking">http://localhost:8080/seam-booking</a> +</p> +</li> +</ol></div> +<div class="paragraph"><p># Using Ant</p></div> +<div class="olist arabic"><ol class="arabic"> +<li> +<p> +In the example root directory run: +</p> +<div class="literalblock"> +<div class="content"> +<pre><tt>ant clean package</tt></pre> +</div></div> +</li> +<li> +<p> +Copy <tt>seam-booking.ear</tt> from directory <tt>booking-ear/target</tt> to the deployment directory of JBoss AS <tt>($JBOSS_HOME/standalone/deployments</tt> by default) +</p> +</li> +<li> +<p> +Open this URL in a web browser: <tt>http://localhost:8080/seam-booking</tt> +</p> +</li> +</ol></div> +<div class="paragraph"><p># Openshift Deployment support</p></div> +<div class="paragraph"><p>To deploy Booking example on openshift you can use prepared openshift profile like</p></div> +<div class="literalblock"> +<div class="content"> +<pre><tt>mvn clean install -Popenshift</tt></pre> +</div></div> +<div class="paragraph"><p>for creating deployments/seam-booking.ear and changing the web context root of application to be "/" to not append +seam-booking string into web context root. +You only need to use it like this is in your Openshift git repository.</p></div> +<div class="paragraph"><p>This example is covered by integration and functional tests. All tests use the following technologies:</p></div> +<div class="ulist"><ul> +<li> +<p> +<em>Arquillian</em> - as the framework for EE testing, for managing of container lifecycle and deployment of test archive, +</p> +</li> +<li> +<p> +<em>ShrinkWrap</em> - to create the test archive (WAR). +</p> +</li> +</ul></div> +<div class="paragraph"><p># Integration tests</p></div> +<div class="paragraph"><p>Integration tests cover core application logic and reside in the EJB module. In addition to Arquillian and ShrinkWrap, the integration tests also use:</p></div> +<div class="ulist"><ul> +<li> +<p> +<em>JUnitSeamTest</em> - to hook into the JSF lifecycle and assert server-side state, +</p> +</li> +<li> +<p> +<em>ShrinkWrap Resolver</em> - to resolve dependencies of the project for packaging in the test archive. +</p> +</li> +</ul></div> +<div class="paragraph"><p>The tests are executed in Maven’s test phase. By default they are skipped and can be executed on JBoss AS with:</p></div> +<div class="literalblock"> +<div class="content"> +<pre><tt>mvn clean test -Darquillian=jbossas-managed-7</tt></pre> +</div></div> +<div class="paragraph"><p>The <tt>JBOSS_HOME</tt> environment variable must be set and point to a JBoss AS instance directory.</p></div> +<div class="paragraph"><p>To test on a running server, use</p></div> +<div class="literalblock"> +<div class="content"> +<pre><tt>mvn clean test -Darquillian=jbossas-remote-7</tt></pre> +</div></div> +<div class="paragraph"><p>## Using Ant</p></div> +<div class="paragraph"><p>In the example root directory run:</p></div> +<div class="literalblock"> +<div class="content"> +<pre><tt>ant clean test</tt></pre> +</div></div> +<div class="paragraph"><p># Functional tests</p></div> +<div class="paragraph"><p>Functional tests are located in a separate project and are not executed during the build of the example. They test the built archive in an application server through browser-testing. They use:</p></div> +<div class="ulist"><ul> +<li> +<p> +<em>Arquillian Graphene Extension</em> - an advanced Ajax-capable type-safe Selenium-based browser testing tool, +</p> +</li> +<li> +<p> +<em>Arquillian Drone Extension</em> - to automatically run and stop browser instances. +</p> +</li> +</ul></div> +<div class="paragraph"><p><em>Note: It is necessary to first build and package the example, because the functional test references the built archive for automatic deployment to the server.</em></p></div> +<div class="paragraph"><p>Run the functional test on JBoss AS instance with</p></div> +<div class="literalblock"> +<div class="content"> +<pre><tt>mvn -f booking-ftest/pom.xml clean test</tt></pre> +</div></div> +<div class="paragraph"><p>The <tt>JBOSS_HOME</tt> environment variable must be set and point to a JBoss AS instance directory.</p></div> +<div class="paragraph"><p>Several variables can be configured:</p></div> +<div class="ulist"><ul> +<li> +<p> +path to an alternative archive for testing +</p> +<div class="literalblock"> +<div class="content"> +<pre><tt>-DtestDeployment=/path/to/archive.ear</tt></pre> +</div></div> +</li> +<li> +<p> +the browser to use for testing +</p> +<div class="literalblock"> +<div class="content"> +<pre><tt>-Dbrowser=htmlUnit</tt></pre> +</div></div> +</li> +<li> +<p> +test on a running server +</p> +<div class="literalblock"> +<div class="content"> +<pre><tt>-Dremote</tt></pre> +</div></div> +</li> +</ul></div> +<div class="paragraph"><p># Integration tests</p></div> +<div class="olist arabic"><ol class="arabic"> +<li> +<p> +Open JBDS and start a configured instance of JBoss AS +</p> +</li> +<li> +<p> +Import the example project and its submodules +</p> +</li> +<li> +<p> +In the <em>Project Explorer</em>, select the EJB module project, then +</p> +</li> +<li> +<p> +Type <tt>Ctrl+Alt+P</tt> (<em>Select Maven Profiles</em>) and check <tt>integration-tests</tt> and <tt>arq-jbossas-7-remote</tt> +</p> +</li> +<li> +<p> +Right-click the module and select <em>Run As</em> - <em>JUnit Test</em> +</p> +</li> +</ol></div> +<div class="paragraph"><p># Functional tests</p></div> +<div class="paragraph"><p>It is not possible to run the functional tests of this example in JBDS, because they use the maven-dependency-plugin to copy test classes from a different maven artifact, which is not a configuration supported by JBDS.</p></div> +</div></div> +</div> +<div id="footnotes"><hr /></div> +<div id="footer"> +<div id="footer-text"> +Last updated 2013-10-14 14:17:45 CEST +</div> +</div> +</body> +</html> Modified: branches/enterprise/WFK-2_1/examples/booking/README.md =================================================================== --- branches/enterprise/WFK-2_1/examples/booking/README.md 2013-10-14 08:53:38 UTC (rev 15617) +++ branches/enterprise/WFK-2_1/examples/booking/README.md 2013-10-15 11:52:55 UTC (rev 15618) @@ -33,7 +33,16 @@ 3. Open this URL in a web browser: `http://localhost:8080/seam-booking` +### Openshift Deployment support +To deploy Booking example on openshift you can use prepared openshift profile like + + mvn clean install -Popenshift + +for creating deployments/seam-booking.ear and changing the web context root of application to be "/" to not append +seam-booking string into web context root. +You only need to use it like this is in your Openshift git repository. + Testing the example ------------------- @@ -110,4 +119,4 @@ ### Functional tests -It is not possible to run the functional tests of this example in JBDS, because they use the maven-dependency-plugin to copy test classes from a different maven artifact, which is not a configuration supported by JBDS. \ No newline at end of file +It is not possible to run the functional tests of this example in JBDS, because they use the maven-dependency-plugin to copy test classes from a different maven artifact, which is not a configuration supported by JBDS. Modified: branches/enterprise/WFK-2_1/examples/booking/booking-ear/pom.xml =================================================================== --- branches/enterprise/WFK-2_1/examples/booking/booking-ear/pom.xml 2013-10-14 08:53:38 UTC (rev 15617) +++ branches/enterprise/WFK-2_1/examples/booking/booking-ear/pom.xml 2013-10-15 11:52:55 UTC (rev 15618) @@ -142,5 +142,39 @@ </plugins> </build> </profile> + <profile> + <id>openshift</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-ear-plugin</artifactId> + <configuration> + <outputDirectory>deployments</outputDirectory> + <defaultLibBundleDir>lib</defaultLibBundleDir> + <filtering>true</filtering> + <modules> + <webModule> + <groupId>org.jboss.seam.examples.booking</groupId> + <artifactId>booking-web</artifactId> + <contextRoot>/</contextRoot> + <bundleFileName>booking-web.war</bundleFileName> + </webModule> + <ejbModule> + <groupId>org.jboss.seam.examples.booking</groupId> + <artifactId>booking-ejb</artifactId> + <bundleFileName>booking-ejb.jar</bundleFileName> + </ejbModule> + <ejbModule> + <groupId>org.jboss.seam</groupId> + <artifactId>jboss-seam</artifactId> + <bundleFileName>jboss-seam.jar</bundleFileName> + </ejbModule> + </modules> + </configuration> + </plugin> + </plugins> + </build> + </profile> </profiles> </project> _______________________________________________ seam-commits mailing list [email protected] https://lists.jboss.org/mailman/listinfo/seam-commits
