|
Description
David Skeen
Reassigning to Project Lead to review the contribution from Xin Ying Huang. (In reply to comment #1) > Reassigning to Project Lead to review the contribution from Xin Ying Huang. > As part of the Eclipse Legal process (http://www.eclipse.org/legal/EclipseLegalProcessPoster.pdf) we will need to know if the code: 1. Contains any cryptography. 2. Is developed from scratch without incorporating content from elsewhere or relying on the intellectual property of others? 3. Is 100% EPL? Also, when completed, we will capture each developer's name in the project IP log for the target release. As such, please annotate each class you created/updated with a class comment containing the authors (e.g. @author). Pending AG/PG approval before being targeted to 4.5. Approved by the AG and accepted for the 4.5 plan. Hi XinYing, can you confirm that no new dependences will be introduced with this feature (e.g. only the JCE packaged in the IBM and Sun's J2SE is required)? Currently ,the dependences this feature needed are the JCE packaged in the IBM and Sun's J2SE . Updating sizing. Attaching patch with model change to add encrypted boolean attribute on DPLVariable class and challenge string (possibly to store encrypted MD5 hash of DP name) on DPLDatapool class. You can apply to this to the org.eclipse.tptp.platform.models project from HEAD and get the changes needed to move forward. I'll deliver this after the test pass is over. Created attachment 81975 [details]
Model change for encrypted datapool support
Retargetting to feature freeze iteration. Created attachment 87233 [details]
Request for code review
Paul/Joe ,pls review this code ,thanks!
(In reply to comment #11) > Created an attachment (id=87233) [details] > Request for code review > > Paul/Joe ,pls review this code ,thanks! > Completed to-date: -Design discussion and verify design: 6 weeks -Implementation: 8 weeks Created attachment 89835 [details]
New patch based on Feb. 15 code in CVS (HEAD).
Hi Xin,
Sorry for the delayed review. The patch is quite large and it took a bit of time to review. Overall, everything looks good despite the number of comments. These comments are on the patch ONLY. I will provide some comments on the UI when I return to the office on Tuesday.
-Is the scenario of not having the Java Cryptography Architecture (JCA) or the provider for the RC4/MD5 hash algorithms (java.security.MessageDigest) not available at run-time environment been handled and tested?
-For org.eclipse.hyades.models.common.util.EncryptionManager.RC4Encrypter.byteArrayToHexString(byte[]), could you do something like:
StringBuffer string = new StringBuffer();
for (int counter = 0; counter < bytes.length; counter++){
string.append(Integer.toHexString(0x0100 + (bytes[counter] & 0x00FF)).substring(1));
}
return (string.toString());
-For org.eclipse.hyades.models.common.util.EncryptionManager.RC4Encrypter.hexStringToByteArray(String), could you do smelting like:
return (new BigInteger(hex,16).toByteArray());
-The name property for the launchconfigDatapoolHandler extension point should be translated (prefixed with % and launchconfigDatapoolHandler added to the plugin.properties file).
-What is the launchDatapoolCheckPass extension point do? Do we need it? If it is required, the UIClass attribute should be uiClass.
-All new APIs in non-internal packaged require the @provisional JavaDoc tag (see http://www.eclipse.org/tptp/home/documents/process/development/api_contract.html).
-Extension point IDs (and probably names) (e.g. DatapoolPasswordProvider) should be prefixed with the plug-in ID.
-The code in CVS (HEAD) has been changed since the attached patch was generated. I have attached a new patch for the code released in 4.5 I5.
-TPTP supports Java 1.4 run-times so we cannot use Java 1.5/1.6 APIs. Please set your JDK compiler compliance level to 1.4 in Eclipse (Windows >> Preferences... >> Java >> Compiler >> JDK Compliance). You will then need to correct the compilation error in org.eclipse.hyades.test.ui.dialog.DatapoolCheck.DatapoolCheckDialog.getdpNameLength() (maybe change the name to getDatapoolName) since Java 1.4 does not support adding primitives to java.util.Lists. I have replaced the method body with this code in the new patch:
String datapoolName = "";
for (int counter = 0; counter < dp.length; counter++) {
if(dp[counter].getName().length() > datapoolName.length()){
datapoolName = dp[counter].getName();
}
}
return datapoolName;
-Please make sure you add the copyright statement to each new file with the year set to 2008.
-Please make sure the copyright end date is updated on each modified file to 2008.
-Please make sure author and version tags are added to the class JavaDoc comments for each new/modified file. For example:
@author Huang Xin Ying
@version February 15, 2008
-Since the TPTP EMF models are generated, we will have to update the Rose model (/org.eclipse.tptp.platform.models/rose) with the new DPLVariable#Encrypted and DPLDatapool#Challenge properties. In addition, we will need to update the test model class diagram on the TPTP web site (http://www.eclipse.org/tptp/platform/documents/index.php). Please open a child defect against the Test.Models component for this work.
-Please remove any commented code from the patch that is no longer required.
-To increase readability, can you add an underscore ('_') between the work of uppercase constants (e.g. org.eclipse.hyades.test.ui.datapool.internal.dialog.DatapoolConstant).
-TPTP follows the Java naming conventions for classes and methods (see http://wiki.eclipse.org/index.php/Naming_Conventions). Some methods are title cased (for example, org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.ChangeKey(String, IDatapool)).
-Variable in org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.isVaribelEncrypted(IDatapoolVariable) and org.eclipse.hyades.test.ui.datapool.internal.dialog.DatapoolColumnDialog.isVaribelEncrypted(IDatapoolVariable) is misspelled.
-In src/org/eclipse/hyades/test/ui/internal/resources/messages.properties:
1) We use substitution parameters for strings with data that is resolved at run-time. For example:
DatapoolExportWizard_encrypted = {0} is encrypted. Please supply the password.
In the code:
org.eclipse.osgi.util.NLS.bind(UiPluginResourceBundle.DatapoolExportWizard_encrypted, <substitution parameter>);
2) DatapoolDialog_ASSIGNKEYDIALOGTITLE and DatapoolDialog_ERRORFOREDITENCRYPTEDVALUE contain an extra space.
3) There is no need for DatapoolDialog_ENCRYPTEDDISPLAYVALUE and DatapoolDialog_SPLITMARK since they do not need to be translated. Add this to one of your constant classes.
4) password in DatapoolDialog_PASSWORDSHINT should be title case.
-In org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.java, there are three loops that have the following child condition (e.g. click cancel button):
else if (openValue == IDialogConstants.CANCEL_ID)
Can we remove this condition and just break from the loop if the OK button is not pressed?
-Complete and remote all //TODO: comments (4).
-Encrypt and decrypt in several methods in org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager is misspelled (encryp and deencryp).
-More of a stylistic point, org.eclipse.hyades.models.common.util.EncryptionManager.encrypt(String, String) (and possibly others) could be shortened to one line. For example:
public static String encrypt(String content, String pass) {
return (new RC4Encrypter().cipherMessage(pass, content));
}
-Remove the System.outre.println statement from org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.isKeyCorrect(IDatapool, String). The method should throw an exception (maybe 'invalid key exception').
-The same applies for e.printStackTrace() statements (4 in total). The exception should be logged to the .log file through the plug-in's logger (for example, org.eclipse.hyades.models.plugin.ModelsPlugin.log(String)) with a localize error message and error code. Let me know how many error messages you have and I will generate the error codes for you. There are some places where you are logging correctly, but the error message is not translated and does not have an error code (for example, org.eclipse.hyades.test.core.internal.launch.datapool.extensions.LaunchDatapoolExtensionManager.registerDatapoolHandlers() and org.eclipse.hyades.test.core.internal.launch.datapool.extensions.LaunchDatapoolExtensionManager.getExtensionDescriptor(String)).
-//$NON-NLS-1$ should be added at the end of lines with quoted strings. Two quoted strings would have //$NON-NLS-1$ //$NON-NLS-2$, and so on. To find these easily, select one or more projects in the package explorer, right click, Source, and Externalize Strings.
-Please comment all public APIs with class and method JavaDoc comments (e.g. org.eclipse.hyades.test.core.launch.extensions.IPassInfoCollector.execute(DPLDatapool[], Map, List)).
-The example needs updating (missing attribute values) and there is no copyright in /org.eclipse.hyades.test.core/schema/launchconfigDatapoolHandler.exsd and /org.eclipse.hyades.test.core/schema/launchDatapoolCheckPass.exsd (if still required).
-The following methods contain dead code:
org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.encryptedCellInVarible(IDatapoolVariable, String, IDatapool):
String key = DatapoolKeyManager.getKeyInDatapool(datapool);
IDatapoolEquivalenceClass equivalenceClass =
getDefaultEquivalenceClass(datapool);
int variableCount = datapool.getVariableCount();
String rowContents[] = new String[variableCount + 1];
IDatapoolCell[] rowData = new IDatapoolCell[variableCount];
rowContents[0] = String.valueOf(i);
org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.deencryptedCellInVarible(IDatapoolVariable, String, IDatapool):
int variableCount = datapool.getVariableCount();
String rowContents[] = new String[variableCount + 1];
IDatapoolCell[] rowData = new IDatapoolCell[variableCount];
rowContents[0] = String.valueOf(i);
-There are several places where variables, imports, and methods are never used and need to be removed:
The field DatapoolChangeKeyDialog.confirmKeyFieldForeground is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 46
The field DatapoolChangeKeyDialog.datapool is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 39
The field DatapoolChangeKeyDialog.defaultNameCounter is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 56
The field DatapoolChangeKeyDialog.insertionVariableID is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 54
The field DatapoolChangeKeyDialog.insertionVariableName is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 55
The field DatapoolChangeKeyDialog.insertionVariables is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 47
The field DatapoolChangeKeyDialog.nameErrorLabel is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 48
The field DatapoolChangeKeyDialog.newKeyFieldForeground is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 45
The field DatapoolChangeKeyDialog.oldKeyFieldForeground is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 44
The field DatapoolChangeKeyDialog.typeErrorLabel is never read locally DatapoolChangeKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 49
The field DatapoolColumnDialog.okButton is never read locally DatapoolColumnDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 77
The field DatapoolInputKeyDialog.logOnFieldForeground is never read locally DatapoolInputKeyDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 39
The import java.util.Iterator is never used PasswordCollection.java org.eclipse.hyades.test.core/src/org/eclipse/hyades/test/core/testservices/resources line 18
The import java.util.Map is never used PasswordCollection.java org.eclipse.hyades.test.core/src/org/eclipse/hyades/test/core/testservices/resources line 19
The import org.eclipse.emf.ecore.EStructuralFeature is never used DPLCellImpl.java org.eclipse.tptp.platform.models/src-test/org/eclipse/hyades/models/common/datapool/impl line 22
The local variable isKeyChanged is never read DatapoolColumnDialog.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/datapool/internal/dialog line 100 Java
The local variable rowData is never read DatapoolEncryptManager.java org.eclipse.tptp.platform.models/src-test/org/eclipse/hyades/models/common/datapool/util line 52 Java
The local variable rowData is never read DatapoolEncryptManager.java org.eclipse.tptp.platform.models/src-test/org/eclipse/hyades/models/common/datapool/util line 81 Java
The method showErrMes(Shell, String) from the type DatapoolEditorExtension is never used locally DatapoolEditorExtension.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/editor/extension line 402 Java
The method showErrMes(Shell, String) from the type DatapoolExportWizard is never used locally DatapoolExportWizard.java org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/wizard line 91 Java
-In org.eclipse.hyades.test.common.testservices.resources.DatapoolPasswordProvider.getDatapoolPassword(String), change the method to:
String result = null;
try{
result = ServiceInvoker.invokeService(getProviderName(), "method=getDatapoolList,args:testId={0}".concat(testId));
}catch(UnconfiguredComptestAgentException e) {
throw new UnknownTestServiceException(e);
}
return parseResult(result);
Hours worked for patch/UI reviews. (In reply to comment #14) Comments on the UI: -In the Edit Variable dialog, there is extra space at the bottom that can be removed. This extra space was part of the original dialog layout but this is a good opportunity to clean-up the layout. This dialog should expand and contract depending on the elements included (e.g. Move). Also, please add the Encrypted check-box and button at the bottom of the dialog. -Encrypting a variable causes the cells for all rows in that variable to have ****** appear, despite not having any data in the cell. -When editing a cell in an encrypted variable, the cell contains solid circles, one for each character of the cell value. Since the number of asterisks is always 6, can we make both behaviors consistent. I am favoring making the number of asterisks the same as the total number of characters of the cell value. -The old behavior of the cell editor allowed users to select the cell with a single mouse click and start typing, which appears to be broken for encrypted variables. Also, I added two variables and three rows but the cell in Varible1/row2 cannot be edited. -The following exception was thrown when entering a string in a cell of an encrypted variable and then trying to edit it again: java.lang.NumberFormatException: For input string: "as" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:63) at java.lang.Integer.parseInt(Integer.java:490) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.hexStringToByteArray(EncryptionManager.java:147) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.decipherMessage(EncryptionManager.java:87) at org.eclipse.hyades.models.common.util.EncryptionManager.decrypt(EncryptionManager.java:38) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.startCellEditing(DatapoolTable.java:1438) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$17(DatapoolTable.java:1352) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$CursorKeyAdapter.keyPressed(DatapoolTable.java:865) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:154) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1006) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:991) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1019) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1015) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1331) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3883) at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:338) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3776) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4460) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2333) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3369) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1251) at org.eclipse.equinox.launcher.Main.main(Main.java:1227) -You can remove DatapoolExportWizard_unencrypted from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java and display the original message. -You can remove DatapoolDialog_NEWKEYNULLMES from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java since that condition is never reached in the code. -You can remove DatapoolDialog_TRYAGAIN from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java since this message is inconsistent. -You can remove DatapoolDialog_NOTALLMATCH from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java since it can be replaced by DatapoolDialog_ERRORDIALOGTITLE. -The following messages are not used in org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java and can be removed: DatapoolExportWizard_rightpass=You passed. Check Finish to complete. DatapoolDialog_KEY=Key DatapoolDialog_LOGONDIALOGTITLE=Log on DatapoolDialog_ENCRYPTEDID=isencrypted DatapoolDialog_ERRORFOREDITENCRYPTEDVALUE=The cell has been encrypted, please decrypted it before editing -Suggested changes to org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties: DatapoolExportWizard_encrypted= {0} is encrypted. Please enter the password. DatapoolExportWizard_wrongpass=Incorrect password. Please enter the correct password. DatapoolExportWizard_password=Password for {0}: DatapoolDialog_ASSIGNKEYDIALOGTITLE=Set Password DatapoolDialog_ORIGINKEYERRORMES=The old password is incorrect. DatapoolDialog_OLDKEY=&Old Password: DatapoolDialog_NEWKEY=&New Password: DatapoolDialog_CONFIRMNEWKEY=&Confirm New Password: DatapoolDialog_CHANGEKEY=&Modify Password DatapoolDialog_ENCRYPTED=&Encrypt DatapoolDialog_CHANGEKEYDIALOGTITLE=Change Password DatapoolDialog_NEWKEYNOTCONFIRMMES=The passwords you typed do not match. DatapoolDialog_WRONGLOGONKEYMES=The password you typed is incorrect. DatapoolDialog_ERRORDIALOGTITLE=Error DatapoolDialog_INPUTKEYDIALGOTITLE=Enter Password DatapoolDialog_OK=OK DatapoolDialog_PASSWORDSHINT=The password is not correct for each of the following encrypted datapools:\n\n DatapoolDialog_INPUTPASSHINT=Please enter the password for each of the following encrypted datapools: -The layout of the Input Password dialog (when launching a test) is too tight. There needs to be more space in the margins, the input text filed should be the full length of the dialog, and the datapool label contains a border. -The Input Passwpord dialog (when launching a test) should not enable the OK button until all of the test fields are entered. -The 'The passwords do not match' dialog should show an error icon (not a warning icon). -Remove the following from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java and add to one of your constant classes: DatapoolDialog_ENCRYPTEDDISPLAYVALUE=****** DatapoolDialog_SPLITMARK=:: DatapoolDialog_TRUE=true -The Assign Password and Change Password dialogs should not enable the OK button unless all password fields have been entered. -When I modified the password for a variable and clicked OK, the Input Passwpord dialog appeared, which it should not. -Probably related to the above point, I modified the password for a variable and clicked OK and clicked cancel on the Input Passwpord dialog. Then I disabled encryption on the variable and the cells were not correctly decrypted: ÙˆKÝ -Entering the wrong password in the Input Password dialog does not clear the text field when clicking OK in the error dialog. -We should remove the challenge from the datapool when there are no more remaining encrypted variables. -Disabling encryption on a variable after entering data into the cells of the variable causes the following exception: java.lang.NumberFormatException: For input string: "on" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:63) at java.lang.Integer.parseInt(Integer.java:481) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.hexStringToByteArray(EncryptionManager.java:147) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.decipherMessage(EncryptionManager.java:87) at org.eclipse.hyades.models.common.util.EncryptionManager.decrypt(EncryptionManager.java:38) at org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.deencryptedCellInVarible(DatapoolEncryptManager.java:88) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.editColumnAux(DatapoolTable.java:2174) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$2(DatapoolTable.java:2063) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$1.widgetSelected(DatapoolTable.java:182) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1251) at org.eclipse.equinox.launcher.Main.main(Main.java:1227) java.lang.NumberFormatException: For input string: "tw" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:63) at java.lang.Integer.parseInt(Integer.java:481) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.hexStringToByteArray(EncryptionManager.java:147) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.decipherMessage(EncryptionManager.java:87) at org.eclipse.hyades.models.common.util.EncryptionManager.decrypt(EncryptionManager.java:38) at org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.deencryptedCellInVarible(DatapoolEncryptManager.java:88) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.editColumnAux(DatapoolTable.java:2174) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$2(DatapoolTable.java:2063) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$1.widgetSelected(DatapoolTable.java:182) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1251) at org.eclipse.equinox.launcher.Main.main(Main.java:1227) java.lang.ClassCastException: org.eclipse.swt.widgets.Label incompatible with org.eclipse.jface.viewers.CellEditor at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.startCellEditing(DatapoolTable.java:1440) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$17(DatapoolTable.java:1352) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$CursorMouseAdapter.mouseDoubleClick(DatapoolTable.java:942) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:182) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1251) at org.eclipse.equinox.launcher.Main.main(Main.java:1227) -In the Export Datapool wizard page two, there is extra space at the bottom of the wizard that could be used by datapool text area. Also, the text area should dynamically expand and contract depending on the elements included. The sample applies to the import dialog. -When exported an encrypted datapool, the DatapoolExportWizard_encrypted message should cause an error icon in the wizard, not a warning icon. -When exporting a datapool that did have an encrypted variable, the Export Datapool wizard page two displays 'Password for xxx.datapool', which it should not. -Test execution using the local_deploymnet (Run As > Test) does not ask for the user to specify the password and decrypt encrypted variables. -When the user enters the password for an encrypted datapool, we should have an error message/icon/etc. in the input dialog/page (instead of a separate error dialog) to be consistent with the Eclipse UI. Thoughts? Created attachment 90609 [details]
Request for UT test cases review
There has 3 packages in this rar file :
1) org.eclipse.hyades.test.core.tests : contains Juint test case for our extension piont implementation files
2) org.eclipse.hyades.test.ui.datapool.tests : contains manual test and AGR test for datapool editor UI . for AGR test , I can not finish all the steps ,so only creates several steps for it .
3)org.eclipse.tptp.test.testservices.tests : contains Juint test for test service implementation files .
(In reply to comment #16) > Created an attachment (id=90609) [details] > Request for UT test cases review > > There has 3 packages in this rar file : > > 1) org.eclipse.hyades.test.core.tests : contains Juint test case for our > extension piont implementation files > > 2) org.eclipse.hyades.test.ui.datapool.tests : contains manual test and AGR > test for datapool editor UI . for AGR test , I can not finish all the steps ,so > only creates several steps for it . > > 3)org.eclipse.tptp.test.testservices.tests : contains Juint test for test > service implementation files . > > > This file only contains the XMI for a JUnit Plug-in test suite. Please attach all of the test files for review. Created attachment 90847 [details]
Pls try this ZIP file for UT test cases
There has 3 packages in this ZIP file :
1) org.eclipse.hyades.test.core.tests : contains Juint test case for our
extension piont implementation files
2) org.eclipse.hyades.test.ui.datapool.tests : contains manual test and AGR
test for datapool editor UI . for AGR test , I can not finish all the steps ,so
only creates several steps for it .
3)org.eclipse.tptp.test.testservices.tests : contains Juint test for test
service implementation files .
Hi Paul : I collect the comments both in bugzilla Comment #15 & #14 ,below are some of them I want to confirm with you : In Comment #15 : 1) -In the Edit Variable dialog, there is extra space at the bottom that can be removed. This extra space was part of the original dialog layout but this is a good opportunity to clean-up the layout. This dialog should expand and contract depending on the elements included (e.g. Move). Also, please add the Encrypted check-box and button at the bottom of the dialog. Answer : Do we have to follow this way ? look's like it's complicated and I do not how to let this dialog's length be dynamic : (OK button is hinded by error msg labels if label's number is more than 1 ) Do you have any good suggestion about it ? if we can solve this issue , then some issues behind can also be solved in the same way . 2) -Encrypting a variable causes the cells for all rows in that variable to have ****** appear, despite not having any data in the cell. A : I debugged the code ,looks like this error caused by the below exception : java.security.NoSuchAlgorithmException: Cannot find any provider supporting RC4 at javax.crypto.Cipher.getInstance(DashoA12275) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.cipherMessage(EncryptionManager.java:60) at org.eclipse.hyades.models.common.util.EncryptionManager.encrypt(EncryptionManager.java:32) at org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.encryptedCellInVarible(DatapoolEncryptManager.java:52) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.editColumnAux(DatapoolTable.java:2166) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$2(DatapoolTable.java:2063) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$1.widgetSelected(DatapoolTable.java:182) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1251) at org.eclipse.equinox.launcher.Main.main(Main.java:1227) I used both JDK1.4.2_16 & JDK1.5.06 and never met this error before ,whether there are have any change in latest code ? 3) -When editing a cell in an encrypted variable, the cell contains solid circles, one for each character of the cell value. Since the number of asterisks is always 6, can we make both behaviors consistent. I am favoring making the number of asterisks the same as the total number of characters of the cell value. A : Sorry ,it's can not be implemented because of we can not get password for the datapool while opening it ,so we can not change encrypted variable's value back into it's real value and can not get it's real value's length . 4) -The old behavior of the cell editor allowed users to select the cell with a single mouse click and start typing, which appears to be broken for encrypted variables. Also, I added two variables and three rows but the cell in Varible1/row2 cannot be edited. A : Yes , I also found this issue ,but I remember we didn't have this issue in earlier code ,not sure if it's has some relation with above Comment 2) 5) -The following exception was thrown when entering a string in a cell of an encrypted variable and then trying to edit it again: java.lang.NumberFormatException: For input string: "as" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:63) at java.lang.Integer.parseInt(Integer.java:490) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.hexStringToByteArray(EncryptionManager.java:147) at org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.decipherMessage(EncryptionManager.java:87) at org.eclipse.hyades.models.common.util.EncryptionManager.decrypt(EncryptionManager.java:38) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.startCellEditing(DatapoolTable.java:1438) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$17(DatapoolTable.java:1352) at org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$CursorKeyAdapter.keyPressed(DatapoolTable.java:865) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:154) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1006) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:991) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1019) at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1015) at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1331) at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3883) at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:338) at org.eclipse.swt.widgets.Control.windowProc(Control.java:3776) at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4460) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2333) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3369) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:615) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) at org.eclipse.equinox.launcher.Main.run(Main.java:1251) at org.eclipse.equinox.launcher.Main.main(Main.java:1227) A : Can you tell the steps about how to recur this error ? I want to find where is wrong ,thanks 6) -You can remove DatapoolExportWizard_unencrypted from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java and display the original message. -You can remove DatapoolDialog_NEWKEYNULLMES from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java since that condition is never reached in the code. -You can remove DatapoolDialog_TRYAGAIN from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java since this message is inconsistent. -You can remove DatapoolDialog_NOTALLMATCH from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java since it can be replaced by DatapoolDialog_ERRORDIALOGTITLE. A : Sorry ,they're used in my code .... 7) -In the Export Datapool wizard page two, there is extra space at the bottom of the wizard that could be used by datapool text area. Also, the text area should dynamically expand and contract depending on the elements included. The sample applies to the import dialog. -When the user enters the password for an encrypted datapool, we should have an error message/icon/etc. in the input dialog/page (instead of a separate error dialog) to be consistent with the Eclipse UI. Thoughts? A : I think this issue is the same with above 1) 8) -Test execution using the local_deploymnet (Run As > Test) does not ask for the user to specify the password and decrypt encrypted variables. A : I tried it again ,looks like it also ask for user to specify the password when using local_deployment . In Comment #14 1) -Is the scenario of not having the Java Cryptography Architecture (JCA) or the provider for the RC4/MD5 hash algorithms (java.security.MessageDigest) not available at run-time environment been handled and tested? A : I think it's has some relation with above's 2) in Comment #15 2) -Since the TPTP EMF models are generated, we will have to update the Rose model (/org.eclipse.tptp.platform.models/rose) with the new DPLVariable#Encrypted and DPLDatapool#Challenge properties. In addition, we will need to update the test model class diagram on the TPTP web site (http://www.eclipse.org/tptp/platform/documents/index.php). Please open a child defect against the Test.Models component for this work. A : I will do it with other documentations after fix issues in code I will confirm with you if I have any unclear about your other comments ,thanks ! (In reply to comment #19) > 1) -In the Edit Variable dialog, there is extra space at the bottom that can be > removed. This extra space was part of the original dialog layout but this is a > good opportunity to clean-up the layout. This dialog should expand and > contract depending on the elements included (e.g. Move). Also, please add the > Encrypted check-box and button at the bottom of the dialog. > > Answer : Do we have to follow this way ? look's like it's complicated and I do > not how to let this dialog's length be dynamic : > > (OK button is hinded by error msg labels if label's number is more > than 1 ) > > Do you have any good suggestion about it ? if we can solve this issue , > then some issues behind can also be solved in the same way . Looking at the code, this appears to require a significant amount of rewrite. Given the amount of work remaining in the 4.5 release and the amount of resource, we should create a separate defect for this refactoring. Please open a dependant defect to be considered in the next release. > 2) > -Encrypting a variable causes the cells for all rows in that variable to have > ****** appear, despite not having any data in the cell. > > A : I debugged the code ,looks like this error caused by the below exception : > > java.security.NoSuchAlgorithmException: Cannot find any provider > supporting RC4 > at javax.crypto.Cipher.getInstance(DashoA12275) > at > org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.cipherMessage(EncryptionManager.java:60) > at > org.eclipse.hyades.models.common.util.EncryptionManager.encrypt(EncryptionManager.java:32) > at > org.eclipse.hyades.models.common.datapool.util.DatapoolEncryptManager.encryptedCellInVarible(DatapoolEncryptManager.java:52) > at > org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.editColumnAux(DatapoolTable.java:2166) > at > org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$2(DatapoolTable.java:2063) > at > org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$1.widgetSelected(DatapoolTable.java:182) > at > org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227) > at > org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) > at > org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760) > at > org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371) > at > org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) > at > org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) > at > org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) > at > org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) > at > org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) > at > org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) > at > org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) > at > org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) > at > org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) > at > org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) > at > org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) > at > org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) > at > org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown > Source) > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown > Source) > at java.lang.reflect.Method.invoke(Unknown Source) > at > org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) > at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) > at org.eclipse.equinox.launcher.Main.run(Main.java:1251) > at org.eclipse.equinox.launcher.Main.main(Main.java:1227) > > I used both JDK1.4.2_16 & JDK1.5.06 and never met this error before > ,whether there are have any change in latest code ? I did have the JCA packaged in my JRE. How would this affect the number of *s in the cell? This is the scenario I mentioned that the Java Cryptography Architecture (JCA) or the provider for the RC4/MD5 hash algorithms (java.security.MessageDigest) not available at run-time environment. Not all JREs packages these libraries. We need to handle/test this scenario but catching the error (e.g. when the first variable is marked as encrypted) instructing the user that encrypted datapools cannot be created used with the JCA or java.security.MessageDigest. The same will have to be handled on the runner side, since it may (and most often is) a different JRE than the workbench. > 3) -When editing a cell in an encrypted variable, the cell contains solid > circles, > one for each character of the cell value. Since the number of asterisks is > always 6, can we make both behaviors consistent. I am favoring making the > number of asterisks the same as the total number of characters of the cell > value. > > A : Sorry ,it's can not be implemented because of we can not get password > for the datapool while opening it ,so we can not change encrypted variable's > value back into it's real value and can not get it's real value's length . I am not sure I understand. I thought we cached the password until the editor/Eclipse was closed. Either way, the length of the password field is the number of *s we need. > 4) -The old behavior of the cell editor allowed users to select the cell with a > single mouse click and start typing, which appears to be broken for > encrypted > variables. Also, I added two variables and three rows but the cell in > Varible1/row2 cannot be edited. > > A : Yes , I also found this issue ,but I remember we didn't have this issue > in earlier code ,not sure if it's has some relation with above Comment 2) I would assume it is caused by the new password field for the cell, instead of a text field. Can you verify? We may need to provide our own mouse listener to give focus to the password field to emulate the old behavior. > 5) > -The following exception was thrown when entering a string in a cell of an > encrypted variable and then trying to edit it again: > > java.lang.NumberFormatException: For input string: "as" > at > java.lang.NumberFormatException.forInputString(NumberFormatException.java:63) > at java.lang.Integer.parseInt(Integer.java:490) > at > org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.hexStringToByteArray(EncryptionManager.java:147) > at > org.eclipse.hyades.models.common.util.EncryptionManager$RC4Encrypter.decipherMessage(EncryptionManager.java:87) > at > org.eclipse.hyades.models.common.util.EncryptionManager.decrypt(EncryptionManager.java:38) > at > org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.startCellEditing(DatapoolTable.java:1438) > at > org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable.access$17(DatapoolTable.java:1352) > at > org.eclipse.hyades.test.ui.datapool.internal.control.DatapoolTable$CursorKeyAdapter.keyPressed(DatapoolTable.java:865) > at > org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:154) > at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1006) > at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:991) > at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1019) > at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1015) > at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1331) > at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:3883) > at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:338) > at org.eclipse.swt.widgets.Control.windowProc(Control.java:3776) > at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334) > at org.eclipse.swt.widgets.Display.windowProc(Display.java:4460) > at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) > at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2333) > at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3369) > at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392) > at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356) > at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222) > at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474) > at > org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288) > at > org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469) > at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) > at > org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106) > at > org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193) > at > org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106) > at > org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76) > at > org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362) > at > org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:615) > at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564) > at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504) > at org.eclipse.equinox.launcher.Main.run(Main.java:1251) > at org.eclipse.equinox.launcher.Main.main(Main.java:1227) > > > A : Can you tell the steps about how to recur this error ? I want to find > where is wrong ,thanks 1) Enrypt a variable. 2) Enter a value in one of the cells. 3) Attempt to edit the same cell. > 6) -You can remove DatapoolExportWizard_unencrypted from > org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties > and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java > and display the original message. > > -You can remove DatapoolDialog_NEWKEYNULLMES from > org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties > and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java > since that condition is never reached in the code. > > -You can remove DatapoolDialog_TRYAGAIN from > org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties > and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java > since this message is inconsistent. > > -You can remove DatapoolDialog_NOTALLMATCH from > org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties > and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java > since it can be replaced by DatapoolDialog_ERRORDIALOGTITLE. > > > A : Sorry ,they're used in my code .... Yes, but there are reasons (see above) why each should be removed from the resource bundle, resource bundle class, and any code that references them. For example, for DatapoolExportWizard_unencrypted, display the original message. > 7) -In the Export Datapool wizard page two, there is extra space at the bottom > of > the wizard that could be used by datapool text area. Also, the text area > should dynamically expand and contract depending on the elements included. The > sample applies to the import dialog. > > -When the user enters the password for an encrypted datapool, we should have > an > error message/icon/etc. in the input dialog/page (instead of a separate error > dialog) to be consistent with the Eclipse UI. Thoughts? > > A : I think this issue is the same with above 1) Yes.. > 8) -Test execution using the local_deploymnet (Run As > Test) does not ask for > the > user to specify the password and decrypt encrypted variables. > > A : I tried it again ,looks like it also ask for user to specify the > password when using local_deployment . Yes, only if the launch configuration (with an artifact containing an encrypted datapool) has been created for the test suite. Try deleting all your launch configurations and trying again. > In Comment #14 > > 1) > -Is the scenario of not having the Java Cryptography Architecture (JCA) or the > provider for the RC4/MD5 hash algorithms (java.security.MessageDigest) not > available at run-time environment been handled and tested? > > > A : I think it's has some relation with above's 2) in Comment #15 Yes. > 2) -Since the TPTP EMF models are generated, we will have to update the Rose > model > (/org.eclipse.tptp.platform.models/rose) with the new DPLVariable#Encrypted and > DPLDatapool#Challenge properties. In addition, we will need to update the test > model class diagram on the TPTP web site > (http://www.eclipse.org/tptp/platform/documents/index.php). Please open a > child defect against the Test.Models component for this work. > > A : I will do it with other documentations after fix issues in code I see you opened https://bugs.eclipse.org/bugs/show_bug.cgi?id=221097. (In reply to comment #16) > Created an attachment (id=90609) [details] > Request for UT test cases review Looks good. All of the TPTP test suites need to have their behavior defined (see the Behavior tab). > There has 3 packages in this rar file : > > 1) org.eclipse.hyades.test.core.tests : contains Juint test case for our > extension piont implementation files -The org.eclipse.hyades.test.core.internal.launch.datapool.extensions package needs to be exported from the org.eclipse.hyades.test.core plug-in to compile the JUnit test code. > 2) org.eclipse.hyades.test.ui.datapool.tests : contains manual test and AGR > test for datapool editor UI . for AGR test , I can not finish all the steps ,so > only creates several steps for it . -Please use http://www.eclipse.org/tptp/home/documents/process/TPTP_Manual_Test_Case_Generator.html to generate the description of your manual test cases. -What were the limitations when using the AGR? We should have AGR test suites for the manual test suite since there are no additional resources to run these new manual test suites for each test pass. That said, any use cases that cannot be automated using the AGR must be covered as manual tests. -You should create specific test cases for any scenarios that we find when reviewing the patch (e.g. JCA not available). > 3)org.eclipse.tptp.test.testservices.tests : contains Juint test for test > service implementation files . -The org.eclipse.hyades.test.core.testservices.resources package needs to be exported from the org.eclipse.hyades.test.core plug-in to compile the JUnit test code. -The org.eclipse.tptp.test.testservices.tests plug-in has to require the org.eclipse.hyades.test.core plug-in to compile the JUnit test code. Created attachment 91486 [details]
Create a new patch after updated code
I fixed most of issues in feedback of code review ,for those can not be solve in this release , I opened defects for them .
I will update UT test cases tomorrow .
Since 13,March is the 45 release API freeze end day ,let's finish code related works in this week ,then I will have some time to do some documentation works in next week ,thanks .
Created attachment 91605 [details] Updated UT test cases Issues in last ZIP file : 1)-The org.eclipse.hyades.test.core.internal.launch.datapool.extensions package needs to be exported from the org.eclipse.hyades.test.core plug-in to compile the JUnit test code. Answer : fixed . 2) -Please use http://www.eclipse.org/tptp/home/documents/process/TPTP_Manual_Test_Case_Generator.html to generate the description of your manual test cases. A : fixed . 3)-The org.eclipse.hyades.test.core.testservices.resources package needs to be exported from the org.eclipse.hyades.test.core plug-in to compile the JUnit test code. -The org.eclipse.tptp.test.testservices.tests plug-in has to require the org.eclipse.hyades.test.core plug-in to compile the JUnit test code. A : fixed 4) -What were the limitations when using the AGR? We should have AGR test suites for the manual test suite since there are no additional resources to run these new manual test suites for each test pass. That said, any use cases that cannot be automated using the AGR must be covered as manual tests. A : AGR test must uses absolute directory for the CVS files used while importing a CSV file to generate a datapool .if the directory is changed that's will make a error . So I can not create AGR testsuite in current release ,Can we leave it into later release ? 5)-You should create specific test cases for any scenarios that we find when reviewing the patch (e.g. JCA not available). A: Looks like it's a huge task ,Can we leave it into later version since there are no such test case to handle execption scenario in current release ? thanks very much ! (In reply to comment #22) > Created an attachment (id=91486) [details] > Create a new patch after updated code > > I fixed most of issues in feedback of code review ,for those can not be solve > in this release , I opened defects for them . > > I will update UT test cases tomorrow . > > Since 13,March is the 45 release API freeze end day ,let's finish code > related works in this week ,then I will have some time to do some documentation > works in next week ,thanks . Hi Xue, I cannot apply this patch given the recent changes in CVS. Since you are more familiar with the code in this patch than I am, can you please refactor the patch for the latest code in CVS (HEAD). Note, the code in CVS (HEAD) will not change until we integrate this new patch. (In reply to comment #24) > Hi Xue, Sorry, Xie. (In reply to comment #23) Looks good. > 4) -What were the limitations when using the AGR? We should have AGR test > suites for the manual test suite since there are no additional resources to run > these new manual test suites for each test pass. That said, any use cases that > cannot be automated using the AGR must be covered as manual tests. > > A : AGR test must uses absolute directory for the CVS files used while > importing a CSV file to generate a datapool .if the directory is changed that's > will make a error . So I can not create AGR testsuite in current release ,Can > we leave it into later release ? In the Behavor tab of the AGR test suite editor, you can select the user inputs for a specific invocation of a test case and use Eclipse variables to resolve the paths during playback. This allows the test author to put all of the dependent files in a directory (e.g. resources) of the test plug-in in the workspace and resolve this file path during playback without knowing the workspace location. > 5)-You should create specific test cases for any scenarios that we find when > reviewing the patch (e.g. JCA not available). > > A: Looks like it's a huge task ,Can we leave it into later version since there > are no such test case to handle execption scenario in current release ? thanks > very much ! This is part of the delivery criteria for the enhancement. The goal is not to test every scenario but to cover all of the major use cases and the major error conditions. We also need to write enablement and TVT test cases for this new function by March 14: Writing translation verification test cases: http://www.eclipse.org/tptp/home/documents/process/test/tvt.html Writing enablement test cases: http://www.eclipse.org/tptp/home/documents/process/test/enablement.html Created attachment 92023 [details]
Lastest patch for this feature
Pls apply this new patch
BTW ,I see code is changing after March,7 in CVS .Pls help me modify the minor errors if has ,thanks ....
Created attachment 92024 [details]
TVT for this feature
I'm not very sure about how to create enablement test ,whether I just need paste screen shot into DOC in order to write enablement test ?
Created attachment 92025 [details]
Documents update for this feature
Created attachment 92132 [details]
Updated TVT and Enablement tests for this feature
(In reply to comment #30) > Created an attachment (id=92132) [details] > Updated TVT and Enablement tests for this feature > Reviewed and looks great! Thanks. (In reply to comment #29) > Created an attachment (id=92025) [details] > Documents update for this feature > Reviewed. Thanks. (In reply to comment #28) > Created an attachment (id=92024) [details] > TVT for this feature > > I'm not very sure about how to create enablement test ,whether I just need > paste screen shot into DOC in order to write enablement test ? > Reviewed. Both the TVT and enablement (see comment #30) TCs look fine. (In reply to comment #27) > Created an attachment (id=92023) [details] > Lastest patch for this feature > > Pls apply this new patch > > BTW ,I see code is changing after March,7 in CVS .Pls help me modify the minor > errors if has ,thanks .... > Thanks Xin. Yes, I will refactor the patch for my edits after March 7. I will do the final review on this path on Wednesday. (In reply to comment #25) > (In reply to comment #24) > > > Hi Xue, > > Sorry, Xie. > Sorry (again) Xin. (In reply to comment #26) > > 5)-You should create specific test cases for any scenarios that we find when > > reviewing the patch (e.g. JCA not available). > > > > A: Looks like it's a huge task ,Can we leave it into later version since there > > are no such test case to handle execption scenario in current release ? thanks > > very much ! > > This is part of the delivery criteria for the enhancement. The goal is not to > test every scenario but to cover all of the major use cases and the major error > conditions. Are there any further updates to the UTs? (In reply to comment #36) > (In reply to comment #26) > > > 5)-You should create specific test cases for any scenarios that we find when > > > reviewing the patch (e.g. JCA not available). > > > > > > A: Looks like it's a huge task ,Can we leave it into later version since there > > > are no such test case to handle execption scenario in current release ? thanks > > > very much ! > > > > This is part of the delivery criteria for the enhancement. The goal is not to > > test every scenario but to cover all of the major use cases and the major error > > conditions. > Are there any further updates to the UTs? Paul , I do not think there are more further updates to UTs due to my tight schedule ,thanks ! (In reply to comment #37) > Paul , I do not think there are more further updates to UTs due to my tight > schedule ,thanks ! I can appreciate your schedule but the UTs are not complete. This is part of the delivery criteria for the enhancement. As a compromise, please provide a test case for the scenario when the JCA is not available and the Component Lead will handle the test automation in the next release. Created attachment 92353 [details]
Refactored lastest patch for this feature.
Xin, your patch contained the generated org.eclipse.hyades.test.tools.core.internal.java.codegen classes that did not need to be included.
(In reply to comment #34) Reviewed with comments: Comment #14: -There are still outstanding comments that need to be addressed before this enhancement can be resolved (note, I6 development has been extended to March 21). Comment #15: -There are still outstanding comments that need to be addressed before this enhancement can be resolved (note, I6 development has been extended to March 21). Comment #20: -Did you open the dependent defect for #1? -I am still seeing the symptoms in #2, despite having the JCA packaged in my JRE. This is also the scenario that we need a test case to test. -For #3, we need to make the number of asterisks the same as the length of the password field. When the user selects the field, it displays a solid circle for each character, so there is no security concern for making the number of asterisks the same as the length of the password field. -I am still seeing the symptoms in #4. -#6 is not done. -I am still seeing the symptoms in #8. Joe, can you please test the patch and provide your comments? Please update the number of hours worked on this enhancement. (In reply to comment #40) > (In reply to comment #34) > Reviewed with comments: > Comment #14: > -There are still outstanding comments that need to be addressed before this > enhancement can be resolved (note, I6 development has been extended to March > 21). Could you pls tell me which comments I should address in Comment #14 ? > Comment #15: > -There are still outstanding comments that need to be addressed before this > enhancement can be resolved (note, I6 development has been extended to March > 21). Could you pls tell me which comments I should address in Comment #15 ? > Comment #20: > -Did you open the dependent defect for #1? Yes , it's info : [Bug 221275] Extra layout need to be show dynamically in Datappol related dialogs > -I am still seeing the symptoms in #2, despite having the JCA packaged in my > JRE. This is also the scenario that we need a test case to test. It's ok in my enviroment ,which version of JDK you using ? sometimes I also met this problem when I use jdk1.2.16 although it's contains JCA ,but I never meet this issue while using jdk15 or above . I already added a manual test case for this exception scenario in datapool editor related UT testsuite . > -For #3, we need to make the number of asterisks the same as the length of the > password field. When the user selects the field, it displays a solid circle > for each character, so there is no security concern for making the number of > asterisks the same as the length of the password field. I remember we disscussed this issue during previous design disscussion . the reason I can not make the mumber of asterisks the same as the length of the password field is that we do not save real password for the datapool on disk (only save hash password and hash variable for encrypted datapool ) . while opening an encrypted datapool editor in eclipse workspace at the first time , I can not decrypt those encrypted variable's values into their original values ,so I can not get these variable/cell origial value's length and I have to show the static length of asterisks in the cell . but it's can change back into their real password 's length after we click encrypted cell and begin to modifed this value in datapool editor becasue at that time user will be propmted to input password and we can get password ,then we can use this inputed password to decrypt variable ... Do I explain the reason clearly ? > -I am still seeing the symptoms in #4. I think the reason is the same with above 's JCA issues ,pls update JDK version . > -#6 is not done. The reason I didn't remove them is that they're used in my code . I see the error after remove them . > -I am still seeing the symptoms in #8. It's caused by design . We only get encrypted datapools info from TPFDeployment for Junit test type . So only those added into aritifacts and launch configuration can be got by our code . we can not handle the encrypted datapools used directly in user classes . Maybe you can confirm with Joe about this issue . Created attachment 92399 [details]
Add a manaul test for JCA scenario
Created attachment 92402 [details]
Updated patch
1)Removed org.eclipse.hyades.test.tools.core.internal.java.codegen
2)Updated encryption related classes to throw & print exceptions while can not Get JCA correctly .
Because DatapoolEncryptManager & EncryptionManager are used by both workbench and test runtime side , so we can see this error both this side if met exception .
(In reply to comment #42) > Please update the number of hours worked on this enhancement. worked time for design/code/test in person hours: 16 x 5 x 8(6 weeks design, 8 week implementation, 2 weeks testing) worked time for doc in person hours: 10 x 8 worked time for reviews feedback in person hours : 10 x 8 Created attachment 92550 [details]
Updated a error in last patch
(In reply to comment #46) > (In reply to comment #42) > > Please update the number of hours worked on this enhancement. > > > worked time for design/code/test in person hours: 16 x 5 x 8(6 weeks design, 8 > week implementation, 2 weeks testing) > > worked time for doc in person hours: 10 x 8 > > worked time for reviews feedback in person hours : 10 x 8 > (In reply to comment #43) > (In reply to comment #40) > > (In reply to comment #34) > > Reviewed with comments: > > Comment #14: > > -There are still outstanding comments that need to be addressed before this > > enhancement can be resolved (note, I6 development has been extended to March > > 21). > > Could you pls tell me which comments I should address in Comment #14 ? I did not check each comment, but the first 3 or four were still outstanding. Can you please run through the entire list and confirm that they are all addressed? > > Comment #15: > > -There are still outstanding comments that need to be addressed before this > > enhancement can be resolved (note, I6 development has been extended to March > > 21). > > Could you pls tell me which comments I should address in Comment #15 ? I did not check each comment, but there are several still outstanding. Can you please run through the entire list and confirm that they are all addressed? If you cannot address them before Thursday (DECUT for I6), please open defects to address them in I7. > > Comment #20: > > -Did you open the dependent defect for #1? > > Yes , it's info : > [Bug 221275] Extra layout need to be show dynamically in Datappol related > dialogs Thanks. Sorry, I missed it. > > -I am still seeing the symptoms in #2, despite having the JCA packaged in my > > JRE. This is also the scenario that we need a test case to test. > > It's ok in my environment ,which version of JDK you using ? sometimes I also > met this problem when I use jdk1.2.16 although it's contains JCA ,but I never > meet this issue while using jdk15 or above . > > I already added a manual test case for this exception scenario in datapool > editor related UT testsuite . I will open a defect if I can still reproduce these symptoms with the final patch. > > -For #3, we need to make the number of asterisks the same as the length of the > > password field. When the user selects the field, it displays a solid circle > > for each character, so there is no security concern for making the number of > > asterisks the same as the length of the password field. > > I remember we discussed this issue during previous design discussion . the > reason I can not make the mumber of asterisks the same as the length of the > password field is that we do not save real password for the datapool on disk > (only save hash password and hash variable for encrypted datapool ) . while > opening an encrypted datapool editor in eclipse workspace at the first time , I > can not decrypt those encrypted variable's values into their original values > ,so I can not get these variable/cell origial value's length and I have to show > the static length of asterisks in the cell . but it's can change back into > their real password 's length after we click encrypted cell and begin to > modifed this value in datapool editor becasue at that time user will be > propmted to input password and we can get password ,then we can use this > inputed password to decrypt variable ... > > Do I explain the reason clearly ? Yes, very clear. Given the reasons you noted, lets leave it as working as designed. > > -I am still seeing the symptoms in #4. > > I think the reason is the same with above 's JCA issues ,pls update JDK > version . I do not see the relationship between the two issues. #4 is about focus/editing the cell, which should be independent to the JCA. I would assume it is caused by the new password field for the cell, instead of a text field. Can you verify? We may need to provide our own mouse listener to give focus to the password field to emulate the old behavior. > > -#6 is not done. > > The reason I didn't remove them is that they're used in my code . I see the > error after remove them . Yes, you will need to make other changes after they are removed. For example, you can remove DatapoolExportWizard_unencrypted from org.eclipse.hyades.test.ui/src/org/eclipse/hyades/test/ui/internal/resources/messages.properties and org.eclipse.hyades.test.ui.internal.resources.UiPluginResourceBundle.java and display the original message. > > -I am still seeing the symptoms in #8. > > It's caused by design . We only get encrypted datapools info from > TPFDeployment for Junit test type . So only those added into aritifacts and > launch configuration can be got by our code . we can not handle the encrypted > datapools used directly in user classes . > > Maybe you can confirm with Joe about this issue . You are correct. If there is no launch configuration for the test suite that uses an existing deployment, the datapool used by the test suite will not be deployed. Created attachment 92881 [details] Updated a new patch Paul : Thanks for your good suggestion and I found I lost most of my modifications for Comment #14 & Comment #15 in my last patch , so I picked up them in this patch ,pls review it . I didn't use your code to replace the methods : hexStringToByteArray() & byteArrayToHexString() in org.eclipse.hyades.models.common.util.EncryptionManager , the reason is that I found your code could not support encrypting & decrypting Chinese words well ,so I choose using my code ,thanks very much ! Created attachment 92885 [details]
TVT & Enablement test cases
Add some test cases for TVT and enablement test
The following attachments have been checked into CVS (HEAD): Updated UT test cases Updated TVT and Enablement tests for this feature Add a manaul test for JCA scenario (In reply to comment #52) > The following attachments have been checked into CVS (HEAD): > > Updated UT test cases > Updated TVT and Enablement tests for this feature > Add a manaul test for JCA scenario > Replaced 'Updated TVT and Enablement tests for this feature' with 'TVT & Enablement test cases' in CVS (HEAD). (In reply to comment #50) > Created an attachment (id=92881) [details] > Updated a new patch > > Paul : > Thanks for your good suggestion and I found I lost most of my modifications > for Comment #14 & Comment #15 in my last patch , so I picked up them in this > patch ,pls review it . > > I didn't use your code to replace the methods : hexStringToByteArray() & > byteArrayToHexString() in > org.eclipse.hyades.models.common.util.EncryptionManager , the reason is that I > found your code could not support encrypting & decrypting Chinese words well > ,so I choose using my code ,thanks very much ! > Thanks. I am reviewing now. Not a problem to use the existing code for hex/byte array conversion. The following attachment has been checked into CVS (HEAD): Documents update for this feature Joe, we need to get this patch integrated today (last day of I6 development and API freeze) so I have removed you as a mandatory reviewer. That said, if you want to test a build containing this enhancement, please add any comments to this enhancement. The final patch has been reviewed, refactored to include all comments in comment #14 and comment #15, and checked in to CVS. I use Junit test tutorial (http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.hyades.test.doc.user/samples/saccessdp.htm) to verify this enhancement. The junit test is run with a datapool containing test data, and the datapool is connected to the test by artifact. This junit test is passed when the datapool has no encrypted data, but it has some error to get the data when some variable is encrypted(happened in String and Double type) Another problem is the 'asked for password' dialog still pop up when running the test after i encrypt--then decrypt all variables in datapool(no encrypted data when running), this problem can be solved by restart eclise -clean, is that what we want for this enhancement? (In reply to comment #58) > I use Junit test tutorial > (http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.hyades.test.doc.user/samples/saccessdp.htm) > to verify this enhancement. The junit test is run with a datapool containing > test data, and the datapool is connected to the test by artifact. > This junit test is passed when the datapool has no encrypted data, but it has > some error to get the data when some variable is encrypted(happened in String > and Double type) > Another problem is the 'asked for password' dialog still pop up when running > the test after i encrypt--then decrypt all variables in datapool(no encrypted > data when running), this problem can be solved by restart eclise -clean, is > that what we want for this enhancement? Could you pls send me the snapshots or error msg for errors ? thanks ! (In reply to comment #58) > I use Junit test tutorial > (http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.hyades.test.doc.user/samples/saccessdp.htm) > to verify this enhancement. The junit test is run with a datapool containing > test data, and the datapool is connected to the test by artifact. > This junit test is passed when the datapool has no encrypted data, but it has > some error to get the data when some variable is encrypted(happened in String > and Double type) > Another problem is the 'asked for password' dialog still pop up when running > the test after i encrypt--then decrypt all variables in datapool(no encrypted > data when running), this problem can be solved by restart eclise -clean, is > that what we want for this enhancement? Could you pls send me the snapshots or error msg for errors ? thanks ! (In reply to comment #60) > (In reply to comment #58) > > I use Junit test tutorial > > (http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.hyades.test.doc.user/samples/saccessdp.htm) > > to verify this enhancement. The junit test is run with a datapool containing > > test data, and the datapool is connected to the test by artifact. > > This junit test is passed when the datapool has no encrypted data, but it has > > some error to get the data when some variable is encrypted(happened in String > > and Double type) > > Another problem is the 'asked for password' dialog still pop up when running > > the test after i encrypt--then decrypt all variables in datapool(no encrypted > > data when running), this problem can be solved by restart eclise -clean, is > > that what we want for this enhancement? > > Could you pls send me the snapshots or error msg for errors ? thanks ! > Please continue under defect #224843. Mistakenly closed this defect. Re-resolving as fixed. I verified this defect using below build in my local environment: --tptp.runtime.allInOne.win32.win32.x86-TPTP-4.5.0M6.zip --agntctrl.win_ia32-TPTP-4.5.0M6.zip(if running with AC) Reference:http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.hyades.test.doc.user/samples/saccessdp.htm There is no error when running the junit test with a normal datapool(no encrypted data) when encrypt a "string" variable, the stack trace for the error case will be: junit.framework.AssertionFailedError at junit.framework.Assert.fail(Assert.java:47) at junit.framework.Assert.assertTrue(Assert.java:20) at junit.framework.Assert.assertNotNull(Assert.java:217) at junit.framework.Assert.assertNotNull(Assert.java:210) at shoppingCartTest_src.testShoppingCartConstructor(shoppingCartTest_src.java:90) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at junit.framework.TestCase.runTest(TestCase.java:164) at junit.framework.TestCase.runBare(TestCase.java:130) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:120) at org.eclipse.hyades.test.common.junit.HyadesTestCase.run(HyadesTestCase.java:172) at junit.framework.TestSuite.runTest(TestSuite.java:230) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.runTest(HyadesTestSuite.java:457) at junit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.doRun(HyadesTestSuite.java:425) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.run(HyadesTestSuite.java:338) at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24) at junit.extensions.TestDecorator.run(TestDecorator.java:30) at junit.extensions.RepeatedTest.run(RepeatedTest.java:26) at junit.framework.TestSuite.runTest(TestSuite.java:230) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.runTest(HyadesTestSuite.java:457) at junit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.doRun(HyadesTestSuite.java:425) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.run(HyadesTestSuite.java:338) at org.eclipse.hyades.test.common.junit.HyadesTestRunner.run(HyadesTestRunner.java:504) at org.eclipse.hyades.test.java.runner.HyadesJUnitRunner.main(HyadesJUnitRunner.java:117) Using the same environment in Comment #64, When encrypting a Double type variable the stack trace of error result would be: java.lang.NumberFormatException: For input string: "0cb2d7dd" at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at org.eclipse.hyades.models.common.datapool.impl.DPLCellImpl.getDoubleValue(DPLCellImpl.java:435) at shoppingCartTest_src.testShoppingCartConstructor(shoppingCartTest_src.java:86) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at junit.framework.TestCase.runTest(TestCase.java:164) at junit.framework.TestCase.runBare(TestCase.java:130) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:120) at org.eclipse.hyades.test.common.junit.HyadesTestCase.run(HyadesTestCase.java:172) at junit.framework.TestSuite.runTest(TestSuite.java:230) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.runTest(HyadesTestSuite.java:457) at junit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.doRun(HyadesTestSuite.java:425) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.run(HyadesTestSuite.java:338) at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24) at junit.extensions.TestDecorator.run(TestDecorator.java:30) at junit.extensions.RepeatedTest.run(RepeatedTest.java:26) at junit.framework.TestSuite.runTest(TestSuite.java:230) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.runTest(HyadesTestSuite.java:457) at junit.framework.TestSuite.run(TestSuite.java:225) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.doRun(HyadesTestSuite.java:425) at org.eclipse.hyades.test.common.junit.HyadesTestSuite.run(HyadesTestSuite.java:338) at org.eclipse.hyades.test.common.junit.HyadesTestRunner.run(HyadesTestRunner.java:504) at org.eclipse.hyades.test.java.runner.HyadesJUnitRunner.main(HyadesJUnitRunner.java:117) Comment #64 and Comment #65 are both verified by IAC/AC with IBM50/Sun jre1.5.0_14 (In reply to comment #65) For the errors in commments #65 and # 64 (can not run junit test using String and Double encrypted data ) , they're caused by an minor typing error in the org.eclispe.hyades.test.tools.core plugin , in order to fix these errors ,pls do below modification : 1, open the class : org.eclipse.hyades.test.common.testservices.resources.DatapoolPasswordProvider , update below code : result = ServiceInvoker.invokeService(getProviderName(), "method=getDatapoolList,args:testId={0}".concat(testId)); into : result = ServiceInvoker.invokeService(getProviderName(), "method=getDatapoolList,args:testId=".concat(testId)); (the reason for errrors is that there are a useless {0} in code ) Paul : I already verified the juint test running after updated above code ,it's works well using encrypted datapool ,but I can not check out latest tptp cvs code into my local and can not create a new patch ,so cloud you pls help do above modifications in tptp cvs directly ? thanks very much ! (In reply to comment #58) > I use Junit test tutorial > (http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.hyades.test.doc.user/samples/saccessdp.htm) > > Another problem is the 'asked for password' dialog still pop up when running > the test after i encrypt--then decrypt all variables in datapool(no encrypted > data when running), this problem can be solved by restart eclise -clean, is > that what we want for this enhancement? About this problem , I have checked the workbench side's code , In order to get encrypted datapool list which used in current test , I have done the below steps : 1) added a extension point of launchconfigDatapoolHandler in the plugin org.eclipse.hyades.test.core and implemented this extension point as org.eclipse.hyades.test.core.internal.launch.datapool.extensions.JUnitLaunchconfigDatapoolHandler class , in this class I will get encrypted datapool name list from TPFDeployment & TPFTest 2) Invoke this Junit extension in the class of org.eclipse.hyades.test.core.launch.delegates.AbstractLaunchConfigurationDelegate2 : maybe lines : 197 - 213 I guess this problem only probably caused in above 2 places : TPFDeployment & TPFTest which used in the JUnitLaunchconfigDatapoolHandler are not updated after decrypted datapool ; or code of #2 wroted in wrong place due to JUnitLaunchconfigDatapoolHandler are not updated in workbench side at that time ... Paul : Although I probably know where is wrong but I'm not too familiar with test.core plugin code and I do not know how to let TPFDeployment & TPFTest updated automatically after user did some changes in datapool editor UI , so can you help me forward my problem to the right developer ? thanks very much ! Closed Comment on attachment 92881 [details]
Updated a new patch
adding iplog+ per Ganymede IP log
|