Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jakarta.ee-spec] [External] : Re: Process for TCK service releases that include TCK updates for running signature tests on newer JDK versions...

I would have expected, when we hold a ballot, for any Spec., those components are expected to be ready for all required compatibility configurations -- both with a stand-alone compatible implementation and with a Platform implementation. If no suitable platform is available at the time the component is finished it is plausible that the platform will simply have to conform to the component TCK. If a Platform implementation is required and none is available, that component won't be ready for ballot. In a case where the Platform is, for some reason or other, going to imply changes on the component -- that seems like new requirements and a new release to me.

OR put another way: if the tests can't be frozen, then the Spec. won't be ready for a ballot.

We should always operate on the principle -- the Spec encompasses all of the Spec. text, the Spec. binary artifacts, and the TCK. If any of these change -- we are effectively changing the Spec. (I need to keep reminding myself, Compatibility tests are not the same as product tests.) Under this principle, the tests are not subject to change after the release ballot is started. We did a bit of a sleight of hand to allow for adding additional JDK support between 9 and 9.1 but  that was expressly not supposed to cause any test changes. There might have been other TCK test changes, but those all should have been due to challenges or other errata type fixes.

-- Ed


On 9/1/2021 8:39 AM, Scott Marlow wrote:


On 8/31/21 12:14 PM, Ed Bratt wrote:

Hmm. I'm probably diverting this away from the original subject -- I suspect this might be more useful in a general 'TCK release process requirements' thread.

I think that makes sense. In general, whomever is taking responsibility to handle any update (via Challenge, JDK update, or just ongoing evolution) ought to have the facilities to validate, whatever their change might be -- before making any new release. Adding that as an explicit requirement for all TCK bug-fix updates, seems appropriate.

This will/could become a bit more problematic as we start to expand the number of TCKs that are completely independent of the Platform TCK. I suspect that most component APIs do not consider testing with a Platform CI as part of their requirement set. With the centralized Platform TCK project, most of this testing was built into their modify-build-validate process. If a change were made to RESTFul Web Services, in EE 9 or earlier, that change would be validated in both the stand-alone and platform TCKs as part of their standard build/release process. When RESTful web services provides an update to their TCK (in EE 10 and beyond), should we expect that team to have validated their TCK change on both their own component compatible implementation AND a platform implementation?

RESTFul Web Services is a `Wave 4` SPEC, meaning that the RESTFul Web Services SPEC ballot will be well ahead of the Platform SPEC ballot.  In previous releases, the RESTFul Web Services Platform TCK tests were not frozen until the Platform TCK was completed but for EE10 we will have some Platform tests in the RESTFul Web Services SPEC TCK.  Can we validate SPEC level tests at the time of Ballot (e.g. only non-platform RESTFul Web Services TCK tests are validated at ballot time), and allow SPEC teams to update their TCKs after their initial ballot completes?

From a development perspective, I think that SPEC teams will need to be able to update their (Platform level) TCK tests after their ballot completes as the platform requirements could change or more simply test bugs may need to be fixed, perhaps in the form of a RESTFul Web Services TCK service release that only releases the TCK artifacts from the RESTFul Web Services 3.1 branch.


Perhaps the Platform TCK project will need to include some tooling that allows for the test running of component TCK changes. I realize this is a bit problematic. An alternative would be to simply put that onus onto the component Spec. dev. teams. If we provided enough boiler-plate to make it easy for them to run these tests, perhaps this isn't too much of an additional burden.

-- Ed

On 8/31/2021 7:59 AM, Scott Marlow wrote:

From your point, I am thinking that the TCK producing team needs to block releasing of the TCK until verification has been provided that the TCK can be passed (to be defined as to how).  I also want to say that all compatible implementations need to be treated the same and IMO our process shouldn't dictate that https://ci.eclipse.org/jakartaee-tck must be used to verify the produced TCK.

Scott

On 8/27/21 5:13 PM, Ed Bratt wrote:

Currently, it is possible to update the parameters that runs tests using GlassFish so that it can pull down a preliminary TCK and runs the tests. GlassFish has the benefit that it can be used this way for all TCK tests. Other implementations may not be as flexible, but there must be a way for the TCK producing team to test the TCK product it's going to produce. While this tooling may be unique across the implementation landscape -- I am imagining that some kind of test set up will be implemented, regardless which vendor provides the initial ballot compatible implementation. There is simply no way we can produce a TCK and not have a process in place that provides for modify, built, test, review-results, modify, build, test ... cycles. This will have to be part of the process for any candidate compatible implementation that we intend to use for any release ballot.

Probably this needs to be discussed in more detail. These requirements probably need to be made more explicit and the component teams will probably need to become more aware of these obligations. (i.e. they won't be able to just assume that GlassFish will be primed and ready when they think they're ready to deliver their Spec/API/TCK)

We can't release TCKs without confirming that they run in the anticipated environment and they produce the anticipated compatibility verification. I don't see this as much of a problem for just excluding tests but if we add a feature (even if it's just a new Java SE version), we have to be able to test and iterate this prospective update with some compatible version. We will simply have to include this obligation on at least one of the initial ballot compatible implementations. It's got to be a two way partnership -- not a unilateral relationship.

-- Ed

On 8/27/2021 1:01 PM, Scott Marlow wrote:


On 8/26/21 8:24 PM, Ed Bratt wrote:

I would recommend this be brought to the Specification Committee for discussion and once everyone is satisfied, that a resolution be proposed to approve this as a new TCK process guide.

It would be nice to see a change-bar version of the document (I guess I can get that from the current source diff)

Under the section 'Process for Releasing a point revision' (the last section) -- My preference would be to include documentation to reference a compatible implementation that successfully passed the revised TCK. For exclude only updates, this should be easy if you can get one or more of the original compatible implementations to rerun their tests. For updates, that add new Java versions, this could be more difficult but, presumably we'd be releasing the update for the purposes of qualifying a particular implementation so, probably that version could be included (though I guess that might not be an open-source compatible implementation). In my opinion, we always want evidence that the TCK was run and an implementation successfully passed it. Referencing the certification request associated with that implementation would be the easiest way to capture this.

The particular implementation that created the TCK challenge hasn't yet created their certification request yet as they are blocked on waiting for the new TCK release to be published.  They may also be waiting for other TCK challenges to be processed before creating their compatibility request.  I do like the suggestion but I'm not yet understanding how we can accomplish it.  At the very least, I would like the particular implementation to download the (not yet released) TCK to verify it after it has been built and communicate that the (not yet released) TCK is working as expected. 

We are also transitioning over to not having a reference implementation to use for verifying not yet released TCKs.  We can ask the various compatible implementations to test the new TCK but we cannot expect them to do that in a timely manner.

For reference, the referenced section currently contains:

"
Process for releasing a point revision of a TCK

The process for releasing a point revision of a TCK entails filing an issue in the jakartaee/specifications repository with the following details:

  • Link to the TCK release to be published.
  • Updated TCK links in the specification's _index.md file.
  • A high-level description of what tests were excluded from the TCK and why.

"

Scott


On 8/18/2021 9:16 AM, Scott Marlow wrote:


On 8/5/21 11:01 AM, Kevin Sutter wrote:
Hi Scott,
I think we should pursue an update to the TCK process to allow service releases to fix Signature tests related to newer versions of Java.  Not sure if we have to be that specific, but we do need to allow for these type of updates.  The alternative of ignoring certain tests gets tricky and nebulous since ignored tests may actually have an issue, but we wouldn't know as casual observers.  It would be much better to be clearer and service releases would allow us to be clear.  Thanks!

I just updated https://github.com/jakartaee/jakarta.ee/pull/1018 to be less specific about service releases to fix tests for newer versions of Java (could be signature test changes or dealing with removal of Java security manager or something else).

Does anyone disagree with updating the TCK Process version from `1.0` to `1.1`?  For what reason/condition should we update the version to `2.0`?

Does anyone else need to review https://github.com/jakartaee/jakarta.ee/pull/1018 before it gets merged?


---------------------------------------------------
Kevin Sutter
STSM, Jakarta EE and MicroProfile architect @ IBM
e-mail:  sutter@xxxxxxxxxx     Twitter:  @kwsutter
phone: tl-553-3620 (office), 507-253-3620 (office)    
LinkedIn:
https://www.linkedin.com/in/kevinwsutter

Part-time schedule: Tue, Wed, Thu (off on Mon and Fri)




From:        "Scott Marlow" <smarlow@xxxxxxxxxx>
To:        jakarta.ee-spec@xxxxxxxxxxx
Date:        08/05/2021 08:25
Subject:        [EXTERNAL] [jakarta.ee-spec] Process for TCK service releases that include TCK updates for running signature tests on newer JDK versions...
Sent by:        "jakarta.ee-spec" <jakarta.ee-spec-bounces@xxxxxxxxxxx>




For Jakarta EE Platform 9.1+ supports implementations running TCK compatibility certification tests on JDK versions Java SE 8, Java SE 11+.  In support of running TCK tests on JDK versions greater than SE 11, we expect that some tests will need to be revised (e.g. see jaxb-tck/issues/57 [1] for updating signature tests related to need new signature tooling library and signature map files). 
Last December, we started making changes to the `TCK Process 1.0` that includes the following text [2] which introduces an alternative to excluding (challenged) TCK tests:
`The specification project may approve (user) workarounds for an `accepted` TCK challenge (as alternative to excluding TCK tests).`
My question today is whether the above quoted text is enough to cover Jakarta EE 9.1 compatibility certification requests against Java SE 17 (which will include signature test failures due to jaxb-tck/issues/57 [1])?  If the answer/vote is yes, certain signature test failures can be ignored on newer JDK versions, if and only if the signature test failure is caused by inadequate TCK signature support for the relevant  Java SE (e.g. JDK 17) version.  If the answer/vote is no, we will need an additional TCK process change to specifically allow a SPEC TCK service release that updates signature tests to resolve the signature test failure (e.g. allow jakarta-xml-binding-tck-3.0.2.zip [4] to be officially released by Spec team so that implementations can submit certification requests against jakarta-xml-binding-tck-3.0.2.zip).
Scott
[1] https://github.com/eclipse-ee4j/jaxb-tck/issues/57
[2]
https://github.com/jakartaee/jakarta.ee/pull/1018/files#diff-1fe254a18287c0db31fd9cb0a6bca11b1efda926095c3a65b73ef2ae0c89360dR223
[3]
https://jakarta.ee/committees/specification/tckprocess/
[4]
https://download.eclipse.org/ee4j/jakartaee-tck/jakartaee9-eftl/promoted/jakarta-xml-binding-tck-3.0.2.zip_______________________________________________
jakarta.ee-spec mailing list
jakarta.ee-spec@xxxxxxxxxxx
To unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec





_______________________________________________
jakarta.ee-spec mailing list
jakarta.ee-spec@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec

_______________________________________________
jakarta.ee-spec mailing list
jakarta.ee-spec@xxxxxxxxxxx
To unsubscribe from this list, visit https://urldefense.com/v3/__https://www.eclipse.org/mailman/listinfo/jakarta.ee-spec__;!!ACWV5N9M2RV99hQ!awIHuBnS0vFrSdaLJF1CkeydaJ6HBDuZO-HU31C_-GlXemvLd-yxK7aypDQTQqQ$ 

Back to the top