├── citrix-client-win ├── .gitignore ├── src │ └── main │ │ └── java │ │ └── com │ │ └── blazemeter │ │ └── jmeter │ │ └── citrix │ │ └── client │ │ └── windows │ │ ├── com4j │ │ ├── package.html │ │ ├── ICASessionEndAction.java │ │ ├── ICASessionString.java │ │ ├── ICAVCDataType.java │ │ ├── events │ │ │ ├── _IScreenShotEvents.java │ │ │ ├── _IKeyboardEvents.java │ │ │ ├── _ISessionEvents.java │ │ │ ├── _IMouseEvents.java │ │ │ └── _IWindowEvents.java │ │ ├── OutputMode.java │ │ ├── ICAScalingMode.java │ │ ├── ICAWindowType.java │ │ ├── MouseButton.java │ │ ├── ClassFactory.java │ │ ├── ICAColorDepth.java │ │ ├── KeyModifier.java │ │ ├── ICASoundQuality.java │ │ ├── IKeyboard.java │ │ ├── ICASessionCounter.java │ │ ├── IWindows.java │ │ ├── IMouse.java │ │ ├── WindowStyle.java │ │ └── WindowExStyle.java │ │ ├── KeyEvent.java │ │ ├── events │ │ ├── KeyboardAdapter.java │ │ ├── MouseAdapter.java │ │ ├── SessionAdapter.java │ │ └── WindowAdapter.java │ │ ├── MouseEvent.java │ │ └── WinCitrixClientFactory.java └── pom.xml ├── citrix-common ├── .gitignore ├── src │ └── main │ │ └── java │ │ └── com │ │ └── blazemeter │ │ └── jmeter │ │ └── citrix │ │ └── client │ │ ├── events │ │ ├── EventInfo.java │ │ ├── MouseButton.java │ │ ├── ClientEvent.java │ │ ├── Modifier.java │ │ ├── WindowEvent.java │ │ └── EventHelper.java │ │ ├── factory │ │ └── CitrixClientFactory.java │ │ ├── WindowInfo.java │ │ ├── handler │ │ ├── CitrixClientAdapter.java │ │ ├── CitrixClientHandlerException.java │ │ └── CitrixClientHandler.java │ │ └── Win32Utils.java └── pom.xml ├── config ├── setup-x64.reg ├── setup-x86.reg └── saveservice-excerpt.properties ├── images ├── end_clause.png ├── recorder.png ├── save_popup.png ├── citrix_close.png ├── download_ica.png ├── dwm_settings.png ├── example_plan.png ├── start_button.png ├── ica_file_saver.png ├── recording_panel.png ├── citrix_assertion.png ├── launcher_sampler.png ├── navigate_to_save.png ├── updates_settings.png ├── app_started_window.png ├── citrix_ocr_extractor.png ├── csv_data_set_config.png ├── input_text_sampler.png ├── no_scaling_settings.png ├── template_test_plan.png ├── thread_group_config.png ├── vrt_citrix_renderer.png ├── vrt_display_sample.png ├── vrt_saving_recording.png ├── notepad_citrix_example.png ├── stop_recording_button.png ├── app_started_sampler_step.png ├── citrix_recording_template.png ├── recorder_status_started.png ├── session_state_assertion.png ├── citrix_assessment_extractor.png ├── playback_view_results_tree.png ├── windows_balck_screen_issue.png ├── assertion_creation_using_step.png ├── citrix_recorder_configuration.png ├── debug_jtl_configure_detailed.png ├── vrt_citrix_renderer_selection.png ├── citrix_interaction_informations.png ├── csv_data_set_config_data_sample.png ├── playback_view_results_tree_request_tab.png └── playback_view_results_tree_response_data_tab.png ├── citrix-jmeter ├── .gitignore ├── src │ ├── test │ │ ├── resources │ │ │ ├── zipFile.zip │ │ │ ├── hash_same_01.png │ │ │ ├── hash_same_02.png │ │ │ ├── hash_not_same_01.png │ │ │ ├── hash_not_same_02.png │ │ │ ├── 4328_1536568867580.png │ │ │ ├── 4328_1536568879467.png │ │ │ ├── log4j2.xml │ │ │ └── citrixRecord.xml │ │ └── java │ │ │ └── com │ │ │ └── blazemeter │ │ │ └── jmeter │ │ │ └── citrix │ │ │ ├── installer │ │ │ └── WinRegistryTest.java │ │ │ ├── sampler │ │ │ ├── InteractionSamplerTest.java │ │ │ └── SampleHelperTest.java │ │ │ └── recorder │ │ │ └── gui │ │ │ └── SwingTestRunner.java │ └── main │ │ ├── resources │ │ ├── dark-theme │ │ │ ├── discard.png │ │ │ ├── text_ocr.png │ │ │ ├── add_action.png │ │ │ ├── full_screenshot.png │ │ │ └── selection_screenshot.png │ │ ├── light-theme │ │ │ ├── discard.png │ │ │ ├── text_ocr.png │ │ │ ├── add_action.png │ │ │ ├── full_screenshot.png │ │ │ └── selection_screenshot.png │ │ └── com │ │ │ └── blazemeter │ │ │ ├── labs-logo │ │ │ ├── blazemeter-labs-logo.png │ │ │ └── blazemeter-labs-light-logo.png │ │ │ └── jmeter │ │ │ └── citrix │ │ │ ├── cursors │ │ │ └── dnd_clause.png │ │ │ ├── installer │ │ │ └── saveservice-excerpt.properties │ │ │ └── template │ │ │ ├── bzmCitrixTemplate.xml │ │ │ └── bzmCitrixTemplateWithParameters.xml │ │ └── java │ │ └── com │ │ └── blazemeter │ │ └── jmeter │ │ └── citrix │ │ ├── clause │ │ ├── strategy │ │ │ ├── format │ │ │ │ ├── AssessmentFormatter.java │ │ │ │ ├── RegularAssessmentFormatter.java │ │ │ │ ├── WindowEventAssessmentFormatter.java │ │ │ │ ├── ResultFormatter.java │ │ │ │ ├── DiffResultFormatter.java │ │ │ │ ├── RegularResultFormatter.java │ │ │ │ └── WindowEventResultFormatter.java │ │ │ └── check │ │ │ │ ├── ScreenshotAssessor.java │ │ │ │ ├── SnapshotChecker.java │ │ │ │ ├── ClientChecker.java │ │ │ │ ├── DiffChecker.java │ │ │ │ ├── DirectChecker.java │ │ │ │ └── PollingContext.java │ │ ├── SessionState.java │ │ ├── CheckResult.java │ │ └── ClauseComputationException.java │ │ ├── gui │ │ ├── SelectionChangedListener.java │ │ ├── SelectionChangedSubject.java │ │ ├── AreaChangedEvent.java │ │ ├── SelectionChangedManager.java │ │ ├── BlazeMeterLabsLogo.java │ │ └── SelectionPanel.java │ │ ├── client │ │ ├── CitrixClientFactoryException.java │ │ ├── SessionErrorLogger.java │ │ └── CitrixClientFactoryHelper.java │ │ ├── ocr │ │ ├── OcrManagerHolder.java │ │ └── OcrException.java │ │ ├── recorder │ │ ├── gui │ │ │ ├── ActionItem.java │ │ │ ├── ActionItemRenderer.java │ │ │ ├── PageViewer.java │ │ │ ├── ResultNodeRenderer.java │ │ │ ├── workers │ │ │ │ ├── WaitCaptureWorker.java │ │ │ │ ├── DownloadIcaWorker.java │ │ │ │ ├── MonitorRecordingWorker.java │ │ │ │ ├── StopRecordingWorker.java │ │ │ │ └── StartRecordingWorker.java │ │ │ ├── BasePanel.java │ │ │ ├── DownloadingControllerCellRenderer.java │ │ │ ├── RecorderDialog.java │ │ │ └── DownloadingControllerTreeSelectionModel.java │ │ ├── CaptureItem.java │ │ ├── RecordingCitrixIcaFileSaver.java │ │ ├── CaptureLimitException.java │ │ └── TreeClonerForICADownloading.java │ │ ├── sampler │ │ ├── SamplerType.java │ │ ├── CitrixSessionHolder.java │ │ ├── SamplerResultHelper.java │ │ ├── KeySequenceItem.java │ │ ├── gui │ │ │ ├── LineNumberTableModel.java │ │ │ ├── StartApplicationSamplerGUI.java │ │ │ └── CitrixSamplerGUI.java │ │ └── MouseSequenceItem.java │ │ ├── installer │ │ ├── StreamGobbler.java │ │ └── WinRegistry.java │ │ ├── assertion │ │ ├── CitrixSessionAssertion.java │ │ └── gui │ │ │ └── CitrixAssertionGUI.java │ │ ├── utils │ │ ├── DialogHelper.java │ │ ├── CitrixUtils.java │ │ └── EnumHelper.java │ │ └── extractor │ │ └── AssessmentExtractor.java └── plugin-metadata │ ├── presentationScreenshot.png │ ├── descriptor.json │ └── descriptor-test.json ├── LICENSES.md ├── .github └── workflows │ └── publish_to_jmeter_plugins.yaml ├── README.md ├── .gitignore └── DEBUG.md /citrix-client-win/.gitignore: -------------------------------------------------------------------------------- 1 | .project 2 | .classpath 3 | target 4 | -------------------------------------------------------------------------------- /citrix-common/.gitignore: -------------------------------------------------------------------------------- 1 | .project 2 | .classpath 3 | target 4 | .settings -------------------------------------------------------------------------------- /config/setup-x64.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/config/setup-x64.reg -------------------------------------------------------------------------------- /config/setup-x86.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/config/setup-x86.reg -------------------------------------------------------------------------------- /images/end_clause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/end_clause.png -------------------------------------------------------------------------------- /images/recorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/recorder.png -------------------------------------------------------------------------------- /images/save_popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/save_popup.png -------------------------------------------------------------------------------- /images/citrix_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/citrix_close.png -------------------------------------------------------------------------------- /images/download_ica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/download_ica.png -------------------------------------------------------------------------------- /images/dwm_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/dwm_settings.png -------------------------------------------------------------------------------- /images/example_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/example_plan.png -------------------------------------------------------------------------------- /images/start_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/start_button.png -------------------------------------------------------------------------------- /citrix-jmeter/.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | /target 4 | .settings 5 | /dependency-reduced-pom.xml 6 | -------------------------------------------------------------------------------- /images/ica_file_saver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/ica_file_saver.png -------------------------------------------------------------------------------- /images/recording_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/recording_panel.png -------------------------------------------------------------------------------- /images/citrix_assertion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/citrix_assertion.png -------------------------------------------------------------------------------- /images/launcher_sampler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/launcher_sampler.png -------------------------------------------------------------------------------- /images/navigate_to_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/navigate_to_save.png -------------------------------------------------------------------------------- /images/updates_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/updates_settings.png -------------------------------------------------------------------------------- /images/app_started_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/app_started_window.png -------------------------------------------------------------------------------- /images/citrix_ocr_extractor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/citrix_ocr_extractor.png -------------------------------------------------------------------------------- /images/csv_data_set_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/csv_data_set_config.png -------------------------------------------------------------------------------- /images/input_text_sampler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/input_text_sampler.png -------------------------------------------------------------------------------- /images/no_scaling_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/no_scaling_settings.png -------------------------------------------------------------------------------- /images/template_test_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/template_test_plan.png -------------------------------------------------------------------------------- /images/thread_group_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/thread_group_config.png -------------------------------------------------------------------------------- /images/vrt_citrix_renderer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/vrt_citrix_renderer.png -------------------------------------------------------------------------------- /images/vrt_display_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/vrt_display_sample.png -------------------------------------------------------------------------------- /images/vrt_saving_recording.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/vrt_saving_recording.png -------------------------------------------------------------------------------- /images/notepad_citrix_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/notepad_citrix_example.png -------------------------------------------------------------------------------- /images/stop_recording_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/stop_recording_button.png -------------------------------------------------------------------------------- /images/app_started_sampler_step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/app_started_sampler_step.png -------------------------------------------------------------------------------- /images/citrix_recording_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/citrix_recording_template.png -------------------------------------------------------------------------------- /images/recorder_status_started.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/recorder_status_started.png -------------------------------------------------------------------------------- /images/session_state_assertion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/session_state_assertion.png -------------------------------------------------------------------------------- /images/citrix_assessment_extractor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/citrix_assessment_extractor.png -------------------------------------------------------------------------------- /images/playback_view_results_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/playback_view_results_tree.png -------------------------------------------------------------------------------- /images/windows_balck_screen_issue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/windows_balck_screen_issue.png -------------------------------------------------------------------------------- /images/assertion_creation_using_step.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/assertion_creation_using_step.png -------------------------------------------------------------------------------- /images/citrix_recorder_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/citrix_recorder_configuration.png -------------------------------------------------------------------------------- /images/debug_jtl_configure_detailed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/debug_jtl_configure_detailed.png -------------------------------------------------------------------------------- /images/vrt_citrix_renderer_selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/vrt_citrix_renderer_selection.png -------------------------------------------------------------------------------- /images/citrix_interaction_informations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/citrix_interaction_informations.png -------------------------------------------------------------------------------- /images/csv_data_set_config_data_sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/csv_data_set_config_data_sample.png -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/zipFile.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/test/resources/zipFile.zip -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/hash_same_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/test/resources/hash_same_01.png -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/hash_same_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/test/resources/hash_same_02.png -------------------------------------------------------------------------------- /images/playback_view_results_tree_request_tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/playback_view_results_tree_request_tab.png -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/hash_not_same_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/test/resources/hash_not_same_01.png -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/hash_not_same_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/test/resources/hash_not_same_02.png -------------------------------------------------------------------------------- /citrix-jmeter/plugin-metadata/presentationScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/plugin-metadata/presentationScreenshot.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/dark-theme/discard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/dark-theme/discard.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/dark-theme/text_ocr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/dark-theme/text_ocr.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/light-theme/discard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/light-theme/discard.png -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/4328_1536568867580.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/test/resources/4328_1536568867580.png -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/4328_1536568879467.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/test/resources/4328_1536568879467.png -------------------------------------------------------------------------------- /images/playback_view_results_tree_response_data_tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/images/playback_view_results_tree_response_data_tab.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/dark-theme/add_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/dark-theme/add_action.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/light-theme/text_ocr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/light-theme/text_ocr.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/light-theme/add_action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/light-theme/add_action.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/dark-theme/full_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/dark-theme/full_screenshot.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/light-theme/full_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/light-theme/full_screenshot.png -------------------------------------------------------------------------------- /config/saveservice-excerpt.properties: -------------------------------------------------------------------------------- 1 | # Add the following line at the end of JMeter saveservice.properties file 2 | _com.blazemeter.jmeter.citrix.sampler.CitrixSampleResultConverter=collection -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/dark-theme/selection_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/dark-theme/selection_screenshot.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/light-theme/selection_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/light-theme/selection_screenshot.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/com/blazemeter/labs-logo/blazemeter-labs-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/com/blazemeter/labs-logo/blazemeter-labs-logo.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/com/blazemeter/jmeter/citrix/cursors/dnd_clause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/com/blazemeter/jmeter/citrix/cursors/dnd_clause.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/com/blazemeter/labs-logo/blazemeter-labs-light-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Blazemeter/CitrixPlugin/master/citrix-jmeter/src/main/resources/com/blazemeter/labs-logo/blazemeter-labs-light-logo.png -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/clause/strategy/format/AssessmentFormatter.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.clause.strategy.format; 2 | 3 | public interface AssessmentFormatter { 4 | String execute(Object value); 5 | } 6 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/com/blazemeter/jmeter/citrix/installer/saveservice-excerpt.properties: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Add the following line at the end of JMeter saveservice.properties file 4 | 5 | _com.blazemeter.jmeter.citrix.sampler.CitrixSampleResultConverter=collection 6 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/gui/SelectionChangedListener.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.gui; 2 | 3 | import java.util.EventListener; 4 | 5 | public interface SelectionChangedListener extends EventListener { 6 | void onSelectionChanged(AreaChangedEvent event); 7 | } 8 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/package.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |Citrix ICA Client
9 | 10 | 11 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/gui/SelectionChangedSubject.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.gui; 2 | 3 | public interface SelectionChangedSubject { 4 | 5 | void addSelectionChangedListener(SelectionChangedListener listener); 6 | 7 | void removeSelectionChangedListener(SelectionChangedListener listener); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/clause/SessionState.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.clause; 2 | 3 | /** 4 | * Enumerates the Citrix session states. 5 | */ 6 | public enum SessionState { 7 | /** 8 | * The Citrix session is open. 9 | */ 10 | OPEN, 11 | 12 | /** 13 | * The Citrix session is closed. 14 | */ 15 | CLOSED 16 | } 17 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/clause/strategy/format/RegularAssessmentFormatter.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.clause.strategy.format; 2 | 3 | public class RegularAssessmentFormatter implements AssessmentFormatter { 4 | 5 | @Override 6 | public String execute(Object value) { 7 | return value != null ? value.toString() : null; 8 | } 9 | 10 | } 11 | -------------------------------------------------------------------------------- /LICENSES.md: -------------------------------------------------------------------------------- 1 | # Licenses used: 2 | 3 | ## Drag and drop icon by ChangHoon Baek from the Noun Project 4 | 5 | * https://creativecommons.org/licenses/by/3.0/us/legalcode 6 | 7 | ## OCR recognition : Tesseract OCR engine with Tess4J JNA wrapper 8 | 9 | * Apache License, v2.0 (http://www.apache.org/licenses/LICENSE-2.0.html) 10 | 11 | ## COM4J License: 12 | 13 | * BSD 2-Clause "Simplified" License (https://github.com/kohsuke/com4j/blob/master/LICENSE.txt) 14 | 15 | 16 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/client/CitrixClientFactoryException.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client; 2 | 3 | public class CitrixClientFactoryException extends Exception { 4 | private static final long serialVersionUID = 1L; 5 | 6 | public CitrixClientFactoryException(String message) { 7 | super(message); 8 | } 9 | 10 | public CitrixClientFactoryException(String message, Exception e) { 11 | super(message, e); 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/ICASessionEndAction.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | /** 4 | *5 | * List of ICA session end actions. 6 | *
7 | */ 8 | public enum ICASessionEndAction { 9 | /** 10 | *11 | * The value of this constant is 0. 12 | *
13 | */ 14 | SessionEndDefault, //NOSONAR // 0 15 | /** 16 | *17 | * The value of this constant is 1. 18 | *
19 | */ 20 | SessionEndRestart, //NOSONAR // 1 21 | } 22 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/ocr/OcrManagerHolder.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.ocr; 2 | 3 | /** 4 | * Holds the OCR manager. 5 | */ 6 | public class OcrManagerHolder { 7 | 8 | protected static final ThreadLocal5 | * List of ICA session strings. 6 | *
7 | */ 8 | public enum ICASessionString { 9 | /** 10 | *11 | * The value of this constant is 0. 12 | *
13 | */ 14 | SessionServer, //NOSONAR // 0 15 | /** 16 | *17 | * The value of this constant is 1. 18 | *
19 | */ 20 | SessionUsername, //NOSONAR // 1 21 | /** 22 | *23 | * The value of this constant is 2. 24 | *
25 | */ 26 | SessionDomain, //NOSONAR // 2 27 | } 28 | -------------------------------------------------------------------------------- /citrix-common/src/main/java/com/blazemeter/jmeter/citrix/client/events/MouseButton.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.events; 2 | 3 | /** 4 | * Enumerates the buttons of a mouse. 5 | */ 6 | public enum MouseButton { 7 | /** 8 | * Left button. 9 | */ 10 | LEFT(1), 11 | /** 12 | * Right button. 13 | */ 14 | RIGHT(2), 15 | /** 16 | * Middle button. 17 | */ 18 | MIDDLE(4); 19 | 20 | private final int value; 21 | 22 | MouseButton(int value) { 23 | this.value = value; 24 | } 25 | 26 | /** 27 | * Gets the integer value of the button. 28 | * 29 | * @return the integer value of the button 30 | */ 31 | public int getValue() { 32 | return value; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/clause/strategy/format/WindowEventAssessmentFormatter.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.clause.strategy.format; 2 | 3 | import com.blazemeter.jmeter.citrix.client.WindowInfo; 4 | import com.blazemeter.jmeter.citrix.client.events.WindowEvent; 5 | 6 | public class WindowEventAssessmentFormatter implements AssessmentFormatter { 7 | 8 | @Override 9 | public String execute(Object value) { 10 | String result = null; 11 | if (value instanceof WindowEvent) { 12 | WindowEvent event = (WindowEvent) value; 13 | WindowInfo info = event.getWindowInfo(); 14 | result = info != null ? info.getCaption() : null; 15 | } 16 | return result; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/ICAVCDataType.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | /** 4 | *5 | * List of ICA virtual channel data types. 6 | *
7 | */ 8 | @SuppressWarnings("checkstyle:AbbreviationAsWordInName") 9 | public enum ICAVCDataType { 10 | /** 11 | *12 | * The value of this constant is 0. 13 | *
14 | */ 15 | DataTypeString, //NOSONAR // 0 16 | /** 17 | *18 | * The value of this constant is 1. 19 | *
20 | */ 21 | DataTypeBinaryString, //NOSONAR // 1 22 | /** 23 | *24 | * The value of this constant is 2. 25 | *
26 | */ 27 | DataTypeBinary, //NOSONAR // 2 28 | } 29 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/events/_IScreenShotEvents.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j.events; 2 | 3 | import com4j.DISPID; 4 | import com4j.IID; 5 | 6 | /** 7 | * _IScreenShotEvents Interface. 8 | */ 9 | 10 | @SuppressWarnings("checkstyle:TypeName") 11 | @IID("{785A16E9-4E42-4C87-84AD-BFB4A60570A3}") 12 | public abstract class _IScreenShotEvents { //NOSONAR 13 | // Methods: 14 | 15 | /** 16 | *17 | * method OnUpdate. 18 | *
19 | * 20 | * @param bitmapHash Mandatory String parameter. 21 | */ 22 | 23 | @DISPID(1) 24 | public void onUpdate( 25 | String bitmapHash) { 26 | throw new UnsupportedOperationException(); 27 | } 28 | 29 | 30 | // Properties: 31 | } 32 | -------------------------------------------------------------------------------- /citrix-common/src/main/java/com/blazemeter/jmeter/citrix/client/events/ClientEvent.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.events; 2 | 3 | import com.blazemeter.jmeter.citrix.client.CitrixClient; 4 | import java.io.Serializable; 5 | import java.util.Date; 6 | 7 | public class ClientEvent implements Serializable { 8 | 9 | /** 10 | * 11 | */ 12 | private static final long serialVersionUID = 2404479292064665761L; 13 | private final transient CitrixClient source; 14 | private final long timestamp; 15 | 16 | public ClientEvent(CitrixClient source) { 17 | this.source = source; 18 | this.timestamp = new Date().getTime(); 19 | } 20 | 21 | public CitrixClient getSource() { 22 | return this.source; 23 | } 24 | 25 | public long getTimestamp() { 26 | return timestamp; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/recorder/gui/ActionItemRenderer.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.recorder.gui; 2 | 3 | import java.awt.Component; 4 | import javax.swing.JList; 5 | import javax.swing.plaf.basic.BasicComboBoxRenderer; 6 | 7 | class ActionItemRenderer extends BasicComboBoxRenderer { 8 | 9 | @Override 10 | public Component getListCellRendererComponent( 11 | JList list, Object value, int index, 12 | boolean isSelected, boolean cellHasFocus) { 13 | super.getListCellRendererComponent(list, value, index, 14 | isSelected, cellHasFocus); 15 | 16 | if (value != null || index == -1) { 17 | ActionItem item = (ActionItem) value; 18 | setText((item != null) ? item.getDescription() : "NAN"); 19 | } 20 | return this; 21 | } 22 | } 23 | 24 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/OutputMode.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | /** 4 | *5 | * Client Output Modes. 6 | *
7 | */ 8 | public enum OutputMode { 9 | /** 10 | *11 | * The value of this constant is 0. 12 | *
13 | */ 14 | OutputModeNonHeadless, //NOSONAR // 0 15 | /** 16 | *17 | * The value of this constant is 1. 18 | *
19 | */ 20 | OutputModeNormal, //NOSONAR // 1 21 | /** 22 | *23 | * The value of this constant is 2. 24 | *
25 | */ 26 | OutputModeRenderless, //NOSONAR // 2 27 | /** 28 | *29 | * The value of this constant is 3. 30 | *
31 | */ 32 | OutputModeWindowless, //NOSONAR // 3 33 | } 34 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/clause/strategy/format/ResultFormatter.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.clause.strategy.format; 2 | 3 | import com.blazemeter.jmeter.citrix.clause.CheckResult; 4 | import com.blazemeter.jmeter.citrix.clause.Clause; 5 | 6 | /** 7 | * Represents a method used to format a clause check result. 8 | */ 9 | public interface ResultFormatter { 10 | 11 | /** 12 | * Run the method to format a clause check result. 13 | * 14 | * @param result the result to format 15 | * @param previous the previous result 16 | * @param clause the checked clause 17 | * @param index the rank of the check 18 | * @return A formatted message describing the check result 19 | */ 20 | String execute(CheckResult result, CheckResult previous, Clause clause, int index); 21 | } 22 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/ICAScalingMode.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | /** 4 | *5 | * List of ICA scaling modes. 6 | *
7 | */ 8 | public enum ICAScalingMode { 9 | /** 10 | *11 | * The value of this constant is 0. 12 | *
13 | */ 14 | ScalingModeDisabled, //NOSONAR // 0 15 | /** 16 | *17 | * The value of this constant is 1. 18 | *
19 | */ 20 | ScalingModePercent, //NOSONAR // 1 21 | /** 22 | *23 | * The value of this constant is 2. 24 | *
25 | */ 26 | ScalingModeSize, //NOSONAR // 2 27 | /** 28 | *29 | * The value of this constant is 3. 30 | *
31 | */ 32 | ScalingModeAutoSize, //NOSONAR // 3 33 | } 34 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/ICAWindowType.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | /** 4 | *5 | * List of ICA window types. 6 | *
7 | */ 8 | public enum ICAWindowType { 9 | /** 10 | *11 | * The value of this constant is 0. 12 | *
13 | */ 14 | WindowTypeICAClientObject, //NOSONAR // 0 15 | /** 16 | *17 | * The value of this constant is 1. 18 | *
19 | */ 20 | WindowTypeControl, //NOSONAR // 1 21 | /** 22 | *23 | * The value of this constant is 2. 24 | *
25 | */ 26 | WindowTypeClient, //NOSONAR // 2 27 | /** 28 | *29 | * The value of this constant is 3. 30 | *
31 | */ 32 | WindowTypeContainer, //NOSONAR // 3 33 | } 34 | -------------------------------------------------------------------------------- /citrix-common/src/main/java/com/blazemeter/jmeter/citrix/client/events/Modifier.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.events; 2 | 3 | /** 4 | * Defines the modifiers keys that impact the events state. 5 | */ 6 | public enum Modifier { 7 | /** 8 | * Shift key is pressed. 9 | */ 10 | SHIFT(1), 11 | /** 12 | * Control key is pressed. 13 | */ 14 | CONTROL(2), 15 | /** 16 | * Alt key is pressed. 17 | */ 18 | ALT(4), 19 | /** 20 | * Used to build extended modifier state. 21 | */ 22 | EXTENDED(8); 23 | 24 | private final int value; 25 | 26 | Modifier(int value) { 27 | this.value = value; 28 | } 29 | 30 | /** 31 | * Get the integer value of the modifier. 32 | * 33 | * @return the integer value of the modifier 34 | */ 35 | public int getValue() { 36 | return value; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /.github/workflows/publish_to_jmeter_plugins.yaml: -------------------------------------------------------------------------------- 1 | name: Deploy to JMeter Plugins 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | changes: 7 | description: 'Release notes for the update' 8 | required: true 9 | 10 | jobs: 11 | publish: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Run Publish JMeter Plugin Action 15 | id: publish-plugin 16 | uses: abstracta/jmeter-plugin-publish-action@main 17 | with: 18 | forked-repository: https://github.com/Abstracta/jmeter-plugins.git 19 | plugin-artifact-name: citrix-jmeter 20 | plugin-id: bzm-jmeter-citrix-plugin 21 | changes: ${{ inputs.changes }} 22 | token: ${{ secrets.GH_TOKEN }} 23 | 24 | - name: Pull Request URL 25 | run: echo ${{ steps.publish-plugin.outputs.pull_request }} 26 | -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/log4j2.xml: -------------------------------------------------------------------------------- 1 | 2 |7 | * Mouse buttons. 8 | *
9 | */ 10 | public enum MouseButton implements ComEnum { 11 | /** 12 | *13 | * The value of this constant is 1. 14 | *
15 | */ 16 | MouseButtonLeft(1), //NOSONAR 17 | /** 18 | *19 | * The value of this constant is 2. 20 | *
21 | */ 22 | MouseButtonRight(2), //NOSONAR 23 | /** 24 | *25 | * The value of this constant is 4. 26 | *
27 | */ 28 | MouseButtonMiddle(4); //NOSONAR 29 | 30 | private final int value; 31 | 32 | MouseButton(int value) { 33 | this.value = value; 34 | } 35 | 36 | public int comEnumValue() { 37 | return value; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/sampler/CitrixSessionHolder.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.sampler; 2 | 3 | import com.blazemeter.jmeter.citrix.client.CitrixClient; 4 | 5 | /** 6 | * Holds the Citrix Client and underlying session. 7 | */ 8 | public class CitrixSessionHolder { 9 | protected static final ThreadLocal7 | * List of ICA color depths. 8 | *
9 | */ 10 | public enum ICAColorDepth implements ComEnum { 11 | /** 12 | *13 | * The value of this constant is 1. 14 | *
15 | */ 16 | Color16(1), //NOSONAR 17 | /** 18 | *19 | * The value of this constant is 2. 20 | *
21 | */ 22 | Color256(2), //NOSONAR 23 | /** 24 | *25 | * The value of this constant is 4. 26 | *
27 | */ 28 | Color16Bit(4), //NOSONAR 29 | /** 30 | *31 | * The value of this constant is 8. 32 | *
33 | */ 34 | Color24Bit(8); //NOSONAR 35 | 36 | private final int value; 37 | 38 | ICAColorDepth(int value) { 39 | this.value = value; 40 | } 41 | 42 | public int comEnumValue() { 43 | return value; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /citrix-jmeter/src/test/java/com/blazemeter/jmeter/citrix/installer/WinRegistryTest.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.installer; 2 | 3 | import static org.hamcrest.CoreMatchers.is; 4 | import static org.junit.Assert.assertFalse; 5 | import static org.junit.Assert.assertNotSame; 6 | import static org.junit.Assume.assumeThat; 7 | 8 | import org.junit.Test; 9 | 10 | public class WinRegistryTest { 11 | 12 | @Test 13 | public void accessDeniedWinRegTest() { 14 | assumeThat(WinRegistry.isAdmin(), is(false)); 15 | 16 | String regPath = "SOFTWARE\\Citrix\\ICA Client"; 17 | String regKey = "DummyKey"; 18 | assertFalse( 19 | WinRegistry.setIntValueForKey(WinRegistry.HKEY_LOCAL_MACHINE, regPath, regKey, 0)); 20 | 21 | } 22 | 23 | @Test 24 | public void getWinVersionTest() { 25 | String regPath = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"; 26 | String regKey = "ProductName"; 27 | 28 | assertNotSame("", WinRegistry.getValueForKey(WinRegistry.HKEY_LOCAL_MACHINE, regPath, regKey)); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/KeyModifier.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | import com4j.ComEnum; 4 | 5 | /** 6 | *7 | * Key modifier buttons. 8 | *
9 | */ 10 | public enum KeyModifier implements ComEnum { 11 | /** 12 | *13 | * The value of this constant is 1. 14 | *
15 | */ 16 | KeyModifierShift(1), //NOSONAR 17 | /** 18 | *19 | * The value of this constant is 2. 20 | *
21 | */ 22 | KeyModifierControl(2), //NOSONAR 23 | /** 24 | *25 | * The value of this constant is 4. 26 | *
27 | */ 28 | KeyModifierAlt(4), //NOSONAR 29 | /** 30 | *31 | * The value of this constant is 8. 32 | *
33 | */ 34 | KeyModifierExtended(8); //NOSONAR 35 | 36 | private final int value; 37 | 38 | KeyModifier(int value) { 39 | this.value = value; 40 | } 41 | 42 | public int comEnumValue() { 43 | return value; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/recorder/gui/PageViewer.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.recorder.gui; 2 | 3 | import java.awt.CardLayout; 4 | import java.awt.Component; 5 | import java.awt.Container; 6 | import java.awt.Dimension; 7 | import java.awt.Insets; 8 | 9 | public class PageViewer extends CardLayout { 10 | 11 | @Override 12 | public Dimension preferredLayoutSize(Container parent) { 13 | Component current = findCurrentComponent(parent); 14 | if (current != null) { 15 | Insets insets = parent.getInsets(); 16 | Dimension pref = current.getPreferredSize(); 17 | pref.width += insets.left + insets.right; 18 | pref.height += insets.top + insets.bottom; 19 | return pref; 20 | } 21 | return super.preferredLayoutSize(parent); 22 | } 23 | 24 | public Component findCurrentComponent(Container parent) { 25 | for (Component comp : parent.getComponents()) { 26 | if (comp.isVisible()) { 27 | return comp; 28 | } 29 | } 30 | return null; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/ICASoundQuality.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | import com4j.ComEnum; 4 | 5 | /** 6 | *7 | * List of ICA sound qualities. 8 | *
9 | */ 10 | public enum ICASoundQuality implements ComEnum { 11 | /** 12 | *13 | * The value of this constant is -1. 14 | *
15 | */ 16 | SoundQualityNone(-1), //NOSONAR 17 | /** 18 | *19 | * The value of this constant is 0. 20 | *
21 | */ 22 | SoundQualityHigh(0), //NOSONAR 23 | /** 24 | *25 | * The value of this constant is 1. 26 | *
27 | */ 28 | SoundQualityMedium(1), //NOSONAR 29 | /** 30 | *31 | * The value of this constant is 2. 32 | *
33 | */ 34 | SoundQualityLow(2); //NOSONAR 35 | 36 | private final int value; 37 | 38 | ICASoundQuality(int value) { 39 | this.value = value; 40 | } 41 | 42 | public int comEnumValue() { 43 | return value; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/IKeyboard.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | import com4j.Com4jObject; 4 | import com4j.DISPID; 5 | import com4j.IID; 6 | import com4j.VTID; 7 | 8 | /** 9 | * IKeyboard Interface. 10 | */ 11 | @IID("{17BFCA0A-C42E-4AC9-A693-29473FF9BA6C}") 12 | public interface IKeyboard extends Com4jObject { 13 | // Methods: 14 | 15 | /** 16 | *17 | * method SendKeyDown. 18 | *
19 | * 20 | * @param keyId Mandatory int parameter. 21 | */ 22 | 23 | @DISPID(100) //= 0x64. The runtime will prefer the VTID if present 24 | @VTID(7) 25 | void sendKeyDown( 26 | int keyId); 27 | 28 | 29 | /** 30 | *31 | * method SendKeyUp. 32 | *
33 | * 34 | * @param keyId Mandatory int parameter. 35 | */ 36 | 37 | @DISPID(101) //= 0x65. The runtime will prefer the VTID if present 38 | @VTID(8) 39 | void sendKeyUp( 40 | int keyId); 41 | 42 | 43 | // Properties: 44 | } 45 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/clause/strategy/check/ClientChecker.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.clause.strategy.check; 2 | 3 | import com.blazemeter.jmeter.citrix.clause.CheckResult; 4 | import com.blazemeter.jmeter.citrix.clause.ClauseComputationException; 5 | import com.blazemeter.jmeter.citrix.client.CitrixClient; 6 | import com.blazemeter.jmeter.citrix.client.CitrixClientException; 7 | 8 | /** 9 | * Represents a method used to check clause while Citrix client polling. 10 | */ 11 | public interface ClientChecker { 12 | 13 | /** 14 | * Gets a check result based on the specified polling context. 15 | * 16 | * @param client the Citrix client to use 17 | * @param context the polling context 18 | * @return the result of the clause check 19 | * @throws CitrixClientException when Citrix client fails to operate 20 | * @throws ClauseComputationException when clause computation fails 21 | */ 22 | CheckResult check(CitrixClient client, PollingContext context) 23 | throws CitrixClientException, ClauseComputationException; 24 | } 25 | -------------------------------------------------------------------------------- /citrix-jmeter/src/test/resources/citrixRecord.xml: -------------------------------------------------------------------------------- 1 | 2 |16 | * method OnKeyUp. 17 | *
18 | * 19 | * @param keyId Mandatory int parameter. 20 | * @param modifierState Mandatory int parameter. 21 | */ 22 | 23 | @DISPID(1) 24 | public void onKeyUp( 25 | int keyId, 26 | int modifierState) { 27 | throw new UnsupportedOperationException(); 28 | } 29 | 30 | 31 | /** 32 | *33 | * method OnKeyDown. 34 | *
35 | * 36 | * @param keyId Mandatory int parameter. 37 | * @param modifierState Mandatory int parameter. 38 | */ 39 | 40 | @DISPID(2) 41 | public void onKeyDown( 42 | int keyId, 43 | int modifierState) { 44 | throw new UnsupportedOperationException(); 45 | } 46 | 47 | 48 | // Properties: 49 | } 50 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/recorder/gui/ResultNodeRenderer.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.recorder.gui; 2 | 3 | import java.awt.Component; 4 | import javax.swing.ImageIcon; 5 | import javax.swing.JTree; 6 | import javax.swing.tree.DefaultTreeCellRenderer; 7 | import org.apache.jmeter.JMeter; 8 | import org.apache.jmeter.util.JMeterUtils; 9 | 10 | class ResultNodeRenderer extends DefaultTreeCellRenderer { 11 | private static final long serialVersionUID = 4159626601097711565L; 12 | 13 | private static final String ICON_SIZE = 14 | JMeterUtils.getPropDefault(JMeter.TREE_ICON_SIZE, JMeter.DEFAULT_TREE_ICON_SIZE); 15 | private static final ImageIcon STEPIMAGE = JMeterUtils.getImage( 16 | JMeterUtils 17 | .getPropDefault("viewResultsTree.success", "vrt/" + ICON_SIZE + "/security-high-2.png")); 18 | 19 | @Override 20 | public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, 21 | boolean expanded, 22 | boolean leaf, int row, boolean focus) { 23 | super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, focus); 24 | this.setIcon(STEPIMAGE); 25 | return this; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /citrix-jmeter/src/test/java/com/blazemeter/jmeter/citrix/sampler/InteractionSamplerTest.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.sampler; 2 | 3 | import static org.junit.Assert.assertArrayEquals; 4 | 5 | import com.blazemeter.jmeter.citrix.sampler.InteractionSampler.Keystroke; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | import org.junit.Test; 9 | 10 | public class InteractionSamplerTest { 11 | 12 | @Test 13 | public void generateKeystrokesFromText() { 14 | // From written text it gets the virtual key code to be used 15 | ListThis template is provided by Citrix Plugin which allows load testing Citrix Applications.
10 | Ensure you read Pre-requisites and User Manual before using the plugin. See Useful links below.
11 | Once the new plan is created update configuration properties on the Citrix Recorder element.
12 |
5 | * List of ICA session counters. 6 | *
7 | */ 8 | public enum ICASessionCounter { 9 | /** 10 | *11 | * The value of this constant is 0. 12 | *
13 | */ 14 | SessionIncomingBytes, //NOSONAR // 0 15 | /** 16 | *17 | * The value of this constant is 1. 18 | *
19 | */ 20 | SessionOutgoingBytes, //NOSONAR // 1 21 | /** 22 | *23 | * The value of this constant is 2. 24 | *
25 | */ 26 | SessionIncomingFrames, //NOSONAR // 2 27 | /** 28 | *29 | * The value of this constant is 3. 30 | *
31 | */ 32 | SessionOutgoingFrames, //NOSONAR // 3 33 | /** 34 | *35 | * The value of this constant is 4. 36 | *
37 | */ 38 | SessionIncomingErrors, //NOSONAR // 4 39 | /** 40 | *41 | * The value of this constant is 5. 42 | *
43 | */ 44 | SessionOutgoingErrors, //NOSONAR // 5 45 | /** 46 | *47 | * The value of this constant is 6. 48 | *
49 | */ 50 | SessionLastLatency, //NOSONAR // 6 51 | /** 52 | *53 | * The value of this constant is 7. 54 | *
55 | */ 56 | SessionAverageLatency, //NOSONAR // 7 57 | /** 58 | *59 | * The value of this constant is 8. 60 | *
61 | */ 62 | SessionLatencyDeviation, //NOSONAR // 8 63 | } 64 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/com4j/IWindows.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.com4j; 2 | 3 | import com4j.Com4jObject; 4 | import com4j.DISPID; 5 | import com4j.DefaultMethod; 6 | import com4j.IID; 7 | import com4j.VTID; 8 | 9 | /** 10 | * IWindows Interface. 11 | */ 12 | @IID("{9B371833-5E4F-4B72-A8F6-CB8E762999F4}") 13 | public interface IWindows extends Com4jObject, Iterable18 | * Getter method for the COM property "Item". 19 | *
20 | * 21 | * @param n Mandatory int parameter. 22 | * @return Returns a value of type com.blazemeter.jmeter.citrix.client.windows.com4j.IWindow 23 | */ 24 | 25 | @DISPID(0) //= 0x0. The runtime will prefer the VTID if present 26 | @VTID(7) 27 | @DefaultMethod 28 | com.blazemeter.jmeter.citrix.client.windows.com4j.IWindow item( 29 | int n); 30 | 31 | 32 | /** 33 | *34 | * Getter method for the COM property "_NewEnum". 35 | *
36 | */ 37 | 38 | @DISPID(-4) //= 0xfffffffc. The runtime will prefer the VTID if present 39 | @VTID(8) 40 | java.util.Iterator44 | * Getter method for the COM property "Count". 45 | *
46 | * 47 | * @return Returns a value of type int 48 | */ 49 | 50 | @DISPID(1) //= 0x1. The runtime will prefer the VTID if present 51 | @VTID(9) 52 | int count(); 53 | 54 | 55 | // Properties: 56 | } 57 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/recorder/gui/workers/DownloadIcaWorker.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.recorder.gui.workers; 2 | 3 | import com.blazemeter.jmeter.citrix.recorder.gui.CitrixRecorderGUI; 4 | import com.blazemeter.jmeter.citrix.utils.CitrixUtils; 5 | import java.nio.file.Path; 6 | import java.util.Optional; 7 | import java.util.concurrent.ExecutionException; 8 | import javax.swing.SwingWorker; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | 12 | public class DownloadIcaWorker extends SwingWorker18 | * method OnWindowCreate. 19 | *
20 | * 21 | * @param window Mandatory IWindow parameter. 22 | */ 23 | 24 | @DISPID(1) 25 | public void onWindowCreate(IWindow window) { 26 | throw new UnsupportedOperationException(); 27 | } 28 | 29 | 30 | /** 31 | *32 | * method OnWindowDestroy. 33 | *
34 | * 35 | * @param window Mandatory IWindow parameter. 36 | */ 37 | 38 | @DISPID(2) 39 | public void onWindowDestroy(IWindow window) { 40 | throw new UnsupportedOperationException(); 41 | } 42 | 43 | 44 | /** 45 | *46 | * method OnPingAck. 47 | *
48 | * 49 | * @param pingInfo Mandatory String parameter. 50 | * @param roundTripTime Mandatory int parameter. 51 | */ 52 | 53 | @DISPID(4) 54 | public void onPingAck( 55 | String pingInfo, 56 | int roundTripTime) { 57 | throw new UnsupportedOperationException(); 58 | } 59 | 60 | 61 | /** 62 | *63 | * method OnWindowForeground. 64 | *
65 | * 66 | * @param windowID Mandatory int parameter. 67 | */ 68 | 69 | @DISPID(5) 70 | public void onWindowForeground( 71 | int windowID) { 72 | throw new UnsupportedOperationException(); 73 | } 74 | 75 | 76 | // Properties: 77 | } 78 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/clause/ClauseComputationException.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.clause; 2 | 3 | /** 4 | * Provides exception when clause value computation fails. 5 | */ 6 | public class ClauseComputationException extends Exception { 7 | 8 | private static final long serialVersionUID = 8096627550410319461L; 9 | 10 | /** 11 | * Instantiate a new {@link ClauseComputationException}. 12 | */ 13 | public ClauseComputationException() { 14 | } 15 | 16 | /** 17 | * Instantiate a new {@link ClauseComputationException}. 18 | * 19 | * @param message the description of the error 20 | */ 21 | public ClauseComputationException(String message) { 22 | super(message); 23 | } 24 | 25 | /** 26 | * Instantiate a new {@link ClauseComputationException}. 27 | * 28 | * @param cause the cause of this error 29 | */ 30 | public ClauseComputationException(Throwable cause) { 31 | super(cause); 32 | } 33 | 34 | /** 35 | * Instantiate a new {@link ClauseComputationException}. 36 | * 37 | * @param message the description of the error 38 | * @param cause the cause of this error 39 | */ 40 | public ClauseComputationException(String message, Throwable cause) { 41 | super(message, cause); 42 | } 43 | 44 | /** 45 | * Instantiate a new {@link ClauseComputationException}. 46 | * 47 | * @param message the description of the error 48 | * @param cause the cause of this error 49 | * @param enableSuppression whether or not suppression is enabled or disabled 50 | * @param writableStackTrace whether or not the stack trace should be writable 51 | */ 52 | public ClauseComputationException(String message, Throwable cause, boolean enableSuppression, 53 | boolean writableStackTrace) { 54 | super(message, cause, enableSuppression, writableStackTrace); 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/recorder/RecordingCitrixIcaFileSaver.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.recorder; 2 | 3 | import com.blazemeter.jmeter.citrix.listener.CitrixIcaFileSaver; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | import org.apache.jmeter.samplers.SampleEvent; 7 | import org.apache.jmeter.threads.JMeterVariables; 8 | 9 | /** 10 | * Child of {@link CitrixIcaFileSaver} that exists only to expose 11 | * the ICA variable to {@link CitrixRecorder}. 12 | */ 13 | public class RecordingCitrixIcaFileSaver extends CitrixIcaFileSaver { 14 | /** 15 | * 16 | */ 17 | private static final long serialVersionUID = 1L; 18 | private final List17 | * method SendMouseDown. 18 | *
19 | * 20 | * @param buttonId Mandatory int parameter. 21 | * @param modifiers Mandatory int parameter. 22 | * @param xPos Mandatory int parameter. 23 | * @param yPos Mandatory int parameter. 24 | */ 25 | 26 | @DISPID(100) //= 0x64. The runtime will prefer the VTID if present 27 | @VTID(7) 28 | void sendMouseDown( 29 | int buttonId, 30 | int modifiers, 31 | int xPos, 32 | int yPos); 33 | 34 | 35 | /** 36 | *37 | * method SendMouseUp. 38 | *
39 | * 40 | * @param buttonId Mandatory int parameter. 41 | * @param modifiers Mandatory int parameter. 42 | * @param xPos Mandatory int parameter. 43 | * @param yPos Mandatory int parameter. 44 | */ 45 | 46 | @DISPID(101) //= 0x65. The runtime will prefer the VTID if present 47 | @VTID(8) 48 | void sendMouseUp( 49 | int buttonId, 50 | int modifiers, 51 | int xPos, 52 | int yPos); 53 | 54 | 55 | /** 56 | *57 | * method SendMouseMove. 58 | *
59 | * 60 | * @param buttonId Mandatory int parameter. 61 | * @param modifiers Mandatory int parameter. 62 | * @param xPos Mandatory int parameter. 63 | * @param yPos Mandatory int parameter. 64 | */ 65 | 66 | @DISPID(102) //= 0x66. The runtime will prefer the VTID if present 67 | @VTID(9) 68 | void sendMouseMove( 69 | int buttonId, 70 | int modifiers, 71 | int xPos, 72 | int yPos); 73 | 74 | 75 | // Properties: 76 | } 77 | -------------------------------------------------------------------------------- /citrix-common/src/main/java/com/blazemeter/jmeter/citrix/client/Win32Utils.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client; 2 | 3 | import static com.sun.jna.platform.win32.WinUser.MAPVK_VK_TO_VSC; //NOSONAR 4 | 5 | import com.sun.jna.platform.win32.User32; //NOSONAR 6 | import com.sun.jna.platform.win32.WinDef; //NOSONAR 7 | import java.awt.event.KeyEvent; 8 | 9 | public class Win32Utils { 10 | 11 | private Win32Utils() { 12 | 13 | } 14 | 15 | public static int getVirtualKey(int keyCode) { 16 | // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-vkkeyscanexw 17 | WinDef.HKL keyLayoutID = User32.INSTANCE.GetKeyboardLayout(0); 18 | return User32.INSTANCE.VkKeyScanExW((char) keyCode, keyLayoutID); 19 | } 20 | 21 | public static char getVKCharacter(int vkCode, boolean vkShift, boolean vkAlt, boolean vkCtrl) { 22 | 23 | //https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getkeyboardlayout 24 | int currentThread = 0; 25 | WinDef.HKL keyLayoutID = User32.INSTANCE.GetKeyboardLayout(currentThread); 26 | 27 | // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-mapvirtualkeyexa 28 | int scanCode = User32.INSTANCE.MapVirtualKeyEx(vkCode, MAPVK_VK_TO_VSC, keyLayoutID); 29 | 30 | // https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-tounicodeex 31 | byte[] keyStates = new byte[256]; 32 | byte keyDownState = (byte) 128; 33 | keyStates[KeyEvent.VK_SHIFT] = vkShift ? keyDownState : 0; 34 | keyStates[KeyEvent.VK_ALT] = vkAlt ? keyDownState : 0; 35 | keyStates[KeyEvent.VK_CONTROL] = vkCtrl ? keyDownState : 0; 36 | 37 | char[] buff = new char[1]; 38 | int buffCharSize = 1; 39 | int menuActiveFlag = 0; 40 | int ret = User32.INSTANCE.ToUnicodeEx( 41 | vkCode, scanCode, keyStates, buff, buffCharSize, menuActiveFlag, keyLayoutID 42 | ); 43 | 44 | switch (ret) { 45 | case -1: //Error 46 | return (char) -1; 47 | 48 | case 0: //No Translation 49 | return (char) 0; 50 | 51 | default: //Returning key... 52 | return buff[0]; 53 | } 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/resources/com/blazemeter/jmeter/citrix/template/bzmCitrixTemplateWithParameters.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |This template is provided by Citrix Plugin which allows load testing Citrix Applications.
10 | Ensure you read Pre-requisites and User Manual before using the plugin. See Useful links below.
11 |
16 | * method OnMove. 17 | *
18 | * 19 | * @param buttonState Mandatory int parameter. 20 | * @param modifierState Mandatory int parameter. 21 | * @param xPos Mandatory int parameter. 22 | * @param yPos Mandatory int parameter. 23 | */ 24 | 25 | @DISPID(1) 26 | public void onMove( 27 | int buttonState, 28 | int modifierState, 29 | int xPos, 30 | int yPos) { 31 | throw new UnsupportedOperationException(); 32 | } 33 | 34 | 35 | /** 36 | *37 | * method OnMouseDown. 38 | *
39 | * 40 | * @param buttonState Mandatory int parameter. 41 | * @param modifierState Mandatory int parameter. 42 | * @param xPos Mandatory int parameter. 43 | * @param yPos Mandatory int parameter. 44 | */ 45 | 46 | @DISPID(3) 47 | public void onMouseDown( 48 | int buttonState, 49 | int modifierState, 50 | int xPos, 51 | int yPos) { 52 | throw new UnsupportedOperationException(); 53 | } 54 | 55 | 56 | /** 57 | *58 | * method OnMouseUp. 59 | *
60 | * 61 | * @param buttonState Mandatory int parameter. 62 | * @param modifierState Mandatory int parameter. 63 | * @param xPos Mandatory int parameter. 64 | * @param yPos Mandatory int parameter. 65 | */ 66 | 67 | @DISPID(2) 68 | public void onMouseUp( 69 | int buttonState, 70 | int modifierState, 71 | int xPos, 72 | int yPos) { 73 | throw new UnsupportedOperationException(); 74 | } 75 | 76 | 77 | /** 78 | *79 | * method OnDoubleClick. 80 | *
81 | */ 82 | 83 | @DISPID(4) 84 | public void onDoubleClick() { 85 | throw new UnsupportedOperationException(); 86 | } 87 | 88 | 89 | // Properties: 90 | } 91 | -------------------------------------------------------------------------------- /citrix-client-win/src/main/java/com/blazemeter/jmeter/citrix/client/windows/events/WindowAdapter.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.client.windows.events; 2 | 3 | import com.blazemeter.jmeter.citrix.client.windows.com4j.events._IWindowEvents; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | public class WindowAdapter extends _IWindowEvents { 8 | 9 | private static final Logger LOGGER = LoggerFactory.getLogger(WindowAdapter.class); 10 | 11 | private final int windowID; 12 | 13 | public WindowAdapter(int windowID) { 14 | this.windowID = windowID; 15 | } 16 | 17 | public final int getWindowID() { 18 | return windowID; 19 | } 20 | 21 | @Override 22 | public void onActivate() { 23 | LOGGER.debug("onActivate for window {}", windowID); 24 | } 25 | 26 | @Override 27 | public void onCaptionChange(String caption) { 28 | LOGGER.debug("onCaptionChange for window {}: caption={}", windowID, caption); 29 | } 30 | 31 | @Override 32 | public void onDeactivate() { 33 | LOGGER.debug("onDeactivate for window {}", windowID); 34 | } 35 | 36 | @Override 37 | public void onDestroy() { 38 | LOGGER.debug("onDestroy for window {}", windowID); 39 | } 40 | 41 | @Override 42 | public void onLargeIconChange(String largeIconHash) { 43 | LOGGER.debug("onLargeIconChange for window {}: largeIconHash={}", windowID, largeIconHash); 44 | } 45 | 46 | @Override 47 | public void onMinimize() { 48 | LOGGER.debug("onMinimize for window {}", windowID); 49 | } 50 | 51 | @Override 52 | public void onMove(int xPos, int yPos) { 53 | LOGGER.debug("onMove for window {}: xPos={}, yPos={}", windowID, xPos, yPos); 54 | } 55 | 56 | @Override 57 | public void onSize(int width, int height) { 58 | LOGGER.debug("onSize for window {}: width={}, height={}", windowID, width, height); 59 | } 60 | 61 | @Override 62 | public void onSmallIconChange(String smallIconHash) { 63 | LOGGER.debug("onSmallIconChange for window {}: smallIconHash={}", windowID, smallIconHash); 64 | } 65 | 66 | @Override 67 | public void onStyleChange(int style, int extendedStyle) { 68 | if (LOGGER.isDebugEnabled()) { 69 | LOGGER.debug("onStyleChange for window {}: style=0x{}, extendedStyle=0x{}", windowID, 70 | Integer.toHexString(style), Integer.toHexString(extendedStyle)); 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /citrix-jmeter/src/main/java/com/blazemeter/jmeter/citrix/sampler/MouseSequenceItem.java: -------------------------------------------------------------------------------- 1 | package com.blazemeter.jmeter.citrix.sampler; 2 | 3 | import com.blazemeter.jmeter.citrix.client.events.InteractionEvent.MouseAction; 4 | import com.blazemeter.jmeter.citrix.client.events.Modifier; 5 | import com.blazemeter.jmeter.citrix.client.events.MouseButton; 6 | import java.io.Serializable; 7 | import java.util.EnumSet; 8 | import java.util.Set; 9 | 10 | public class MouseSequenceItem implements Serializable { 11 | /** 12 | * 13 | */ 14 | private static final long serialVersionUID = 6163197927231021148L; 15 | private final Set
11 | * This class allows to clause checks to be compliant with the current clause
12 | * definition.
13 | */
14 | public class PollingContext {
15 | private final Predicate
37 | * Can be null if the current checking strategy does not use
38 | * {@link Clause#getExpectedValue() expected value}
39 | *
40 | * @return the predicate used to evaluate the clause check result
41 | */
42 | public Predicate
18 | * Checks whether the specified node if selectable.
19 | *
35 | * Apply the action when the specified node is selectable
36 | *
38 | * WARNING : The {@link Runnable} interface is used just for its signature, not
39 | * for thread handling.
40 | *
37 | * Gets the singleton instance of the factory.
38 | *
7 | * Window style masks.
8 | *
13 | * The value of this constant is 0.
14 | *
19 | * The value of this constant is -2147483648.
20 | *
25 | * The value of this constant is 1073741824.
26 | *
31 | * The value of this constant is 536870912.
32 | *
37 | * The value of this constant is 268435456.
38 | *
43 | * The value of this constant is 134217728.
44 | *
49 | * The value of this constant is 67108864.
50 | *
55 | * The value of this constant is 33554432.
56 | *
61 | * The value of this constant is 16777216.
62 | *
67 | * The value of this constant is 12582912.
68 | *
73 | * The value of this constant is 8388608.
74 | *
79 | * The value of this constant is 4194304.
80 | *
85 | * The value of this constant is 2097152.
86 | *
91 | * The value of this constant is 1048576.
92 | *
97 | * The value of this constant is 524288.
98 | *
103 | * The value of this constant is 262144.
104 | *
109 | * The value of this constant is 131072.
110 | *
115 | * The value of this constant is 65536.
116 | *
121 | * The value of this constant is 131072.
122 | *
127 | * The value of this constant is 65536.
128 | *
17 | * method OnMove.
18 | *
34 | * method OnSize.
35 | *
51 | * method OnActivate.
52 | *
63 | * method OnDeactivate.
64 | *
75 | * method OnMinimize.
76 | *
87 | * method OnCaptionChange.
88 | *
102 | * method OnStyleChange.
103 | *
119 | * method OnSmallIconChange.
120 | *
134 | * method OnLargeIconChange.
135 | *
149 | * method OnDestroy.
150 | *
7 | * Window extended style masks.
8 | *
13 | * The value of this constant is 1.
14 | *
19 | * The value of this constant is 4.
20 | *
25 | * The value of this constant is 8.
26 | *
31 | * The value of this constant is 16.
32 | *
37 | * The value of this constant is 32.
38 | *
43 | * The value of this constant is 64.
44 | *
49 | * The value of this constant is 128.
50 | *
55 | * The value of this constant is 256.
56 | *
61 | * The value of this constant is 512.
62 | *
67 | * The value of this constant is 1024.
68 | *
73 | * The value of this constant is 4096.
74 | *
79 | * The value of this constant is 0.
80 | *
85 | * The value of this constant is 8192.
86 | *
91 | * The value of this constant is 0.
92 | *
97 | * The value of this constant is 16384.
98 | *
103 | * The value of this constant is 0.
104 | *
109 | * The value of this constant is 65536.
110 | *
115 | * The value of this constant is 131072.
116 | *
121 | * The value of this constant is 262144.
122 | *
127 | * The value of this constant is 768.
128 | *
133 | * The value of this constant is 392.
134 | *