Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jakartaee-tck-dev] Weekly building of Jakarta Platform Stand-alone TCKs...

(Oye, this just keeps getting longer. Sorry ...)

Yes, Kudos to Mark Thomas for his work on Web Socket TCK. Scott, you ask if we should wait for the Platform TCK before running the stand-alone TCKs -- I guess that is a question to consider with the API project committer teams. If they are following the pattern that Mark is using, they will likely want results sooner. But, it's also a resource issue (when can someone in the TCK project actually make the changes needed?).

I raised the question about production of these stand-alone TCKs because -- if one of the Milestone 1 goals is to have TCKs from each API, this action (produce each of these out of the jakartaee-tck project) will need to be completed. I do not know if there is sufficient time and resource to accomplish this in time for a June 23 milestone. There are 21 specification TCKs that are produced out of this project. If each of these is a goal, then the weight will lie heavily with this committer team.

Those folder views at download.eclipse.org are part of the download infrastructure that Eclipse provides. See more here. There is reference to a p2.index file which may allow additional and/or customized file viewing. I don't know any more than that this is referenced on the Eclipse IT feature wiki. Long ago, we put the date string into the file name and kept an updated link to the 'latest' copy of each build. Anyone that wanted to track the current build could consistently pull the 'latest' file. Specific builds (within some upper bound) could be found in the directory. Someone could take this task and decide what to do and implement it, if that's what the committer team wants.

Almost certainly most files in the nightly folder, even the older version files could be removed or moved elsewhere. All of the necessary files should have been copied (or released) to their final release folder when they were promoted. Given that we may need to deal with maintenance, whatever organization we decide on, I would recommend we include a version specific qualifier. If we choose to remove legacy files actively, I'm sure the Eclipse administrators will be more happy with us since this is a shared project resource.

Steve, in addition to what you wrote, details about the Jenkins TCK jobs are kept on this wiki. It may need to evolve so if anyone spots errors, hopefully they can just make updates.

Yes, GlassFish runs both the Platform TCK (AKA CTS) AND each of the stand-alone TCKs are run against it. We conclude it is compatible when all these tests pass. Some external TCKs are run with porting kit packages. Some use other procedures to run. The rules, prescriptions, procedures, etc. should be documented in each TCK users guide. We have tried with varying success to have the API teams take more responsibility defining and implementing the process and procedures required to run their TCKs against, whatever would qualify as a compatible implementation. Mark's work, referenced above is exemplary! In some cases, the stand-alone TCK is run against a fully delivered Java application. In other cases, the compatible implementation needs to run within something else (frequently, an Application Server but not always). The "generic" GlassFish stand-alone TCK test runner, in many cases just uses GlassFish in some ways, as if it was a delivery archive. The scripts pull out the necessary JAR files, then start the test as agreed upon between the TCK test developer and the API project team and documented in the TCK Users Guide. The results are accumulated (at least for EE 8 example, here). In some cases, it makes sense to run these tests against a packaged application. In others, it probably doesn't (though the API team can certainly produce something and/or work with an implementation team, if it desires). There is probably room for improvement, but likely this could be considered at a later time. More details may be found about the Standalone TCK Build commands, here.

At the end of the release, the ballot submission will contain a reference to the TCK and whatever run-time components were used to generate the result, demonstrating that a compatible implementation exists and it passes the TCK. One needs to look at each one of the Ballot record pages, to determine what was used for the ballots. I think there are differing opinions about the requirements for when it is required to run an imported component against the stand-alone TCK -- and also when those results should (or must) be reported. I suspect there isn't a lot of urgency to clarify this further than it is already.

Here is the wiki describing the TCK jobs (same link as above). Some sample jobs run Jakarta EE Platform TCK (AKA CTS)

Some sample jobs run Jakarta EE stand-alone TCKs (those derived from the jakartaee-tck project)

Both of these test runners require a GlassFish distribution. Users can kick off these test runs, via job parameters, set the list of TCKs (or test suites from Platform TCK) to run and point them to any GlassFish build. It is my belief that any component that is built and released should pass that that components stand-alone TCK. So, GlassFish should pass the Platform TCK and the stand-alone TCKs for each and every required Jakarta EE component that it includes (it includes all optional components). The Specification (in this case, both the written specification and the TCK Users Guide) should define what is required.

Many API projects have their own Jenkins TCK test runners. Ultimately, all of these will need to be updated for EE 9. Obviously, we can leave the task of Jenkins TCK jobs in other projects to those projects. Eventually, it would be nice to try and optimize these so that we aren't running jobs any more often than needed. Over testing (e.g. building on calendar events vs. repository update triggers) can become an issue when we close in on releases and all the projects are trying to finalized and complete their last changes at the same time -- and the Jenkins CI infrastructure is shared. Some of this is worked out in GlassFish CI infrastructure, but there is certainly more to do here and many of the dependency relationships are less than direct.

Scott asks if GlassFish relies on running stand-alone TCK nightly -- I am not certain how you are using rely here. GlassFish has it's own qualification tests to determine if each build job succeeds or fails. I am not aware of a built-in requirement for running any formal TCK suite leading to success or failure of a build. There are "quick-look" tests which do include some TCK related functionality, but TCK results are generally produced independently. Certainly, for GlassFish, this has been determined to be way to time-consuming since we generally don't even like waiting an hour for build qualification runs. Before migrating to Eclipse, our goal was never to produce releases that did not pass the TCKs. We did not always achieve that goal and during an active development phase of one or more components, the result of the TCK is potentially un(under?)defined. I suspect it's up to the broader EE4J community to decide -- maybe just the subset that works on the implementations? -- to decide what dependency qualifications are required at each build level (nightly, promoted, released).

Scott asks about Porting Kit issue references -- Porting kits are the mechanism that the process defines for adapting an additional TCK to an Application Server. The porting kits are specific to an Application Server. So, the kits I reference below, will produce TCK compatibility results for those specifications (BV, CDI, DI), for Eclipse GlassFish. I would say that the issues to track that work belong with the GlassFish project, which is where I created them. In my view, the Platform level is concerned with: Compatible Implementations and their TCK results at the time of the ballot. The Platform committer team certainly cares about the Platform TCK and any ancillary requirements for that Platform specification so -- they will care that an Application Server compatibility application contains all the necessary TCK results, obtained in whatever required fashion is specified. So, in this regard, the Platform Committer team needs to see that GlassFish contains the required results. Bugs/Evolution/Etc. of those specific porting kits are probably the implementation level scope. The platform team certainly cares that each component team delivers a TCK and produces a compatible implementation result. I think it's up to each implementation if they need to use a porting kit, or if they can achieve the required results directly. (Maybe someone else could confirm or correct the porting kit specific requirements.)

Absolutely I commend the idea of soliciting more involvement, in any way we can. We should also consider promoting the idea that the component specification committer teams or team members need to start working more continuously with their TCKs and possibly addressing some of the commentary and/or questions I speculate about, above.

Probably some of what is here, should find its way to the JakartaEE-TCK Wiki. We have tried to create lots of documentation about the TCKs. These materials need to be revised along with the TCKs themselves (and the environment and the process, etc. etc.) Please help keep it revised and current. I'm hoping nothing here is in conflict with the wikis or process. If there are conflicts, I'd recommend you go with the prior descriptions and requirements.

Just to summarize some potential reporting metrics:

  • Platform TCK is produced
    • Platform TCK runs against Eclipse GlassFish and produces a result (any result)
      • All test results pass
    • Platform TCK runs against Eclipse GlassFish Web Profile and produces a result
      • All test results pass
    • Platform Committer team evaluates and approves all platform requirements are described and are met
    • Platform compatible implementation (and probably Platform Spec) are ready for ballot
  • Component TCKs are each produced
    • The build jobs succeed and generate a TCK Zip
    • The generated TCK Zip is against Eclipse GlassFish and produces a test result
    • Test result passes
    • Component TCK team reports passing result against their compatible implementation and approves all component requirements are described and met
    • Component compatible implementation and component specification are ready for ballot

I haven't heard any concerns about setting a goal to generate the Platform TCK for the milestone. I would presume there's no argument against a goal to run it against Eclipse GlassFish -- perhaps reporting those results, perhaps not. The additional bullets (and maybe some I don't have here) should be settled on so we can all be clear what our goals are. (I have heard that other implementation teams are working with the TCKs -- it might be nice if we could get them to share their goals and/or desires from this project might be, but I don't know that we can count on any of that since we need to produce these before anyone will want to make any statements about using them.)

Alternatively, we could just say -- here is the road-map/continuum. We will get as far as we get and just report where we are as we progress to the Milestone 1 date. That might be okay.

Whatever we settle on, we should try to be clear when we are reporting this to the other teams/committees so they can set their expectations appropriately.

-- Ed


On 5/20/2020 3:08 AM, Steve Millidge (Payara) wrote:

I’ve raised an issue on the GlassFish project to get our Jenkins master build job to upload an artefact to the Eclipse download site. See https://github.com/eclipse-ee4j/glassfish/issues/23022 I’ll update this list when that issue is done and we have a download there.

 

AFAIK GlassFish uses these jobs to run the CTS https://ci.eclipse.org/glassfish/view/cts/ But Ed/Dmitry and their team set those jobs up so will be more familiar.

 

Steve

 

From: jakartaee-tck-dev-bounces@xxxxxxxxxxx <jakartaee-tck-dev-bounces@xxxxxxxxxxx> On Behalf Of Scott Marlow
Sent: 20 May 2020 02:47
To: Ed Bratt <ed.bratt@xxxxxxxxxx>
Cc: jakartaee-tck developer discussions <jakartaee-tck-dev@xxxxxxxxxxx>
Subject: Re: [jakartaee-tck-dev] Weekly building of Jakarta Platform Stand-alone TCKs...

 

Thanks Ed, good to raise validation (and other things) for discussion here! :)  More inline below...

 

On Tue, May 19, 2020 at 2:58 PM Ed Bratt <ed.bratt@xxxxxxxxxx> wrote:

Some additional comments and ideas:

I think that some of the TCK build paths are failing -- or, what I'm actually observing is that some TCKs are not at the same version as their specification (i.e. annotations-tck is either not updated, or the build job is still creating files with the name '1.3.0' in their string. I presume the Annotations TCK will become 2.x.x when it's updated. Some of the TCK zip files are updated. WebSocket, for example is 2.0.0 so I believe that is actually getting some attention). We may find that some of these build paths are failing along the way and simply not generating a zip.

 

Good point, https://github.com/eclipse-ee4j/jakartaee-tck/commit/510b54058ee057a0b19d3136a89c2cea6bc6ef4a#diff-081235aba16ecd0d6ddd8503d64d0d33 was the change for updating WebSocket Standalone TCK to version 2.0.0 (thanks Mark Thomas), so we need to do the same for other components in https://github.com/eclipse-ee4j/jakartaee-tck/tree/master/release/toolshttps://github.com/eclipse-ee4j/jakartaee-tck/issues/279 is the tracking issue.

 

A useful metric could be simply that these zip files are being produced and have the correct version IDs. (By a count I did last week, there were 6 zip files that seemed to be updated using this metric. There could be more this week, I haven't checked yet.)

It would be nice to see date stamps for the files in that folder, I bet many of them are out of date and should be deleted (perhaps at the time of doing final releases elsewhere, we could of cleaned out the related nightly TCK files from https://download.eclipse.org/ee4j/jakartaee-tck/master/nightly).

 

In addition when you look at the Jenkins job under JUnit Reports (e.g. here), you will see a few TCK entry lines (12 right now) -- nearly all are failing.

We created https://ci.eclipse.org/jakartaee-tck/job/build-glassfish today which will hopefully soon be used for building + running the Platform TCK and Standalone TCKs as well, at least until we switch to a nightly build from the GlassFish project.

These test jobs use GlassFish builds and will perform a validation on each stand-alone TCK. I hesitate to call that compatibility validation, because there was concern in EE 8 about how those tests are run -- but it is a potential comparative point.

Does the GlassFish project also run each stand-alone TCK, as well?  Or rely on the https://ci.eclipse.org/jakartaee-tck/job/standalonetck-nightly-build-run-master for validation?  If we do rely on standalonetck-nightly-build-run-master, one low cost improvement, is to have TCK failures trigger email notification to be sent to those interested (or we could have a new public mailing list that TCK failures are sent to, if others would join such a potentially noisy mailing list :).  We currently do this for the nightly build of the Platform TCK. 

Regardless, there were 23 entries in EE 8, just under 19K tests that passed. These numbers will change for EE 9 due to pruning. But we can track this evolution as the work progresses.

Should we wait until we are running with a daily GlassFish master (6.0) build to communicate these numbers in our TCK status updates?  Perhaps we could have a script that automates collecting them, so anyone can copy/paste them easily into an email or even create another Jenkins job that performs release validation.

 

Running these tests, in the same way we did for EE 8, on each stand-alone TCK could be a useful measure or our progress. (Also, removing any tests that are pruned might also be good.)

 

+1.  We will remove the pruned tests and have tracking issues for that.

 

Currently all the porting kit references are "undefined."

Does this mean that GlassFish 6.0 does currently rely on the https://ci.eclipse.org/jakartaee-tck/job/standalonetck-nightly-build-run-master job to validate that GlassFish passes all of the Standalone TCKs?  

 

What happens after the porting key references are "defined?"  Does that help GlassFish 6.0 to run the Standalone TCKs?

Many of the sub-projects as well. Guru has started working on BV, DI and CDI porting kits, but has not progressed much past basic build problems with GlassFish 6. I'm trying to figure out what we can to do unblock that but it's slow going.

Is this captured by a Jakarta Platform level issue?  

If the API teams can create their own Jenkins jobs, performing the tests to their requirements that would be even more data and would be even more useful. They should have jobs they used from EE 8 and they can evolve from those.

 +1

We can decide if any of this will be a goal for the forthcoming Milestone release, for example we could say -- it is a goal to generate the .zip files with their planned target name and maybe a stretch goal to have a test result listed in the Jenkins job results.

Maybe we would like a goal about the other TCKs -- for example, just that we're running them against GlassFish (saying nothing about a result goal, for example).

Lastly, I'll just comment that the 'nightly' directory is quite full of lots of files. Some from EE 8, some from EE 9. I'd recommend we consider moving all the EE 9 TCKs into an EE9 sub-folder (or maybe someone wants to suggest an alternative organization they like better).

+1 We could switch from https://download.eclipse.org/ee4j/jakartaee-tck/master/nightly, to https://download.eclipse.org/ee4j/jakartaee-tck/ee9 or just https://download.eclipse.org/ee4j/jakartaee-tck/9 or something else, this would ensure that we only see things related to EE9 under that link.  Such a move would 

 

What do you and others think?

Thank you for these ideas and communicating them on this mailing list! 

 

Speaking of ideas, Cesar Hernandez raised the idea of doing a video or blog, to encourage more community involvement on the Platform TCK.  I would very much like to do this soon, if others are willing to contribute.  I think that we could start a new email thread to discuss possible topics and what people would like to learn more about, including the history of the TCKs.  

 

Also, following up on another idea from the discussion on branching, IMO we should document our process around the Platform TCKs, for the "prospective maintainers, years from now".  This is something that is started on https://github.com/eclipse-ee4j/jakartaee-tck/wiki but IMO could use more content and updates.

 

Scott

 

-- Ed

On 5/19/2020 11:48 AM, Alwin Joseph wrote:

Hi Scott,

Yes that is correct. We build and run the standalone TCKs whose source is jakartaee-tck repo using [1]. This job uses the scripts under /docker to build & run standalone TCKs.
-build_standalonetck.sh to build all the standalone TCKs(takes tck name as parameter)
-{tckname}tck.sh to run the standalone TCK.


But some of the api projects have their own job for building and running these standalone TCKs in its own CI instance by cloning the jakartaee-tck repo. For eg: The jobs in https://ci.eclipse.org/jsonp/, https://ci.eclipse.org/jaxrs/ were used to build and run jsonp & jaxrs standalone TCKs.

Activation & mail tcks  are built & run in their own CI instances - [2] & [3] respectively.

Regards,
Alwin

On 19/05/20 11:35 PM, Scott Marlow wrote:

All, 

 

I wasn't quite sure how the Jakarta Platform Stand-alone TCKs were being built, but think that I found the answer via the standalonetck-nightly-build-run-master [1] job, which runs on a weekly basis (last run was on May 13).  It takes just under two hours to run the standalonetck-nightly-build-run-master [1].

 

The job writes to the jakartaee-tck/master/nightly downloads [2] folder, note that the Eclipse Jakarta EE 8 platform files are still there as well.

 

Scott

 

 

_______________________________________________
jakartaee-tck-dev mailing list
jakartaee-tck-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-tck-dev

 

_______________________________________________
jakartaee-tck-dev mailing list
jakartaee-tck-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-tck-dev

_______________________________________________
jakartaee-tck-dev mailing list
jakartaee-tck-dev@xxxxxxxxxxx
To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jakartaee-tck-dev

Back to the top