Hi All,
I tested Metro using the Test Scenario and Test Cases specified in the manual.
Here are my results:
Test Cases BS OPS Test Passed/Failed Notes
Metro StockTrader as BS and OP via BasicHttpBinding METRO_BS
METRO_OPS Passed Logged in, bought shares, and verified purchase in
Portfolio.
Metro StockTrader as BS and OP via CustomBinding METRO_BS
METRO_OPSSEC Passed Logged in, bought shares, and verified purchase in
Portfolio.
Metro StockTrader as BS and .NET StockTrader as OP via BasicHttpBinding
METRO_BS DOTNET_OPS Passed Logged in, bought shares, and verified
purchase in Portfolio.
Metro StockTrader as BS and .NET StockTrader as OP via CustomBinding
METRO_BS DOTNET_OPSSEC Passed Logged in, bought shares, and verified
purchase in Portfolio.
Metro StockTrader as BS and WS02 StockTrader as OP via BasicHttpBinding
METRO_BS JAVA_OPS Passed Logged in, bought shares, and verified
purchase in Portfolio.
Metro StockTrader as BS and WS02 StockTrader as OP via CustomBinding
METRO_BS JAVA_OPSSEC Passed Logged in, bought shares, and verified
purchase in Portfolio.
Metro StockTrader as BS and PHP StockTrader as OP via BasicHttpBinding
METRO_BS PHP_OPS Passed Logged in, bought shares, and verified purchase
in Portfolio.
Metro StockTrader as BS and PHP StockTrader as OP via CustomBinding
METRO_BS PHP_OPSSEC Passed Logged in, bought shares, and verified
purchase in Portfolio.
.NET StockTrader as BS and Metro StockTrader as OP via BasicHttpBinding
DOTNET_BS METRO_OPS Failed Can log in but cannot buy shares. Got
error, "Ambigous Match Found..." (see Error 1 below for more details)
.NET StockTrader as BS and Metro StockTrader as OP via CustomBinding
DOTNET_BS METRO_OPSSEC Failed Can log in but cannot buy shares. Got
error, "Ambigous Match Found..." (see Error 1 below for more details)
WS02 StockTrader as BS and Metro StockTrader as OP via BasicHttpBinding JAVA_BS
METRO_OPS Failed Cannot log in. Got error, "HTTP Status 500" (see
Error 2 below for more details)
WS02 StockTrader as BS and Metro StockTrader as OP via CustomBinding JAVA_BS
METRO_OPSSEC Failed Cannot log in. Got error, "HTTP Status 500" (see
Error 2 below for more details)
PHP StockTrader as BS and Metro StockTrader as OP via BasicHttpBinding PHP_BS
METRO_OPS Failed Logged in, bought shares successfully, but could not
navigate to Portfolio Page. (see Error 3 below)
PHP StockTrader as BS and Metro StockTrader as OP via CustomBinding PHP_BS
METRO_OPSSEC Failed Logged in, bought shares successfully, but could not
navigate to Portfolio Page. (see Error 3 below)
.NET StockTrader use Metro version config service - - Passed
Logged in, bought shares, and verified purchase in Portfolio. Note that this
only worked with my version of StockTrader that supports MySQL.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
1) ERROR WHEN TESTING .NET STOCKTRADER BS WITH METRO STOCKTRADER OP
----------------------------------------------------------------------------------------------------------------------------------------------------------------
System.Reflection.AmbiguousMatchException: Ambiguous match found.
at System.DefaultBinder.BindToMethod(BindingFlags bindingAttr, MethodBase[]
canidates, Object[]& args, ParameterModifier[] modifiers, CultureInfo
cultureInfo, String[] names, Ob
ject& state)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder
binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at Trade.Client.ClientList.Connection.CreateGeneric(Type generic, Type
innerType, Object[] args) in
d:\StockTrader\stocktrader\dotnet\common\BasicClient\BasicClient.cs:line 174
at Trade.Client.ClientList.Connection.createChannelFactory(Type theType,
String clientConfiguration, String url, String userName, String password) in
d:\StockTrader\stocktrader\
dotnet\common\BasicClient\BasicClient.cs:line 200
at Trade.Client.ClientList.Connection.get_Channel() in
d:\StockTrader\stocktrader\dotnet\common\BasicClient\BasicClient.cs:line 262
at
Trade.OrderProcessorAsyncClient.TradeOrderServiceAsyncClient.get_Channel() in
d:\StockTrader\stocktrader\dotnet\business_service\OrderProcessorASyncClient\OrderProcessorAsync
Client.cs:line 91
at
Trade.OrderProcessorAsyncClient.TradeOrderServiceAsyncClient.SubmitOrder(OrderDataModel
order) in
d:\StockTrader\stocktrader\dotnet\business_service\OrderProcessorASyncClient
\OrderProcessorAsyncClient.cs:line 130
at
Trade.OrderProcessorAsyncClient.TradeOrderServiceAsyncClient.processOrderASync(OrderDataModel
order) in
d:\StockTrader\stocktrader\dotnet\business_service\OrderProcessorASync
Client\OrderProcessorAsyncClient.cs:line 142
Inner Exception:
System.Reflection.AmbiguousMatchException: Ambiguous match found.
at System.DefaultBinder.BindToMethod(BindingFlags bindingAttr, MethodBase[]
canidates, Object[]& args, ParameterModifier[] modifiers, CultureInfo
cultureInfo, String[] names, Ob
ject& state)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder
binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at Trade.Client.ClientList.Connection.CreateGeneric(Type generic, Type
innerType, Object[] args) in
d:\StockTrader\stocktrader\dotnet\common\BasicClient\BasicClient.cs:line 174
at Trade.Client.ClientList.Connection.createChannelFactory(Type theType,
String clientConfiguration, String url, String userName, String password) in
d:\StockTrader\stocktrader\
dotnet\common\BasicClient\BasicClient.cs:line 200
at Trade.Client.ClientList.Connection.get_Channel() in
d:\StockTrader\stocktrader\dotnet\common\BasicClient\BasicClient.cs:line 262
at
Trade.OrderProcessorAsyncClient.TradeOrderServiceAsyncClient.get_Channel() in
d:\StockTrader\stocktrader\dotnet\business_service\OrderProcessorASyncClient\OrderProcessorAsync
Client.cs:line 91
at
Trade.OrderProcessorAsyncClient.TradeOrderServiceAsyncClient.SubmitOrder(OrderDataModel
order) in
d:\StockTrader\stocktrader\dotnet\business_service\OrderProcessorASyncClient
\OrderProcessorAsyncClient.cs:line 130
at
Trade.OrderProcessorAsyncClient.TradeOrderServiceAsyncClient.processOrderASync(OrderDataModel
order) in
d:\StockTrader\stocktrader\dotnet\business_service\OrderProcessorASync
Client\OrderProcessorAsyncClient.cs:line 151
at Trade.BusinessServiceImplementation.TradeService.placeOrder(String
orderType, String userID, Int32 holdingID, String symbol, Double quantity) in
d:\StockTrader\stocktrader\do
tnet\business_service\BusinessServiceImplementation\TradeService.cs:line 902
Logging out for uid:1
Logging in for uid:1
Leaving login for uid:1
----------------------------------------------------------------------------------------------------------------------------------------------------------------
2) ERROR WHEN TESTING WS02 STOCKTRADER BS WITH METRO STOCKTRADER OP VIA
BASICHTTPBINDING and custombinding
----------------------------------------------------------------------------------------------------------------------------------------------------------------
HTTP Status 500 -
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from
fulfilling this request.
exception
javax.servlet.ServletException: #{loginBean.login}:
com.sun.xml.ws.client.ClientTransportException: HTTP transport error:
java.net.ConnectException: Connection refused: connect
root cause
javax.faces.FacesException: #{loginBean.login}:
com.sun.xml.ws.client.ClientTransportException: HTTP transport error:
java.net.ConnectException: Connection refused: connect
root cause
javax.faces.el.EvaluationException:
com.sun.xml.ws.client.ClientTransportException: HTTP transport error:
java.net.ConnectException: Connection refused: connect
root cause
com.sun.xml.ws.client.ClientTransportException: HTTP transport error:
java.net.ConnectException: Connection refused: connect
root cause
java.net.ConnectException: Connection refused: connect
note The full stack traces of the exception and its root causes are available
in the Sun GlassFish Enterprise Server v2.1 logs.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
3) ERROR WHEN TESTING PHP STOCKTRADER BS WITH METRO STOCKTRADER OP VIA
BASICHTTPBINDING and custombinding
----------------------------------------------------------------------------------------------------------------------------------------------------------------
An Error Occurred:
javax.el.ELException: /WEB-INF/facelets/tags/price.xhtml @10,153 styleClass="#{
(value == 0) ? null : (value > 0 ? 'price-gain' : 'price-loss')}":
/portfolio.xhtml @56,122
value="#{(userBean.holdingInfo.quoteInfo[holdingData.quoteID]-holdingData.purchasePrice)*holdingData.quantity}":
com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type:
text/html Supported ones are: [text/xml]
Stack Trace:
javax.faces.FacesException: javax.el.ELException:
/WEB-INF/facelets/tags/price.xhtml @10,153 styleClass="#{ (value == 0) ? null :
(value > 0 ? 'price-gain' : 'price-loss')}": /portfolio.xhtml @56,122
value="#{(userBean.holdingInfo.quoteInfo[holdingData.quoteID]-holdingData.purchasePrice)*holdingData.quantity}":
com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type:
text/html Supported ones are: [text/xml]
at
javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:1553)
at
com.sun.faces.renderkit.html_basic.TextRenderer.getEndTextToRender(TextRenderer.java:86)
at
com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:204)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
at
com.sun.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:50)
at com.sun.facelets.component.UIRepeat.process(UIRepeat.java:357)
at com.sun.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:617)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:333)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.stonehenge.stocktrader.filter.LoginFilter.doFilter(Unknown
Source)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:246)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:313)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: javax.el.ELException: /WEB-INF/facelets/tags/price.xhtml @10,153
styleClass="#{ (value == 0) ? null : (value > 0 ? 'price-gain' :
'price-loss')}": /portfolio.xhtml @56,122
value="#{(userBean.holdingInfo.quoteInfo[holdingData.quoteID]-holdingData.purchasePrice)*holdingData.quantity}":
com.sun.xml.ws.server.UnsupportedMediaException: Unsupported Content-Type:
text/html Supported ones are: [text/xml]
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76)
at
javax.faces.component.html.HtmlOutputText.getStyleClass(HtmlOutputText.java:193)
at sun.reflect.GeneratedMethodAccessor309.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:1545)
... 46 more
Caused by: com.sun.xml.ws.server.UnsupportedMediaException: Unsupported
Content-Type: text/html Supported ones are: [text/xml]
at com.sun.xml.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:295)
at com.sun.xml.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:129)
at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:360)
at
com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:187)
at
com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:94)
at
com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:89)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at
com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)
at com.sun.xml.xwss.XWSSClientPipe.process(XWSSClientPipe.java:160)
at
com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
at com.sun.xml.ws.client.Stub.process(Stub.java:222)
at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
at
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
at
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
at $Proxy64.getQuote(Unknown Source)
at org.apache.stonehenge.stocktrader.bean.HoldingInfo.getQuoteInfo(Unknown
Source)
at org.apache.stonehenge.stocktrader.bean.HoldingInfo.<init>(Unknown Source)
at org.apache.stonehenge.stocktrader.bean.UserBean.getHoldingInfo(Unknown
Source)
at sun.reflect.GeneratedMethodAccessor222.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:293)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175)
at
com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
at com.sun.el.parser.AstMinus.getValue(AstMinus.java:55)
at com.sun.el.parser.AstMult.getValue(AstMult.java:55)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:82)
at com.sun.el.parser.AstGreaterThan.getValue(AstGreaterThan.java:54)
at com.sun.el.parser.AstChoice.getValue(AstChoice.java:60)
at com.sun.el.parser.AstChoice.getValue(AstChoice.java:62)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206)
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
... 51 more
+- Component Tree