Date: December 12 2008
This errata lists errors
in the JSR 289 TCK tests. Some tests (numbered 7-14, 17-21, 26-27 below)
have minor bugs and are straight-forward to fix and re-build the TCK.
The fix has been listed for such tests.
Tests that require a significant change are added to the exlcude list for now and will be eventually fixed.
----------------------------------------------------------------------------------------------------------------
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletTest.testDoProvisionalResponse001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipErrorEventListenerTest.testNoPrackReceived001
The above tests should be added to the exclude list as support for RFC 3265 is optional in JSR 289.
If your implementation does support RFC 3265 and you want to run test1, then correct the following:
The SipServletServlet.doProvisionalResponse method should call createPrack() instead of createAck()
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testAddAddressHeader001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testGetTo001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testSetAddressHeader001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testGetAddressHeader001
These tests do plain String comparison for Address headers on the
client side which is incorrect. Angle brackets and quotes should be
ignored for comparison as per the Address rules.
The client side should also follow the Address comparison rules as specified in Address.equals() javadoc.
The above tests should be added to the exclude list.
- ${TCK_HOME}/applications/apitestapp/WEB-INF/web.xml
The of "*" in the
element of the web.xml deployment descriptor for apitestapp.sar module
is incorrect. (as per Servlet 2.5 Spec, Section SRV.11.2)
The url-pattern should be changed to "/*" as follows:
ApiTestMainHttpServlet
/*
Build and deploy the apitestapp.sar module after the change.
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletListenerTest.testServletInitialized001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.TimerServiceTest.testCreateTimer001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.TimerServiceTest.testCreateTimer002
- com.bea.sipservlet.tck.agents.spec.SipServletListenerTest.testSipServletListener
The above tests use instance variables in Servlets and Listeners. This is not correct as Servlets and Listeners are stateless.
Change the Servlets that handle above tests to store the instance variables in the ServletContext.
- com.bea.sipservlet.tck.apps.spec.uas.AnnotationServlet
- com.bea.sipservlet.tck.apps.spec.uas.UasActiveServlet
- com.bea.sipservlet.tck.apps.spec.uas.UasCancelServlet
In the above Servlets in the TCK, the @Resource annotation has been
applied to static fields for container-managed classes in the TCK. This
is not correct as per Java EE (Section EE.5.2.3).
(Dependency Injection makes sense at object level because the object
lifecycle is managed by the container which injects the resource.)
Remove the static modifier on the fields annotated with @Resource
annotations in the above servlets.
- com.bea.sipservlet.tck.agents.spec.testContext1
This
test currently tests if the exact set of parameter-names populated by
the application are available on the Context. The only test the TCK
should check for is that the union of context-params in the web.xml and
sip.xml is available using the context.getInitialParameterNames().
(This would allow the context to have container-specific params if any
container wishes to add them.)
The ContextServlet.verifyStringEnum() method should be modfied to check
only if the parameter-names populated by the application are available
on the context.
This test should be added to the exclude list.
- com.bea.sipservlet.tck.agents.spec.AuthOfAppInitReqTest
This test expects the REGISTER request created from an authenticated
session to be automatically authenticated. This is not correct. The
REGISTER request (third one) created inside
AuthOfAppInitReqServlet.doSuccessResponse() should not carry the
Authorization header unless populated by the application and should be
challenged by the UAS.
Also, the AuthOfAppInitReqTest.checkAuthorHeader() method should check
for the opaque string in the REGISTER request (2nd one) with the
Authorization header.
This test should be added to the exclude list.
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletTest.testDoErrorResponse001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletTest.testDoRedirectResponse001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletTest.testDoSuccessResponse001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletResponseTest.testSend101
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipSessionTest.testCreateRequest001
The above tests use the same SipSession to create and send a subsequent
MESSAGE (non-dialog creating request) using:
req.getSession().createRequest("MESSAGE").send() in the corresponding
servlet (eg, com.bea.sipservlet.tck.apps.api.SipServletServlet)
The semantics of re-using a SipSession created by a non-dialog creating
request on the UAS side after a final response has been sent is not
defined in the specification. So, in the above tests, the subsequent
MESSAGE must be sent as an initial request using:
sipFactory.createRequest(req.getApplicationSession(), "MESSAGE",
req.getTo(), req.getFrom()).
The above change must be made to the Servlets corresponding to the
above test methods.
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipSessionTest.testInvalidate001
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.B2buaHelperTest.testCreateResponseToOriginalRequest102
In
the above tests, there can be a race between when the
SipApplicationSession is determined to be in the ready-to-invalidate
after the last SipSession is invalidated and using the same
SipApplicationSession to create another request. If the former happens
before the later, the SipApplicationSession will be invalidated and
cannot be used to create a request with the SipApplicationSession.
This test should be added to the exclude list.
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testGetAttribute001
This test currently checks if the exact set of attributes populated by
the application in the SipServletMessage are available from it using
the getAttributeNames() API. The only check the TCK should perform is
to test if the attributes populated by the application alone are
available using the above API. (This would allow the SipServletMessage
to have container-specific attributes if any container wishes to add
them.)
This test should be added to the exclude list.
- com.bea.sipservlet.tck.agents.spec.MultihomedTest
Multihoming is an optional feature as per Section 14.2, point 4 and requires configuration on part of the vendor.
This test should be added to the exclude list.
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletRequestTest.testPushRoute002
The SipServletRequestServlet.testPushRoute002() method uses the
following API: SipURI sipURI = sipFactory.createSipURI(user, host); to
create a SipURI. The host argument is as follows:
"192.168.30.48:5072;lr". This usage is incorrect. The "host" argument
should not include port or URI parameters. The test should be corrected
to set the port using setPort() and the lr parameter using setLrParam()
APIs explicitly.
- com.bea.sipservlet.tck.agents.api.javax_servlet_sip.B2buaHelperTest.testCreateRequest001
In
the above test, the B2buaHelperServlet.testCreateRequest001 method
compares the Via headers added to the newly created request (if any) to
the To header of the incoming request. This is an unnecessary and
incorrect comparison and should be removed. To correct the test, delete
lines 70 to 78 from the
com.bea.sipservlet.tck.apps.api.B2buaHelperServlet.testCreateRequest001
method.
- com.bea.sipservlet.tck.ar.TckApplicationRouterCaseHandler01.handleRouterEnquery
- com.bea.sipservlet.tck.ar.TckApplicationRouterCaseHandler03.handleRouterEnquery
In the above classes, the TCK AR mandates that the region must be null for the Continue and Reverse directive cases. This is incorrect and the check should be removed.
The TCK AR can be fixed as follows:
In com.bea.sipservlet.tck.ar.TckApplicationRouterCaseHandler01 class, comment out lines 62, 63 and 64 (for case CONTINUE in the handleRouterEnquery method) and lines 79, 80 and 81 (for case REVERSE in the handleRouterEnquery method)
In com.bea.sipservlet.tck.ar.TckApplicationRouterCaseHandler03 class, comment out lines 80, 81 and 82 (for case REVERSE in the handleRouterEnquery method)
-----------------------------------------------------------------------------------------------------
Summary: Tests to be added to the exclude list:
# excluded method list
exclude.method.30=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletTest.testDoProvisionalResponse001
exclude.method.31=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipErrorEventListenerTest.testNoPrackReceived001
exclude.method.32=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testAddAddressHeader001
exclude.method.33=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testGetTo001
exclude.method.34=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testSetAddressHeader001
exclude.method.35=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testGetAddressHeader001
exclude.method.36=com.bea.sipservlet.tck.agents.spec.ContextTest.testContext1
exclude.method.37=com.bea.sipservlet.tck.agents.spec.AuthOfAppInitReqTest.testAuthOfAppInitReq1
exclude.method.38=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipSessionTest.testInvalidate001
exclude.method.39=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.B2buaHelperTest.testCreateResponseToOriginalRequest102
exclude.method.40=com.bea.sipservlet.tck.agents.api.javax_servlet_sip.SipServletMessageTest.testGetAttribute001
# excluded class list
exclude.class.2=exclude.method.40=com.bea.sipservlet.tck.agents.spec.MultihomedTest