Giter Site home page Giter Site logo

Incorrect class name is used when the generated test class requires a number to be added (e.g. Client.class in EE 10 but was split into Client1/2/3/4 in EE 11) about jakartaee-tck-tools HOT 9 CLOSED

scottmarlow avatar scottmarlow commented on August 10, 2024
Incorrect class name is used when the generated test class requires a number to be added (e.g. Client.class in EE 10 but was split into Client1/2/3/4 in EE 11)

from jakartaee-tck-tools.

Comments (9)

scottmarlow avatar scottmarlow commented on August 10, 2024

I looked in the current Platform TCK sources and think that we might only have this problem with jpa tests. Connector + JDBC do have some tests like connManagerClient1.java or callStmtClient1.java but I think those map to the same class names in EE 11 so are unlikely to hit this bug.

from jakartaee-tck-tools.

scottmarlow avatar scottmarlow commented on August 10, 2024

I just counted the number of generated source files that have this problem and it happens in 1276 jpa tests. So, think I will find the cause and see if I can fix it.

from jakartaee-tck-tools.

scottmarlow avatar scottmarlow commented on August 10, 2024

Look at updating parseVehiclePackage() to pass in clazz.getName() (e.g. "ee.jakarta.tck.persistence.core.annotations.access.field.Client1") to be used instead of "ee.jakarta.tck.persistence.core.annotations.access.field.Client.class".

from jakartaee-tck-tools.

scottmarlow avatar scottmarlow commented on August 10, 2024

I'm going to push my hack for this fix to a branch but don't expect that we need to merge it as it needs further refinement.

from jakartaee-tck-tools.

scottmarlow avatar scottmarlow commented on August 10, 2024

https://github.com/scottmarlow/jakartaee-tck-tools/tree/jakartaee-tck-tools-issues-91 has the hack fix.

from jakartaee-tck-tools.

starksm64 avatar starksm64 commented on August 10, 2024

The problem here is that the EE10 build.xml parse is using the EE10 test class which no longer exists. I don't see why the hack you have would change this. This is really another name mapping problem, but we can't add all these new client classes to the mapping.

It seems like the code is going to have to look for the EE10 version of the input EE11 client class after mapping, and if it ends in a number and does not exist in the EE10 code, look to map the EE10 non-numbered class to the input numbered class. I'll take a look at this tomorrow as its late.

from jakartaee-tck-tools.

scottmarlow avatar scottmarlow commented on August 10, 2024

The problem here is that the EE10 build.xml parse is using the EE10 test class which no longer exists. I don't see why the hack you have would change this. This is really another name mapping problem, but we can't add all these new client classes to the mapping.

As best as I can tell from looking around at different Client1.java tests in the EE 10 TCK vs EE 11 TCK, the EE 11 jpa tests are the only examples of where we split EE 10 Client.java into multiple (EE 11) Client1.java + Client2.java sources. So the class name mapping issue is limited to the JPA tests.

My hack in diff form is:

diff --git a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java
index b3f17ba..e81259c 100644
--- a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java
+++ b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java
@@ -260,6 +260,15 @@ public class Utils {
                             clazz = dotClass.replace('$', '.');
                         }
                     }
+                    // JPA hack
+                    if(clazz.contains("ee.jakarta.tck.persistence") && clazz.endsWith(".Client.class")) {
+                        System.out.println("xxx set a breakpoint here: " + clazz);
+                        String testClassName = System.getProperty("testpackage.classname") + ".class";
+                        System.out.println("clazz " + clazz + " needs to be updated with " + testClassName);
+                        if (!clazz.equals(testClassName)) {
+                                    clazz = testClassName;
+                        }
+                    }
                     classes.add(clazz);
                 }
             }
diff --git a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java
index 45524fb..0f15b77 100644
--- a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java
+++ b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java
@@ -308,6 +308,7 @@ public class TestPackageInfoBuilder {
     private DeploymentMethodInfo parseVehiclePackage(PackageTarget pkgTargetWrapper, Class<?> clazz, VehicleType vehicleType) {
         pkgTargetWrapper.execute(vehicleType);
         String protocol = getProtocolForVehicle(vehicleType);
+        System.setProperty("testpackage.classname",clazz.getName());
         String testClassSimpleName = clazz.getSimpleName();
         // Extract the information for the current deployment from the parsed ts.vehicles info
         DeploymentInfo deployment = new DeploymentInfo(clazz, pkgTargetWrapper.getDeploymentName(), protocol, vehicleType);

My hack is very specific to the JPA compile failures that I was seeing. Initially, I looked up the call stack in the debugger and didn't see a quick solution so just hacked in the (thread unsafe) system property solution to pass the class name in.

It seems like the code is going to have to look for the EE10 version of the input EE11 client class after mapping, and if it ends in a number and does not exist in the EE10 code, look to map the EE10 non-numbered class to the input numbered class. I'll take a look at this tomorrow as its late.

It did seem like the TestPackageInfoBuilder#parseVehiclePackage did already have the EE 11 test class in variable clazz which I thought about passing down to the Utils#getClassFilesString(EE11toEE10Mapping mapping, List fileSets, List anonymousClasses) call.

from jakartaee-tck-tools.

starksm64 avatar starksm64 commented on August 10, 2024

Ok, I was looking at the wrong commit then.

See the latest changes I pushed up in #95 that add a mapping from the current test class if it ends with a digit and does not exist in EE10, but the non-digit class does. This is producing jpa code that compiles. If that works for you I can put out a 1.0.0-M3.

Note that the DefaultEEMapping ctor is now private and the instance needs to be obtained via DefaultEEMapping.getInstance(). This is because the test class mapping is set for each call to TestPackageInfoBuilder.buildTestClientsEx(...). This is definitely not a thread safe class now.

from jakartaee-tck-tools.

scottmarlow avatar scottmarlow commented on August 10, 2024

I'm not sure but with this change + https://github.com/scottmarlow/jakartaee-tck-tools/tree/jakartaee-tck-tools-pull-95, I am getting the following compile failure (without my hack change that I mentioned earlier):

[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3PmservletTest.java:[79,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientPmservletTest.java:[70,59] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientAppmanagednotxTest.java:[110,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3AppmanagedTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientAppmanagedTest.java:[110,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3PuservletTest.java:[79,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientPuservletTest.java:[71,59] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientStateful3Test.java:[109,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3Stateful3Test.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3AppmanagednotxTest.java:[118,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3Stateless3Test.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientStateless3Test.java:[109,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist

From platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4AppmanagedTest.java:

        // Ejb
            // the jar with the correct archive name
            JavaArchive jpa_core_criteriaapi_CriteriaQuery_appmanaged_vehicle_ejb = ShrinkWrap.create(JavaArchive.class, "jpa_core_criteriaapi_CriteriaQuery_appmanaged_vehicle_ejb.jar");
            // The class files
            jpa_core_criteriaapi_CriteriaQuery_appmanaged_vehicle_ejb.addClasses(
                com.sun.ts.tests.common.vehicle.ejb3share.EJB3ShareBaseBean.class,
                com.sun.ts.tests.common.vehicle.VehicleRunnerFactory.class,
                com.sun.ts.tests.common.vehicle.ejb3share.UseEntityManager.class,
                com.sun.ts.tests.common.vehicle.ejb3share.EJB3ShareIF.class,
                com.sun.ts.lib.harness.EETest.Fault.class,
                com.sun.ts.tests.common.vehicle.appmanaged.AppManagedVehicleIF.class,
                com.sun.ts.tests.common.vehicle.ejb3share.UseEntityManagerFactory.class,
                ee.jakarta.tck.persistence.common.PMClientBase.class,
                ee.jakarta.tck.persistence.common.schema30.Util.class,
                com.sun.ts.tests.common.vehicle.VehicleRunnable.class,
                com.sun.ts.tests.common.vehicle.appmanaged.AppManagedVehicleBean.class,
                com.sun.ts.tests.common.vehicle.ejb3share.UserTransactionWrapper.class,
                ee.jakarta.tck.persistence.core.criteriaapi.CriteriaQuery.Client4.class,
                com.sun.ts.lib.harness.EETest.class,
                com.sun.ts.lib.harness.ServiceEETest.class,
                com.sun.ts.tests.common.vehicle.ejb3share.EntityTransactionWrapper.class,
                com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client.ExpectedResult.class,
                com.sun.ts.lib.harness.EETest.SetupException.class,
                com.sun.ts.tests.common.vehicle.VehicleClient.class,
                com.sun.ts.tests.common.vehicle.ejb3share.NoopTransactionWrapper.class
            );

It looks like com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client.ExpectedResult.class` was for nested Client.ExpectedResult class in the EE 10 Client.java

from jakartaee-tck-tools.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.