Bug 820948

Summary: Possible unexpected API changes between JON 3.0 and JON 3.1
Product: [JBoss] JBoss Operations Network Reporter: Mike Foley <mfoley>
Component: CLIAssignee: Jay Shaughnessy <jshaughn>
Status: CLOSED CURRENTRELEASE QA Contact: Mike Foley <mfoley>
Severity: high Docs Contact:
Priority: urgent    
Version: JON 3.1.0CC: ccrouch, jshaughn
Target Milestone: GA   
Target Release: JON 3.1.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-09-11 11:03:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 782579    
Attachments:
Description Flags
API changes between JON 3.0 and JON 3.1
none
Report
none
JAVA API compatibility Report
none
Classes List none

Description Mike Foley 2012-05-11 12:09:09 UTC
Created attachment 583818 [details]
API changes between JON 3.0 and JON 3.1

Description of problem:  Possible unexpected API changes between JON 3.0 and JON 3.1


  
Actual results:  possible API changes between JON 3.0 and JON 3.1


Expected results:  API remains constant, or changes in a managed way (with additions, deprecations, etc...)


Additional info:  attached analysis

Comment 1 Charles Crouch 2012-05-11 16:37:33 UTC
Setting to urgent for dev to investigate more. Initial comments

-We should be diffing between JON3.0.1 and JON3.1.0

-We should be diffing the following api's as represent below
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/100/html/API/remote-api/index.html
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/100/html/API/plugin-api/index.html
http://docs.redhat.com/docs/en-US/JBoss_Operations_Network/100/html/API/domain/index.html
rather than the contents of rhq-enterprise-server-XYZ-client.jar

Comment 2 Charles Crouch 2012-05-11 20:09:26 UTC
From an engineering perspective I'm looking for us to help QE determine which jars should be compared to diff the api's we document, and any additional filtering which is needed.

Comment 3 Ian Springer 2012-05-14 21:33:54 UTC
Here's the commands to list the remote API classes for RHQ 4.4:

$ # enterprise-server-jar
$ wget https://repository.jboss.org/nexus/content/repositories/releases/org/rhq/rhq-enterprise-server/4.4.0/rhq-enterprise-server-4.4.0.jar
$ jar tvf rhq-enterprise-server-4.4.0.jar | grep "org/rhq/enterprise/server/.*Remote\.class"

$ # core-domain
$ wget https://repository.jboss.org/nexus/content/repositories/releases/org/rhq/rhq-core-domain/4.4.0/rhq-core-domain-4.4.0.jar
$ jar tvf rhq-core-domain-4.4.0.jar | grep ".*\.class"

And here's the commands for the plugin API classes for 4.4:

$ # core-plugin-api
$ wget https://repository.jboss.org/nexus/content/repositories/releases/org/rhq/rhq-core-plugin-api/4.4.0/rhq-core-plugin-api-4.4.0.jar
$ jar tvf rhq-core-plugin-api-4.4.0.jar | grep ".*\.class"

$ # core-native-system
$ wget https://repository.jboss.org/nexus/content/repositories/releases/org/rhq/rhq-core-native-system/4.4.0/rhq-core-native-system-4.4.0.jar
$ jar tvf rhq-core-native-system-4.4.0.jar | grep ".*\.class"

$ # core-domain
$ wget https://repository.jboss.org/nexus/content/repositories/releases/org/rhq/rhq-core-domain/4.4.0/rhq-core-domain-4.4.0.jar
$ jar tvf rhq-core-domain-4.4.0.jar | grep ".*\.class"

The classes from core-domain could definitely be filtered further, if we figured out which domain classes are actually referenced by remote API or plugin API classes, but that would not be trivial.


For doing these API checks, I would recommend that QE use the Maven animal-sniffer plugin, which is intended for exactly that.

Reassigning to Mike...

Comment 4 Mike Foley 2012-05-17 15:27:28 UTC
thank you ips.

new report attached comparing JON 3.01 and JON 3.1.

Comment 5 Mike Foley 2012-05-17 15:28:18 UTC
Created attachment 585253 [details]
Report

Comment 6 Mike Foley 2012-05-17 15:29:36 UTC
Problem Summary
Severity	Count
Added Methods	-	503
Removed Methods	High	180
Problems with
Data Types	High	71
Medium	0
Low	0
Problems with
Methods	High	1
Medium	1
Low	0
Other Changes
in Data Types	-	16

Comment 7 Jeeva Kandasamy 2012-05-23 10:06:54 UTC
Created attachment 586290 [details]
JAVA API compatibility Report

We got fix from japi. Now executed with classes filter.

Our target -> Check CLI client remote API's compatibility between JON 3.0.1 and JON 3.1.0.

Here is the exact steps that we followed,

- Downloaded CLI client from JON 3.0.1 server (http://<host-ip>:7080/client/download)and extracted
- Downloaded CLI client from JON 3.1.0 server (http://<host-ip>:7080/client/download)and extracted
- Taken the following jars for validation from the client */lib
    JON 3.0.1 -> rhq-enterprise-comm-4.2.0.JON.3.0.1.GA.jar, rhq-remoting-client-api-4.2.0.JON.3.0.1.GA.jar, rhq-core-domain-4.2.0.JON.3.0.1.GA.jar, rhq-enterprise-server-4.2.0.JON.3.0.1.GA-client.jar, rhq-script-bindings-4.2.0.JON.3.0.1.GA.jar, rhq-core-util-4.2.0.JON.3.0.1.GA.jar, rhq-remoting-cli-4.2.0.JON.3.0.1.GA.jar
    JON 3.1.0 -> rhq-enterprise-comm-4.4.0.JON310ER4.jar, rhq-remoting-client-api-4.4.0.JON310ER4.jar, rhq-core-domain-4.4.0.JON310ER4.jar, rhq-enterprise-server-4.4.0.JON310ER4-client.jarrhq-script-bindings-4.4.0.JON310ER4.jar, rhq-core-util-4.4.0.JON310ER4.jar, rhq-remoting-cli-4.4.0.JON310ER4.jar
- Classes were selected by the command,
    jar tf rhq-enterprise-server-4.2.0.JON.3.0.1.GA-client.jar  | grep "org/rhq/enterprise/server/.*Remote\.class"
    jar tf rhq-core-domain-4.2.0.JON.3.0.1.GA.jar  | grep ".*\.class"

Final Result: Incompatible (1.8%)

Report and classes lists are attached.

Point us if we need to add/remove any classes (or) jars on this comparison.

Comment 8 Jeeva Kandasamy 2012-05-23 10:08:22 UTC
Created attachment 586292 [details]
Classes List

Comment 9 Jay Shaughnessy 2012-05-25 18:32:01 UTC
I reviewed the differences and they all seem OK to me.

Comment 10 Mike Foley 2013-08-30 15:44:48 UTC
verifying per comment 11.  current state of API checker job is passing.