{"id":14988194,"url":"https://github.com/apache/tomee-tck","last_synced_at":"2026-03-07T01:35:59.836Z","repository":{"id":38418710,"uuid":"165544074","full_name":"apache/tomee-tck","owner":"apache","description":"Apache TomEE TCK Setup","archived":false,"fork":false,"pushed_at":"2024-09-21T15:02:15.000Z","size":8040,"stargazers_count":8,"open_issues_count":0,"forks_count":15,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-10-29T00:50:28.357Z","etag":null,"topics":["java","network-server","tomee"],"latest_commit_sha":null,"homepage":"https://tomee.apache.org/","language":"Java","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-13T19:14:46.000Z","updated_at":"2024-07-27T17:50:00.000Z","dependencies_parsed_at":"2024-09-30T01:21:05.902Z","dependency_job_id":null,"html_url":"https://github.com/apache/tomee-tck","commit_stats":{"total_commits":582,"total_committers":21,"mean_commits":"27.714285714285715","dds":0.761168384879725,"last_synced_commit":"78fb8d5212a012fd9a2cae813f515b22000e2f0e"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/apache/tomee-tck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Ftomee-tck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Ftomee-tck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Ftomee-tck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Ftomee-tck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/tomee-tck/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Ftomee-tck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30205243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"ssl_error","status_checked_at":"2026-03-06T18:57:34.882Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","network-server","tomee"],"created_at":"2024-09-24T14:16:16.576Z","updated_at":"2026-03-07T01:35:59.810Z","avatar_url":"https://github.com/apache.png","language":"Java","readme":"= TomEE-TCK\n\n== GETTING SETUP\n\nThis document and the OpenEJB TCK setup can be cloned from Git:\n\n      git clone https://github.com/apache/tomee-tck.git\n\nIn order to run the TCK, you will need both the TCK binary itself, and the Eclipse Glassfish RI.\n\n=== Use setup-tck9.sh\n\nEnsure, that you have a `profile` in your maven settings.xml like\n\n      \u003csettings\u003e\n        \u003cprofiles\u003e\n          \u003cprofile\u003e\n            \u003cid\u003ejakarta-tck-environment\u003c/id\u003e\n            \u003cactivation\u003e\n      \t    \u003cactiveByDefault\u003etrue\u003c/activeByDefault\u003e\n            \u003c/activation\u003e\n            \u003cproperties\u003e\n                \u003cjakartaee91.cts.home\u003e/opt/dev/tcks/jakartaee91-tck\u003c/jakartaee91.cts.home\u003e\n                \u003cjakartaee91.ri.home\u003e/opt/dev/tcks/glassfish6/glassfish\u003c/jakartaee91.ri.home\u003e\n            \u003c/properties\u003e\n          \u003c/profile\u003e\n        \u003c/profiles\u003e\n      \u003c/settings\u003e\n\nYou can copy \u0026 paste from `settings.xml.template`. Ensure, that the directories exist. Then just run `./setup-tck91.sh`.\nIt will conduct the initial TCK setup.\n\n==== Getting a fresh TCK install after modifications\n\nA critical thing to be aware of is that\n\n- 1.) Running the TCK will in fact modify your install in a handful of ways\n- 2.) Some of these processes happen exactly once and will not repeat unless you unpack a completely fresh TCK install.\n\nJust go to the location of the unzipped TCK and run\n\n    git init\n    git add *\n    git commit -m \"initial\"\n\nWith that you can do a `git clean -fd` / `git reset --hard HEAD` at any time to restore the TCK install to a fresh state.\nYou can also do a `git status` and `git diff` to see exactly what has been modified.\n\n=== Semi Automated Way of Building the TCK from Source\n\nThis is interesting, if you need to modify TCK source. To build from source, following these steps:\n\n    wget https://download.eclipse.org/ee4j/jakartaee-tck/jakartaee9-eftl/promoted/jakarta-jakartaeetck-9.1.0.zip\n    unzip jakarta-jakartaeetck-9.1.0.zip\n    rm jakarta-jakartaeetck-9.1.0.zip\n    cd jakartaeetck\n    export WORKSPACE=$(pwd)\n    export GF_BUNDLE_URL=https://download.eclipse.org/ee4j/glassfish/glassfish-6.2.5.zip\n    export GF_HOME=$WORKSPACE\n    export ANT_HOME=/home/jgallimore/Apps/apache-ant-1.10.5\n    export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64/\n    export PATH=$JAVA_HOME/bin:$ANT_HOME/bin/:$PATH\n    $WORKSPACE/docker/build_jakartaeetck.sh\n\nNOTE: Substitute in your path for JAVA_HOME and ANT_HOME as appropriate. The TCK takes around an hour to build.\n\nOnce that is complete, unzip the TCK zip file somewhere on your file system. Where and how you set this up is all down to personal preference, but I like to create a ee8tck folder under ~/dev and have both the TCK\nand Glassfish in this folder:\n\n    export TCK_HOME=/Users/jgallimore/dev/ee8tck/javaeetck\n    export RI_HOME =/Users/jgallimore/dev/ee8tck/glassfish5\n\nYou'll then need to add Apache Ant to the TCK:\n\n    mkdir -p $TCK_HOME/tools/ant\n    cp -R $ANT_HOME $TCK_HOME/tools/\n\nNOTE: I'm hoping we can eliminate this step (copying Ant) in the coming days.\n\nOnce unpacked, they can be \"hooked\" up via your maven settings.xml file like so:\n\n      \u003csettings\u003e\n        \u003cprofiles\u003e\n          \u003cprofile\u003e\n            \u003cid\u003ejakarta-tck-environment\u003c/id\u003e\n            \u003cactivation\u003e\n      \t    \u003cactiveByDefault\u003etrue\u003c/activeByDefault\u003e\n            \u003c/activation\u003e\n            \u003cproperties\u003e\n                \u003cjakartaee91.cts.home\u003e/opt/dev/tcks/jakartaee91-tck\u003c/jakartaee91.cts.home\u003e\n                \u003cjakartaee91.ri.home\u003e/opt/dev/tcks/glassfish6/glassfish\u003c/jakartaee91.ri.home\u003e\n            \u003c/properties\u003e\n          \u003c/profile\u003e\n        \u003c/profiles\u003e\n      \u003c/settings\u003e\n\n\n== TEST RUN\n\nTo complete a test run against the latest TomEE 9.0.0-SNAPSHOT, from the tomee-tck folder, run\n\n    ./runtests --web tomee-plume com.sun.ts.tests.ejb30.bb.localaccess.statelessclient\n\nA successful execution should show and output similar to:\n\n          ===============================================================================\n              1/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#exceptionTest1 - PASSED\n              2/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#exceptionTest2 - PASSED\n              3/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#exceptionTest3 - PASSED\n              4/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#exceptionTest4 - PASSED\n              5/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#exceptionTest5 - PASSED\n              6/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#passByReferenceTest1 - PASSED\n              7/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#passByReferenceTest2 - PASSED\n              8/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#passByReferenceTest3 - PASSED\n              9/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#passByReferenceTest4 - PASSED\n              10/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#passByReferenceTest5 - PASSED\n              11/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#passByValueTest - PASSED\n              12/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#runtimeExceptionTest1 - PASSED\n              13/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#runtimeExceptionTest2 - PASSED\n              14/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#runtimeExceptionTest3 - PASSED\n              15/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#runtimeExceptionTest4 - PASSED\n              16/-0/?0 - com/sun/ts/tests/ejb30/bb/localaccess/statelessclient/Client#java#runtimeExceptionTest5 - PASSED\n          ===============================================================================\n          Completed running 16 tests (0:00:37.088):\n              Passed: 16\n              Failed: 0\n              Errors: 0\n          ===============================================================================\n\n\n== MISC\n\nThe target directory is not cleaned out at the beginning of a test\nrun.  There are a few thousand tests and sometimes multiple\nexecutions are required to get complete results.  It's also nice to\nbe able to look back on older log files when tracking down and fixing\nbugs that the tests uncover.\n\nBottom line is you have to clear out the target directory manually.\nOn occasion some bad state will get into the server install in the\ntarget/ directory.  If you start getting weird maven or groovy\nerrors, clean out the target dir and try again.\n\n== TAB COMPLETION\n\nThere is a nice little script in the root directory called\nruntests.completer which, when sourced, can give be a great\ntime-saver when trying to navigate to run a specific test.\n\nIn bash just source the file like so:\n\n  source runtests.completer\n\n=== ZSH\n\nIf you are using ZSH, you need to execute the follows commands:\n\n      autoload -U +X compinit \u0026\u0026 compinit\n      autoload -U +X bashcompinit \u0026\u0026 bashcompinit\n      source runtests.completer\n\nThen you will be able to have the completer working fine for you ZSH as well. :)\n\n== LOGS\n\nThe TCK for the most part runs as a client in a separate vm.  The\ntest results are sent to this vm and then logged here:\n\n   target/logs/javatest.log\n\nWhen looking at exceptions in that log file often come from the\nremote deployer tool -- the same tool we use on the command line for\ndeployment.  Most of the deployment related exceptions were generated\non the server and sent to the client and that's why the show up in\nthat log.\n\nThe server logs are in the usual place:\n\n   target/apache-tomee-plume-9.0.0-SNAPSHOT/logs\n   target/apache-tomee-plume-9.0.0-SNAPSHOT/logs\n\n== SELECTING TESTS\n\nIt is possible to select whole groups of tests or even individual\ntests.  The following are all valid ways to select which tests you'd\nlike to run.\n\n       ./runtests --web tomee-plume -c com.sun.ts.tests.ejb30 com.sun.ts.tests.ejb\n       ./runtests --web tomee-plume -c com.sun.ts.tests.ejb30.lite.stateful.concurrency.accesstimeout\n       ./runtests --web tomee-plume -c com.sun.ts.tests.ejb30.lite.stateful.concurrency.accesstimeout.annotated\n       ./runtests --web tomee-plume -c com.sun.ts.tests.ejb30.lite.stateful.concurrency.accesstimeout.annotated.Client#beanClassLevel_from_ejbembed\n\nThe first command runs of the ejb30 and ejb sections of the TCK\nillustrating that it is possble to run many sections or tests at\nonce.  The very last line shows the syntax for running just one\nspecific test.\n\nNote that the output of the tck shows which exact tests are being\nrun.  For example:\n\n       ...[tck output]...\n        com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#java#beanClassLevel_from_ejbembed - FAILED\n        com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#java#beanClassLevel_from_ejblitejsf - PASSED\n        com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#java#beanClassLevel_from_ejblitejsp - PASSED\n        com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#java#beanClassLevel_from_ejbliteservlet - PASSED\n        com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#java#beanClassLevel_from_ejbliteservlet2 - PASSED\n        com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#java#beanClassLevel2_from_ejbembed - FAILED\n       ....\n\nFor the most part, you can copy and paste that test name as-is and use\nit to run a test that failed... with one slight adjustment.  You need\nto delete the \"#java\" part and then it will work.\n\n=== BAD\n\n   ./runtests --web tomee-plume com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#java#beanClassLevel_from_ejbembed\n\n=== GOOD\n\n   ./runtests --web tomee-plume com/sun/ts/tests/ejb30/lite/stateful/concurrency/accesstimeout/annotated/Client#beanClassLevel_from_ejbembed\n\n== TEST DEBUG\n\nThe following are the flags the scrip `runtests` accept for debugging purposes:\n\n\n    -d,--debug              Enable Server and TCK appclient debug options (5005 and 5003)\n    -de,--debug-embedded    Enable TCK embedded ejb debug options (port 5001)\n    -dh,--debug-harness     Enable TCK harness debug options (port 5002)\n    -da,--debug-appclient   Enable TCK appclient debug options (port 5003)\n    -dj,--debug-javatest    Enable TCK javatest debug options (port 5004)\n    -ds,--debug-server      Enable Server debug options (port 5005)\n    --connector             deploy connectors for connector tests\n\nYou can attach to the ports via your IDE remote debugger options.\nExample:\n\n    ./runtests --web tomee-plume -c -d com.sun.ts.tests.ejb30.lite.stateful.concurrency.accesstimeout.annotated.Client#beanClassLevel_from_ejbembed\n\nDepending on the IDE, you will need to attempt twice to connect to the exposed port.\n\n== WHAT TO TEST\n\nThe test that needs to be tested are the one having the following `keywords`:\n\n    javaee_web_profile, ejb_web_profile, jacc_web_profile, jaspic_web_profile, javamail_web_profile, jaxr_web_profile, xa_web_profile, jaxrpc_web_profile, jaxws_web_profile\n\nFor more information about TCK structure and tests attributes check the link:about_tck{outfilesuffix}[about_tck] documentation.\n\n== WHAT NEXT\n\nGetting from zero to passing is a long road.  Failures and the\noverall progress tends to go in three stages:\n\n1. setup issues -- the right things are not where they need to be.\n\n2. missing features -- a key feature is missing causing failures in unrelated tests.\n\n3. compliance issues -- legitimate failures.\n\nDuring phase 1 there will be big jumps in numbers. It is best to\nclear out as much of phase 1 as possible before moving on to any\nissues of phase 2 or 3.\n\nDuring phase 2 it becomes apparent that many tests fail simply\nbecause of an unrelated feature that many tests use, such as global\njndi support.  As these features are added, the tests that still fail\nare usually failing for more legitimate reasons -- actual compliance\nissues -- this is phase 3.\n\nPhase 3 takes the longest and is often the hardest.  Unlike phase 1\nor 2, the time spent debugging and fixing a test usually only results\nin one or two more passing tests.  It is also common that fixing a\nspecific test requires reworking part of the code.  This inevitably\nresults in \"two steps forward, one step backward\" and other tests\nmight fail because of the change.  This is normal. It is also the\nreason why there should be no more phase 1 or 2 style issues, so that\nit is possible to see the regressions.  Working on phase 3 style\nissues while there are still phase 1 and 2 style issues is a little\nbit like working blind.  You don't really know how many steps\nbackward you might be taking as a result of a change.  It can be\ndone, but it is risky.\n\n== WORKING TOGETHER\n Communication:-\n -Email:Make use of dev@tomee.apache.org\n\nWe want to divide and conquer on each phase and clear it out as much\nas possible before moving to the next one.  We could possibly get up\nto 80% passing before reaching phase 3.\n\nSo the name of the game is \"call your shot\" or \"name it and claim\nit.\"  Find an issue that affects as many tests as possible and post\nthat you are working on it so others know not to look into it as\nwell.\n\nIf you get busy or stuck, no problem, just post again to let others\nknow the issue is up for grabs.  This is also normal.  Taking a quick\npeak and then realizing that the issue involves someone else's area\nof expertise is common.  Even if you aren't able to fix something,\ntaking a look and reporting as much info as you can is incredibly\nvaluable.  It's all part of the certification dance and will ideally\nhappen very often -- the right people working on the right things\ngets you certified much faster.\n\nThere are usually so many issues that finding the right one for you\nis somewhat like sifting through a pile of legos looking for that\nperfect piece.  It doesn't always fit -- chuck it back and look for\nanother one.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Ftomee-tck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Ftomee-tck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Ftomee-tck/lists"}