├── .github └── dependabot.yml ├── .gitignore ├── CHANGELOG.md ├── Jenkinsfile ├── LICENCE ├── README.md ├── checkstyle.config.xml ├── dynatrace-appmon ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── tsystems │ │ │ └── mms │ │ │ └── apm │ │ │ └── performancesignature │ │ │ └── dynatrace │ │ │ ├── CreateDeploymentStep.java │ │ │ ├── CreateDeploymentStepExecution.java │ │ │ ├── PerfSigActivateConfiguration.java │ │ │ ├── PerfSigDynatracePlugin.java │ │ │ ├── PerfSigEnvContributor.java │ │ │ ├── PerfSigEnvInvisAction.java │ │ │ ├── PerfSigGlobalConfiguration.java │ │ │ ├── PerfSigMemoryDump.java │ │ │ ├── PerfSigRecorder.java │ │ │ ├── PerfSigStartRecording.java │ │ │ ├── PerfSigStopRecording.java │ │ │ ├── PerfSigTestDataPublisher.java │ │ │ ├── PerfSigThreadDump.java │ │ │ ├── configuration │ │ │ ├── ConfigurationTestCase.java │ │ │ ├── CredProfilePair.java │ │ │ ├── Dashboard.java │ │ │ ├── DynatraceServerConfiguration.java │ │ │ ├── GenericTestCase.java │ │ │ └── UnitTestCase.java │ │ │ ├── rest │ │ │ ├── DTServerConnection.java │ │ │ ├── json │ │ │ │ ├── ApiClient.java │ │ │ │ ├── ApiException.java │ │ │ │ ├── ApiResponse.java │ │ │ │ ├── api │ │ │ │ │ ├── AlertsIncidentsAndEventsApi.java │ │ │ │ │ ├── CustomXMLApi.java │ │ │ │ │ ├── LiveSessionsApi.java │ │ │ │ │ ├── ServerManagementApi.java │ │ │ │ │ ├── StoredSessionsApi.java │ │ │ │ │ ├── SystemProfilesApi.java │ │ │ │ │ └── TestAutomationApi.java │ │ │ │ ├── auth │ │ │ │ │ └── HttpBasicAuth.java │ │ │ │ └── model │ │ │ │ │ ├── ActivationStatus.java │ │ │ │ │ ├── AlertReference.java │ │ │ │ │ ├── Alerts.java │ │ │ │ │ ├── DeploymentEvent.java │ │ │ │ │ ├── Error.java │ │ │ │ │ ├── EventUpdate.java │ │ │ │ │ ├── ExternalTest.java │ │ │ │ │ ├── ExternalTestMeasure.java │ │ │ │ │ ├── RecordingStatus.java │ │ │ │ │ ├── Result.java │ │ │ │ │ ├── SessionData.java │ │ │ │ │ ├── SessionMetadata.java │ │ │ │ │ ├── SessionRecordingOptions.java │ │ │ │ │ ├── SessionStoringOptions.java │ │ │ │ │ ├── Sessions.java │ │ │ │ │ ├── SystemProfile.java │ │ │ │ │ ├── SystemProfileConfiguration.java │ │ │ │ │ ├── SystemProfileConfigurations.java │ │ │ │ │ ├── SystemProfileReference.java │ │ │ │ │ ├── SystemProfiles.java │ │ │ │ │ └── TestRunDefinition.java │ │ │ └── xml │ │ │ │ ├── CommandExecutionException.java │ │ │ │ ├── ContentRetrievalException.java │ │ │ │ ├── RESTErrorException.java │ │ │ │ └── model │ │ │ │ ├── Agent.java │ │ │ │ ├── AgentList.java │ │ │ │ ├── Dashboard.java │ │ │ │ ├── DashboardList.java │ │ │ │ ├── LicenseInformation.java │ │ │ │ ├── ObjectFactory.java │ │ │ │ └── XmlResult.java │ │ │ └── util │ │ │ └── PerfSigUtils.java │ └── resources │ │ ├── de │ │ └── tsystems │ │ │ └── mms │ │ │ └── apm │ │ │ └── performancesignature │ │ │ └── dynatrace │ │ │ ├── CreateDeploymentStep │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── Messages.properties │ │ │ ├── PerfSigActivateConfiguration │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── PerfSigGlobalConfiguration │ │ │ └── config.jelly │ │ │ ├── PerfSigMemoryDump │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── PerfSigRecorder │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── PerfSigStartRecording │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── PerfSigStopRecording │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── PerfSigTestDataPublisher │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── PerfSigThreadDump │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ └── configuration │ │ │ ├── ConfigurationTestCase │ │ │ └── config.jelly │ │ │ ├── CredProfilePair │ │ │ └── config.jelly │ │ │ ├── DynatraceServerConfiguration │ │ │ └── config.jelly │ │ │ └── Messages.properties │ │ └── index.jelly │ └── test │ ├── java │ └── de │ │ └── tsystems │ │ └── mms │ │ └── apm │ │ └── performancesignature │ │ └── dynatrace │ │ ├── ActivateConfigurationTest.java │ │ ├── MemoryDumpTest.java │ │ ├── RecorderOneTest.java │ │ ├── RecorderTwoTest.java │ │ ├── StartRecordingTest.java │ │ ├── StopRecordingTest.java │ │ ├── TestDataPublisherTest.java │ │ ├── ThreadDumpTest.java │ │ ├── rest │ │ └── xml │ │ │ └── DashboardXMLHandlerTest.java │ │ └── util │ │ └── TestUtils.java │ └── resources │ ├── RecorderOneTest │ └── mappings │ │ ├── api_v2_alerts-e181679d-b1d6-4efd-bbb4-801a01570bfa.json │ │ ├── api_v2_alerts_4666ba46-3c81-4eb4-bdae-784126046b49-ce00aa8b-8226-443f-92ac-1e7d4366c672.json │ │ ├── api_v2_profiles_easy-travel_session_recording-c8d130d7-ef6d-496b-86bd-fcb5c0f498f1.json │ │ ├── api_v2_profiles_easy-travel_session_recording-c8d130d7-ef6d-496b-86bd-fcb5c0f498f2.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-222ccb6b-9e53-49ed-8da2-21c9f0d48c71.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-5ba0f0b5-fca0-436a-bc65-41b9165aae81.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-cbf280f4-7e9a-48ec-a227-1f98dc2750b6.json │ │ ├── api_v2_profiles_easy-travel_testruns-ee0e9a5b-d272-4ea2-85f6-2d17328bb6e4.json │ │ ├── api_v2_profiles_easy-travel_testruns_d6d167ce-8fda-4559-847c-77b93b7fe000_finish-f1bea724-1a11-4b91-aa8f-f78f24a716b2.json │ │ ├── api_v2_server_version.json │ │ ├── api_v2_sessions-1ccf2471-31af-4918-847e-c861702d7797.json │ │ ├── api_v2_sessions_easy-travel_20200114180441_0t0session-a525d5d4-dcc0-4bb7-9b83-369edaf3f96b.json │ │ ├── rest_management_dashboard_performancesignature_xml-f517724f-dc32-435f-972b-b9567b599136.json │ │ ├── rest_management_reports_create_performancesignature_singlereport-e9b45dd4-5df2-4929-b147-b8e6f408ba1b.json │ │ └── rest_management_server_license.json │ ├── StartRecordingTest1 │ └── mappings │ │ ├── api_v2_profiles_easy-travel_session_recording-0e4c446e-81ff-4df7-9a45-48014dc6032b.json │ │ ├── api_v2_profiles_easy-travel_session_recording-5d6ebecf-3a4a-4838-91de-d25ceb624dc9.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-310fab20-48bc-4659-b073-90401be5cbba.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-b033a0c8-fb09-4790-be5a-ae523bf94680.json │ │ ├── api_v2_profiles_easy-travel_testruns.json │ │ ├── api_v2_server_version.json │ │ └── rest_management_server_license.json │ ├── StartRecordingTest2 │ └── mappings │ │ ├── api_v2_profiles_easy-travel_session_recording.json │ │ ├── api_v2_server_version.json │ │ └── rest_management_server_license.json │ ├── StopRecordingTest1 │ └── mappings │ │ ├── api_v2_profiles_easy-travel_session_recording-1c1127c7-8293-4792-9e82-85f2888b6b98.json │ │ ├── api_v2_profiles_easy-travel_session_recording-b60239a3-7d47-46d3-bf83-85679084e57f.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-32789524-382a-4edd-9545-86005864b68a.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-745a8334-202f-4f59-a4f6-44f3d546fc44.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-d1609979-dc03-4074-9676-048e4840dc8a.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status-dc8d894b-fdce-4b2c-8139-a022992c632a.json │ │ ├── api_v2_profiles_easy-travel_testruns-9795638b-2bdb-4ff8-a5d4-ef84f5061cfa.json │ │ ├── api_v2_profiles_easy-travel_testruns_053331f7-87db-405a-88cc-bcdb685f2677_finish-ce499a89-b31d-4094-bcb9-3be753267cce.json │ │ ├── api_v2_server_version.json │ │ ├── api_v2_sessions-6c0ee36f-3cf1-4d64-ad8e-5305d49026b4.json │ │ └── rest_management_server_license.json │ ├── StopRecordingTest2 │ └── mappings │ │ ├── api_v2_profiles_easy-travel_session_recording_status-23587a5e-ac60-47e9-95e4-1fc7f4bb4c96.json │ │ ├── api_v2_profiles_easy-travel_session_store-8108ea27-0785-45b3-a9ae-4902de7a3b52.json │ │ ├── api_v2_server_version.json │ │ ├── api_v2_sessions-8f3ea9db-0b4a-4a2b-a869-f9e889206137.json │ │ └── rest_management_server_license.json │ ├── dashboardXMLHandlerTest.xml │ ├── general │ └── mappings │ │ ├── api_v2_alerts.json │ │ ├── api_v2_alerts_detail1.json │ │ ├── api_v2_alerts_detail2.json │ │ ├── api_v2_profiles_easy-travel_configurations.json │ │ ├── api_v2_profiles_easy-travel_configurations_activateconfigurationtest_status.json │ │ ├── api_v2_profiles_easy-travel_session_recording_status.json │ │ ├── api_v2_server_version.json │ │ ├── rest_management_agents.json │ │ ├── rest_management_agents_-357139994_hotsensorplacement.json │ │ ├── rest_management_agents_-508255076_hotsensorplacement.json │ │ ├── rest_management_agents_1907664677_hotsensorplacement.json │ │ ├── rest_management_dashboards.json │ │ ├── rest_management_profiles_easy-travel_memorydump.json │ │ ├── rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-12.json │ │ ├── rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-7.json │ │ ├── rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-8.json │ │ ├── rest_management_profiles_easy-travel_threaddump.json │ │ ├── rest_management_profiles_easy-travel_threaddumpcreated_thread-dump-34.json │ │ └── rest_management_profiles_easy-travel_threaddumpcreated_thread-dump-35.json │ └── sampleTestRun.json ├── dynatrace ├── README.md ├── pom.xml └── src │ ├── main │ ├── java │ │ └── de │ │ │ └── tsystems │ │ │ └── mms │ │ │ └── apm │ │ │ └── performancesignature │ │ │ └── dynatracesaas │ │ │ ├── CreateDeploymentStep.java │ │ │ ├── CreateDeploymentStepExecution.java │ │ │ ├── DynatraceCustomSessionStep.java │ │ │ ├── DynatraceCustomSessionStepExecution.java │ │ │ ├── DynatraceEnvInvisAction.java │ │ │ ├── DynatraceGlobalConfiguration.java │ │ │ ├── DynatraceReportStep.java │ │ │ ├── DynatraceReportStepExecution.java │ │ │ ├── DynatraceSessionStep.java │ │ │ ├── DynatraceSessionStepExecution.java │ │ │ ├── model │ │ │ ├── Application.java │ │ │ ├── CustomProperty.java │ │ │ ├── DynatraceApiToken.java │ │ │ ├── DynatraceApiTokenImpl.java │ │ │ ├── DynatraceServerConfiguration.java │ │ │ ├── EntityId.java │ │ │ ├── Host.java │ │ │ ├── MeType.java │ │ │ ├── Metric.java │ │ │ ├── Process.java │ │ │ ├── ProcessGroup.java │ │ │ ├── Service.java │ │ │ ├── Specification.java │ │ │ ├── SpecificationTM.java │ │ │ ├── TagInfo.java │ │ │ └── TagMatchRule.java │ │ │ ├── rest │ │ │ ├── ApiClient.java │ │ │ ├── ApiException.java │ │ │ ├── ApiResponse.java │ │ │ ├── ApiSuffix.java │ │ │ ├── CommandExecutionException.java │ │ │ ├── DynatraceServerConnection.java │ │ │ ├── RESTErrorException.java │ │ │ ├── auth │ │ │ │ └── ApiKeyAuth.java │ │ │ ├── env1 │ │ │ │ ├── api │ │ │ │ │ ├── ClusterVersionApi.java │ │ │ │ │ ├── EventApi.java │ │ │ │ │ ├── TimeseriesApi.java │ │ │ │ │ ├── TopologySmartscapeApplicationApi.java │ │ │ │ │ ├── TopologySmartscapeHostApi.java │ │ │ │ │ ├── TopologySmartscapeProcessApi.java │ │ │ │ │ ├── TopologySmartscapeProcessGroupApi.java │ │ │ │ │ └── TopologySmartscapeServiceApi.java │ │ │ │ └── model │ │ │ │ │ ├── AgentVersion.java │ │ │ │ │ ├── AggregationTypeEnum.java │ │ │ │ │ ├── Application.java │ │ │ │ │ ├── ApplicationFromRelationships.java │ │ │ │ │ ├── BitnessEnum.java │ │ │ │ │ ├── ClusterVersion.java │ │ │ │ │ ├── ContextEnum.java │ │ │ │ │ ├── Event.java │ │ │ │ │ ├── EventPushMessage.java │ │ │ │ │ ├── EventQueryResult.java │ │ │ │ │ ├── EventRestEntry.java │ │ │ │ │ ├── EventRestImpact.java │ │ │ │ │ ├── EventSeverity.java │ │ │ │ │ ├── EventStoreResult.java │ │ │ │ │ ├── EventTypeEnum.java │ │ │ │ │ ├── FilterEnum.java │ │ │ │ │ ├── Host.java │ │ │ │ │ ├── HostFromRelationships.java │ │ │ │ │ ├── HostToRelationships.java │ │ │ │ │ ├── ImpactLevelEnum.java │ │ │ │ │ ├── MonitoringState.java │ │ │ │ │ ├── ProcessGroup.java │ │ │ │ │ ├── ProcessGroupFromRelationships.java │ │ │ │ │ ├── ProcessGroupInstance.java │ │ │ │ │ ├── ProcessGroupInstanceFromRelationships.java │ │ │ │ │ ├── ProcessGroupInstanceModule.java │ │ │ │ │ ├── ProcessGroupInstanceToRelationships.java │ │ │ │ │ ├── ProcessGroupMetadata.java │ │ │ │ │ ├── ProcessGroupToRelationships.java │ │ │ │ │ ├── PushEventAttachRules.java │ │ │ │ │ ├── QueryModeEnum.java │ │ │ │ │ ├── Service.java │ │ │ │ │ ├── ServiceFromRelationships.java │ │ │ │ │ ├── ServiceToRelationships.java │ │ │ │ │ ├── SeverityLevelEnum.java │ │ │ │ │ ├── StatusEnum.java │ │ │ │ │ ├── TechnologyInfo.java │ │ │ │ │ ├── TimeseriesDataPointQueryResult.java │ │ │ │ │ ├── TimeseriesDefinition.java │ │ │ │ │ ├── TimeseriesQueryMessage.java │ │ │ │ │ ├── TimeseriesQueryResult.java │ │ │ │ │ └── UnitEnum.java │ │ │ └── env2 │ │ │ │ ├── api │ │ │ │ └── MetricsApi.java │ │ │ │ └── model │ │ │ │ ├── MetricData.java │ │ │ │ ├── MetricDefaultAggregation.java │ │ │ │ ├── MetricDescriptor.java │ │ │ │ ├── MetricDescriptorCollection.java │ │ │ │ ├── MetricDimensionDefinition.java │ │ │ │ ├── MetricSeries.java │ │ │ │ ├── MetricSeriesCollection.java │ │ │ │ └── MetricValueType.java │ │ │ └── util │ │ │ ├── ConversionHelper.java │ │ │ └── DynatraceUtils.java │ └── resources │ │ ├── de │ │ └── tsystems │ │ │ └── mms │ │ │ └── apm │ │ │ └── performancesignature │ │ │ └── dynatracesaas │ │ │ ├── CreateDeploymentStep │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── DynatraceCustomSessionStep │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── DynatraceGlobalConfiguration │ │ │ └── config.jelly │ │ │ ├── DynatraceReportStep │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── DynatraceSessionStep │ │ │ ├── config.jelly │ │ │ └── config.properties │ │ │ ├── Messages.properties │ │ │ └── model │ │ │ ├── DynatraceApiTokenImpl │ │ │ └── credentials.jelly │ │ │ ├── EntityId │ │ │ └── config.jelly │ │ │ └── Messages.properties │ │ └── index.jelly │ └── test │ ├── java │ └── de │ │ └── tsystems │ │ └── mms │ │ └── apm │ │ └── performancesignature │ │ └── dynatracesaas │ │ ├── DynatraceReportStepExecutionTest.java │ │ ├── TimeSeriesApiOneTest.java │ │ ├── TimeSeriesApiTwoTest.java │ │ └── util │ │ ├── ConversionHelperTest.java │ │ └── TestUtils.java │ └── resources │ └── specfile.json ├── images ├── appmon_advanced_settings.png ├── appmon_advanced_step_settings.png ├── appmon_build_steps.png ├── appmon_client_link.png ├── appmon_configuration_generic_testcase.png ├── appmon_configuration_junit.png ├── appmon_console_output.png ├── appmon_example_build.png ├── appmon_example_perfsig.png ├── appmon_example_workflow.png ├── appmon_global_configuration.png ├── appmon_job_overview.png ├── appmon_junit_build.png ├── appmon_junit_detail.png ├── appmon_junit_detail_page.png ├── appmon_junit_overview.png ├── appmon_perfsig_overview.png ├── appmon_schematic_overview.png ├── appmon_select_mesasure.png ├── appmon_snippet_generator.png ├── appmon_unit_testcase.png ├── appmon_workflow.png ├── dynatrace_api_token.png ├── dynatrace_events.png ├── dynatrace_global_configuration.png ├── dynatrace_schematic_overview.png ├── dynatrace_snippet_generator1.png ├── dynatrace_snippet_generator2.png ├── dynatrace_snippet_generator3.png ├── viewer_global_configuration.png └── viewer_snippet_generator.png ├── pom.xml ├── ui ├── .eslintignore ├── .eslintrc.js ├── .mvn_exec_node ├── babel.config.json ├── package-lock.json ├── package.json ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── de │ │ │ │ └── tsystems │ │ │ │ └── mms │ │ │ │ └── apm │ │ │ │ └── performancesignature │ │ │ │ ├── dynatrace │ │ │ │ └── model │ │ │ │ │ ├── Alert.java │ │ │ │ │ ├── BaseReference.java │ │ │ │ │ ├── ChartDashlet.java │ │ │ │ │ ├── DashboardReport.java │ │ │ │ │ ├── Measure.java │ │ │ │ │ ├── MeasureBaseModel.java │ │ │ │ │ └── Measurement.java │ │ │ │ └── ui │ │ │ │ ├── PerfSigBaseAction.java │ │ │ │ ├── PerfSigBuildAction.java │ │ │ │ ├── PerfSigBuildActionResultsDisplay.java │ │ │ │ ├── PerfSigProjectAction.java │ │ │ │ ├── PerfSigUIPlugin.java │ │ │ │ ├── model │ │ │ │ ├── ClientLinkGenerator.java │ │ │ │ ├── JSONDashlet.java │ │ │ │ └── JSONDashletComparator.java │ │ │ │ └── util │ │ │ │ ├── NumberOnlyBuildLabel.java │ │ │ │ ├── PerfSigUIUtils.java │ │ │ │ └── PluginLogger.java │ │ ├── js │ │ │ └── projectaction.js │ │ ├── resources │ │ │ ├── de │ │ │ │ └── tsystems │ │ │ │ │ └── mms │ │ │ │ │ └── apm │ │ │ │ │ └── performancesignature │ │ │ │ │ ├── dynatrace │ │ │ │ │ └── model │ │ │ │ │ │ └── Messages.properties │ │ │ │ │ └── ui │ │ │ │ │ ├── Messages.properties │ │ │ │ │ ├── PerfSigBuildAction │ │ │ │ │ └── summary.jelly │ │ │ │ │ ├── PerfSigBuildActionResultsDisplay │ │ │ │ │ └── index.jelly │ │ │ │ │ ├── PerfSigProjectAction │ │ │ │ │ ├── floatingBox.jelly │ │ │ │ │ └── index.jelly │ │ │ │ │ ├── tags │ │ │ │ │ ├── chartDashletTable.jelly │ │ │ │ │ ├── incidentPanel.jelly │ │ │ │ │ ├── summaryTable.jelly │ │ │ │ │ └── taglib │ │ │ │ │ └── util │ │ │ │ │ └── Messages.properties │ │ │ └── index.jelly │ │ └── webapp │ │ │ ├── images │ │ │ ├── dtsession.png │ │ │ ├── icon.png │ │ │ └── loading.gif │ │ │ └── js │ │ │ ├── floatingBox.js │ │ │ └── tabhashes.js │ └── test │ │ ├── java │ │ └── de │ │ │ └── tsystems │ │ │ └── mms │ │ │ └── apm │ │ │ └── performancesignature │ │ │ └── ui │ │ │ ├── PerfSigBuildActionResultsDisplayTest.java │ │ │ ├── PerfSigProjectActionTest.java │ │ │ └── util │ │ │ └── TestUtils.java │ │ └── resources │ │ └── de │ │ └── tsystems │ │ └── mms │ │ └── apm │ │ └── performancesignature │ │ └── ui │ │ ├── PerfSigBuildActionResultsDisplayTest.zip │ │ ├── PerfSigProjectActionTest.zip │ │ └── PerfSigTestActionTest.zip └── webpack.config.js └── viewer ├── README.md ├── pom.xml └── src └── main ├── java └── de │ └── tsystems │ └── mms │ └── apm │ └── performancesignature │ └── viewer │ ├── InputTriggerStep.java │ ├── InputTriggerStepExecution.java │ ├── PullPerfSigDataStep.java │ ├── PullPerfSigDataStepExecution.java │ └── rest │ ├── CommandExecutionException.java │ ├── ConnectionHelper.java │ ├── ContentRetrievalException.java │ ├── RESTErrorException.java │ └── model │ ├── Artifact.java │ ├── BuildData.java │ └── RootElement.java └── resources ├── de └── tsystems │ └── mms │ └── apm │ └── performancesignature │ └── viewer │ ├── InputTriggerStep │ └── config.jelly │ ├── Messages.properties │ └── PullPerfSigDataStep │ └── config.jelly └── index.jelly /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: maven 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | - package-ecosystem: npm 8 | directory: "/ui" 9 | schedule: 10 | interval: daily 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | work/ 2 | .idea/ 3 | target/ 4 | pom.xml.tag 5 | pom.xml.releaseBackup 6 | pom.xml.versionsBackup 7 | pom.xml.next 8 | release.properties 9 | dependency-reduced-pom.xml 10 | buildNumber.properties 11 | node_modules 12 | node 13 | *.iml 14 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | buildPlugin(configurations: [ 2 | [platform: 'linux', jdk: '8'], 3 | [platform: 'windows', jdk: '8'], 4 | [platform: 'linux', jdk: '11'] 5 | ]) 6 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigEnvContributor.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace; 18 | 19 | import hudson.EnvVars; 20 | import hudson.Extension; 21 | import hudson.model.EnvironmentContributor; 22 | import hudson.model.Run; 23 | import hudson.model.TaskListener; 24 | import org.apache.commons.lang.StringUtils; 25 | 26 | import javax.annotation.Nonnull; 27 | 28 | @Extension 29 | public class PerfSigEnvContributor extends EnvironmentContributor { 30 | static final String TESTRUN_ID_KEY = "DYNATRACE_TESTRUN_ID"; 31 | 32 | @Override 33 | public void buildEnvironmentFor(@Nonnull final Run run, @Nonnull final EnvVars envVars, @Nonnull final TaskListener listener) { 34 | run.getActions(PerfSigEnvInvisAction.class).stream() 35 | .filter(action -> StringUtils.isNotBlank(action.getTestRunId())) 36 | .forEach(action -> envVars.put(TESTRUN_ID_KEY, action.getTestRunId())); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigGlobalConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace; 18 | 19 | import de.tsystems.mms.apm.performancesignature.dynatrace.configuration.DynatraceServerConfiguration; 20 | import hudson.Extension; 21 | import jenkins.model.GlobalConfiguration; 22 | import jenkins.model.Jenkins; 23 | import net.sf.json.JSONObject; 24 | import org.kohsuke.stapler.StaplerRequest; 25 | 26 | import java.util.ArrayList; 27 | import java.util.List; 28 | 29 | @Extension 30 | public class PerfSigGlobalConfiguration extends GlobalConfiguration { 31 | private List configurations = new ArrayList<>(); 32 | 33 | public PerfSigGlobalConfiguration() { 34 | load(); 35 | } 36 | 37 | public static PerfSigGlobalConfiguration get() { 38 | return GlobalConfiguration.all().get(PerfSigGlobalConfiguration.class); 39 | } 40 | 41 | @Override 42 | public boolean configure(final StaplerRequest req, final JSONObject formData) { 43 | Jenkins.get().checkPermission(Jenkins.ADMINISTER); 44 | setConfigurations(req.bindJSONToList(DynatraceServerConfiguration.class, formData.get("configurations"))); 45 | save(); 46 | return false; 47 | } 48 | 49 | public List getConfigurations() { 50 | return configurations; 51 | } 52 | 53 | public void setConfigurations(final List configurations) { 54 | this.configurations = configurations; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/configuration/GenericTestCase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.configuration; 18 | 19 | import hudson.Extension; 20 | import org.kohsuke.stapler.DataBoundConstructor; 21 | import org.kohsuke.stapler.DataBoundSetter; 22 | 23 | import javax.annotation.Nonnull; 24 | import java.util.List; 25 | 26 | public class GenericTestCase extends ConfigurationTestCase { 27 | 28 | @DataBoundConstructor 29 | public GenericTestCase(final String name, final List singleDashboards, final List comparisonDashboards, final String xmlDashboard) { 30 | super(name, singleDashboards, comparisonDashboards, xmlDashboard); 31 | } 32 | 33 | @Override 34 | @DataBoundSetter 35 | public void setClientDashboard(final String clientDashboard) { 36 | super.setClientDashboard(clientDashboard); 37 | } 38 | 39 | @Extension 40 | public static final class DescriptorImpl extends ConfigurationTestCaseDescriptor { 41 | @Nonnull 42 | @Override 43 | public String getDisplayName() { 44 | return Messages.GenericTestCase_DisplayName(); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/configuration/UnitTestCase.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.configuration; 18 | 19 | import hudson.Extension; 20 | import org.kohsuke.stapler.DataBoundConstructor; 21 | import org.kohsuke.stapler.DataBoundSetter; 22 | 23 | import javax.annotation.Nonnull; 24 | import java.util.List; 25 | 26 | public class UnitTestCase extends ConfigurationTestCase { 27 | 28 | @DataBoundConstructor 29 | public UnitTestCase(final String name, final List singleDashboards, final List comparisonDashboards, final String xmlDashboard) { 30 | super(name, singleDashboards, comparisonDashboards, xmlDashboard); 31 | } 32 | 33 | @Override 34 | @DataBoundSetter 35 | public void setClientDashboard(final String clientDashboard) { 36 | super.setClientDashboard(clientDashboard); 37 | } 38 | 39 | @Extension 40 | public static final class DescriptorImpl extends ConfigurationTestCaseDescriptor { 41 | @Nonnull 42 | @Override 43 | public String getDisplayName() { 44 | return Messages.UnitTestCase_DisplayName(); 45 | } 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/ApiResponse.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json; 18 | 19 | import java.util.List; 20 | import java.util.Map; 21 | 22 | /** 23 | * API response returned by API call. 24 | * 25 | * @param The type of data that is deserialized from response body 26 | */ 27 | public class ApiResponse { 28 | private final int statusCode; 29 | private final Map> headers; 30 | private final T data; 31 | 32 | /** 33 | * @param statusCode The status code of HTTP response 34 | * @param headers The headers of HTTP response 35 | */ 36 | public ApiResponse(int statusCode, Map> headers) { 37 | this(statusCode, headers, null); 38 | } 39 | 40 | /** 41 | * @param statusCode The status code of HTTP response 42 | * @param headers The headers of HTTP response 43 | * @param data The object deserialized from response bod 44 | */ 45 | public ApiResponse(int statusCode, Map> headers, T data) { 46 | this.statusCode = statusCode; 47 | this.headers = headers; 48 | this.data = data; 49 | } 50 | 51 | public int getStatusCode() { 52 | return statusCode; 53 | } 54 | 55 | public Map> getHeaders() { 56 | return headers; 57 | } 58 | 59 | public T getData() { 60 | return data; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/api/ServerManagementApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.api; 18 | 19 | import de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model.Result; 20 | import retrofit2.Call; 21 | import retrofit2.http.GET; 22 | 23 | import static de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.ApiClient.API_SUFFIX; 24 | 25 | public interface ServerManagementApi { 26 | 27 | /** 28 | * Request the version of the AppMon Server 29 | * Get the version of the running server. 30 | * 31 | * @return Call<XmlResult> 32 | */ 33 | @GET(API_SUFFIX + "server/version") 34 | Call getVersion(); 35 | } 36 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/model/AlertReference.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.BaseReference; 21 | import de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils; 22 | import io.swagger.annotations.ApiModelProperty; 23 | 24 | /** 25 | * AlertReference 26 | */ 27 | 28 | public class AlertReference extends BaseReference { 29 | @SerializedName("rule") 30 | private String rule; 31 | 32 | /** 33 | * Incident Rule name 34 | * 35 | * @return rule 36 | **/ 37 | @ApiModelProperty(value = "Incident Rule name") 38 | public String getRule() { 39 | return rule; 40 | } 41 | 42 | 43 | @Override 44 | public String toString() { 45 | return "class AlertReference {\n" + 46 | " id: " + PerfSigUIUtils.toIndentedString(super.getId()) + "\n" + 47 | " href: " + PerfSigUIUtils.toIndentedString(super.getHref()) + "\n" + 48 | " rule: " + PerfSigUIUtils.toIndentedString(rule) + "\n" + 49 | "}"; 50 | } 51 | } 52 | 53 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/model/Alerts.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils; 21 | import io.swagger.annotations.ApiModelProperty; 22 | 23 | import java.util.ArrayList; 24 | import java.util.List; 25 | 26 | /** 27 | * Alerts 28 | */ 29 | 30 | public class Alerts { 31 | @SerializedName("alerts") 32 | private List alerts; 33 | 34 | public Alerts alerts(List alerts) { 35 | this.alerts = alerts; 36 | return this; 37 | } 38 | 39 | public Alerts addAlertsItem(AlertReference alertsItem) { 40 | if (this.alerts == null) { 41 | this.alerts = new ArrayList<>(); 42 | } 43 | this.alerts.add(alertsItem); 44 | return this; 45 | } 46 | 47 | /** 48 | * List of alert references 49 | * 50 | * @return alerts 51 | **/ 52 | @ApiModelProperty(value = "List of alert references") 53 | public List getAlerts() { 54 | return alerts; 55 | } 56 | 57 | public void setAlerts(List alerts) { 58 | this.alerts = alerts; 59 | } 60 | 61 | 62 | @Override 63 | public String toString() { 64 | return "class Alerts {\n" + 65 | " alerts: " + PerfSigUIUtils.toIndentedString(alerts) + "\n" + 66 | "}"; 67 | } 68 | } 69 | 70 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/model/Error.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils; 21 | import io.swagger.annotations.ApiModel; 22 | import io.swagger.annotations.ApiModelProperty; 23 | 24 | /** 25 | * Error message 26 | */ 27 | @ApiModel(description = "Error message") 28 | 29 | public class Error { 30 | @SerializedName("code") 31 | private Integer code; 32 | 33 | @SerializedName("message") 34 | private String message; 35 | 36 | /** 37 | * HTTP error code 38 | * 39 | * @return code 40 | **/ 41 | @ApiModelProperty(required = true, value = "HTTP error code") 42 | public Integer getCode() { 43 | return code; 44 | } 45 | 46 | /** 47 | * Error message 48 | * 49 | * @return message 50 | **/ 51 | @ApiModelProperty(value = "Error message") 52 | public String getMessage() { 53 | return message; 54 | } 55 | 56 | @Override 57 | public String toString() { 58 | return "class Error {\n" + 59 | " code: " + PerfSigUIUtils.toIndentedString(code) + "\n" + 60 | " message: " + PerfSigUIUtils.toIndentedString(message) + "\n" + 61 | "}"; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/model/RecordingStatus.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils; 21 | import io.swagger.annotations.ApiModelProperty; 22 | 23 | /** 24 | * RecordingStatus 25 | */ 26 | 27 | public class RecordingStatus { 28 | @SerializedName("recording") 29 | private final boolean recording; 30 | 31 | public RecordingStatus(boolean recording) { 32 | this.recording = recording; 33 | } 34 | 35 | /** 36 | * Status of recording, true if recording is ongoing 37 | * 38 | * @return recording 39 | **/ 40 | @ApiModelProperty(required = true, value = "Status of recording, true if recording is ongoing") 41 | public boolean getRecording() { 42 | return recording; 43 | } 44 | 45 | @Override 46 | public String toString() { 47 | return "class RecordingStatus {\n" + 48 | " recording: " + PerfSigUIUtils.toIndentedString(recording) + "\n" + 49 | "}"; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/model/Result.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils; 21 | import io.swagger.annotations.ApiModel; 22 | import io.swagger.annotations.ApiModelProperty; 23 | 24 | /** 25 | * Single string result 26 | */ 27 | @ApiModel(description = "Single string result") 28 | 29 | public class Result { 30 | @SerializedName("result") 31 | private String result; 32 | 33 | /** 34 | * XmlResult value 35 | * 36 | * @return result 37 | **/ 38 | @ApiModelProperty(required = true, value = "XmlResult value") 39 | public String getResult() { 40 | return result; 41 | } 42 | 43 | @Override 44 | public String toString() { 45 | return "class XmlResult {\n" + 46 | " result: " + PerfSigUIUtils.toIndentedString(result) + "\n" + 47 | "}"; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/model/SystemProfileConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.BaseReference; 21 | import de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils; 22 | 23 | /** 24 | * SystemProfileConfiguration 25 | */ 26 | 27 | public class SystemProfileConfiguration extends BaseReference { 28 | @SerializedName("isactive") 29 | private Boolean isactive; 30 | 31 | /** 32 | * Get isactive 33 | * 34 | * @return isactive 35 | **/ 36 | 37 | public Boolean getIsactive() { 38 | return isactive; 39 | } 40 | 41 | @Override 42 | public String toString() { 43 | return "class SystemProfileConfiguration {\n" + 44 | " id: " + PerfSigUIUtils.toIndentedString(super.getId()) + "\n" + 45 | " href: " + PerfSigUIUtils.toIndentedString(super.getHref()) + "\n" + 46 | " isactive: " + PerfSigUIUtils.toIndentedString(isactive) + "\n" + 47 | "}"; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/json/model/SystemProfileReference.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.json.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.BaseReference; 21 | import de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils; 22 | import io.swagger.annotations.ApiModelProperty; 23 | 24 | /** 25 | * SystemProfileReference 26 | */ 27 | 28 | public class SystemProfileReference extends BaseReference { 29 | @SerializedName("isrecording") 30 | private Boolean isrecording; 31 | 32 | /** 33 | * Session recording state 34 | * 35 | * @return isrecording 36 | **/ 37 | @ApiModelProperty(value = "Session recording state") 38 | public Boolean getIsrecording() { 39 | return isrecording; 40 | } 41 | 42 | @Override 43 | public String toString() { 44 | return "class SystemProfileReference {\n" + 45 | " id: " + PerfSigUIUtils.toIndentedString(super.getId()) + "\n" + 46 | " isrecording: " + PerfSigUIUtils.toIndentedString(isrecording) + "\n" + 47 | " href: " + PerfSigUIUtils.toIndentedString(super.getHref()) + "\n" + 48 | "}"; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/CommandExecutionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml; 18 | 19 | public class CommandExecutionException extends RuntimeException { 20 | private static final long serialVersionUID = 1L; 21 | 22 | public CommandExecutionException(final String reason, final Exception ex) { 23 | super(reason, ex); 24 | } 25 | 26 | public CommandExecutionException(final String reason) { 27 | super(reason); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/ContentRetrievalException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml; 18 | 19 | public class ContentRetrievalException extends RuntimeException { 20 | private static final long serialVersionUID = 1L; 21 | 22 | public ContentRetrievalException(final String reason, final Exception ex) { 23 | super(reason, ex); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/RESTErrorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml; 18 | 19 | import java.io.IOException; 20 | 21 | public class RESTErrorException extends IOException { 22 | public RESTErrorException(final String message) { 23 | super(message); 24 | } 25 | 26 | public RESTErrorException(final String message, final Throwable throwable) { 27 | super(message, throwable); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/model/AgentList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml.model; 18 | 19 | import javax.xml.bind.annotation.XmlAccessType; 20 | import javax.xml.bind.annotation.XmlAccessorType; 21 | import javax.xml.bind.annotation.XmlElement; 22 | import javax.xml.bind.annotation.XmlRootElement; 23 | import java.util.ArrayList; 24 | import java.util.List; 25 | 26 | @XmlAccessorType(XmlAccessType.FIELD) 27 | @XmlRootElement(name = "agents") 28 | public class AgentList { 29 | @XmlElement(name = "agentinformation") 30 | private List agents; 31 | 32 | public List getAgents() { 33 | if (agents == null) { 34 | agents = new ArrayList<>(); 35 | } 36 | return agents; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/model/Dashboard.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml.model; 18 | 19 | import javax.xml.bind.annotation.XmlAccessType; 20 | import javax.xml.bind.annotation.XmlAccessorType; 21 | import javax.xml.bind.annotation.XmlAttribute; 22 | import javax.xml.bind.annotation.XmlRootElement; 23 | 24 | @XmlAccessorType(XmlAccessType.FIELD) 25 | @XmlRootElement 26 | public class Dashboard { 27 | @XmlAttribute 28 | private String id; 29 | 30 | public String getId() { 31 | return id; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/model/DashboardList.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml.model; 18 | 19 | import javax.xml.bind.annotation.XmlAccessType; 20 | import javax.xml.bind.annotation.XmlAccessorType; 21 | import javax.xml.bind.annotation.XmlElement; 22 | import javax.xml.bind.annotation.XmlRootElement; 23 | import java.util.ArrayList; 24 | import java.util.List; 25 | 26 | @XmlAccessorType(XmlAccessType.FIELD) 27 | @XmlRootElement(name = "dashboards") 28 | public class DashboardList { 29 | @XmlElement(name = "dashboard") 30 | private List dashboards; 31 | 32 | public List getDashboards() { 33 | if (dashboards == null) { 34 | dashboards = new ArrayList<>(); 35 | } 36 | return dashboards; 37 | } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/model/ObjectFactory.java: -------------------------------------------------------------------------------- 1 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml.model; 2 | 3 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.DashboardReport; 4 | 5 | import javax.xml.bind.annotation.XmlRegistry; 6 | 7 | /** 8 | * This object contains factory methods for each Java content interface and Java element interface 9 | * generated in the generated package. 10 | *

An ObjectFactory allows you to programatically construct new instances of the Java representation 11 | * for XML content. The Java representation of XML content can consist of schema derived interfaces 12 | * and classes representing the binding of schema type definitions, element declarations and model 13 | * groups. Factory methods for each of these are provided in this class. 14 | */ 15 | @SuppressWarnings("unused") 16 | @XmlRegistry 17 | public class ObjectFactory { 18 | 19 | public ObjectFactory() { 20 | } 21 | 22 | public Agent createAgent() { 23 | return new Agent(); 24 | } 25 | 26 | public AgentList createAgentList() { 27 | return new AgentList(); 28 | } 29 | 30 | public Dashboard createDashboard() { 31 | return new Dashboard(); 32 | } 33 | 34 | public DashboardList createDashboardList() { 35 | return new DashboardList(); 36 | } 37 | 38 | public DashboardReport createDashboardReport() { 39 | return new DashboardReport(); 40 | } 41 | 42 | public LicenseInformation createLicenseInformation() { 43 | return new LicenseInformation(); 44 | } 45 | 46 | public XmlResult createXmlResult() { 47 | return new XmlResult(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/rest/xml/model/XmlResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.rest.xml.model; 18 | 19 | import javax.xml.bind.annotation.*; 20 | 21 | @XmlAccessorType(XmlAccessType.FIELD) 22 | @XmlRootElement 23 | public class XmlResult { 24 | @XmlAttribute 25 | private String value; 26 | @XmlElement 27 | private String success; 28 | 29 | public String getValue() { 30 | return value; 31 | } 32 | 33 | public boolean isResultTrue() { 34 | return Boolean.parseBoolean(value); 35 | } 36 | 37 | public String getSuccess() { 38 | return success; 39 | } 40 | 41 | public boolean isSuccessTrue() { 42 | return Boolean.parseBoolean(success); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/CreateDeploymentStep/config.jelly: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/CreateDeploymentStep/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigActivateConfiguration/config.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigActivateConfiguration/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure Dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigGlobalConfiguration/config.jelly: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigMemoryDump/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure Dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigRecorder/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigStartRecording/config.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigStartRecording/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigStopRecording/config.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigStopRecording/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigTestDataPublisher/config.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigTestDataPublisher/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigThreadDump/config.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/PerfSigThreadDump/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/configuration/CredProfilePair/config.jelly: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 30 |
31 |
32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/configuration/Messages.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | PerfSigRecorder.DelayNotValid=the delay value is not valid 17 | PerfSigRecorder.DTServerUrlNotValid=Dynatrace server url is not valid 18 | PerfSigRecorder.RetryCountNotValid=the retry count value is not valid 19 | PerfSigRecorder.DTProfileNotValid=Dynatrace profile cannot be empty 20 | PerfSigRecorder.TestConnectionNotSuccessful=connection with Dynatrace REST interface could not be established 21 | PerfSigRecorder.TestConnectionSuccessful=connection successful 22 | GenericTestCase.DisplayName=Generic test case 23 | UnitTestCase.DisplayName=UnitTest test case 24 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/main/resources/index.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 |

18 | This plugin collects Dynatrace Performance Signature Reports and stores them locally. 19 |
20 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/java/de/tsystems/mms/apm/performancesignature/dynatrace/TestDataPublisherTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace; 18 | 19 | import com.google.gson.Gson; 20 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.TestRun; 21 | import hudson.FilePath; 22 | import org.junit.Test; 23 | 24 | import java.io.File; 25 | import java.io.IOException; 26 | 27 | import static org.junit.Assert.assertEquals; 28 | 29 | public class TestDataPublisherTest { 30 | 31 | @Test 32 | public void testJSONParser() throws IOException, InterruptedException { 33 | FilePath file = new FilePath(new File("src/test/resources/sampleTestRun.json")); 34 | TestRun testRun = new Gson().fromJson(file.readToString(), TestRun.class); 35 | 36 | assertEquals(305, testRun.getTestResults().size()); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_alerts-e181679d-b1d6-4efd-bbb4-801a01570bfa.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "e181679d-b1d6-4efd-bbb4-801a01570bfa", 3 | "name": "api_v2_alerts", 4 | "request": { 5 | "urlPattern": "^\\/api\\/v2\\/alerts\\?systemprofile=easy\\%20Travel\\&state=Created\\&from=(.*)\\&to=(.*)", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"alerts\":[{\"id\":\"4666ba46-3c81-4eb4-bdae-784126046b49\",\"href\":\"https://192.168.192.202:8021/api/v2/alerts/4666ba46-3c81-4eb4-bdae-784126046b49\",\"rule\":\"KPI_WebRequestTime\"}]}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 17:05:44 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=1j6lg22ck10f7nl5zrcltblej;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache" 26 | } 27 | }, 28 | "uuid": "e181679d-b1d6-4efd-bbb4-801a01570bfa", 29 | "persistent": true, 30 | "insertionIndex": 18 31 | } 32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_alerts_4666ba46-3c81-4eb4-bdae-784126046b49-ce00aa8b-8226-443f-92ac-1e7d4366c672.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ce00aa8b-8226-443f-92ac-1e7d4366c672", 3 | "name": "api_v2_alerts_4666ba46-3c81-4eb4-bdae-784126046b49", 4 | "request": { 5 | "url": "/api/v2/alerts/4666ba46-3c81-4eb4-bdae-784126046b49", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"severity\":\"severe\",\"state\":\"Created\",\"message\":\"Web Requests/Time: Time upper bound exceeded\",\"description\":\"Time: Measured peak value: 88.68 [ms], Upper Severe Bound: 30.00, Upper Warning Bound: 25.00\",\"start\":\"2020-01-14T18:04:20.000+01:00\",\"rule\":\"KPI_WebRequestTime\",\"systemprofile\":\"easy Travel\"}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 17:05:58 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=128dwijbdnilx132f2mmkfde4y;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache", 26 | "Vary": "Accept-Encoding, User-Agent" 27 | } 28 | }, 29 | "uuid": "ce00aa8b-8226-443f-92ac-1e7d4366c672", 30 | "persistent": true, 31 | "insertionIndex": 19 32 | } 33 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_profiles_easy-travel_session_recording-c8d130d7-ef6d-496b-86bd-fcb5c0f498f1.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "c8d130d7-ef6d-496b-86bd-fcb5c0f498f1", 3 | "name": "api_v2_profiles_easy-travel_session_recording", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"sessionname\":\"easy Travel_test0_Build-1_RecorderOneTest\",\"description\":\"This session is triggered by Jenkins\",\"appendtimestamp\":false,\"recordingoption\":\"all\",\"locksession\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 17:04:40 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=dl0s555x9m7synuzpfwcjg43;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114180441_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "c8d130d7-ef6d-496b-86bd-fcb5c0f498f1", 34 | "persistent": true, 35 | "insertionIndex": 9 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_profiles_easy-travel_session_recording-c8d130d7-ef6d-496b-86bd-fcb5c0f498f2.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "c8d130d7-ef6d-496b-86bd-fcb5c0f498f2", 3 | "name": "api_v2_profiles_easy-travel_session_recording", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"sessionname\":\"easy Travel_test1_Build-1_RecorderOneTest\",\"description\":\"This session is triggered by Jenkins\",\"appendtimestamp\":false,\"recordingoption\":\"all\",\"locksession\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 17:04:40 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=dl0s555x9m7synuzpfwcjg43;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114180441_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "c8d130d7-ef6d-496b-86bd-fcb5c0f498f2", 34 | "persistent": true, 35 | "insertionIndex": 9 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_profiles_easy-travel_session_recording_status-222ccb6b-9e53-49ed-8da2-21c9f0d48c71.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "222ccb6b-9e53-49ed-8da2-21c9f0d48c71", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"recording\":false}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 17:05:37 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=1mi64x9ya2v0uw9jow1skkwz6;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache" 26 | } 27 | }, 28 | "uuid": "222ccb6b-9e53-49ed-8da2-21c9f0d48c71", 29 | "persistent": true, 30 | "scenarioName": "scenario-2-api-v2-profiles-easy Travel-session-recording-status", 31 | "requiredScenarioState": "scenario-2-api-v2-profiles-easy Travel-session-recording-status-2", 32 | "insertionIndex": 15 33 | } 34 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_profiles_easy-travel_session_recording_status-5ba0f0b5-fca0-436a-bc65-41b9165aae81.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "5ba0f0b5-fca0-436a-bc65-41b9165aae81", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "PUT", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"recording\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 204, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 17:05:06 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=y1zp43kw0vu71oyqzdd0cwuae;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114180441_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "5ba0f0b5-fca0-436a-bc65-41b9165aae81", 34 | "persistent": true, 35 | "insertionIndex": 13 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_profiles_easy-travel_session_recording_status-cbf280f4-7e9a-48ec-a227-1f98dc2750b6.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "cbf280f4-7e9a-48ec-a227-1f98dc2750b6", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"recording\":false}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 17:04:40 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=mkxdsbekrgqh1lhunh8dgb4qo;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache" 26 | } 27 | }, 28 | "uuid": "cbf280f4-7e9a-48ec-a227-1f98dc2750b6", 29 | "persistent": true, 30 | "scenarioName": "scenario-2-api-v2-profiles-easy Travel-session-recording-status", 31 | "requiredScenarioState": "Started", 32 | "newScenarioState": "scenario-2-api-v2-profiles-easy Travel-session-recording-status-2", 33 | "insertionIndex": 8 34 | } 35 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_profiles_easy-travel_testruns-ee0e9a5b-d272-4ea2-85f6-2d17328bb6e4.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ee0e9a5b-d272-4ea2-85f6-2d17328bb6e4", 3 | "name": "api_v2_profiles_easy-travel_testruns", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/testruns", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "contains": "{\"versionBuild\":\"1\",\"category\":\"performance\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "body": "{\"id\":\"d6d167ce-8fda-4559-847c-77b93b7fe000\",\"category\":\"performance\",\"versionBuild\":\"1\",\"platform\":\"\",\"startTime\":\"2020-01-14T18:04:41.396+01:00\",\"sessionId\":\"easy Travel/20200114180441_0.t0.session\",\"session\":\"easy Travel_test0_Build-1_RecorderOneTest (7)\",\"systemProfile\":\"easy Travel\",\"href\":\"https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/testruns/d6d167ce-8fda-4559-847c-77b93b7fe000\",\"creationMode\":\"MANUAL\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:60968/jenkins/job/test0/1/\"},\"numDegraded\":0,\"numFailed\":0,\"numImproved\":0,\"numInvalidated\":0,\"numPassed\":0,\"numVolatile\":0,\"finished\":false,\"includedMetrics\":[]}", 18 | "headers": { 19 | "Date": "Tue, 14 Jan 2020 17:04:41 GMT", 20 | "X-Frame-Options": "SAMEORIGIN", 21 | "X-XSS-Protection": "1; mode=block", 22 | "X-Content-Type-Options": "nosniff", 23 | "Set-Cookie": "JSESSIONID=4jrxe8y8u43qgojfcnu0s7wu;Path=/;Secure;HttpOnly", 24 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 25 | "Location": "https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/testruns/d6d167ce-8fda-4559-847c-77b93b7fe000", 26 | "Content-Type": "application/json", 27 | "Content-Disposition": "inline; filename=\"response.json\"", 28 | "Cache-Control": [ 29 | "no-cache", 30 | "must-revalidate", 31 | "max-age=0" 32 | ], 33 | "Pragma": "no-cache" 34 | } 35 | }, 36 | "uuid": "ee0e9a5b-d272-4ea2-85f6-2d17328bb6e4", 37 | "persistent": true, 38 | "insertionIndex": 10 39 | } 40 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_profiles_easy-travel_testruns_d6d167ce-8fda-4559-847c-77b93b7fe000_finish-f1bea724-1a11-4b91-aa8f-f78f24a716b2.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "f1bea724-1a11-4b91-aa8f-f78f24a716b2", 3 | "name": "api_v2_profiles_easy-travel_testruns_d6d167ce-8fda-4559-847c-77b93b7fe000_finish", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/testruns/d6d167ce-8fda-4559-847c-77b93b7fe000/finish", 6 | "method": "POST" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"id\":\"d6d167ce-8fda-4559-847c-77b93b7fe000\",\"category\":\"performance\",\"versionBuild\":\"1\",\"platform\":\"\",\"startTime\":\"2020-01-14T18:04:41.396+01:00\",\"sessionId\":\"easy Travel/20200114180441_0.t0.session\",\"session\":\"easy Travel_test0_Build-1_RecorderOneTest (7)\",\"systemProfile\":\"easy Travel\",\"message\":\"No tests were executed within testRun with id 'd6d167ce-8fda-4559-847c-77b93b7fe000'\",\"creationMode\":\"MANUAL\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:60968/jenkins/job/test0/1/\"},\"numDegraded\":0,\"numFailed\":0,\"numImproved\":0,\"numInvalidated\":0,\"numPassed\":0,\"numVolatile\":0,\"finished\":true,\"includedMetrics\":[]}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 17:04:50 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=qf9i218nes6yv9uz7oaey9oe;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache" 26 | } 27 | }, 28 | "uuid": "f1bea724-1a11-4b91-aa8f-f78f24a716b2", 29 | "persistent": true, 30 | "insertionIndex": 12 31 | } 32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/RecorderOneTest/mappings/api_v2_server_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_server_version", 3 | "request": { 4 | "url": "/api/v2/server/version", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"result\":\"7.2.19.1064\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:00 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1cizuq6gwc2jr1obr4mz991imo;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording-0e4c446e-81ff-4df7-9a45-48014dc6032b.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "0e4c446e-81ff-4df7-9a45-48014dc6032b", 3 | "name": "api_v2_profiles_easy-travel_session_recording", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"sessionname\":\"easy Travel_test0_Build-1_unittest\",\"description\":\"This session is triggered by Jenkins\",\"appendtimestamp\":false,\"recordingoption\":\"all\",\"locksession\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 14:09:26 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=1hteimdp3ulpd1nr784hsul6fi;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114150926_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "0e4c446e-81ff-4df7-9a45-48014dc6032b", 34 | "persistent": true, 35 | "insertionIndex": 189 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording-5d6ebecf-3a4a-4838-91de-d25ceb624dc9.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "5d6ebecf-3a4a-4838-91de-d25ceb624dc9", 3 | "name": "api_v2_profiles_easy-travel_session_recording", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"sessionname\":\"testContinuousSessionRecording\",\"description\":\"triggered by UnitTest\",\"appendtimestamp\":false,\"recordingoption\":\"all\",\"locksession\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 14:09:02 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=104151845va0boi8pm6qr1qcx;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114150903_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "5d6ebecf-3a4a-4838-91de-d25ceb624dc9", 34 | "persistent": true, 35 | "insertionIndex": 183 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording_status-310fab20-48bc-4659-b073-90401be5cbba.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "310fab20-48bc-4659-b073-90401be5cbba", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "PUT", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"recording\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 204, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 14:09:03 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=1nilsmgx2ucbc3al8nrzvkuju;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114150903_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "310fab20-48bc-4659-b073-90401be5cbba", 34 | "persistent": true, 35 | "insertionIndex": 184 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording_status-b033a0c8-fb09-4790-be5a-ae523bf94680.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "b033a0c8-fb09-4790-be5a-ae523bf94680", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"recording\":false}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 14:09:26 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=rnxk2hjhaafpzb43eaxsqk4i;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache" 26 | } 27 | }, 28 | "uuid": "b033a0c8-fb09-4790-be5a-ae523bf94680", 29 | "persistent": true, 30 | "insertionIndex": 188 31 | } 32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest1/mappings/api_v2_profiles_easy-travel_testruns.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "6d1cb984-87c2-4065-b80d-5fbc4856a10f", 3 | "name": "api_v2_profiles_easy-travel_testruns", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/testruns", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "contains": "{\"versionBuild\":\"1\",\"category\":\"performance\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "body": "{\"id\":\"17389bcc-498f-485c-99de-c7635d8ec378\",\"category\":\"performance\",\"versionBuild\":\"1\",\"platform\":\"\",\"startTime\":\"2020-01-14T15:09:27.111+01:00\",\"sessionId\":\"easy Travel/20200114150926_0.t0.session\",\"session\":\"easy Travel_test0_Build-1_unittest (10)\",\"systemProfile\":\"easy Travel\",\"href\":\"https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/testruns/17389bcc-498f-485c-99de-c7635d8ec378\",\"creationMode\":\"MANUAL\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:54958/jenkins/job/test0/1/\"},\"numDegraded\":0,\"numFailed\":0,\"numImproved\":0,\"numInvalidated\":0,\"numPassed\":0,\"numVolatile\":0,\"finished\":false,\"includedMetrics\":[]}", 18 | "headers": { 19 | "Date": "Tue, 14 Jan 2020 14:09:27 GMT", 20 | "X-Frame-Options": "SAMEORIGIN", 21 | "X-XSS-Protection": "1; mode=block", 22 | "X-Content-Type-Options": "nosniff", 23 | "Set-Cookie": "JSESSIONID=ck60wii711fz1cznf30rjl9hb;Path=/;Secure;HttpOnly", 24 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 25 | "Location": "https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/testruns/17389bcc-498f-485c-99de-c7635d8ec378", 26 | "Content-Type": "application/json", 27 | "Content-Disposition": "inline; filename=\"response.json\"", 28 | "Cache-Control": [ 29 | "no-cache", 30 | "must-revalidate", 31 | "max-age=0" 32 | ], 33 | "Pragma": "no-cache" 34 | } 35 | }, 36 | "uuid": "6d1cb984-87c2-4065-b80d-5fbc4856a10f", 37 | "persistent": true, 38 | "insertionIndex": 190 39 | } 40 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest1/mappings/api_v2_server_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_server_version", 3 | "request": { 4 | "url": "/api/v2/server/version", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"result\":\"7.2.19.1064\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:00 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1cizuq6gwc2jr1obr4mz991imo;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest2/mappings/api_v2_profiles_easy-travel_session_recording.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "932a8350-a89d-44ff-8586-e4a679e786d9", 3 | "name": "api_v2_profiles_easy-travel_session_recording", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"sessionname\":\"testContinuousSessionRecording\",\"description\":\"triggered by UnitTest\",\"appendtimestamp\":false,\"recordingoption\":\"all\",\"locksession\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 403, 17 | "body": "{\"code\":403,\"message\":\"Manual Session recording is only allowed for pre-production licenses\"}", 18 | "headers": { 19 | "Date": "Tue, 14 Jan 2020 14:29:54 GMT", 20 | "X-Frame-Options": "SAMEORIGIN", 21 | "X-XSS-Protection": "1; mode=block", 22 | "X-Content-Type-Options": "nosniff", 23 | "Set-Cookie": "JSESSIONID=1u1n0dfav6a1ajcy4xck1foq6;Path=/;Secure;HttpOnly", 24 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 25 | "Content-Type": "application/json", 26 | "Cache-Control": [ 27 | "no-cache", 28 | "must-revalidate", 29 | "max-age=0" 30 | ], 31 | "Pragma": "no-cache", 32 | "Content-Disposition": "inline; filename=\"response.json\"" 33 | } 34 | }, 35 | "uuid": "932a8350-a89d-44ff-8586-e4a679e786d9", 36 | "persistent": true, 37 | "insertionIndex": 204 38 | } 39 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest2/mappings/api_v2_server_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_server_version", 3 | "request": { 4 | "url": "/api/v2/server/version", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"result\":\"7.2.19.1064\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:00 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1cizuq6gwc2jr1obr4mz991imo;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StartRecordingTest2/mappings/rest_management_server_license.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest_management_server_license", 3 | "request": { 4 | "url": "/rest/management/server/license", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "T-Systems International GmbH - Self-Service License 'Partner License AppMon 7 Prod'201912171007Production Edition0.02019-12-162019-12-16T01:00:00+01:002020-01-222020-01-22T12:58:00+01:001000001000005025501051050", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 14:28:10 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=hwal4hmpigu6ge2pz9dmny4k;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/xml", 18 | "Cache-Control": [ 19 | "no-cache", 20 | "must-revalidate", 21 | "max-age=0" 22 | ], 23 | "Pragma": "no-cache", 24 | "Vary": "Accept-Encoding, User-Agent" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording-1c1127c7-8293-4792-9e82-85f2888b6b98.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1c1127c7-8293-4792-9e82-85f2888b6b98", 3 | "name": "api_v2_profiles_easy-travel_session_recording", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"sessionname\":\"testSessionRecording\",\"description\":\"triggered by UnitTest\",\"appendtimestamp\":true,\"recordingoption\":\"all\",\"locksession\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 16:15:59 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=119h5xnh9ku10qrixgvaipl6k;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114171559_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "1c1127c7-8293-4792-9e82-85f2888b6b98", 34 | "persistent": true, 35 | "insertionIndex": 197 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording-b60239a3-7d47-46d3-bf83-85679084e57f.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "b60239a3-7d47-46d3-bf83-85679084e57f", 3 | "name": "api_v2_profiles_easy-travel_session_recording", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"sessionname\":\"easy Travel_test0_Build-1_unittest\",\"description\":\"This session is triggered by Jenkins\",\"appendtimestamp\":false,\"recordingoption\":\"all\",\"locksession\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 16:16:16 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=ldtz1nv633jro47fy281ijap;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114171617_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "b60239a3-7d47-46d3-bf83-85679084e57f", 34 | "persistent": true, 35 | "insertionIndex": 203 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording_status-32789524-382a-4edd-9545-86005864b68a.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "32789524-382a-4edd-9545-86005864b68a", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "PUT", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"recording\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 204, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 16:16:45 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=1fh29kqy9gbfx184ho5p3e4frg;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114171617_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "32789524-382a-4edd-9545-86005864b68a", 34 | "persistent": true, 35 | "scenarioName": "scenario-2-api-v2-profiles-easy Travel-session-recording-status", 36 | "requiredScenarioState": "scenario-2-api-v2-profiles-easy Travel-session-recording-status-3", 37 | "insertionIndex": 207 38 | } 39 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording_status-745a8334-202f-4f59-a4f6-44f3d546fc44.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "745a8334-202f-4f59-a4f6-44f3d546fc44", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"recording\":false}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 16:16:16 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=ht74f1yihdh29vvjf7q2bvyl;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache" 26 | } 27 | }, 28 | "uuid": "745a8334-202f-4f59-a4f6-44f3d546fc44", 29 | "persistent": true, 30 | "insertionIndex": 202 31 | } 32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording_status-d1609979-dc03-4074-9676-048e4840dc8a.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "d1609979-dc03-4074-9676-048e4840dc8a", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "PUT", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"recording\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 204, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 16:15:59 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=1drpwwy93gw8m5g5e6hbhc5y;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.192.202:8021/api/v2/sessions/easy+Travel%252F20200114171559_0.t0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "d1609979-dc03-4074-9676-048e4840dc8a", 34 | "persistent": true, 35 | "scenarioName": "scenario-2-api-v2-profiles-easy Travel-session-recording-status", 36 | "requiredScenarioState": "scenario-2-api-v2-profiles-easy Travel-session-recording-status-2", 37 | "newScenarioState": "scenario-2-api-v2-profiles-easy Travel-session-recording-status-3", 38 | "insertionIndex": 198 39 | } 40 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_session_recording_status-dc8d894b-fdce-4b2c-8139-a022992c632a.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "dc8d894b-fdce-4b2c-8139-a022992c632a", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "PUT", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"recording\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 204, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 16:15:58 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=tgxxn5w603rq1m7gmgp8jqcn0;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Cache-Control": [ 25 | "no-cache", 26 | "must-revalidate", 27 | "max-age=0" 28 | ], 29 | "Pragma": "no-cache" 30 | } 31 | }, 32 | "uuid": "dc8d894b-fdce-4b2c-8139-a022992c632a", 33 | "persistent": true, 34 | "scenarioName": "scenario-2-api-v2-profiles-easy Travel-session-recording-status", 35 | "requiredScenarioState": "Started", 36 | "newScenarioState": "scenario-2-api-v2-profiles-easy Travel-session-recording-status-2", 37 | "insertionIndex": 195 38 | } 39 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_testruns-9795638b-2bdb-4ff8-a5d4-ef84f5061cfa.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "9795638b-2bdb-4ff8-a5d4-ef84f5061cfa", 3 | "name": "api_v2_profiles_easy-travel_testruns", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/testruns", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "contains": "{\"versionBuild\":\"1\",\"category\":\"performance\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "body": "{\"id\":\"053331f7-87db-405a-88cc-bcdb685f2677\",\"category\":\"performance\",\"versionBuild\":\"1\",\"platform\":\"\",\"startTime\":\"2020-01-14T17:16:17.188+01:00\",\"sessionId\":\"easy Travel/20200114171617_0.t0.session\",\"session\":\"easy Travel_test0_Build-1_unittest (19)\",\"systemProfile\":\"easy Travel\",\"href\":\"https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/testruns/053331f7-87db-405a-88cc-bcdb685f2677\",\"creationMode\":\"MANUAL\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:59237/jenkins/job/test0/1/\"},\"numDegraded\":0,\"numFailed\":0,\"numImproved\":0,\"numInvalidated\":0,\"numPassed\":0,\"numVolatile\":0,\"finished\":false,\"includedMetrics\":[]}", 18 | "headers": { 19 | "Date": "Tue, 14 Jan 2020 16:16:17 GMT", 20 | "X-Frame-Options": "SAMEORIGIN", 21 | "X-XSS-Protection": "1; mode=block", 22 | "X-Content-Type-Options": "nosniff", 23 | "Set-Cookie": "JSESSIONID=1sgae6mf2n7m91119bh9drrehl;Path=/;Secure;HttpOnly", 24 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 25 | "Location": "https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/testruns/053331f7-87db-405a-88cc-bcdb685f2677", 26 | "Content-Type": "application/json", 27 | "Content-Disposition": "inline; filename=\"response.json\"", 28 | "Cache-Control": [ 29 | "no-cache", 30 | "must-revalidate", 31 | "max-age=0" 32 | ], 33 | "Pragma": "no-cache" 34 | } 35 | }, 36 | "uuid": "9795638b-2bdb-4ff8-a5d4-ef84f5061cfa", 37 | "persistent": true, 38 | "insertionIndex": 204 39 | } 40 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_profiles_easy-travel_testruns_053331f7-87db-405a-88cc-bcdb685f2677_finish-ce499a89-b31d-4094-bcb9-3be753267cce.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "ce499a89-b31d-4094-bcb9-3be753267cce", 3 | "name": "api_v2_profiles_easy-travel_testruns_053331f7-87db-405a-88cc-bcdb685f2677_finish", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/testruns/053331f7-87db-405a-88cc-bcdb685f2677/finish", 6 | "method": "POST" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"id\":\"053331f7-87db-405a-88cc-bcdb685f2677\",\"category\":\"performance\",\"versionBuild\":\"1\",\"platform\":\"\",\"startTime\":\"2020-01-14T17:16:17.188+01:00\",\"sessionId\":\"easy Travel/20200114171617_0.t0.session\",\"session\":\"easy Travel_test0_Build-1_unittest (19)\",\"systemProfile\":\"easy Travel\",\"message\":\"No tests were executed within testRun with id '053331f7-87db-405a-88cc-bcdb685f2677'\",\"creationMode\":\"MANUAL\",\"additionalMetaData\":{\"JENKINS_JOB\":\"http://localhost:59237/jenkins/job/test0/1/\"},\"numDegraded\":0,\"numFailed\":0,\"numImproved\":0,\"numInvalidated\":0,\"numPassed\":0,\"numVolatile\":0,\"finished\":true,\"includedMetrics\":[]}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 16:16:26 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=1m1bce5ybvu97kj2h6apam0um;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Content-Disposition": "inline; filename=\"response.json\"", 20 | "Cache-Control": [ 21 | "no-cache", 22 | "must-revalidate", 23 | "max-age=0" 24 | ], 25 | "Pragma": "no-cache" 26 | } 27 | }, 28 | "uuid": "ce499a89-b31d-4094-bcb9-3be753267cce", 29 | "persistent": true, 30 | "insertionIndex": 206 31 | } 32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest1/mappings/api_v2_server_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_server_version", 3 | "request": { 4 | "url": "/api/v2/server/version", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"result\":\"7.2.19.1064\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:00 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1cizuq6gwc2jr1obr4mz991imo;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest2/mappings/api_v2_profiles_easy-travel_session_recording_status-23587a5e-ac60-47e9-95e4-1fc7f4bb4c96.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "23587a5e-ac60-47e9-95e4-1fc7f4bb4c96", 3 | "name": "api_v2_profiles_easy-travel_session_recording_status", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 6 | "method": "PUT", 7 | "bodyPatterns": [ 8 | { 9 | "equalToJson": "{\"recording\":false}", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 403, 17 | "body": "{\"code\":403,\"message\":\"Manual Session recording is only allowed for pre-production licenses\"}", 18 | "headers": { 19 | "Date": "Tue, 14 Jan 2020 16:45:47 GMT", 20 | "X-Frame-Options": "SAMEORIGIN", 21 | "X-XSS-Protection": "1; mode=block", 22 | "X-Content-Type-Options": "nosniff", 23 | "Set-Cookie": "JSESSIONID=1jhbkssfx0mwx5fymme3g83mw;Path=/;Secure;HttpOnly", 24 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 25 | "Content-Type": "application/json", 26 | "Cache-Control": [ 27 | "no-cache", 28 | "must-revalidate", 29 | "max-age=0" 30 | ], 31 | "Pragma": "no-cache", 32 | "Content-Disposition": "inline; filename=\"response.json\"" 33 | } 34 | }, 35 | "uuid": "23587a5e-ac60-47e9-95e4-1fc7f4bb4c96", 36 | "persistent": true, 37 | "insertionIndex": 229 38 | } 39 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest2/mappings/api_v2_profiles_easy-travel_session_store-8108ea27-0785-45b3-a9ae-4902de7a3b52.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "8108ea27-0785-45b3-a9ae-4902de7a3b52", 3 | "name": "api_v2_profiles_easy-travel_session_store", 4 | "request": { 5 | "url": "/api/v2/profiles/easy%20Travel/session/store", 6 | "method": "POST", 7 | "bodyPatterns": [ 8 | { 9 | "contains": "{\"sessionname\":\"easy Travel_test1_Build-1_unittest\",\"description\":\"Session recorded by Jenkins\",\"appendtimestamp\":false,\"recordingoption\":\"all\",\"locksession\":false,\"timeframestart\":\"", 10 | "ignoreArrayOrder": true, 11 | "ignoreExtraElements": true 12 | } 13 | ] 14 | }, 15 | "response": { 16 | "status": 201, 17 | "headers": { 18 | "Date": "Tue, 14 Jan 2020 16:46:17 GMT", 19 | "X-Frame-Options": "SAMEORIGIN", 20 | "X-XSS-Protection": "1; mode=block", 21 | "X-Content-Type-Options": "nosniff", 22 | "Set-Cookie": "JSESSIONID=1n67f8re66vjj13snswx211vam;Path=/;Secure;HttpOnly", 23 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 24 | "Location": "https://192.168.194.68:8021/api/v2/sessions/easy+Travel%252F20200114174619_0.session", 25 | "Cache-Control": [ 26 | "no-cache", 27 | "must-revalidate", 28 | "max-age=0" 29 | ], 30 | "Pragma": "no-cache" 31 | } 32 | }, 33 | "uuid": "8108ea27-0785-45b3-a9ae-4902de7a3b52", 34 | "persistent": true, 35 | "insertionIndex": 236 36 | } 37 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest2/mappings/api_v2_server_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_server_version", 3 | "request": { 4 | "url": "/api/v2/server/version", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"result\":\"7.2.19.1064\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:00 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1cizuq6gwc2jr1obr4mz991imo;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/StopRecordingTest2/mappings/api_v2_sessions-8f3ea9db-0b4a-4a2b-a869-f9e889206137.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "8f3ea9db-0b4a-4a2b-a869-f9e889206137", 3 | "name": "api_v2_sessions", 4 | "request": { 5 | "url": "/api/v2/sessions", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "{\"sessions\":[{\"id\":\"easy Travel/20200114174619_0.session\",\"storedsessiontype\":\"purepath\",\"sessiontype\":\"stored\",\"systemprofile\":\"easy Travel\",\"href\":\"https://192.168.194.68:8021/api/v2/sessions/easy+Travel%252F20200114174619_0.session\"}]}", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 16:46:31 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=1anizb9sxiy2hqzy4ysmyvyf0;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "application/json", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache", 25 | "Content-Disposition": "inline; filename=\"response.json\"" 26 | } 27 | }, 28 | "uuid": "8f3ea9db-0b4a-4a2b-a869-f9e889206137", 29 | "persistent": true, 30 | "insertionIndex": 238 31 | } 32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/api_v2_alerts.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_alerts", 3 | "request": { 4 | "urlPattern": "^\\/api\\/v2\\/alerts\\?systemprofile=easy\\%20Travel\\&state=Created\\&from=(.*)\\&to=(.*)", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"alerts\":[{\"id\":\"ffae92cc-0bab-4b95-8343-082d079dd154\",\"href\":\"https://192.168.192.202:8021/api/v2/alerts/ffae92cc-0bab-4b95-8343-082d079dd154\",\"rule\":\"KPI_WebRequestTime\"},{\"id\":\"ffe68707-05ff-42de-8b37-444fd245c55c\",\"href\":\"https://192.168.192.202:8021/api/v2/alerts/ffe68707-05ff-42de-8b37-444fd245c55c\",\"rule\":\"KPI_WebRequestTime\"}]}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 13:32:29 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=dmqavh3jci831eal27bvs1hp3;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache", 25 | "Vary": "Accept-Encoding, User-Agent" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/api_v2_alerts_detail1.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_alerts_ffae92cc-0bab-4b95-8343-082d079dd154", 3 | "request": { 4 | "url": "/api/v2/alerts/ffae92cc-0bab-4b95-8343-082d079dd154", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"severity\":\"severe\",\"state\":\"Created\",\"message\":\"Web Requests/Time: Time upper bound exceeded\",\"description\":\"Time: Measured peak value: 331.84 [ms], Upper Severe Bound: 30.00, Upper Warning Bound: 25.00\",\"start\":\"2020-01-14T11:26:10.000+01:00\",\"end\":\"2020-01-14T11:26:20.000+01:00\",\"rule\":\"KPI_WebRequestTime\",\"systemprofile\":\"easy Travel\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 13:32:47 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=x5dsokb5xyhi1039zwie7l1vy;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache", 25 | "Vary": "Accept-Encoding, User-Agent" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/api_v2_alerts_detail2.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_alerts_ffe68707-05ff-42de-8b37-444fd245c55c", 3 | "request": { 4 | "url": "/api/v2/alerts/ffe68707-05ff-42de-8b37-444fd245c55c", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"severity\":\"severe\",\"state\":\"Created\",\"message\":\"Web Requests/Time: Time upper bound exceeded\",\"description\":\"Time: Measured peak value: 57.25 [ms], Upper Severe Bound: 30.00, Upper Warning Bound: 25.00\",\"start\":\"2020-01-14T02:33:40.000+01:00\",\"end\":\"2020-01-14T02:35:10.000+01:00\",\"rule\":\"KPI_WebRequestTime\",\"systemprofile\":\"easy Travel\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 13:32:48 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=9d8rmn33j4qi12cs9brcocvlg;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache", 25 | "Vary": "Accept-Encoding, User-Agent" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/api_v2_profiles_easy-travel_configurations.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_profiles_easy-travel_configurations", 3 | "request": { 4 | "url": "/api/v2/profiles/easy%20Travel/configurations", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"configurations\":[{\"id\":\"Default\",\"href\":\"https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/configurations/Default\",\"isactive\":false},{\"id\":\"ActivateConfigurationTest\",\"href\":\"https://192.168.192.202:8021/api/v2/profiles/easy%20Travel/configurations/ActivateConfigurationTest\",\"isactive\":true}]}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 11:19:19 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1cvw2wc7y0fmo1ksj9rjnvwblb;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache", 25 | "Vary": "Accept-Encoding, User-Agent" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/api_v2_profiles_easy-travel_configurations_activateconfigurationtest_status.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_profiles_easy-travel_configurations_activateconfigurationtest_status", 3 | "request": { 4 | "url": "/api/v2/profiles/easy%20Travel/configurations/ActivateConfigurationTest/status", 5 | "method": "PUT", 6 | "bodyPatterns": [ 7 | { 8 | "equalToJson": "{\"status\":\"ENABLED\"}", 9 | "ignoreArrayOrder": true, 10 | "ignoreExtraElements": true 11 | } 12 | ] 13 | }, 14 | "response": { 15 | "status": 204, 16 | "headers": { 17 | "Date": "Tue, 14 Jan 2020 09:21:00 GMT", 18 | "X-Frame-Options": "SAMEORIGIN", 19 | "X-XSS-Protection": "1; mode=block", 20 | "X-Content-Type-Options": "nosniff", 21 | "Set-Cookie": "JSESSIONID=3bpeorqecl2x6htk5o9hq3w;Path=/;Secure;HttpOnly", 22 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 23 | "Cache-Control": [ 24 | "no-cache", 25 | "must-revalidate", 26 | "max-age=0" 27 | ], 28 | "Pragma": "no-cache" 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/api_v2_profiles_easy-travel_session_recording_status.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_profiles_easy-travel_session_recording_status", 3 | "request": { 4 | "url": "/api/v2/profiles/easy%20Travel/session/recording/status", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"recording\":false}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 13:33:18 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1mo78ozcs3v7k1e36et8ss30is;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/api_v2_server_version.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api_v2_server_version", 3 | "request": { 4 | "url": "/api/v2/server/version", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "{\"result\":\"7.2.19.1064\"}", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:00 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=1cizuq6gwc2jr1obr4mz991imo;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "application/json", 18 | "Content-Disposition": "inline; filename=\"response.json\"", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_agents_-357139994_hotsensorplacement.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest_management_agents_-357139994_hotsensorplacement", 3 | "request": { 4 | "url": "/rest/management/agents/-357139994/hotsensorplacement", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:17 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=18jok479rf1wv1czywe2kzproy;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "text/xml", 18 | "Cache-Control": [ 19 | "no-cache", 20 | "must-revalidate", 21 | "max-age=0" 22 | ], 23 | "Pragma": "no-cache" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_agents_-508255076_hotsensorplacement.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest_management_agents_-508255076_hotsensorplacement", 3 | "request": { 4 | "url": "/rest/management/agents/-508255076/hotsensorplacement", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:01 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=p92aomn7kgq9h2aep0vsdps8;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "text/xml", 18 | "Cache-Control": [ 19 | "no-cache", 20 | "must-revalidate", 21 | "max-age=0" 22 | ], 23 | "Pragma": "no-cache" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_agents_1907664677_hotsensorplacement.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest_management_agents_1907664677_hotsensorplacement", 3 | "request": { 4 | "url": "/rest/management/agents/1907664677/hotsensorplacement", 5 | "method": "GET" 6 | }, 7 | "response": { 8 | "status": 200, 9 | "body": "", 10 | "headers": { 11 | "Date": "Tue, 14 Jan 2020 09:21:58 GMT", 12 | "X-Frame-Options": "SAMEORIGIN", 13 | "X-XSS-Protection": "1; mode=block", 14 | "X-Content-Type-Options": "nosniff", 15 | "Set-Cookie": "JSESSIONID=5dxhwhvt3blzdzc9wdca49qu;Path=/;Secure;HttpOnly", 16 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 17 | "Content-Type": "text/xml", 18 | "Cache-Control": [ 19 | "no-cache", 20 | "must-revalidate", 21 | "max-age=0" 22 | ], 23 | "Pragma": "no-cache" 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_profiles_easy-travel_memorydump.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest_management_profiles_easy-travel_memorydump", 3 | "request": { 4 | "url": "/rest/management/profiles/easy%20Travel/memorydump", 5 | "method": "POST", 6 | "bodyPatterns": [ 7 | { 8 | "equalTo": "agentName=CustomerFrontend_easyTravel_8080&hostName=wum192202&processId=2180&type=extended&isSessionLocked=false&capturestrings=false&captureprimitives=false&autopostprocess=true&dogc=true", 9 | "caseInsensitive": false 10 | } 11 | ] 12 | }, 13 | "response": { 14 | "status": 200, 15 | "body": "", 16 | "headers": { 17 | "Date": "Tue, 14 Jan 2020 12:04:14 GMT", 18 | "X-Frame-Options": "SAMEORIGIN", 19 | "X-XSS-Protection": "1; mode=block", 20 | "X-Content-Type-Options": "nosniff", 21 | "Set-Cookie": "JSESSIONID=1tpmtz463er8v1ei7x49kw5yka;Path=/;Secure;HttpOnly", 22 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 23 | "Content-Type": "text/xml", 24 | "Cache-Control": [ 25 | "no-cache", 26 | "must-revalidate", 27 | "max-age=0" 28 | ], 29 | "Pragma": "no-cache" 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-12.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "e072bb68-7fd3-45fc-9818-8ee0e2769390", 3 | "name": "rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-595933818624955", 4 | "request": { 5 | "url": "/rest/management/profiles/easy%20Travel/memorydumpcreated/Memory%20Dump%20%5B595933818624955%5D", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "Successtrue", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 12:04:39 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=1gkrikbdwgsaez1jak8l5vycd;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "text/xml", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | }, 27 | "uuid": "e072bb68-7fd3-45fc-9818-8ee0e2769390", 28 | "persistent": true, 29 | "scenarioName": "scenario-3-rest-management-profiles-easy Travel-memorydumpcreated-Memory Dump [595933818624955]", 30 | "requiredScenarioState": "scenario-3-rest-management-profiles-easy Travel-memorydumpcreated-Memory Dump [595933818624955]-6", 31 | "insertionIndex": 12 32 | } 33 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-7.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "9666351e-53a7-4907-8164-cb759dba9503", 3 | "name": "rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-595933818624955", 4 | "request": { 5 | "url": "/rest/management/profiles/easy%20Travel/memorydumpcreated/Memory%20Dump%20%5B595933818624955%5D", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "No task result availablefalse", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 12:04:14 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=dnizgg0ygkbz10rizpn6fssv5;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "text/xml", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | }, 27 | "uuid": "9666351e-53a7-4907-8164-cb759dba9503", 28 | "persistent": true, 29 | "scenarioName": "scenario-3-rest-management-profiles-easy Travel-memorydumpcreated-Memory Dump [595933818624955]", 30 | "requiredScenarioState": "Started", 31 | "newScenarioState": "scenario-3-rest-management-profiles-easy Travel-memorydumpcreated-Memory Dump [595933818624955]-2", 32 | "insertionIndex": 7 33 | } 34 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-8.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "bd1ce03a-40ce-41e6-862d-634e84056dad", 3 | "name": "rest_management_profiles_easy-travel_memorydumpcreated_memory-dump-595933818624955", 4 | "request": { 5 | "url": "/rest/management/profiles/easy%20Travel/memorydumpcreated/Memory%20Dump%20%5B595933818624955%5D", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "No task result availablefalse", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 12:04:19 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=1mu1odf3ogadf1sv6eglaxx4wy;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "text/xml", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | }, 27 | "uuid": "bd1ce03a-40ce-41e6-862d-634e84056dad", 28 | "persistent": true, 29 | "scenarioName": "scenario-3-rest-management-profiles-easy Travel-memorydumpcreated-Memory Dump [595933818624955]", 30 | "requiredScenarioState": "scenario-3-rest-management-profiles-easy Travel-memorydumpcreated-Memory Dump [595933818624955]-2", 31 | "newScenarioState": "scenario-3-rest-management-profiles-easy Travel-memorydumpcreated-Memory Dump [595933818624955]-6", 32 | "insertionIndex": 8 33 | } 34 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_profiles_easy-travel_threaddump.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest_management_profiles_easy-travel_threaddump", 3 | "request": { 4 | "url": "/rest/management/profiles/easy%20Travel/threaddump", 5 | "method": "POST", 6 | "bodyPatterns": [ 7 | { 8 | "equalTo": "agentName=CustomerFrontend_easyTravel_8080&hostName=wum192202&processId=2180&isSessionLocked=false", 9 | "caseInsensitive": false 10 | } 11 | ] 12 | }, 13 | "response": { 14 | "status": 200, 15 | "body": "", 16 | "headers": { 17 | "Date": "Tue, 14 Jan 2020 12:18:59 GMT", 18 | "X-Frame-Options": "SAMEORIGIN", 19 | "X-XSS-Protection": "1; mode=block", 20 | "X-Content-Type-Options": "nosniff", 21 | "Set-Cookie": "JSESSIONID=1wrlxshqw2wka1669kahymlbh8;Path=/;Secure;HttpOnly", 22 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 23 | "Content-Type": "text/xml", 24 | "Cache-Control": [ 25 | "no-cache", 26 | "must-revalidate", 27 | "max-age=0" 28 | ], 29 | "Pragma": "no-cache" 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_profiles_easy-travel_threaddumpcreated_thread-dump-34.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "e8561b14-5c70-4341-bb30-47d0a42ee838", 3 | "name": "rest_management_profiles_easy-travel_threaddumpcreated_thread-dump-1579004339219", 4 | "request": { 5 | "url": "/rest/management/profiles/easy%20Travel/threaddumpcreated/Thread%20Dump%20%5B1579004339219%5D", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "No task result availablefalse", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 12:18:59 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=gn56paezoxe6poqadnh8q26k;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "text/xml", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | }, 27 | "uuid": "e8561b14-5c70-4341-bb30-47d0a42ee838", 28 | "persistent": true, 29 | "scenarioName": "scenario-3-rest-management-profiles-easy Travel-threaddumpcreated-Thread Dump [1579004339219]", 30 | "requiredScenarioState": "Started", 31 | "newScenarioState": "scenario-3-rest-management-profiles-easy Travel-threaddumpcreated-Thread Dump [1579004339219]-2", 32 | "insertionIndex": 34 33 | } 34 | -------------------------------------------------------------------------------- /dynatrace-appmon/src/test/resources/general/mappings/rest_management_profiles_easy-travel_threaddumpcreated_thread-dump-35.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "1c819527-b188-427e-92ba-b2b4f3abc86a", 3 | "name": "rest_management_profiles_easy-travel_threaddumpcreated_thread-dump-1579004339219", 4 | "request": { 5 | "url": "/rest/management/profiles/easy%20Travel/threaddumpcreated/Thread%20Dump%20%5B1579004339219%5D", 6 | "method": "GET" 7 | }, 8 | "response": { 9 | "status": 200, 10 | "body": "Successtrue", 11 | "headers": { 12 | "Date": "Tue, 14 Jan 2020 12:19:04 GMT", 13 | "X-Frame-Options": "SAMEORIGIN", 14 | "X-XSS-Protection": "1; mode=block", 15 | "X-Content-Type-Options": "nosniff", 16 | "Set-Cookie": "JSESSIONID=1orfsm4a5hpmtffyhm4efp7fr;Path=/;Secure;HttpOnly", 17 | "Expires": "Thu, 01 Jan 1970 00:00:00 GMT", 18 | "Content-Type": "text/xml", 19 | "Cache-Control": [ 20 | "no-cache", 21 | "must-revalidate", 22 | "max-age=0" 23 | ], 24 | "Pragma": "no-cache" 25 | } 26 | }, 27 | "uuid": "1c819527-b188-427e-92ba-b2b4f3abc86a", 28 | "persistent": true, 29 | "scenarioName": "scenario-3-rest-management-profiles-easy Travel-threaddumpcreated-Thread Dump [1579004339219]", 30 | "requiredScenarioState": "scenario-3-rest-management-profiles-easy Travel-threaddumpcreated-Thread Dump [1579004339219]-2", 31 | "insertionIndex": 35 32 | } 33 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/DynatraceEnvInvisAction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas; 18 | 19 | import hudson.model.InvisibleAction; 20 | 21 | class DynatraceEnvInvisAction extends InvisibleAction { 22 | 23 | private final String testCase; 24 | private final long timeframeStart; 25 | private long timeframeStop; 26 | 27 | DynatraceEnvInvisAction(final String testCase, final long timeframeStart) { 28 | this.testCase = testCase; 29 | this.timeframeStart = timeframeStart; 30 | } 31 | 32 | DynatraceEnvInvisAction(final String testCase, final long timeframeStart, final long timeframeStop) { 33 | this.testCase = testCase; 34 | this.timeframeStart = timeframeStart; 35 | this.timeframeStop = timeframeStop; 36 | } 37 | 38 | public String getTestCase() { 39 | return testCase; 40 | } 41 | 42 | public long getTimeframeStart() { 43 | return timeframeStart; 44 | } 45 | 46 | public long getTimeframeStop() { 47 | return timeframeStop; 48 | } 49 | 50 | void setTimeframeStop(final long timeframeStop) { 51 | this.timeframeStop = timeframeStop; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/DynatraceGlobalConfiguration.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas; 18 | 19 | import de.tsystems.mms.apm.performancesignature.dynatracesaas.model.DynatraceServerConfiguration; 20 | import hudson.Extension; 21 | import jenkins.model.GlobalConfiguration; 22 | import jenkins.model.Jenkins; 23 | import net.sf.json.JSONObject; 24 | import org.kohsuke.stapler.StaplerRequest; 25 | 26 | import java.util.ArrayList; 27 | import java.util.List; 28 | 29 | @Extension 30 | public class DynatraceGlobalConfiguration extends GlobalConfiguration { 31 | private List configurations = new ArrayList<>(); 32 | 33 | public DynatraceGlobalConfiguration() { 34 | load(); 35 | } 36 | 37 | public static DynatraceGlobalConfiguration get() { 38 | return GlobalConfiguration.all().get(DynatraceGlobalConfiguration.class); 39 | } 40 | 41 | @Override 42 | public boolean configure(final StaplerRequest req, final JSONObject formData) { 43 | Jenkins.get().checkPermission(Jenkins.ADMINISTER); 44 | setConfigurations(req.bindJSONToList(DynatraceServerConfiguration.class, formData.get("configurations"))); 45 | save(); 46 | return false; 47 | } 48 | 49 | public List getConfigurations() { 50 | return configurations; 51 | } 52 | 53 | public void setConfigurations(final List configurations) { 54 | this.configurations = configurations; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/CustomProperty.java: -------------------------------------------------------------------------------- 1 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.model; 2 | 3 | import hudson.DescriptorExtensionList; 4 | import hudson.Extension; 5 | import hudson.model.AbstractDescribableImpl; 6 | import hudson.model.Descriptor; 7 | import jenkins.model.Jenkins; 8 | import org.kohsuke.stapler.DataBoundConstructor; 9 | 10 | 11 | public class CustomProperty extends AbstractDescribableImpl { 12 | private final String key; 13 | private final String value; 14 | 15 | @DataBoundConstructor 16 | public CustomProperty(final String key, final String value) { 17 | this.key = key; 18 | this.value = value; 19 | } 20 | 21 | public String getKey() { 22 | return key; 23 | } 24 | 25 | public String getValue() { 26 | return value; 27 | } 28 | 29 | public DecriptorImpl getDescriptor() { 30 | return (DecriptorImpl) Jenkins.get().getDescriptorOrDie(getClass()); 31 | } 32 | 33 | @Extension 34 | public static class DecriptorImpl extends Descriptor { 35 | 36 | public static DescriptorExtensionList> all() { 37 | return Jenkins.get().getDescriptorList(CustomProperty.class); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/DynatraceApiToken.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.model; 18 | 19 | import com.cloudbees.plugins.credentials.CredentialsNameProvider; 20 | import com.cloudbees.plugins.credentials.NameWith; 21 | import com.cloudbees.plugins.credentials.common.StandardCredentials; 22 | import hudson.Util; 23 | import hudson.util.Secret; 24 | import org.apache.commons.lang.StringUtils; 25 | 26 | import javax.annotation.Nonnull; 27 | 28 | @NameWith(DynatraceApiToken.NameProvider.class) 29 | public interface DynatraceApiToken extends StandardCredentials { 30 | 31 | Secret getApiToken(); 32 | 33 | class NameProvider extends CredentialsNameProvider { 34 | @Nonnull 35 | @Override 36 | public String getName(@Nonnull DynatraceApiToken c) { 37 | String description = Util.fixEmptyAndTrim(c.getDescription()); 38 | return StringUtils.isBlank(description) ? Messages.DynatraceApiToken_name() : Messages.DynatraceApiToken_name() + (" (" + description + ")"); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/DynatraceApiTokenImpl.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.model; 18 | 19 | import com.cloudbees.plugins.credentials.CredentialsScope; 20 | import com.cloudbees.plugins.credentials.impl.BaseStandardCredentials; 21 | import hudson.Extension; 22 | import hudson.util.Secret; 23 | import org.kohsuke.stapler.DataBoundConstructor; 24 | 25 | import javax.annotation.Nonnull; 26 | 27 | public final class DynatraceApiTokenImpl extends BaseStandardCredentials implements DynatraceApiToken { 28 | 29 | private final Secret apiToken; 30 | 31 | @DataBoundConstructor 32 | public DynatraceApiTokenImpl(CredentialsScope scope, String id, String description, Secret apiToken) { 33 | super(scope, id, description); 34 | this.apiToken = apiToken; 35 | } 36 | 37 | @Override 38 | public Secret getApiToken() { 39 | return apiToken; 40 | } 41 | 42 | @Extension 43 | public static class DescriptorImpl extends BaseStandardCredentialsDescriptor { 44 | @Nonnull 45 | @Override 46 | public String getDisplayName() { 47 | return Messages.DynatraceApiToken_name(); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/EntityId.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.model; 18 | 19 | import hudson.DescriptorExtensionList; 20 | import hudson.model.Describable; 21 | import hudson.model.Descriptor; 22 | import jenkins.model.Jenkins; 23 | 24 | import java.io.Serializable; 25 | 26 | public abstract class EntityId implements Describable, Serializable { 27 | private final String entityId; 28 | 29 | public EntityId(final String entityId) { 30 | this.entityId = entityId; 31 | } 32 | 33 | public String getEntityId() { 34 | return entityId; 35 | } 36 | 37 | public EntityIdDescriptor getDescriptor() { 38 | return (EntityIdDescriptor) Jenkins.get().getDescriptorOrDie(getClass()); 39 | } 40 | 41 | public abstract static class EntityIdDescriptor extends Descriptor { 42 | 43 | public static DescriptorExtensionList> all() { 44 | return Jenkins.get().getDescriptorList(EntityId.class); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/Specification.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import org.apache.commons.lang.builder.ToStringBuilder; 21 | 22 | import java.util.List; 23 | 24 | public class Specification { 25 | @SerializedName("timeseries") 26 | private List timeseries = null; 27 | 28 | /** 29 | * No args constructor for use in serialization 30 | */ 31 | public Specification() { 32 | } 33 | 34 | public Specification(List timeseries) { 35 | this.timeseries = timeseries; 36 | } 37 | 38 | public List getTimeseries() { 39 | return timeseries; 40 | } 41 | 42 | public void setTimeseries(List timeseries) { 43 | this.timeseries = timeseries; 44 | } 45 | 46 | @Override 47 | public String toString() { 48 | return new ToStringBuilder(this).append("timeseries", timeseries).toString(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/rest/ApiResponse.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.rest; 18 | 19 | import java.util.List; 20 | import java.util.Map; 21 | 22 | /** 23 | * API response returned by API call. 24 | * 25 | * @param The type of data that is deserialized from response body 26 | */ 27 | public class ApiResponse { 28 | private final int statusCode; 29 | private final Map> headers; 30 | private final T data; 31 | 32 | /** 33 | * @param statusCode The status code of HTTP response 34 | * @param headers The headers of HTTP response 35 | */ 36 | public ApiResponse(int statusCode, Map> headers) { 37 | this(statusCode, headers, null); 38 | } 39 | 40 | /** 41 | * @param statusCode The status code of HTTP response 42 | * @param headers The headers of HTTP response 43 | * @param data The object deserialized from response bod 44 | */ 45 | public ApiResponse(int statusCode, Map> headers, T data) { 46 | this.statusCode = statusCode; 47 | this.headers = headers; 48 | this.data = data; 49 | } 50 | 51 | public int getStatusCode() { 52 | return statusCode; 53 | } 54 | 55 | public Map> getHeaders() { 56 | return headers; 57 | } 58 | 59 | public T getData() { 60 | return data; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/rest/ApiSuffix.java: -------------------------------------------------------------------------------- 1 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.rest; 2 | 3 | import java.util.Arrays; 4 | 5 | public enum ApiSuffix { 6 | 7 | ENVIRONMENT("api/v1/"), 8 | ENVIRONMENT2("api/v2/"), 9 | CONFIGURATION("api/config/v1/"), 10 | CLUSTERMANAGEMENT("api/v1.0/onpremise/"), 11 | CLUSTERAPI("api/cluster/v1/"); 12 | 13 | private final String value; 14 | 15 | ApiSuffix(String value) { 16 | this.value = value; 17 | } 18 | 19 | public static ApiSuffix fromValue(String text) { 20 | return Arrays.stream(ApiSuffix.values()) 21 | .filter(b -> b.value.equals(text)) 22 | .findFirst() 23 | .orElse(null); 24 | } 25 | 26 | public String getValue() { 27 | return value; 28 | } 29 | 30 | @Override 31 | public String toString() { 32 | return String.valueOf(value); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/rest/CommandExecutionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.rest; 18 | 19 | import org.apache.commons.lang.exception.ExceptionUtils; 20 | 21 | public class CommandExecutionException extends RuntimeException { 22 | public CommandExecutionException(final String reason, final Exception ex) { 23 | super(String.format("%s%nStacktrace:%n%s", reason, ExceptionUtils.getFullStackTrace(ex))); 24 | } 25 | 26 | public CommandExecutionException(final String reason) { 27 | super(reason); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/rest/RESTErrorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.rest; 18 | 19 | import java.io.IOException; 20 | 21 | public class RESTErrorException extends IOException { 22 | public RESTErrorException(final String message) { 23 | super(message); 24 | } 25 | 26 | public RESTErrorException(final String message, final Throwable throwable) { 27 | super(message, throwable); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/rest/env1/api/ClusterVersionApi.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.rest.env1.api; 18 | 19 | import de.tsystems.mms.apm.performancesignature.dynatracesaas.rest.env1.model.ClusterVersion; 20 | import retrofit2.Call; 21 | import retrofit2.http.GET; 22 | 23 | public interface ClusterVersionApi { 24 | /** 25 | * Gets the current version of the cluster server. 26 | * 27 | * @return Call<ClusterVersion> 28 | */ 29 | @GET("config/clusterversion") 30 | Call getVersion(); 31 | 32 | 33 | } 34 | -------------------------------------------------------------------------------- /dynatrace/src/main/java/de/tsystems/mms/apm/performancesignature/dynatracesaas/rest/env1/model/ClusterVersion.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /* 18 | * Dynatrace Environment API 19 | * Documentation of the Dynatrace REST API. Refer to the [help page](https://www.dynatrace.com/support/help/shortlink/section-api) to read about use-cases and examples. 20 | * 21 | * OpenAPI spec version: 1.0 22 | * 23 | * 24 | * NOTE: This class is auto generated by the swagger code generator program. 25 | * https://github.com/swagger-api/swagger-codegen.git 26 | * Do not edit the class manually. 27 | */ 28 | 29 | 30 | package de.tsystems.mms.apm.performancesignature.dynatracesaas.rest.env1.model; 31 | 32 | import com.google.gson.annotations.SerializedName; 33 | import io.swagger.annotations.ApiModelProperty; 34 | 35 | import static de.tsystems.mms.apm.performancesignature.ui.util.PerfSigUIUtils.toIndentedString; 36 | 37 | /** 38 | * ClusterVersion 39 | */ 40 | 41 | public class ClusterVersion { 42 | @SerializedName("version") 43 | private String version; 44 | 45 | /** 46 | * The cluster version 47 | * 48 | * @return version 49 | **/ 50 | @ApiModelProperty(value = "The cluster version") 51 | public String getVersion() { 52 | return version; 53 | } 54 | 55 | @Override 56 | public String toString() { 57 | return "class ClusterVersion {\n" + 58 | " version: " + toIndentedString(version) + "\n" + 59 | "}"; 60 | } 61 | } 62 | 63 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/CreateDeploymentStep/config.properties: -------------------------------------------------------------------------------- 1 | description=configured Dynatrace server/environment, configure Dynatrace server here 2 | dynatrace_attachrules=for more information, visit Dynatrace API Help 3 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/DynatraceCustomSessionStep/config.properties: -------------------------------------------------------------------------------- 1 | description=configured Dynatrace server/environment, configure Dynatrace server here 2 | dynatrace_attachrules=for more information, visit Dynatrace API Help 3 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/DynatraceReportStep/config.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | description=configured Dynatrace profile/server pair, configure dynatrace server here 17 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/DynatraceSessionStep/config.properties: -------------------------------------------------------------------------------- 1 | description=configured Dynatrace server/environment, configure Dynatrace server here 2 | dynatrace_attachrules=for more information, visit Dynatrace API Help 3 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/Messages.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | DynatraceRecorder.FailedToLookupServer=failed to lookup Dynatrace server configuration 17 | DynatraceRecorder.ConnectionError=connection to Dynatrace remote REST interface unsuccessful, cannot proceed with this build step 18 | DynatraceRecorder_XMLReportError=failed to download Dynatrace XML report, xml report seems to be empty or contains no chartdashlets 19 | DynatraceRecorder.SessionDownloadError=failed to download Dynatrace session, build status set to failed for testcase: {0} 20 | DynatraceRecorder.SessionDownloadSuccessful=session successfully downloaded for testcase: {0} 21 | DynatraceRecorder.DisplayName=Performance Signature Dynatrace reports 22 | DynatraceRecorder.ReportDownloadError=failed to download Dynatrace PDF reports 23 | DynatraceRecorder.ReportDownloadSuccessful=PDF Reports successfully downloaded 24 | DynatraceStartSession.DisplayName=Trigger Jenkins job 25 | DynatraceStartSession.RemoteBuildCancelled=the remote build got cancelled 26 | DynatraceStartSession.TriggeringJenkinsJob=triggering Jenkins job {0} ... 27 | DynatraceStartSession.JenkinsJobStarted=Jenkins job {0} #{1} started 28 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/DynatraceApiTokenImpl/credentials.jelly: -------------------------------------------------------------------------------- 1 | 2 | 3 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/EntityId/config.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 |
25 |
26 | -------------------------------------------------------------------------------- /dynatrace/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatracesaas/model/Messages.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | DynatraceServerConfiguration.ServerNotValid=Jenkins server url is not valid 17 | CredJobPair.TestConnectionNotSuccessful=connection with Jenkins REST interface could not be established 18 | CredJobPair.TestConnectionSuccessful=connection successful 19 | CredJobPair.JenkinsJobNotValid=Jenkins Job cannot be empty 20 | DynatraceApiToken.name=Dynatrace API token 21 | apiToken.required=API Token for Dynatrace access required -------------------------------------------------------------------------------- /dynatrace/src/main/resources/index.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | This plugin collects Dynatrace Performance Signature Reports and stores them locally. 19 |
20 | -------------------------------------------------------------------------------- /dynatrace/src/test/resources/specfile.json: -------------------------------------------------------------------------------- 1 | { 2 | "spec_version": "2.0", 3 | "timeseries": [ 4 | { 5 | "timeseriesId": "com.dynatrace.builtin:service.responsetime", 6 | "aggregation": "avg", 7 | "tags": "Frontend", 8 | "upperWarning": 5000, 9 | "upperSevere": 10000 10 | }, 11 | { 12 | "timeseriesId": "com.dynatrace.builtin:service.responsetime", 13 | "aggregation": "avg", 14 | "entityIds": "SERVICE-65778F58A66834D8", 15 | "upperWarning": 5000, 16 | "upperSevere": 8000 17 | }, 18 | { 19 | "timeseriesId": "com.dynatrace.builtin:docker.container.cpu", 20 | "aggregation": "avg", 21 | "upperWarning": 50, 22 | "upperSevere": 70 23 | }, 24 | { 25 | "timeseriesId": "com.dynatrace.builtin:service.failurerate", 26 | "aggregation": "avg", 27 | "upperWarning": 35, 28 | "upperSevere": 40 29 | }, 30 | { 31 | "timeseriesId": "com.dynatrace.builtin:service.requestspermin", 32 | "aggregation": "min", 33 | "lowerWarning ": 5, 34 | "lowerSevere": 2 35 | }, 36 | { 37 | "timeseriesId": "com.dynatrace.builtin:docker.container.memory", 38 | "aggregation": "avg", 39 | "_deprecated": "", 40 | "lowerLimit": 500, 41 | "upperLimit": 1500 42 | }, 43 | { 44 | "timeseriesId": "com.dynatrace.builtin:docker.container.running", 45 | "aggregation": "avg", 46 | "_deprecated": "", 47 | "lowerLimit": 3, 48 | "upperLimit": 4 49 | }, 50 | { 51 | "timeseriesId": "com.dynatrace.builtin:host.mem.used", 52 | "aggregation": "avg", 53 | "upperWarning": 3000, 54 | "upperSevere": 4000 55 | }, 56 | { 57 | "timeseriesId": "com.dynatrace.builtin:app.custom.apdex", 58 | "aggregation": "count", 59 | "lowerWarning": 3, 60 | "lowerSevere": 4 61 | }, 62 | { 63 | "timeseriesId": "com.dynatrace.builtin:appmethod.apdex", 64 | "aggregation": "count", 65 | "lowerWarning": 3, 66 | "lowerSevere": 4 67 | } 68 | ] 69 | } 70 | -------------------------------------------------------------------------------- /images/appmon_advanced_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_advanced_settings.png -------------------------------------------------------------------------------- /images/appmon_advanced_step_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_advanced_step_settings.png -------------------------------------------------------------------------------- /images/appmon_build_steps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_build_steps.png -------------------------------------------------------------------------------- /images/appmon_client_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_client_link.png -------------------------------------------------------------------------------- /images/appmon_configuration_generic_testcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_configuration_generic_testcase.png -------------------------------------------------------------------------------- /images/appmon_configuration_junit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_configuration_junit.png -------------------------------------------------------------------------------- /images/appmon_console_output.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_console_output.png -------------------------------------------------------------------------------- /images/appmon_example_build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_example_build.png -------------------------------------------------------------------------------- /images/appmon_example_perfsig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_example_perfsig.png -------------------------------------------------------------------------------- /images/appmon_example_workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_example_workflow.png -------------------------------------------------------------------------------- /images/appmon_global_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_global_configuration.png -------------------------------------------------------------------------------- /images/appmon_job_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_job_overview.png -------------------------------------------------------------------------------- /images/appmon_junit_build.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_junit_build.png -------------------------------------------------------------------------------- /images/appmon_junit_detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_junit_detail.png -------------------------------------------------------------------------------- /images/appmon_junit_detail_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_junit_detail_page.png -------------------------------------------------------------------------------- /images/appmon_junit_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_junit_overview.png -------------------------------------------------------------------------------- /images/appmon_perfsig_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_perfsig_overview.png -------------------------------------------------------------------------------- /images/appmon_schematic_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_schematic_overview.png -------------------------------------------------------------------------------- /images/appmon_select_mesasure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_select_mesasure.png -------------------------------------------------------------------------------- /images/appmon_snippet_generator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_snippet_generator.png -------------------------------------------------------------------------------- /images/appmon_unit_testcase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_unit_testcase.png -------------------------------------------------------------------------------- /images/appmon_workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/appmon_workflow.png -------------------------------------------------------------------------------- /images/dynatrace_api_token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/dynatrace_api_token.png -------------------------------------------------------------------------------- /images/dynatrace_events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/dynatrace_events.png -------------------------------------------------------------------------------- /images/dynatrace_global_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/dynatrace_global_configuration.png -------------------------------------------------------------------------------- /images/dynatrace_schematic_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/dynatrace_schematic_overview.png -------------------------------------------------------------------------------- /images/dynatrace_snippet_generator1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/dynatrace_snippet_generator1.png -------------------------------------------------------------------------------- /images/dynatrace_snippet_generator2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/dynatrace_snippet_generator2.png -------------------------------------------------------------------------------- /images/dynatrace_snippet_generator3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/dynatrace_snippet_generator3.png -------------------------------------------------------------------------------- /images/viewer_global_configuration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/viewer_global_configuration.png -------------------------------------------------------------------------------- /images/viewer_snippet_generator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/images/viewer_snippet_generator.png -------------------------------------------------------------------------------- /ui/.eslintignore: -------------------------------------------------------------------------------- 1 | work 2 | target 3 | /rebel.xml 4 | 5 | # Node 6 | node/ 7 | node_modules/ 8 | 9 | # Generated JavaScript Bundles 10 | jsbundles 11 | 12 | # Webapp assets 13 | src/main/webapp/css/* 14 | src/main/webapp/icons/* 15 | -------------------------------------------------------------------------------- /ui/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | es6: true 6 | }, 7 | extends: "eslint:recommended", 8 | plugins: [ 9 | // Keeps the default level to warn to avoid breaking the current 10 | // CI build environment 11 | "only-warn" 12 | ], 13 | parserOptions: { 14 | ecmaVersion: 2018, 15 | sourceType: "module" 16 | }, 17 | rules: {}, 18 | globals: { 19 | Atomics: "readonly", 20 | SharedArrayBuffer: "readonly", 21 | 22 | '__dirname': false, 23 | 24 | // Allow jest globals used in tests 25 | jest: false, 26 | expect: false, 27 | it: false, 28 | describe: false, 29 | beforeEach: false, 30 | afterEach: false, 31 | beforeAll: false, 32 | afterAll: false, 33 | } 34 | }; 35 | -------------------------------------------------------------------------------- /ui/.mvn_exec_node: -------------------------------------------------------------------------------- 1 | Simple marker file to tell maven to execute npm (and node) build profiles. 2 | -------------------------------------------------------------------------------- /ui/babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "perfsig-ui", 3 | "description": "Performance Signature UI", 4 | "version": "1.0.0", 5 | "author": "Raphael Pionke (https://github.com/rpionke)", 6 | "license": "Apache-2.0", 7 | "scripts": { 8 | "dev": "webpack --config webpack.config.js", 9 | "prod": "webpack --config webpack.config.js --mode=production", 10 | "start": "yarn dev -- --watch", 11 | "lint:js": "eslint src/main/js src/main/webapp/js --ext js", 12 | "mvnbuild": "npm run prod", 13 | "mvntest": "npm run lint:js" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/jenkinsci/performance-signature-dynatrace-plugin.git" 18 | }, 19 | "readme": "../README.md", 20 | "devDependencies": { 21 | "@babel/cli": "^7.15.7", 22 | "@babel/core": "^7.15.8", 23 | "@babel/preset-env": "^7.15.8", 24 | "babel-loader": "^8.2.2", 25 | "clean-webpack-plugin": "^4.0.0", 26 | "css-loader": "^6.4.0", 27 | "eslint": "^8.0.1", 28 | "eslint-plugin-only-warn": "^1.0.3", 29 | "mini-css-extract-plugin": "^2.4.2", 30 | "style-loader": "^3.3.0", 31 | "webpack": "5.58.2", 32 | "webpack-cli": "^4.9.0" 33 | }, 34 | "dependencies": { 35 | "gridstack": "^4.3.0", 36 | "lightbox2": "^2.11.3", 37 | "wurl": "^2.5.4" 38 | }, 39 | "browserslist": [ 40 | "defaults", 41 | "IE 11" 42 | ] 43 | } 44 | -------------------------------------------------------------------------------- /ui/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | de.tsystems.mms.apm 7 | performance-signature-parent-pom 8 | 3.2.3-SNAPSHOT 9 | ../pom.xml 10 | 11 | 12 | performance-signature-ui 13 | 3.2.3-SNAPSHOT 14 | hpi 15 | 16 | Performance Signature: UI 17 | https://github.com/jenkinsci/performance-signature-dynatrace-plugin 18 | 19 | 20 | 21 | 22 | src/main/resources 23 | 24 | 25 | target/generated-resources/adjuncts 26 | 27 | 28 | 29 | 30 | 31 | 32 | com.google.code.gson 33 | gson 34 | 2.8.5 35 | 36 | 37 | io.swagger 38 | swagger-annotations 39 | 1.6.3 40 | 41 | 42 | io.jenkins.plugins 43 | bootstrap4-api 44 | 45 | 46 | io.jenkins.plugins 47 | font-awesome-api 48 | 49 | 50 | io.jenkins.plugins 51 | data-tables-api 52 | 1.10.25-3 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /ui/src/main/java/de/tsystems/mms/apm/performancesignature/dynatrace/model/Measurement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.dynatrace.model; 18 | 19 | import org.kohsuke.stapler.export.Exported; 20 | import org.kohsuke.stapler.export.ExportedBean; 21 | 22 | import javax.xml.bind.annotation.XmlAccessType; 23 | import javax.xml.bind.annotation.XmlAccessorType; 24 | import javax.xml.bind.annotation.XmlAttribute; 25 | import javax.xml.bind.annotation.XmlRootElement; 26 | 27 | @XmlAccessorType(XmlAccessType.FIELD) 28 | @XmlRootElement 29 | @ExportedBean 30 | public class Measurement extends MeasureBaseModel { 31 | @XmlAttribute 32 | private long timestamp; 33 | 34 | public Measurement(final long timestamp, final Number avg, final Number min, final Number max, final Number sum, 35 | final Number count) { 36 | this.timestamp = timestamp; 37 | this.setAvg(avg.doubleValue()); 38 | this.setMin(min.doubleValue()); 39 | this.setMax(max.doubleValue()); 40 | this.setSum(sum.doubleValue()); 41 | this.setCount(count.longValue()); 42 | } 43 | 44 | public Measurement() { 45 | } 46 | 47 | /** 48 | * Ruft den Wert der timestamp-Eigenschaft ab. 49 | * 50 | * @return possible object is 51 | * {@link long } 52 | */ 53 | @Exported 54 | public long getTimestamp() { 55 | return timestamp; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /ui/src/main/java/de/tsystems/mms/apm/performancesignature/ui/PerfSigBaseAction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.ui; 18 | 19 | import hudson.model.Action; 20 | 21 | abstract class PerfSigBaseAction implements Action { 22 | public String getUrlName() { 23 | return "performance-signature"; 24 | } 25 | 26 | @Override 27 | public String getDisplayName() { 28 | return Messages.PerfSigBaseAction_DisplayName(); 29 | } 30 | 31 | public String getIconFileName() { 32 | return "/plugin/" + getUrlName() + "-ui/images/icon.png"; 33 | } 34 | 35 | protected abstract String getTitle(); 36 | } 37 | -------------------------------------------------------------------------------- /ui/src/main/java/de/tsystems/mms/apm/performancesignature/ui/PerfSigUIPlugin.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.ui; 18 | 19 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.ChartDashlet; 20 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.DashboardReport; 21 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.Measure; 22 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.Measurement; 23 | import hudson.Plugin; 24 | import hudson.init.Initializer; 25 | import hudson.model.Run; 26 | 27 | import static hudson.init.InitMilestone.PLUGINS_STARTED; 28 | 29 | @SuppressWarnings({"unused", "deprecation"}) 30 | public class PerfSigUIPlugin extends Plugin { 31 | 32 | @Initializer(before = PLUGINS_STARTED) 33 | public static void addAliases() { 34 | // Moved in 2.2.0 35 | Run.XSTREAM2.addCompatibilityAlias("de.tsystems.mms.apm.performancesignature.dynatrace.model.ChartDashlet", ChartDashlet.class); 36 | Run.XSTREAM2.addCompatibilityAlias("de.tsystems.mms.apm.performancesignature.dynatrace.model.DashboardReport", DashboardReport.class); 37 | Run.XSTREAM2.addCompatibilityAlias("de.tsystems.mms.apm.performancesignature.dynatrace.model.Measure", Measure.class); 38 | Run.XSTREAM2.addCompatibilityAlias("de.tsystems.mms.apm.performancesignature.dynatrace.model.Measurement", Measurement.class); 39 | 40 | Run.XSTREAM2.addCompatibilityAlias("de.tsystems.mms.apm.performancesignature.PerfSigBuildAction", PerfSigBuildAction.class); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /ui/src/main/java/de/tsystems/mms/apm/performancesignature/ui/model/JSONDashletComparator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.ui.model; 18 | 19 | import java.io.Serializable; 20 | import java.util.Comparator; 21 | 22 | public class JSONDashletComparator implements Comparator, Serializable { 23 | @Override 24 | public int compare(final JSONDashlet a, final JSONDashlet b) { 25 | if (a.getRow() > b.getRow() || a.getRow() == b.getRow() && a.getCol() > b.getCol()) { 26 | return 1; 27 | } else if (a.equals(b)) { 28 | return 0; 29 | } 30 | return -1; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ui/src/main/resources/de/tsystems/mms/apm/performancesignature/dynatrace/model/Messages.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | Measure.PercentileNotSupported=percentile aggregation is not supported in stored sessions (measure: {0}) 17 | -------------------------------------------------------------------------------- /ui/src/main/resources/de/tsystems/mms/apm/performancesignature/ui/Messages.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | PerfSigProjectAction.Build=build 17 | PerfSigProjectAction.FailedToSaveGrid=Failed to save the grid configuration 18 | PerfSigProjectAction.FailedToLoadConfigFile=Failed to load {0} 19 | PerfSigBuildActionResultsDisplay.DisplayName=Performance Signature results 20 | PerfSigBaseAction.DisplayName=Performance Signature 21 | -------------------------------------------------------------------------------- /ui/src/main/resources/de/tsystems/mms/apm/performancesignature/ui/PerfSigBuildAction/summary.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | ${it.displayName} Icon 23 | 24 | 25 | 26 | ${it.displayName} 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /ui/src/main/resources/de/tsystems/mms/apm/performancesignature/ui/tags/incidentPanel.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 |
20 | 26 |
27 |
28 | ${%rule}: 29 | ${incident.rule} 30 |
31 | ${%description}: 32 | ${incident.description} 33 |
34 | ${%start}: 35 | ${incident.start} 36 |
37 | ${%end}: 38 |  not set 39 | ${incident.end} 40 |
41 |
42 |
43 |
-------------------------------------------------------------------------------- /ui/src/main/resources/de/tsystems/mms/apm/performancesignature/ui/tags/summaryTable.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | ${it.strMetricValue} 20 | ${utils.round(it.min,2)} 21 | ${utils.round(it.max,2)} 22 | 23 | -------------------------------------------------------------------------------- /ui/src/main/resources/de/tsystems/mms/apm/performancesignature/ui/tags/taglib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/ui/src/main/resources/de/tsystems/mms/apm/performancesignature/ui/tags/taglib -------------------------------------------------------------------------------- /ui/src/main/resources/de/tsystems/mms/apm/performancesignature/ui/util/Messages.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | PerfSigUIUtils.EncodingFailure=encoding failure 17 | PerfSigUIUtils.FailedToCreateReportDir=failed to create report directory 18 | PerfSigUIUtils.FollowingIncidents=following incidents occured: 19 | PerfSigUIUtils.SevereIncident=severe incident: {0} {1} {2} 20 | PerfSigUIUtils.WarningIncident=warning incident: {0} {1} {2} 21 | PerfSigUIUtils.BuildsStatusSevereIncidentsFailed=build's status was set to 'failed' due to severe incidents 22 | PerfSigUIUtils.BuildsStatusWarningIncidentsUnstable=build's status was set to 'unstable' due to warning incidents 23 | PerfSigUIUtils.BuildsStatusIncidentsUnstable=build's status was set to 'unstable' due to warning/severe incidents 24 | -------------------------------------------------------------------------------- /ui/src/main/resources/index.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | This plugin collects Dynatrace Performance Signature Reports and stores them locally. 19 |
20 | -------------------------------------------------------------------------------- /ui/src/main/webapp/images/dtsession.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/ui/src/main/webapp/images/dtsession.png -------------------------------------------------------------------------------- /ui/src/main/webapp/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/ui/src/main/webapp/images/icon.png -------------------------------------------------------------------------------- /ui/src/main/webapp/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/ui/src/main/webapp/images/loading.gif -------------------------------------------------------------------------------- /ui/src/main/webapp/js/floatingBox.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | (function ($) { 18 | "use strict"; 19 | 20 | const randomParam = `_=${$.now()}`; 21 | $('.carousel').each(function (carouselIndex, carousel) { 22 | const testCase = $(carousel).attr('id').substring(9); 23 | 24 | projectAction.getDashboardConfiguration(testCase, function (data) { 25 | const json = JSON.parse(data.responseObject()); 26 | $.each(json, function (index) { 27 | if (json[index].show) { 28 | if (json[index].id === 'unittest_overview') { 29 | $('.carousel-inner', carousel).append(''); 31 | } else { 32 | $('.carousel-inner', carousel).append(''); 34 | } 35 | } 36 | }); 37 | $('.carousel-inner div:first-child', carousel).addClass('active'); 38 | }); 39 | }); 40 | })(jQuery3); 41 | -------------------------------------------------------------------------------- /ui/src/main/webapp/js/tabhashes.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | (function ($) { 18 | const hash = window.location.hash; 19 | if (hash) { 20 | $(`ul.nav a[href="${hash}"]`).tab('show'); 21 | } else { 22 | $('#tabList').find('a:first').tab('show'); // Select first tab 23 | } 24 | 25 | $('.nav-tabs a').click(function () { 26 | $(this).tab('show'); 27 | const scrollMem = $('body').scrollTop() || $('html').scrollTop(); 28 | window.location.hash = this.hash; 29 | $('html,body').scrollTop(scrollMem); 30 | }); 31 | })(jQuery3); 32 | -------------------------------------------------------------------------------- /ui/src/test/java/de/tsystems/mms/apm/performancesignature/ui/util/TestUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.ui.util; 18 | 19 | import com.gargoylesoftware.htmlunit.html.DomText; 20 | 21 | import java.util.List; 22 | 23 | public class TestUtils { 24 | 25 | private TestUtils() { 26 | } 27 | 28 | public static boolean containsMeasure(List list, String search) { 29 | return list.stream().anyMatch(text -> ((DomText) text).getWholeText().trim().equals(search)); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ui/src/test/resources/de/tsystems/mms/apm/performancesignature/ui/PerfSigBuildActionResultsDisplayTest.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/ui/src/test/resources/de/tsystems/mms/apm/performancesignature/ui/PerfSigBuildActionResultsDisplayTest.zip -------------------------------------------------------------------------------- /ui/src/test/resources/de/tsystems/mms/apm/performancesignature/ui/PerfSigProjectActionTest.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/ui/src/test/resources/de/tsystems/mms/apm/performancesignature/ui/PerfSigProjectActionTest.zip -------------------------------------------------------------------------------- /ui/src/test/resources/de/tsystems/mms/apm/performancesignature/ui/PerfSigTestActionTest.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jenkinsci/performance-signature-dynatrace-plugin/76f70ae9973533aefc10b6ec9198142034de6831/ui/src/test/resources/de/tsystems/mms/apm/performancesignature/ui/PerfSigTestActionTest.zip -------------------------------------------------------------------------------- /ui/webpack.config.js: -------------------------------------------------------------------------------- 1 | /* eslint no-undef: 0 */ 2 | 3 | const path = require('path'); 4 | const MiniCSSExtractPlugin = require('mini-css-extract-plugin'); 5 | const {CleanWebpackPlugin: CleanPlugin} = require('clean-webpack-plugin'); 6 | 7 | module.exports = { 8 | mode: 'development', 9 | entry: './src/main/js/projectaction.js', 10 | output: { 11 | filename: 'projectaction.js', 12 | path: path.resolve(__dirname, 'target/generated-resources/adjuncts/org/jenkins/ui/jsmodules/performance-signature-ui'), 13 | }, 14 | watch: true, 15 | watchOptions: { 16 | ignored: '**/node_modules' 17 | }, 18 | externals: { 19 | jquery: 'jQuery' 20 | }, 21 | module: { 22 | rules: [ 23 | { 24 | test: /\.(css|less)$/i, 25 | use: ["style-loader", "css-loader"], 26 | }, 27 | { 28 | test: /\.m?js$/, 29 | exclude: /node_modules/, 30 | use: { 31 | loader: "babel-loader", 32 | options: { 33 | presets: ['@babel/preset-env'] 34 | } 35 | } 36 | }, 37 | { 38 | test: /\.(png|svg|jpg|jpeg|gif)$/i, 39 | type: 'asset/resource', 40 | 41 | }, 42 | { 43 | test: /\.(woff|woff2|eot|ttf|otf)$/, 44 | loader: 'file-loader', 45 | options: { 46 | outputPath: '../fonts', 47 | } 48 | }, 49 | ], 50 | }, 51 | plugins: [ 52 | new MiniCSSExtractPlugin({ 53 | filename: "[name].css", 54 | }), 55 | { 56 | apply: (compiler) => { 57 | compiler.hooks.done.tap('DonePlugin', (stats) => { 58 | console.log('Compile is done !') 59 | setTimeout(() => { 60 | process.exit(0) 61 | }) 62 | }); 63 | } 64 | }, 65 | // Clean all assets within the specified output. 66 | // It will not clean copied fonts 67 | new CleanPlugin() 68 | ] 69 | }; 70 | -------------------------------------------------------------------------------- /viewer/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4.0.0 4 | 5 | 6 | de.tsystems.mms.apm 7 | performance-signature-parent-pom 8 | 3.2.3-SNAPSHOT 9 | ../pom.xml 10 | 11 | 12 | performance-signature-viewer 13 | 3.2.3-SNAPSHOT 14 | hpi 15 | 16 | Performance Signature: Viewer 17 | https://wiki.jenkins.io/display/JENKINS/Performance+Signature+with+Dynatrace+Plugin 18 | 19 | 20 | 21 | ${project.groupId} 22 | performance-signature-ui 23 | ${project.version} 24 | 25 | 26 | org.jenkins-ci.plugins.workflow 27 | workflow-step-api 28 | 29 | 30 | org.jenkins-ci.plugins 31 | Parameterized-Remote-Trigger 32 | 3.0.1 33 | 34 | 35 | org.jenkins-ci.plugins 36 | script-security 37 | test 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /viewer/src/main/java/de/tsystems/mms/apm/performancesignature/viewer/rest/CommandExecutionException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.viewer.rest; 18 | 19 | public class CommandExecutionException extends RuntimeException { 20 | public CommandExecutionException(final String reason, final Exception ex) { 21 | super(reason, ex); 22 | } 23 | 24 | public CommandExecutionException(final String reason) { 25 | super(reason); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /viewer/src/main/java/de/tsystems/mms/apm/performancesignature/viewer/rest/ContentRetrievalException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.viewer.rest; 18 | 19 | public class ContentRetrievalException extends RuntimeException { 20 | public ContentRetrievalException(final String reason, final Exception ex) { 21 | super(reason, ex); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /viewer/src/main/java/de/tsystems/mms/apm/performancesignature/viewer/rest/RESTErrorException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.viewer.rest; 18 | 19 | import java.io.IOException; 20 | 21 | public class RESTErrorException extends IOException { 22 | public RESTErrorException(final String message) { 23 | super(message); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /viewer/src/main/java/de/tsystems/mms/apm/performancesignature/viewer/rest/model/Artifact.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.viewer.rest.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import org.apache.commons.lang.builder.ToStringBuilder; 21 | 22 | public class Artifact { 23 | 24 | @SerializedName("displayPath") 25 | private String displayPath; 26 | @SerializedName("fileName") 27 | private String fileName; 28 | @SerializedName("relativePath") 29 | private String relativePath; 30 | 31 | public String getDisplayPath() { 32 | return displayPath; 33 | } 34 | 35 | public String getFileName() { 36 | return fileName; 37 | } 38 | 39 | public String getRelativePath() { 40 | return relativePath; 41 | } 42 | 43 | @Override 44 | public String toString() { 45 | return new ToStringBuilder(this).append("displayPath", displayPath).append("fileName", fileName).append("relativePath", relativePath).toString(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /viewer/src/main/java/de/tsystems/mms/apm/performancesignature/viewer/rest/model/BuildData.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.viewer.rest.model; 18 | 19 | import com.google.gson.annotations.SerializedName; 20 | import org.apache.commons.lang.builder.ToStringBuilder; 21 | 22 | import java.util.ArrayList; 23 | import java.util.List; 24 | 25 | public class BuildData { 26 | 27 | @SerializedName("artifacts") 28 | private final List artifacts = new ArrayList<>(); 29 | 30 | public List getArtifacts() { 31 | return artifacts; 32 | } 33 | 34 | @Override 35 | public String toString() { 36 | return new ToStringBuilder(this).append("artifacts", artifacts).toString(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /viewer/src/main/java/de/tsystems/mms/apm/performancesignature/viewer/rest/model/RootElement.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package de.tsystems.mms.apm.performancesignature.viewer.rest.model; 18 | 19 | import de.tsystems.mms.apm.performancesignature.dynatrace.model.DashboardReport; 20 | 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | 24 | public class RootElement { 25 | private List dashboardReports; 26 | 27 | public List getDashboardReports() { 28 | if (dashboardReports == null) { 29 | dashboardReports = new ArrayList<>(); 30 | } 31 | return dashboardReports; 32 | } 33 | } -------------------------------------------------------------------------------- /viewer/src/main/resources/de/tsystems/mms/apm/performancesignature/viewer/InputTriggerStep/config.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 |

21 | Currently no visual configuration. 22 | Always pass a Handle object from the triggerRemoteJob Step to the pullPerfSigReports step. 23 | e.g. 24 |

25 |
def handle = triggerRemoteJob job: 'demoJob', remoteJenkinsName: 'myJenkins'
26 |             pullPerfSigReports handle: handle
27 |         
28 |
29 |
30 | 31 | 32 | 33 | 34 |
35 | -------------------------------------------------------------------------------- /viewer/src/main/resources/de/tsystems/mms/apm/performancesignature/viewer/Messages.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2014-2018 T-Systems Multimedia Solutions GmbH 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | PullPerfSigDataStep.JSONReportError=failed to download Jenkins JSON report, json report seems to be empty or contains no chartdashlets 17 | PullPerfSigDataStep.SessionDownloadError=failed to download Dynatrace session, build status set to failed for testcase: {0} 18 | PullPerfSigDataStep.SessionDownloadSuccessful=session successfully downloaded for testcase: {0} 19 | PullPerfSigDataStep.DisplayName=Pull Performance Signature reports 20 | PullPerfSigDataStep.ReportDownloadError=failed to download Dynatrace PDF reports 21 | PullPerfSigDataStep.ReportDownloadSuccessful=PDF Reports successfully downloaded 22 | PullPerfSigDataStep.ArtifactDownloadError=failed to download build artifacts 23 | PullPerfSigDataStep.ArtifactDownloadSuccessful=build artifacts successfully downloaded 24 | InputTriggerStep.TriggerInputStep=trigger input step for job {0} #{1} 25 | InputTriggerStep.TriggeredInputStep=triggered input step for job {0} #{1} 26 | InputTriggerStep.DisplayName=trigger input step remotely 27 | -------------------------------------------------------------------------------- /viewer/src/main/resources/index.jelly: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | This plugin collects Dynatrace Performance Signature Reports and stores them locally. 19 |
20 | --------------------------------------------------------------------------------