From 51aa9c95724607dc815848738f8a0a5b967686f1 Mon Sep 17 00:00:00 2001 From: Daniel Widdis Date: Thu, 5 Dec 2024 11:44:58 -0800 Subject: [PATCH] Update thirdparty exclusions Signed-off-by: Daniel Widdis --- .../main/org/opensearch/gradle/AntTask.class | Bin 7446 -> 0 bytes ...osure2$_closure3$_closure4$_closure6.class | Bin 1969 -> 0 bytes ...osure1$_closure2$_closure3$_closure4.class | Bin 2629 -> 0 bytes ...osure2$_closure3$_closure5$_closure7.class | Bin 1968 -> 0 bytes ...osure1$_closure2$_closure3$_closure5.class | Bin 2627 -> 0 bytes ...dNotice_closure1$_closure2$_closure3.class | Bin 2986 -> 0 bytes ...eLicenseAndNotice_closure1$_closure2.class | Bin 3829 -> 0 bytes ...$_configureLicenseAndNotice_closure1.class | Bin 3086 -> 0 bytes .../org/opensearch/gradle/BuildPlugin.class | Bin 4430 -> 0 bytes ...InfoPlugin$_apply_closure1$_closure2.class | Bin 3246 -> 0 bytes ...pendenciesInfoPlugin$_apply_closure1.class | Bin 4000 -> 0 bytes .../gradle/DependenciesInfoPlugin.class | Bin 4135 -> 0 bytes ...k$_generateDependenciesInfo_closure1.class | Bin 2757 -> 0 bytes ...Task$_getDependencyInfoFile_closure2.class | Bin 3137 -> 0 bytes ...Task$_getDependencyInfoFile_closure3.class | Bin 4621 -> 0 bytes .../gradle/DependenciesInfoTask.class | Bin 12052 -> 0 bytes .../opensearch/gradle/FileContentsTask.class | Bin 3519 -> 0 bytes .../MavenFilteringHack$_filter_closure1.class | Bin 2885 -> 0 bytes .../gradle/MavenFilteringHack.class | Bin 3693 -> 0 bytes .../NoticeTask$_generateNotice_closure1.class | Bin 4247 -> 0 bytes .../NoticeTask$_getNoticeFiles_closure2.class | Bin 3214 -> 0 bytes .../NoticeTask$_getNoticeFiles_closure3.class | Bin 2587 -> 0 bytes .../org/opensearch/gradle/NoticeTask.class | Bin 11031 -> 0 bytes .../gradle/ResolveAllDependencies.class | Bin 2563 -> 0 bytes .../doc/DocsTestPlugin$_apply_closure1.class | Bin 2577 -> 0 bytes .../doc/DocsTestPlugin$_apply_closure2.class | Bin 2289 -> 0 bytes .../doc/DocsTestPlugin$_apply_closure3.class | Bin 2289 -> 0 bytes ...TestPlugin$_apply_closure4$_closure7.class | Bin 2584 -> 0 bytes .../doc/DocsTestPlugin$_apply_closure4.class | Bin 3415 -> 0 bytes ...TestPlugin$_apply_closure5$_closure8.class | Bin 2922 -> 0 bytes .../doc/DocsTestPlugin$_apply_closure5.class | Bin 3498 -> 0 bytes .../doc/DocsTestPlugin$_apply_closure6.class | Bin 2888 -> 0 bytes .../gradle/doc/DocsTestPlugin.class | Bin 6383 -> 0 bytes ...sTask$TestBuilder$__clinit__closure6.class | Bin 3314 -> 0 bytes ...ppetsTask$TestBuilder$_body_closure3.class | Bin 4947 -> 0 bytes ...stBuilder$_checkUnconverted_closure4.class | Bin 2639 -> 0 bytes ...stBuilder$_checkUnconverted_closure5.class | Bin 2639 -> 0 bytes ...etsTask$TestBuilder$_emitDo_closure2.class | Bin 2903 -> 0 bytes ...sTask$TestBuilder$_response_closure1.class | Bin 2867 -> 0 bytes ...estTestsFromSnippetsTask$TestBuilder.class | Bin 19423 -> 0 bytes .../RestTestsFromSnippetsTask$_closure1.class | Bin 2851 -> 0 bytes .../RestTestsFromSnippetsTask$_closure2.class | Bin 2533 -> 0 bytes .../doc/RestTestsFromSnippetsTask.class | Bin 9907 -> 0 bytes .../gradle/doc/SnippetsTask$Snippet.class | Bin 10282 -> 0 bytes .../gradle/doc/SnippetsTask$_closure1.class | Bin 2506 -> 0 bytes ...Task$_executeTask_closure2$_closure5.class | Bin 3995 -> 0 bytes .../SnippetsTask$_executeTask_closure2.class | Bin 8794 -> 0 bytes ...Task$_executeTask_closure3$_closure6.class | Bin 5217 -> 0 bytes ...Task$_executeTask_closure3$_closure7.class | Bin 4209 -> 0 bytes .../SnippetsTask$_executeTask_closure3.class | Bin 11391 -> 0 bytes .../doc/SnippetsTask$_parse_closure4.class | Bin 4874 -> 0 bytes .../opensearch/gradle/doc/SnippetsTask.class | Bin 10265 -> 0 bytes ...tion_closure11$_closure23$_closure24.class | Bin 2386 -> 0 bytes ...oticeGeneration_closure11$_closure23.class | Bin 3283 -> 0 bytes ...lugin$_addNoticeGeneration_closure11.class | Bin 3344 -> 0 bytes ...lugin$_addNoticeGeneration_closure12.class | Bin 3753 -> 0 bytes ...lugin$_addNoticeGeneration_closure13.class | Bin 3143 -> 0 bytes ...apply_closure1$_closure14$_closure16.class | Bin 3025 -> 0 bytes ...ildPlugin$_apply_closure1$_closure14.class | Bin 3451 -> 0 bytes ...ildPlugin$_apply_closure1$_closure15.class | Bin 3156 -> 0 bytes .../PluginBuildPlugin$_apply_closure1.class | Bin 6328 -> 0 bytes ...apply_closure2$_closure17$_closure18.class | Bin 2636 -> 0 bytes ...apply_closure2$_closure17$_closure19.class | Bin 2805 -> 0 bytes ...ildPlugin$_apply_closure2$_closure17.class | Bin 2870 -> 0 bytes .../PluginBuildPlugin$_apply_closure2.class | Bin 2822 -> 0 bytes .../PluginBuildPlugin$_apply_closure3.class | Bin 3094 -> 0 bytes ...ugin$_configureDependencies_closure6.class | Bin 4682 -> 0 bytes ...Plugin$_configurePublishing_closure4.class | Bin 2924 -> 0 bytes ...Plugin$_configurePublishing_closure5.class | Bin 3746 -> 0 bytes ...dPlugin$_createBundleTasks_closure10.class | Bin 3124 -> 0 bytes ...reateBundleTasks_closure7$_closure20.class | Bin 3528 -> 0 bytes ...ldPlugin$_createBundleTasks_closure7.class | Bin 3437 -> 0 bytes ...ldPlugin$_createBundleTasks_closure8.class | Bin 3944 -> 0 bytes ...reateBundleTasks_closure9$_closure21.class | Bin 3352 -> 0 bytes ...reateBundleTasks_closure9$_closure22.class | Bin 2649 -> 0 bytes ...ldPlugin$_createBundleTasks_closure9.class | Bin 4664 -> 0 bytes .../gradle/plugin/PluginBuildPlugin.class | Bin 11440 -> 0 bytes .../LicenseHeadersPrecommitPlugin.class | Bin 3595 -> 0 bytes ...seHeadersTask$_getJavaFiles_closure1.class | Bin 2535 -> 0 bytes ...dersTask$_runAnt_closure2$_closure10.class | Bin 3143 -> 0 bytes ...adersTask$_runAnt_closure2$_closure5.class | Bin 2693 -> 0 bytes ...adersTask$_runAnt_closure2$_closure6.class | Bin 2723 -> 0 bytes ...adersTask$_runAnt_closure2$_closure7.class | Bin 2786 -> 0 bytes ...adersTask$_runAnt_closure2$_closure8.class | Bin 2688 -> 0 bytes ...adersTask$_runAnt_closure2$_closure9.class | Bin 2675 -> 0 bytes .../LicenseHeadersTask$_runAnt_closure2.class | Bin 6414 -> 0 bytes .../LicenseHeadersTask$_runAnt_closure3.class | Bin 3471 -> 0 bytes .../LicenseHeadersTask$_runAnt_closure4.class | Bin 3466 -> 0 bytes .../gradle/precommit/LicenseHeadersTask.class | Bin 7674 -> 0 bytes .../gradle/precommit/PrecommitTasks.class | Bin 4286 -> 0 bytes .../gradle/test/AntFixture$_closure1.class | Bin 3617 -> 0 bytes ...AntFixture$_createStopTask_closure10.class | Bin 2830 -> 0 bytes ..._createStopTask_closure11$_closure19.class | Bin 3008 -> 0 bytes ..._createStopTask_closure11$_closure20.class | Bin 3447 -> 0 bytes ...Task_closure11$_closure21$_closure22.class | Bin 3101 -> 0 bytes ..._createStopTask_closure11$_closure21.class | Bin 3274 -> 0 bytes ...AntFixture$_createStopTask_closure11.class | Bin 4609 -> 0 bytes .../test/AntFixture$_fail_closure8.class | Bin 2447 -> 0 bytes .../test/AntFixture$_fail_closure9.class | Bin 2590 -> 0 bytes ...ntFixture$_getCommandString_closure6.class | Bin 3255 -> 0 bytes ...ntFixture$_getCommandString_closure7.class | Bin 3044 -> 0 bytes .../test/AntFixture$_runAnt_closure2.class | Bin 2594 -> 0 bytes .../test/AntFixture$_runAnt_closure3.class | Bin 2438 -> 0 bytes ...tFixture$_runAnt_closure4$_closure12.class | Bin 2758 -> 0 bytes ...tFixture$_runAnt_closure4$_closure13.class | Bin 2609 -> 0 bytes .../test/AntFixture$_runAnt_closure4.class | Bin 3431 -> 0 bytes ...unAnt_closure5$_closure14$_closure15.class | Bin 2762 -> 0 bytes ...re5$_closure14$_closure16$_closure17.class | Bin 2789 -> 0 bytes ...re5$_closure14$_closure16$_closure18.class | Bin 2791 -> 0 bytes ...unAnt_closure5$_closure14$_closure16.class | Bin 2879 -> 0 bytes ...tFixture$_runAnt_closure5$_closure14.class | Bin 2833 -> 0 bytes .../test/AntFixture$_runAnt_closure5.class | Bin 2666 -> 0 bytes .../opensearch/gradle/test/AntFixture.class | Bin 16476 -> 0 bytes .../test/ClusterConfiguration$_closure1.class | Bin 3815 -> 0 bytes ...ration$_closure2$_closure5$_closure6.class | Bin 3236 -> 0 bytes ...terConfiguration$_closure2$_closure5.class | Bin 3279 -> 0 bytes .../test/ClusterConfiguration$_closure2.class | Bin 4618 -> 0 bytes .../test/ClusterConfiguration$_closure3.class | Bin 2438 -> 0 bytes .../test/ClusterConfiguration$_closure4.class | Bin 4164 -> 0 bytes .../gradle/test/ClusterConfiguration.class | Bin 14805 -> 0 bytes ...terFormationTasks$EscapeCommaWrapper.class | Bin 5177 -> 0 bytes ...figureAddKeystoreFileTasks_closure12.class | Bin 3197 -> 0 bytes ...figureAddKeystoreFileTasks_closure13.class | Bin 4416 -> 0 bytes ...ureAddKeystoreSettingTasks_closure10.class | Bin 3209 -> 0 bytes ...ureAddKeystoreSettingTasks_closure11.class | Bin 3581 -> 0 bytes ...eckPreviousTask_closure32$_closure57.class | Bin 3078 -> 0 bytes ...eckPreviousTask_closure32$_closure58.class | Bin 3085 -> 0 bytes ...eckPreviousTask_closure32$_closure59.class | Bin 4563 -> 0 bytes ...configureCheckPreviousTask_closure32.class | Bin 5088 -> 0 bytes ...onfigureCopyBwcPluginsTask_closure17.class | Bin 3298 -> 0 bytes ...onfigureCopyBwcPluginsTask_closure18.class | Bin 3628 -> 0 bytes ...configureCreateKeystoreTask_closure9.class | Bin 3186 -> 0 bytes ...nfigureExecTask_closure22$_closure42.class | Bin 2668 -> 0 bytes ...onTasks$_configureExecTask_closure22.class | Bin 5102 -> 0 bytes ...figureExtraConfigFilesTask_closure14.class | Bin 4287 -> 0 bytes ...figureExtraConfigFilesTask_closure15.class | Bin 2813 -> 0 bytes ...ConfigFilesTask_closure16$_closure41.class | Bin 2997 -> 0 bytes ...figureExtraConfigFilesTask_closure16.class | Bin 3977 -> 0 bytes ...igureExtractTask_closure7$_closure38.class | Bin 3380 -> 0 bytes ...igureExtractTask_closure7$_closure39.class | Bin 3452 -> 0 bytes ...Tasks$_configureExtractTask_closure7.class | Bin 5190 -> 0 bytes ...configureInstallModuleTask_closure19.class | Bin 3582 -> 0 bytes ...configureInstallPluginTask_closure20.class | Bin 3739 -> 0 bytes ...configureInstallPluginTask_closure21.class | Bin 3219 -> 0 bytes ...rmationTasks$_configureNode_closure4.class | Bin 3415 -> 0 bytes ...s$_configureNode_closure5$_closure37.class | Bin 3032 -> 0 bytes ...rmationTasks$_configureNode_closure5.class | Bin 3655 -> 0 bytes ...rmationTasks$_configureNode_closure6.class | Bin 3749 -> 0 bytes ...Task_closure23$_closure43$_closure44.class | Bin 2874 -> 0 bytes ...Task_closure23$_closure43$_closure45.class | Bin 2725 -> 0 bytes ...figureStartTask_closure23$_closure43.class | Bin 5530 -> 0 bytes ...nTasks$_configureStartTask_closure23.class | Bin 4240 -> 0 bytes ...figureStartTask_closure24$_closure46.class | Bin 2515 -> 0 bytes ...nTasks$_configureStartTask_closure24.class | Bin 5124 -> 0 bytes ...figureStartTask_closure25$_closure47.class | Bin 2800 -> 0 bytes ...nTasks$_configureStartTask_closure25.class | Bin 5965 -> 0 bytes ...nfigureStopTask_closure33$_closure60.class | Bin 3051 -> 0 bytes ...nfigureStopTask_closure33$_closure61.class | Bin 3058 -> 0 bytes ...nfigureStopTask_closure33$_closure62.class | Bin 2865 -> 0 bytes ...nfigureStopTask_closure33$_closure63.class | Bin 3607 -> 0 bytes ...onTasks$_configureStopTask_closure33.class | Bin 5279 -> 0 bytes ...nfigureWaitTask_closure26$_closure48.class | Bin 3895 -> 0 bytes ...nfigureWaitTask_closure26$_closure49.class | Bin 3121 -> 0 bytes ...e26$_closure50$_closure51$_closure52.class | Bin 3322 -> 0 bytes ...e50$_closure51$_closure53$_closure54.class | Bin 3350 -> 0 bytes ...e50$_closure51$_closure53$_closure55.class | Bin 3356 -> 0 bytes ...e50$_closure51$_closure53$_closure56.class | Bin 3361 -> 0 bytes ...e26$_closure50$_closure51$_closure53.class | Bin 3953 -> 0 bytes ...Task_closure26$_closure50$_closure51.class | Bin 3710 -> 0 bytes ...nfigureWaitTask_closure26$_closure50.class | Bin 3180 -> 0 bytes ...onTasks$_configureWaitTask_closure26.class | Bin 8613 -> 0 bytes ...eWriteConfigTask_closure8$_closure40.class | Bin 2808 -> 0 bytes ...s$_configureWriteConfigTask_closure8.class | Bin 5163 -> 0 bytes ...ationTasks$_pluginTaskName_closure34.class | Bin 2815 -> 0 bytes ...tionTasks$_setup_closure1$_closure35.class | Bin 2903 -> 0 bytes ...lusterFormationTasks$_setup_closure1.class | Bin 3283 -> 0 bytes ...tionTasks$_setup_closure2$_closure36.class | Bin 2806 -> 0 bytes ...lusterFormationTasks$_setup_closure2.class | Bin 6344 -> 0 bytes ...lusterFormationTasks$_setup_closure3.class | Bin 4781 -> 0 bytes ...FormationTasks$_waitFailed_closure27.class | Bin 2994 -> 0 bytes ...FormationTasks$_waitFailed_closure28.class | Bin 3138 -> 0 bytes ...FormationTasks$_waitFailed_closure29.class | Bin 3138 -> 0 bytes ...FormationTasks$_waitFailed_closure30.class | Bin 4051 -> 0 bytes ...FormationTasks$_waitFailed_closure31.class | Bin 3138 -> 0 bytes .../gradle/test/ClusterFormationTasks.class | Bin 53398 -> 0 bytes .../gradle/test/NodeInfo$_closure1.class | Bin 2421 -> 0 bytes .../gradle/test/NodeInfo$_closure2.class | Bin 2395 -> 0 bytes .../gradle/test/NodeInfo$_closure3.class | Bin 2390 -> 0 bytes .../gradle/test/NodeInfo$_closure4.class | Bin 2620 -> 0 bytes .../gradle/test/NodeInfo$_closure5.class | Bin 2264 -> 0 bytes .../NodeInfo$_getCommandString_closure6.class | Bin 3271 -> 0 bytes .../NodeInfo$_getCommandString_closure7.class | Bin 3059 -> 0 bytes .../NodeInfo$_getCommandString_closure8.class | Bin 3060 -> 0 bytes .../org/opensearch/gradle/test/NodeInfo.class | Bin 20264 -> 0 bytes .../test/RestTestPlugin$_apply_closure1.class | Bin 2660 -> 0 bytes .../test/RestTestPlugin$_apply_closure2.class | Bin 2373 -> 0 bytes .../gradle/test/RestTestPlugin.class | Bin 5448 -> 0 bytes ...daloneRestTestPlugin$_apply_closure1.class | Bin 2578 -> 0 bytes .../test/StandaloneRestTestPlugin.class | Bin 7734 -> 0 bytes ...StandaloneTestPlugin$_apply_closure1.class | Bin 2734 -> 0 bytes ...StandaloneTestPlugin$_apply_closure2.class | Bin 2553 -> 0 bytes .../gradle/test/StandaloneTestPlugin.class | Bin 3765 -> 0 bytes ...sPlugin$_addPluginResources_closure2.class | Bin 2842 -> 0 bytes ...sPlugin$_addPluginResources_closure3.class | Bin 3781 -> 0 bytes ...ciesPlugin$_apply_closure1$_closure4.class | Bin 3493 -> 0 bytes ...thDependenciesPlugin$_apply_closure1.class | Bin 4041 -> 0 bytes .../test/TestWithDependenciesPlugin.class | Bin 6055 -> 0 bytes .../gradle/test/TestWithSslPlugin.class | Bin 7388 -> 0 bytes .../AbstractLazyPropertyCollection.class | Bin 1707 -> 0 bytes .../org/opensearch/gradle/Architecture.class | Bin 2253 -> 0 bytes .../BwcVersions$UnreleasedVersionInfo.class | Bin 857 -> 0 bytes .../org/opensearch/gradle/BwcVersions.class | Bin 16759 -> 0 bytes .../opensearch/gradle/ConcatFilesTask.class | Bin 3977 -> 0 bytes ...cy$StringBasedDistributionDependency.class | Bin 827 -> 0 bytes .../gradle/DistributionDependency.class | Bin 675 -> 0 bytes .../gradle/DistributionDownloadPlugin$1.class | Bin 839 -> 0 bytes .../gradle/DistributionDownloadPlugin.class | Bin 21815 -> 0 bytes .../DistributionResolution$Resolver.class | Bin 406 -> 0 bytes .../gradle/DistributionResolution.class | Bin 1231 -> 0 bytes .../org/opensearch/gradle/DockerBase.class | Bin 1191 -> 0 bytes .../org/opensearch/gradle/EmptyDirTask.class | Bin 1755 -> 0 bytes .../ExportOpenSearchBuildResourcesTask.class | Bin 5886 -> 0 bytes .../org/opensearch/gradle/FileSupplier.class | Bin 248 -> 0 bytes .../gradle/FileSystemOperationsAware.class | Bin 227 -> 0 bytes .../main/org/opensearch/gradle/Jdk$1.class | Bin 1101 -> 0 bytes .../main/org/opensearch/gradle/Jdk$2.class | Bin 664 -> 0 bytes .../java/main/org/opensearch/gradle/Jdk.class | Bin 7311 -> 0 bytes .../opensearch/gradle/JdkDownloadPlugin.class | Bin 13458 -> 0 bytes .../gradle/LazyFileOutputStream$1.class | Bin 1317 -> 0 bytes .../gradle/LazyFileOutputStream.class | Bin 1045 -> 0 bytes .../LazyPropertyList$PropertyListEntry.class | Bin 1674 -> 0 bytes .../opensearch/gradle/LazyPropertyList.class | Bin 10326 -> 0 bytes .../LazyPropertyMap$PropertyMapEntry.class | Bin 1910 -> 0 bytes .../opensearch/gradle/LazyPropertyMap.class | Bin 9671 -> 0 bytes .../org/opensearch/gradle/LoggedExec$1.class | Bin 2497 -> 0 bytes .../org/opensearch/gradle/LoggedExec.class | Bin 9804 -> 0 bytes .../gradle/LoggingOutputStream.class | Bin 1237 -> 0 bytes .../opensearch/gradle/OS$Conditional.class | Bin 3180 -> 0 bytes .../java/main/org/opensearch/gradle/OS.class | Bin 2519 -> 0 bytes .../gradle/OpenSearchDistribution$1.class | Bin 899 -> 0 bytes .../OpenSearchDistribution$Platform.class | Bin 1626 -> 0 bytes .../gradle/OpenSearchDistribution$Type.class | Bin 1969 -> 0 bytes .../gradle/OpenSearchDistribution.class | Bin 9959 -> 0 bytes .../gradle/OpenSearchJavaPlugin$1$1.class | Bin 1099 -> 0 bytes .../gradle/OpenSearchJavaPlugin$1.class | Bin 1424 -> 0 bytes .../gradle/OpenSearchJavaPlugin.class | Bin 17318 -> 0 bytes .../gradle/OpenSearchTestBasePlugin$1.class | Bin 2300 -> 0 bytes .../gradle/OpenSearchTestBasePlugin$2.class | Bin 1428 -> 0 bytes .../gradle/OpenSearchTestBasePlugin.class | Bin 11834 -> 0 bytes .../gradle/PropertyNormalization.class | Bin 1095 -> 0 bytes .../opensearch/gradle/PublishPlugin$1.class | Bin 1380 -> 0 bytes .../org/opensearch/gradle/PublishPlugin.class | Bin 12606 -> 0 bytes .../org/opensearch/gradle/ReaperPlugin.class | Bin 3834 -> 0 bytes .../org/opensearch/gradle/ReaperService.class | Bin 9279 -> 0 bytes .../gradle/RepositoriesSetupPlugin.class | Bin 7683 -> 0 bytes .../SimpleCommandLineArgumentProvider.class | Bin 837 -> 0 bytes ...mPropertyCommandLineArgumentProvider.class | Bin 3361 -> 0 bytes .../org/opensearch/gradle/Version$Mode.class | Bin 1113 -> 0 bytes .../main/org/opensearch/gradle/Version.class | Bin 5429 -> 0 bytes .../opensearch/gradle/VersionProperties.class | Bin 4262 -> 0 bytes .../CompileOnlyResolvePlugin.class | Bin 3011 -> 0 bytes .../DockerBuildTask$DockerBuildAction.class | Bin 5474 -> 0 bytes .../docker/DockerBuildTask$Parameters.class | Bin 836 -> 0 bytes .../gradle/docker/DockerBuildTask.class | Bin 5240 -> 0 bytes .../gradle/docker/DockerSupportPlugin.class | Bin 5579 -> 0 bytes ...kerSupportService$DockerAvailability.class | Bin 1139 -> 0 bytes .../DockerSupportService$Parameters.class | Bin 428 -> 0 bytes .../docker/DockerSupportService$Result.class | Bin 1432 -> 0 bytes .../gradle/docker/DockerSupportService.class | Bin 13680 -> 0 bytes .../gradle/http/WaitForHttpResource.class | Bin 10178 -> 0 bytes .../info/BuildParams$MutableBuildParams.class | Bin 5558 -> 0 bytes .../opensearch/gradle/info/BuildParams.class | Bin 5171 -> 0 bytes .../info/GlobalBuildInfoPlugin$GitInfo.class | Bin 804 -> 0 bytes .../gradle/info/GlobalBuildInfoPlugin.class | Bin 22703 -> 0 bytes .../org/opensearch/gradle/info/JavaHome.class | Bin 1320 -> 0 bytes .../gradle/internal/BwcGitExtension.class | Bin 1766 -> 0 bytes ...SetupExtension$IndentingOutputStream.class | Bin 1786 -> 0 bytes .../gradle/internal/BwcSetupExtension.class | Bin 10441 -> 0 bytes .../gradle/internal/DistributionArchive.class | Bin 3974 -> 0 bytes .../DistributionArchiveCheckExtension.class | Bin 815 -> 0 bytes .../internal/InternalBwcGitPlugin.class | Bin 15851 -> 0 bytes ...rnalDistributionArchiveCheckPlugin$1.class | Bin 2617 -> 0 bytes ...rnalDistributionArchiveCheckPlugin$2.class | Bin 3010 -> 0 bytes ...rnalDistributionArchiveCheckPlugin$3.class | Bin 1776 -> 0 bytes ...ternalDistributionArchiveCheckPlugin.class | Bin 11643 -> 0 bytes ...ternalDistributionArchiveSetupPlugin.class | Bin 13366 -> 0 bytes ...onBwcSetupPlugin$DistributionProject.class | Bin 2477 -> 0 bytes .../InternalDistributionBwcSetupPlugin.class | Bin 18148 -> 0 bytes ...InternalDistributionDownloadPlugin$1.class | Bin 1018 -> 0 bytes ...n$ProjectBasedDistributionDependency.class | Bin 1363 -> 0 bytes .../InternalDistributionDownloadPlugin.class | Bin 9947 -> 0 bytes .../plugin/PluginPropertiesExtension.class | Bin 3872 -> 0 bytes .../DependencyLicensesPrecommitPlugin.class | Bin 4277 -> 0 bytes .../precommit/DependencyLicensesTask.class | Bin 15025 -> 0 bytes .../FilePermissionsPrecommitPlugin.class | Bin 1018 -> 0 bytes .../precommit/FilePermissionsTask.class | Bin 6922 -> 0 bytes .../ForbiddenApisPrecommitPlugin$1.class | Bin 2686 -> 0 bytes .../ForbiddenApisPrecommitPlugin$2.class | Bin 2904 -> 0 bytes .../ForbiddenApisPrecommitPlugin.class | Bin 8131 -> 0 bytes .../ForbiddenPatternsPrecommitPlugin.class | Bin 1028 -> 0 bytes .../precommit/ForbiddenPatternsTask.class | Bin 12346 -> 0 bytes .../precommit/JarHellPrecommitPlugin.class | Bin 3843 -> 0 bytes .../gradle/precommit/JarHellTask.class | Bin 2660 -> 0 bytes .../LicenseAnalyzer$LicenseInfo.class | Bin 976 -> 0 bytes .../LicenseAnalyzer$LicenseMatcher.class | Bin 2118 -> 0 bytes .../gradle/precommit/LicenseAnalyzer.class | Bin 6928 -> 0 bytes .../LoggerUsagePrecommitPlugin.class | Bin 3636 -> 0 bytes .../gradle/precommit/LoggerUsageTask.class | Bin 5546 -> 0 bytes .../PomValidationPrecommitPlugin.class | Bin 4956 -> 0 bytes .../gradle/precommit/PomValidationTask.class | Bin 7408 -> 0 bytes .../gradle/precommit/PrecommitPlugin.class | Bin 4041 -> 0 bytes .../gradle/precommit/PrecommitTask.class | Bin 1692 -> 0 bytes .../precommit/PrecommitTaskPlugin.class | Bin 4747 -> 0 bytes .../precommit/TestingConventionRule.class | Bin 2760 -> 0 bytes .../TestingConventionsPrecommitPlugin.class | Bin 2684 -> 0 bytes .../precommit/TestingConventionsTasks$1.class | Bin 3715 -> 0 bytes .../precommit/TestingConventionsTasks.class | Bin 23579 -> 0 bytes .../ThirdPartyAuditPrecommitPlugin.class | Bin 6128 -> 0 bytes .../precommit/ThirdPartyAuditTask.class | Bin 20800 -> 0 bytes .../gradle/precommit/UpdateShasTask.class | Bin 4747 -> 0 bytes .../ValidateJsonAgainstSchemaTask.class | Bin 8991 -> 0 bytes .../ValidateJsonNoKeywordsTask.class | Bin 11891 -> 0 bytes .../precommit/ValidateRestSpecPlugin.class | Bin 5099 -> 0 bytes .../tar/SymbolicLinkPreservingTar$1.class | Bin 825 -> 0 bytes ...ymbolicLinkPreservingTarStreamAction.class | Bin 5900 -> 0 bytes ...$SymbolicLinkPreservingTarCopyAction.class | Bin 4118 -> 0 bytes .../tar/SymbolicLinkPreservingTar.class | Bin 2046 -> 0 bytes .../tar/SymoblicLinkPreservingTarPlugin.class | Bin 757 -> 0 bytes .../gradle/test/DistroTestPlugin$1.class | Bin 819 -> 0 bytes .../gradle/test/DistroTestPlugin.class | Bin 34657 -> 0 bytes .../test/ErrorReportingTestListener$1.class | Bin 1297 -> 0 bytes ...rrorReportingTestListener$Descriptor.class | Bin 2417 -> 0 bytes ...rorReportingTestListener$EventWriter.class | Bin 3693 -> 0 bytes .../test/ErrorReportingTestListener.class | Bin 9157 -> 0 bytes .../org/opensearch/gradle/test/Fixture.class | Bin 167 -> 0 bytes .../gradle/test/GradleDistroTestTask.class | Bin 4604 -> 0 bytes .../test/InternalClusterTestPlugin.class | Bin 2206 -> 0 bytes .../test/JNAKernel32Library$Holder.class | Bin 601 -> 0 bytes .../gradle/test/JNAKernel32Library.class | Bin 890 -> 0 bytes .../gradle/test/RestIntegTestTask.class | Bin 455 -> 0 bytes .../gradle/test/RestTestBasePlugin.class | Bin 5078 -> 0 bytes .../gradle/test/rest/CopyRestApiTask.class | Bin 12962 -> 0 bytes .../gradle/test/rest/CopyRestTestsTask.class | Bin 9048 -> 0 bytes .../gradle/test/rest/JavaRestTestPlugin.class | Bin 3577 -> 0 bytes ...ResourcesExtension$RestResourcesSpec.class | Bin 1359 -> 0 bytes .../test/rest/RestResourcesExtension.class | Bin 1447 -> 0 bytes .../test/rest/RestResourcesPlugin$1.class | Bin 1091 -> 0 bytes .../test/rest/RestResourcesPlugin$2.class | Bin 1123 -> 0 bytes .../test/rest/RestResourcesPlugin.class | Bin 7906 -> 0 bytes .../gradle/test/rest/RestTestUtil.class | Bin 7653 -> 0 bytes .../gradle/test/rest/YamlRestTestPlugin.class | Bin 5064 -> 0 bytes .../DefaultTestClustersTask.class | Bin 825 -> 0 bytes .../testclusters/OpenSearchCluster.class | Bin 30872 -> 0 bytes .../testclusters/OpenSearchNode$1.class | Bin 1059 -> 0 bytes .../OpenSearchNode$CliEntry.class | Bin 951 -> 0 bytes .../testclusters/OpenSearchNode$Config.class | Bin 2332 -> 0 bytes .../OpenSearchNode$FileEntry.class | Bin 1078 -> 0 bytes ...OpenSearchNode$LinkCreationException.class | Bin 650 -> 0 bytes .../gradle/testclusters/OpenSearchNode.class | Bin 68092 -> 0 bytes .../gradle/testclusters/RunTask.class | Bin 12002 -> 0 bytes .../StandaloneRestIntegTestTask.class | Bin 8617 -> 0 bytes .../TestClusterConfiguration.class | Bin 7233 -> 0 bytes .../testclusters/TestClustersAware.class | Bin 4540 -> 0 bytes .../testclusters/TestClustersException.class | Bin 719 -> 0 bytes ...stersPlugin$TestClustersHookPlugin$1.class | Bin 2393 -> 0 bytes ...stersPlugin$TestClustersHookPlugin$2.class | Bin 2933 -> 0 bytes ...lustersPlugin$TestClustersHookPlugin.class | Bin 5981 -> 0 bytes .../testclusters/TestClustersPlugin.class | Bin 10076 -> 0 bytes .../testclusters/TestClustersRegistry.class | Bin 3536 -> 0 bytes .../testclusters/TestClustersThrottle.class | Bin 680 -> 0 bytes .../testclusters/TestDistribution.class | Bin 1136 -> 0 bytes .../testfixtures/DockerComposeThrottle.class | Bin 683 -> 0 bytes .../testfixtures/TestFixtureExtension.class | Bin 7066 -> 0 bytes .../testfixtures/TestFixturesPlugin$1.class | Bin 5572 -> 0 bytes .../testfixtures/TestFixturesPlugin.class | Bin 19769 -> 0 bytes ...SymbolicLinkPreservingUntarTransform.class | Bin 4981 -> 0 bytes .../UnpackTransform$Parameters.class | Bin 556 -> 0 bytes .../gradle/transform/UnpackTransform.class | Bin 3945 -> 0 bytes .../gradle/transform/UnzipTransform.class | Bin 3482 -> 0 bytes .../opensearch/gradle/util/FileUtils.class | Bin 1937 -> 0 bytes .../gradle/util/GradleUtils$1.class | Bin 1133 -> 0 bytes .../opensearch/gradle/util/GradleUtils.class | Bin 15808 -> 0 bytes .../org/opensearch/gradle/util/JavaUtil.class | Bin 2861 -> 0 bytes .../gradle/util/PermissionUtils.class | Bin 2573 -> 0 bytes .../org/opensearch/gradle/util/Util$1.class | Bin 782 -> 0 bytes .../org/opensearch/gradle/util/Util.class | Bin 9498 -> 0 bytes ...grantBasePlugin$VagrantManagerPlugin.class | Bin 3945 -> 0 bytes ...BasePlugin$VagrantSetupCheckerPlugin.class | Bin 6650 -> 0 bytes .../gradle/vagrant/VagrantBasePlugin.class | Bin 4170 -> 0 bytes .../gradle/vagrant/VagrantExtension.class | Bin 3482 -> 0 bytes .../VagrantMachine$ProgressOutputStream.class | Bin 2684 -> 0 bytes .../VagrantMachine$VagrantExecSpec.class | Bin 1318 -> 0 bytes .../gradle/vagrant/VagrantMachine.class | Bin 8128 -> 0 bytes .../vagrant/VagrantProgressLogger.class | Bin 1947 -> 0 bytes .../gradle/vagrant/VagrantShellTask.class | Bin 6576 -> 0 bytes .../opensearch/gradle/ArchitectureTests.class | Bin 2326 -> 0 bytes .../gradle/BwcOpenSearchVersionsTests.class | Bin 5182 -> 0 bytes .../opensearch/gradle/BwcVersionsTests.class | Bin 14355 -> 0 bytes .../gradle/ConcatFilesTaskTests.class | Bin 3725 -> 0 bytes .../DistributionDownloadPluginTests.class | Bin 14563 -> 0 bytes .../opensearch/gradle/EmptyDirTaskTests.class | Bin 2395 -> 0 bytes .../gradle/JdkDownloadPluginTests.class | Bin 6089 -> 0 bytes .../org/opensearch/gradle/VersionTests.class | Bin 5033 -> 0 bytes .../doc/RestTestFromSnippetsTaskTests.class | Bin 2489 -> 0 bytes .../docker/DockerSupportServiceTests$1.class | Bin 907 -> 0 bytes .../docker/DockerSupportServiceTests$2.class | Bin 897 -> 0 bytes .../docker/DockerSupportServiceTests.class | Bin 3493 -> 0 bytes .../http/WaitForHttpResourceTests.class | Bin 2360 -> 0 bytes .../plugin/PluginBuildPluginTests.class | Bin 4583 -> 0 bytes .../PluginPropertiesExtensionTests.class | Bin 2003 -> 0 bytes .../DependencyLicensesTaskTests$1.class | Bin 1593 -> 0 bytes .../DependencyLicensesTaskTests.class | Bin 12632 -> 0 bytes .../precommit/FilePermissionsTaskTests.class | Bin 3953 -> 0 bytes .../ForbiddenPatternsTaskTests.class | Bin 6472 -> 0 bytes .../precommit/UpdateShasTaskTests$1.class | Bin 1545 -> 0 bytes .../precommit/UpdateShasTaskTests.class | Bin 8308 -> 0 bytes .../test/BaseTestCase$ThrowingRunnable.class | Bin 405 -> 0 bytes .../opensearch/gradle/test/BaseTestCase.class | Bin 2586 -> 0 bytes .../test/GradleIntegrationTestCase.class | Bin 11634 -> 0 bytes .../gradle/test/GradleThreadsFilter.class | Bin 752 -> 0 bytes .../gradle/test/GradleUnitTestCase.class | Bin 861 -> 0 bytes .../gradle/test/JUnit3MethodProvider.class | Bin 2523 -> 0 bytes .../gradle/test/TestClasspathUtils.class | Bin 2184 -> 0 bytes buildSrc/build.gradle | 353 ---- buildSrc/formatterConfig.xml | 362 ---- buildSrc/reaper/build.gradle | 19 - .../org/opensearch/gradle/reaper/Reaper.java | 141 -- buildSrc/settings.gradle | 12 - .../DistributionDownloadPluginFuncTest.groovy | 169 -- .../gradle/JdkDownloadPluginFuncTest.groovy | 253 --- .../OpenSearchJavaPluginFuncTest.groovy | 78 - .../OpenSearchTestBasePluginFuncTest.groovy | 80 - .../gradle/TestClustersPluginFuncTest.groovy | 131 -- .../fixtures/AbstractGradleFuncTest.groovy | 141 -- .../DistributionDownloadFixture.groovy | 83 - .../gradle/fixtures/WiremockFixture.groovy | 80 - .../InternalBwcGitPluginFuncTest.groovy | 61 - ...tributionArchiveCheckPluginFuncTest.groovy | 137 -- ...tributionArchiveSetupPluginFuncTest.groovy | 237 --- ...lDistributionBwcSetupPluginFuncTest.groovy | 160 -- ...lDistributionDownloadPluginFuncTest.groovy | 224 --- .../org/opensearch/gradle/BuildPluginIT.java | 147 -- .../ExportOpenSearchBuildResourcesTaskIT.java | 47 - .../org/opensearch/gradle/ReaperPluginIT.java | 52 - .../precommit/TestingConventionsTasksIT.java | 163 -- .../precommit/ThirdPartyAuditTaskIT.java | 152 -- .../tar/SymbolicLinkPreservingTarIT.java | 187 -- .../gradle/fake_adoptopenjdk_linux.tar.gz | Bin 181 -> 0 bytes .../gradle/fake_adoptopenjdk_osx.tar.gz | Bin 219 -> 0 bytes .../gradle/fake_adoptopenjdk_windows.zip | Bin 490 -> 0 bytes .../gradle/fake_openjdk_linux.tar.gz | Bin 181 -> 0 bytes .../opensearch/gradle/fake_openjdk_osx.tar.gz | Bin 238 -> 0 bytes .../gradle/fake_openjdk_windows.zip | Bin 490 -> 0 bytes .../opensearch/gradle/fake_opensearch.tar.gz | Bin 1455 -> 0 bytes .../org/opensearch/gradle/fake_opensearch.zip | Bin 544 -> 0 bytes .../remote/.ci/java-versions.properties | 32 - .../internal/fake_git/remote/build.gradle | 0 .../remote/distribution/archives/build.gradle | 44 - .../archives/darwin-tar/build.gradle | 29 - .../archives/oss-darwin-tar/build.gradle | 0 .../distribution/bwc/bugfix/build.gradle | 0 .../distribution/bwc/minor/build.gradle | 0 .../internal/fake_git/remote/settings.gradle | 33 - .../org/opensearch/gradle/AntTask.groovy | 118 -- .../org/opensearch/gradle/BuildPlugin.groovy | 116 -- .../gradle/DependenciesInfoPlugin.groovy | 53 - .../gradle/DependenciesInfoTask.groovy | 190 -- .../opensearch/gradle/FileContentsTask.groovy | 61 - .../gradle/MavenFilteringHack.groovy | 55 - .../org/opensearch/gradle/NoticeTask.groovy | 196 -- .../gradle/ResolveAllDependencies.java | 65 - .../gradle/doc/DocsTestPlugin.groovy | 87 - .../doc/RestTestsFromSnippetsTask.groovy | 465 ----- .../opensearch/gradle/doc/SnippetsTask.groovy | 439 ----- .../gradle/plugin/PluginBuildPlugin.groovy | 261 --- .../LicenseHeadersPrecommitPlugin.groovy | 41 - .../precommit/LicenseHeadersTask.groovy | 199 -- .../gradle/precommit/PrecommitTasks.groovy | 70 - .../opensearch/gradle/test/AntFixture.groovy | 322 ---- .../gradle/test/ClusterConfiguration.groovy | 277 --- .../gradle/test/ClusterFormationTasks.groovy | 1017 ----------- .../opensearch/gradle/test/NodeInfo.groovy | 308 ---- .../gradle/test/RestTestPlugin.groovy | 66 - .../test/StandaloneRestTestPlugin.groovy | 106 -- .../gradle/test/StandaloneTestPlugin.groovy | 59 - .../test/TestWithDependenciesPlugin.groovy | 79 - .../gradle/test/TestWithSslPlugin.java | 93 - .../AbstractLazyPropertyCollection.java | 58 - .../org/opensearch/gradle/Architecture.java | 56 - .../org/opensearch/gradle/BwcVersions.java | 431 ----- .../opensearch/gradle/ConcatFilesTask.java | 125 -- .../gradle/DistributionDependency.java | 61 - .../gradle/DistributionDownloadPlugin.java | 274 --- .../gradle/DistributionResolution.java | 69 - .../org/opensearch/gradle/DockerBase.java | 50 - .../org/opensearch/gradle/EmptyDirTask.java | 102 -- .../ExportOpenSearchBuildResourcesTask.java | 124 -- .../org/opensearch/gradle/FileSupplier.java | 37 - .../gradle/FileSystemOperationsAware.java | 43 - .../main/java/org/opensearch/gradle/Jdk.java | 244 --- .../opensearch/gradle/JdkDownloadPlugin.java | 215 --- .../gradle/LazyFileOutputStream.java | 82 - .../opensearch/gradle/LazyPropertyList.java | 245 --- .../opensearch/gradle/LazyPropertyMap.java | 201 --- .../org/opensearch/gradle/LoggedExec.java | 190 -- .../gradle/LoggingOutputStream.java | 95 - .../main/java/org/opensearch/gradle/OS.java | 113 -- .../gradle/OpenSearchDistribution.java | 277 --- .../gradle/OpenSearchJavaPlugin.java | 287 --- .../gradle/OpenSearchTestBasePlugin.java | 225 --- .../gradle/PropertyNormalization.java | 44 - .../org/opensearch/gradle/PublishPlugin.java | 178 -- .../org/opensearch/gradle/ReaperPlugin.java | 82 - .../org/opensearch/gradle/ReaperService.java | 200 --- .../gradle/RepositoriesSetupPlugin.java | 128 -- .../SimpleCommandLineArgumentProvider.java | 55 - ...emPropertyCommandLineArgumentProvider.java | 71 - .../java/org/opensearch/gradle/Version.java | 182 -- .../opensearch/gradle/VersionProperties.java | 122 -- .../CompileOnlyResolvePlugin.java | 58 - .../gradle/docker/DockerBuildTask.java | 212 --- .../gradle/docker/DockerSupportPlugin.java | 81 - .../gradle/docker/DockerSupportService.java | 421 ----- .../gradle/http/WaitForHttpResource.java | 242 --- .../opensearch/gradle/info/BuildParams.java | 263 --- .../gradle/info/GlobalBuildInfoPlugin.java | 436 ----- .../org/opensearch/gradle/info/JavaHome.java | 58 - .../gradle/internal/BwcGitExtension.java | 69 - .../gradle/internal/BwcSetupExtension.java | 190 -- .../gradle/internal/DistributionArchive.java | 76 - .../DistributionArchiveCheckExtension.java | 45 - .../gradle/internal/InternalBwcGitPlugin.java | 222 --- ...nternalDistributionArchiveCheckPlugin.java | 201 --- ...nternalDistributionArchiveSetupPlugin.java | 203 --- .../InternalDistributionBwcSetupPlugin.java | 281 --- .../InternalDistributionDownloadPlugin.java | 213 --- .../plugin/PluginPropertiesExtension.java | 174 -- .../DependencyLicensesPrecommitPlugin.java | 65 - .../precommit/DependencyLicensesTask.java | 392 ---- .../FilePermissionsPrecommitPlugin.java | 44 - .../gradle/precommit/FilePermissionsTask.java | 127 -- .../ForbiddenApisPrecommitPlugin.java | 146 -- .../ForbiddenPatternsPrecommitPlugin.java | 44 - .../precommit/ForbiddenPatternsTask.java | 180 -- .../precommit/JarHellPrecommitPlugin.java | 63 - .../gradle/precommit/JarHellTask.java | 74 - .../gradle/precommit/LicenseAnalyzer.java | 220 --- .../precommit/LoggerUsagePrecommitPlugin.java | 56 - .../gradle/precommit/LoggerUsageTask.java | 98 - .../PomValidationPrecommitPlugin.java | 67 - .../gradle/precommit/PomValidationTask.java | 118 -- .../gradle/precommit/PrecommitPlugin.java | 66 - .../gradle/precommit/PrecommitTask.java | 55 - .../gradle/precommit/PrecommitTaskPlugin.java | 69 - .../precommit/TestingConventionRule.java | 117 -- .../TestingConventionsPrecommitPlugin.java | 53 - .../precommit/TestingConventionsTasks.java | 437 ----- .../ThirdPartyAuditPrecommitPlugin.java | 81 - .../gradle/precommit/ThirdPartyAuditTask.java | 418 ----- .../gradle/precommit/UpdateShasTask.java | 102 -- .../ValidateJsonAgainstSchemaTask.java | 153 -- .../precommit/ValidateJsonNoKeywordsTask.java | 222 --- .../precommit/ValidateRestSpecPlugin.java | 73 - .../gradle/tar/SymbolicLinkPreservingTar.java | 227 --- .../tar/SymoblicLinkPreservingTarPlugin.java | 45 - .../gradle/test/DistroTestPlugin.java | 499 ----- .../test/ErrorReportingTestListener.java | 308 ---- .../org/opensearch/gradle/test/Fixture.java | 44 - .../gradle/test/GradleDistroTestTask.java | 105 -- .../test/InternalClusterTestPlugin.java | 54 - .../gradle/test/JNAKernel32Library.java | 57 - .../gradle/test/RestIntegTestTask.java | 44 - .../gradle/test/RestTestBasePlugin.java | 81 - .../gradle/test/rest/CopyRestApiTask.java | 242 --- .../gradle/test/rest/CopyRestTestsTask.java | 180 -- .../gradle/test/rest/JavaRestTestPlugin.java | 84 - .../test/rest/RestResourcesExtension.java | 78 - .../gradle/test/rest/RestResourcesPlugin.java | 139 -- .../gradle/test/rest/RestTestUtil.java | 107 -- .../gradle/test/rest/YamlRestTestPlugin.java | 88 - .../testclusters/DefaultTestClustersTask.java | 48 - .../testclusters/OpenSearchCluster.java | 568 ------ .../gradle/testclusters/OpenSearchNode.java | 1597 ----------------- .../gradle/testclusters/RunTask.java | 244 --- .../StandaloneRestIntegTestTask.java | 157 -- .../TestClusterConfiguration.java | 193 -- .../testclusters/TestClustersAware.java | 64 - .../testclusters/TestClustersException.java | 46 - .../testclusters/TestClustersPlugin.java | 236 --- .../testclusters/TestClustersRegistry.java | 98 - .../testclusters/TestClustersThrottle.java | 37 - .../gradle/testclusters/TestDistribution.java | 40 - .../testfixtures/DockerComposeThrottle.java | 37 - .../testfixtures/TestFixtureExtension.java | 131 -- .../testfixtures/TestFixturesPlugin.java | 266 --- .../SymbolicLinkPreservingUntarTransform.java | 102 -- .../gradle/transform/UnpackTransform.java | 115 -- .../gradle/transform/UnzipTransform.java | 80 - .../org/opensearch/gradle/util/FileUtils.java | 91 - .../opensearch/gradle/util/GradleUtils.java | 248 --- .../org/opensearch/gradle/util/JavaUtil.java | 50 - .../gradle/util/PermissionUtils.java | 82 - .../java/org/opensearch/gradle/util/Util.java | 206 --- .../gradle/vagrant/VagrantBasePlugin.java | 169 -- .../gradle/vagrant/VagrantExtension.java | 106 -- .../gradle/vagrant/VagrantMachine.java | 221 --- .../gradle/vagrant/VagrantProgressLogger.java | 80 - .../gradle/vagrant/VagrantShellTask.java | 124 -- .../opensearch.build.properties | 12 - ...pensearch.distribution-download.properties | 31 - .../opensearch.distro-test.properties | 31 - .../opensearch.docker-support.properties | 12 - .../opensearch.docs-test.properties | 31 - .../opensearch.global-build-info.properties | 12 - ...pensearch.internal-cluster-test.properties | 31 - ...rnal-distribution-archive-check.properties | 31 - ...rnal-distribution-archive-setup.properties | 31 - ...internal-distribution-bwc-setup.properties | 31 - ....internal-distribution-download.properties | 31 - .../opensearch.java-rest-test.properties | 31 - .../gradle-plugins/opensearch.java.properties | 12 - .../opensearch.jdk-download.properties | 12 - .../opensearch.opensearchplugin.properties | 12 - .../opensearch.publish.properties | 12 - .../opensearch.reaper.properties | 12 - .../opensearch.repositories.properties | 31 - .../opensearch.rest-resources.properties | 31 - .../opensearch.rest-test.properties | 12 - ...opensearch.standalone-rest-test.properties | 31 - .../opensearch.standalone-test.properties | 31 - ...ch.symbolic-link-preserving-tar.properties | 12 - .../opensearch.test-base.properties | 31 - ...ensearch.test-with-dependencies.properties | 31 - .../opensearch.test-with-ssl.properties | 31 - .../opensearch.test.fixtures.properties | 12 - .../opensearch.testclusters.properties | 12 - .../opensearch.validate-rest-spec.properties | 12 - .../opensearch.yaml-rest-test.properties | 31 - buildSrc/src/main/resources/buildSrc.marker | 0 buildSrc/src/main/resources/cacerts.bcfks | Bin 103905 -> 0 bytes buildSrc/src/main/resources/deb/README | 4 - buildSrc/src/main/resources/deb/conffiles.ftl | 3 - buildSrc/src/main/resources/deb/postinst.ftl | 2 - buildSrc/src/main/resources/deb/preinst.ftl | 2 - .../org.eclipse.core.resources.prefs | 6 - .../org.eclipse.jdt.core.prefs | 24 - .../eclipse.settings/org.eclipse.jdt.ui.prefs | 6 - .../main/resources/fips_java_bcjsse_11.policy | 29 - .../resources/fips_java_bcjsse_11.security | 53 - .../main/resources/fips_java_bcjsse_8.policy | 34 - .../resources/fips_java_bcjsse_8.security | 134 -- .../main/resources/fips_java_sunjsse.policy | 29 - .../main/resources/fips_java_sunjsse.security | 134 -- .../resources/forbidden/http-signatures.txt | 45 - .../resources/forbidden/jdk-signatures.txt | 113 -- .../forbidden/opensearch-all-signatures.txt | 65 - .../opensearch-server-signatures.txt | 149 -- .../forbidden/opensearch-test-signatures.txt | 29 - .../resources/forbidden/third-party-audit.txt | 98 - .../license-headers/license-header.txt | 7 - .../src/main/resources/minimumCompilerVersion | 1 - .../src/main/resources/minimumGradleVersion | 1 - .../src/main/resources/minimumRuntimeVersion | 1 - .../src/main/resources/opensearch.properties | 13 - .../resources/plugin-descriptor.properties | 59 - .../src/main/resources/test/ssl/README.md | 20 - .../main/resources/test/ssl/test-client.crt | Bin 927 -> 0 bytes .../main/resources/test/ssl/test-client.jks | Bin 3673 -> 0 bytes .../src/main/resources/test/ssl/test-node.crt | Bin 927 -> 0 bytes .../src/main/resources/test/ssl/test-node.jks | Bin 3669 -> 0 bytes .../opensearch/gradle/ArchitectureTests.java | 45 - .../gradle/BwcOpenSearchVersionsTests.java | 91 - .../opensearch/gradle/BwcVersionsTests.java | 784 -------- .../gradle/ConcatFilesTaskTests.java | 102 -- .../DistributionDownloadPluginTests.java | 303 ---- .../opensearch/gradle/EmptyDirTaskTests.java | 95 - .../gradle/JdkDownloadPluginTests.java | 155 -- .../org/opensearch/gradle/VersionTests.java | 140 -- .../doc/RestTestFromSnippetsTaskTests.java | 72 - .../docker/DockerSupportServiceTests.java | 126 -- .../gradle/http/WaitForHttpResourceTests.java | 73 - .../gradle/plugin/PluginBuildPluginTests.java | 86 - .../PluginPropertiesExtensionTests.java | 71 - .../DependencyLicensesTaskTests.java | 328 ---- .../precommit/FilePermissionsTaskTests.java | 115 -- .../precommit/ForbiddenPatternsTaskTests.java | 141 -- .../gradle/precommit/UpdateShasTaskTests.java | 169 -- buildSrc/src/test/resources/ca.p12 | Bin 1130 -> 0 bytes buildSrc/src/test/resources/ca.pem | 25 - .../opensearch/gradle/test/BaseTestCase.java | 68 - .../test/GradleIntegrationTestCase.java | 230 --- .../gradle/test/GradleThreadsFilter.java | 48 - .../gradle/test/GradleUnitTestCase.java | 43 - .../gradle/test/JUnit3MethodProvider.java | 68 - .../gradle/test/TestClasspathUtils.java | 68 - .../opensearch-build-resources/build.gradle | 35 - .../settings.gradle | 0 buildSrc/src/testKit/opensearch.build/LICENSE | 1 - buildSrc/src/testKit/opensearch.build/NOTICE | 1 - .../src/testKit/opensearch.build/build.gradle | 77 - .../licenses/hamcrest-core-1.3.jar.sha1 | 1 - .../licenses/hamcrest-core-LICENSE.txt | 22 - .../licenses/hamcrest-core-NOTICE.txt | 0 .../licenses/junit-4.13.2.jar.sha1 | 1 - .../licenses/junit-LICENSE.txt | 22 - .../licenses/junit-NOTICE.txt | 0 .../testKit/opensearch.build/settings.gradle | 0 .../main/java/org/opensearch/SampleClass.java | 39 - buildSrc/src/testKit/reaper/build.gradle | 22 - buildSrc/src/testKit/reaper/settings.gradle | 0 .../symbolic-link-preserving-tar/build.gradle | 64 - .../settings.gradle | 0 .../gradle/testkit/NamingConventionIT.java | 36 - .../gradle/testkit/NamingConventionTests.java | 36 - .../testKit/testingConventions/build.gradle | 93 - .../empty_test_task/.gitignore | 0 ...ooksLikeATestWithoutNamingConvention1.java | 43 - ...ooksLikeATestWithoutNamingConvention2.java | 38 - ...ooksLikeATestWithoutNamingConvention3.java | 40 - .../testkit/LooksLikeTestsButAbstract.java | 40 - .../gradle/testkit/NamingConventionIT.java | 36 - .../gradle/testkit/NamingConventionTests.java | 36 - .../gradle/testkit/NastyInnerClasses.java | 77 - .../opensearch/gradle/testkit/AbstractIT.java | 36 - .../gradle/testkit/Integration.java | 36 - .../gradle/testkit/NamingConventionIT.java | 36 - .../testkit/NamingConventionMissmatchIT.java | 36 - .../NamingConventionMissmatchTests.java | 36 - .../gradle/testkit/NamingConventionTests.java | 36 - .../org/opensearch/gradle/testkit/Unit.java | 36 - .../testingConventions/settings.gradle | 19 - .../gradle/testkit/NamingConventionIT.java | 36 - .../gradle/testkit/NamingConventionTests.java | 36 - .../gradle/testkit/NamingConventionIT.java | 36 - .../gradle/testkit/NamingConventionTests.java | 36 - .../gradle/testkit/Integration.java | 36 - .../gradle/testkit/NamingConventionIT.java | 36 - .../gradle/testkit/NamingConventionTests.java | 36 - .../org/opensearch/gradle/testkit/Unit.java | 36 - .../src/testKit/thirdPartyAudit/build.gradle | 57 - .../thirdPartyAudit/sample_jars/build.gradle | 60 - .../sample_jars/src/main/java/String.java | 11 - .../sample_jars/src/main/java/TestingIO.java | 15 - .../src/main/java/TestingLog4j.java | 15 - .../testKit/thirdPartyAudit/settings.gradle | 12 - .../third-party-audit-absurd.txt | 2 - .../third-party-audit-empty.txt | 1 - buildSrc/version.properties | 54 - plugins/repository-hdfs/build.gradle | 8 +- 749 files changed, 3 insertions(+), 34560 deletions(-) delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/AntTask.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure4$_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure5$_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoPlugin$_apply_closure1$_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoPlugin$_apply_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask$_generateDependenciesInfo_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask$_getDependencyInfoFile_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask$_getDependencyInfoFile_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/FileContentsTask.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/MavenFilteringHack$_filter_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/MavenFilteringHack.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask$_generateNotice_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask$_getNoticeFiles_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask$_getNoticeFiles_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/ResolveAllDependencies.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure4$_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure5$_closure8.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$__clinit__closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_body_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_checkUnconverted_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_checkUnconverted_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_emitDo_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_response_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$Snippet.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure2$_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3$_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3$_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_parse_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11$_closure23$_closure24.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11$_closure23.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure12.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure13.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure14$_closure16.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure14.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure15.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2$_closure17$_closure18.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2$_closure17$_closure19.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2$_closure17.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_configureDependencies_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_configurePublishing_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_configurePublishing_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure10.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure7$_closure20.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure8.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure9$_closure21.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure9$_closure22.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure9.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_getJavaFiles_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure10.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure8.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure9.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/PrecommitTasks.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure10.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure19.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure20.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure21$_closure22.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure21.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_fail_closure8.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_fail_closure9.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_getCommandString_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_getCommandString_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4$_closure12.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4$_closure13.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14$_closure15.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14$_closure16$_closure17.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14$_closure16$_closure18.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14$_closure16.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2$_closure5$_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2$_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$EscapeCommaWrapper.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreFileTasks_closure12.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreFileTasks_closure13.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreSettingTasks_closure10.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreSettingTasks_closure11.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32$_closure57.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32$_closure58.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32$_closure59.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCopyBwcPluginsTask_closure17.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCopyBwcPluginsTask_closure18.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCreateKeystoreTask_closure9.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExecTask_closure22$_closure42.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExecTask_closure22.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure14.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure15.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure16$_closure41.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure16.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtractTask_closure7$_closure38.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtractTask_closure7$_closure39.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtractTask_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureInstallModuleTask_closure19.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureInstallPluginTask_closure20.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureInstallPluginTask_closure21.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure5$_closure37.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43$_closure44.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43$_closure45.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure24$_closure46.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure24.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure25$_closure47.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure25.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure60.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure61.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure62.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure63.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure48.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure49.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure52.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53$_closure54.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53$_closure55.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53$_closure56.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWriteConfigTask_closure8$_closure40.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWriteConfigTask_closure8.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_pluginTaskName_closure34.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure1$_closure35.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure2$_closure36.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure27.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure28.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure29.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure30.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure31.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure5.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_getCommandString_closure6.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_getCommandString_closure7.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_getCommandString_closure8.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/RestTestPlugin$_apply_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/RestTestPlugin$_apply_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/RestTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneRestTestPlugin$_apply_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneRestTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneTestPlugin$_apply_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneTestPlugin$_apply_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_addPluginResources_closure2.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_addPluginResources_closure3.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_apply_closure1$_closure4.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_apply_closure1.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithSslPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/AbstractLazyPropertyCollection.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Architecture.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/BwcVersions$UnreleasedVersionInfo.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/BwcVersions.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ConcatFilesTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDependency$StringBasedDistributionDependency.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDependency.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDownloadPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDownloadPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionResolution$Resolver.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionResolution.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DockerBase.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/EmptyDirTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ExportOpenSearchBuildResourcesTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/FileSupplier.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/FileSystemOperationsAware.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Jdk$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Jdk$2.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Jdk.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/JdkDownloadPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyFileOutputStream$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyFileOutputStream.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyList$PropertyListEntry.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyList.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyMap$PropertyMapEntry.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyMap.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LoggedExec$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LoggedExec.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LoggingOutputStream.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OS$Conditional.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OS.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution$Platform.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution$Type.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchJavaPlugin$1$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchJavaPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchJavaPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin$2.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/PropertyNormalization.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/PublishPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/PublishPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ReaperPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ReaperService.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/RepositoriesSetupPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/SimpleCommandLineArgumentProvider.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/SystemPropertyCommandLineArgumentProvider.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Version$Mode.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Version.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/VersionProperties.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/dependencies/CompileOnlyResolvePlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask$DockerBuildAction.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask$Parameters.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$DockerAvailability.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$Parameters.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$Result.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/http/WaitForHttpResource.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/BuildParams$MutableBuildParams.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/BuildParams.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/GlobalBuildInfoPlugin$GitInfo.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/GlobalBuildInfoPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/JavaHome.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/BwcGitExtension.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/BwcSetupExtension$IndentingOutputStream.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/BwcSetupExtension.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/DistributionArchive.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/DistributionArchiveCheckExtension.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalBwcGitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin$2.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin$3.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin$DistributionProject.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin$ProjectBasedDistributionDependency.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/plugin/PluginPropertiesExtension.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/DependencyLicensesPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/DependencyLicensesTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/FilePermissionsPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/FilePermissionsTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin$2.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenPatternsTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/JarHellPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/JarHellTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LicenseAnalyzer$LicenseInfo.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LicenseAnalyzer$LicenseMatcher.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LicenseAnalyzer.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LoggerUsagePrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LoggerUsageTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PomValidationPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PomValidationTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PrecommitTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PrecommitTaskPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionRule.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionsPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionsTasks$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionsTasks.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ThirdPartyAuditTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/UpdateShasTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ValidateJsonAgainstSchemaTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ValidateJsonNoKeywordsTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ValidateRestSpecPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar$SymbolicLinkPreservingTarCopyAction$SymbolicLinkPreservingTarStreamAction.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar$SymbolicLinkPreservingTarCopyAction.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymoblicLinkPreservingTarPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/DistroTestPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/DistroTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener$Descriptor.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener$EventWriter.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/Fixture.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/GradleDistroTestTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/InternalClusterTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/JNAKernel32Library$Holder.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/JNAKernel32Library.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/RestIntegTestTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/RestTestBasePlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/CopyRestApiTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/CopyRestTestsTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/JavaRestTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesExtension$RestResourcesSpec.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesExtension.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesPlugin$2.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestTestUtil.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/YamlRestTestPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/DefaultTestClustersTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchCluster.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$CliEntry.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$Config.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$FileEntry.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$LinkCreationException.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/RunTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClusterConfiguration.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersAware.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersException.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersPlugin$TestClustersHookPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersPlugin$TestClustersHookPlugin$2.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersPlugin$TestClustersHookPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersRegistry.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersThrottle.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestDistribution.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/DockerComposeThrottle.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/TestFixtureExtension.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/TestFixturesPlugin$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/TestFixturesPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/SymbolicLinkPreservingUntarTransform.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/UnpackTransform$Parameters.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/UnpackTransform.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/UnzipTransform.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/FileUtils.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/GradleUtils$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/GradleUtils.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/JavaUtil.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/PermissionUtils.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/Util$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/Util.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantBasePlugin$VagrantManagerPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantBasePlugin$VagrantSetupCheckerPlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantBasePlugin.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantExtension.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantMachine$ProgressOutputStream.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantMachine$VagrantExecSpec.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantMachine.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantProgressLogger.class delete mode 100644 buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantShellTask.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/ArchitectureTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/BwcOpenSearchVersionsTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/BwcVersionsTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/ConcatFilesTaskTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/DistributionDownloadPluginTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/EmptyDirTaskTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/JdkDownloadPluginTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/VersionTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/doc/RestTestFromSnippetsTaskTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests$2.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/http/WaitForHttpResourceTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/plugin/PluginBuildPluginTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/plugin/PluginPropertiesExtensionTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/DependencyLicensesTaskTests$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/DependencyLicensesTaskTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/FilePermissionsTaskTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/ForbiddenPatternsTaskTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/UpdateShasTaskTests$1.class delete mode 100644 buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/UpdateShasTaskTests.class delete mode 100644 buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/BaseTestCase$ThrowingRunnable.class delete mode 100644 buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/BaseTestCase.class delete mode 100644 buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/GradleIntegrationTestCase.class delete mode 100644 buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/GradleThreadsFilter.class delete mode 100644 buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/GradleUnitTestCase.class delete mode 100644 buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/JUnit3MethodProvider.class delete mode 100644 buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/TestClasspathUtils.class delete mode 100644 buildSrc/build.gradle delete mode 100644 buildSrc/formatterConfig.xml delete mode 100644 buildSrc/reaper/build.gradle delete mode 100644 buildSrc/reaper/src/main/java/org/opensearch/gradle/reaper/Reaper.java delete mode 100644 buildSrc/settings.gradle delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/DistributionDownloadPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/JdkDownloadPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchJavaPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchTestBasePluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/TestClustersPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/AbstractGradleFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/DistributionDownloadFixture.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/WiremockFixture.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy delete mode 100644 buildSrc/src/integTest/java/org/opensearch/gradle/BuildPluginIT.java delete mode 100644 buildSrc/src/integTest/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTaskIT.java delete mode 100644 buildSrc/src/integTest/java/org/opensearch/gradle/ReaperPluginIT.java delete mode 100644 buildSrc/src/integTest/java/org/opensearch/gradle/precommit/TestingConventionsTasksIT.java delete mode 100644 buildSrc/src/integTest/java/org/opensearch/gradle/precommit/ThirdPartyAuditTaskIT.java delete mode 100644 buildSrc/src/integTest/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTarIT.java delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_linux.tar.gz delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_osx.tar.gz delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_windows.zip delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_openjdk_linux.tar.gz delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_openjdk_osx.tar.gz delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_openjdk_windows.zip delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_opensearch.tar.gz delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/fake_opensearch.zip delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/.ci/java-versions.properties delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/build.gradle delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle delete mode 100644 buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/settings.gradle delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/AntTask.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/BuildPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoTask.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/FileContentsTask.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/MavenFilteringHack.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/NoticeTask.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/ResolveAllDependencies.java delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/doc/DocsTestPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/doc/RestTestsFromSnippetsTask.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/doc/SnippetsTask.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/plugin/PluginBuildPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersPrecommitPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersTask.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/precommit/PrecommitTasks.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/AntFixture.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterConfiguration.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterFormationTasks.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/NodeInfo.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/RestTestPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneRestTestPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneTestPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithDependenciesPlugin.groovy delete mode 100644 buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithSslPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/AbstractLazyPropertyCollection.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/Architecture.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/BwcVersions.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/ConcatFilesTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/DistributionDependency.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/DistributionDownloadPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/DistributionResolution.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/DockerBase.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/EmptyDirTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/FileSupplier.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/FileSystemOperationsAware.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/Jdk.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/JdkDownloadPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/LazyFileOutputStream.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyList.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyMap.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/LoggedExec.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/LoggingOutputStream.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/OS.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/OpenSearchDistribution.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/OpenSearchJavaPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/PropertyNormalization.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/PublishPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/ReaperPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/ReaperService.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/RepositoriesSetupPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/SimpleCommandLineArgumentProvider.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/SystemPropertyCommandLineArgumentProvider.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/Version.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/VersionProperties.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/dependencies/CompileOnlyResolvePlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/docker/DockerBuildTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportService.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/http/WaitForHttpResource.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/info/BuildParams.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/info/GlobalBuildInfoPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/info/JavaHome.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/BwcGitExtension.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/BwcSetupExtension.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchive.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchiveCheckExtension.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/InternalBwcGitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/plugin/PluginPropertiesExtension.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/LicenseAnalyzer.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsagePrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsageTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTaskPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionRule.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/UpdateShasTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonAgainstSchemaTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonNoKeywordsTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateRestSpecPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTar.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/tar/SymoblicLinkPreservingTarPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/DistroTestPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/ErrorReportingTestListener.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/Fixture.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/GradleDistroTestTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/InternalClusterTestPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/JNAKernel32Library.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/RestIntegTestTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/RestTestBasePlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestApiTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestTestsTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/rest/JavaRestTestPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesExtension.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestTestUtil.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/test/rest/YamlRestTestPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/DefaultTestClustersTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchCluster.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClusterConfiguration.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersAware.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersException.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersRegistry.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersThrottle.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestDistribution.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testfixtures/DockerComposeThrottle.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixtureExtension.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixturesPlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/transform/UnpackTransform.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/transform/UnzipTransform.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/util/FileUtils.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/util/GradleUtils.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/util/JavaUtil.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/util/PermissionUtils.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/util/Util.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantBasePlugin.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantExtension.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantMachine.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantProgressLogger.java delete mode 100644 buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantShellTask.java delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.build.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distribution-download.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distro-test.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docker-support.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docs-test.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.global-build-info.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-cluster-test.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-check.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-setup.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-bwc-setup.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-download.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java-rest-test.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.jdk-download.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.opensearchplugin.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.publish.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.reaper.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.repositories.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-resources.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-test.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-rest-test.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-test.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.symbolic-link-preserving-tar.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-base.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-dependencies.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-ssl.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test.fixtures.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.testclusters.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.validate-rest-spec.properties delete mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.yaml-rest-test.properties delete mode 100644 buildSrc/src/main/resources/buildSrc.marker delete mode 100644 buildSrc/src/main/resources/cacerts.bcfks delete mode 100644 buildSrc/src/main/resources/deb/README delete mode 100644 buildSrc/src/main/resources/deb/conffiles.ftl delete mode 100644 buildSrc/src/main/resources/deb/postinst.ftl delete mode 100644 buildSrc/src/main/resources/deb/preinst.ftl delete mode 100644 buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs delete mode 100644 buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs delete mode 100644 buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs delete mode 100644 buildSrc/src/main/resources/fips_java_bcjsse_11.policy delete mode 100644 buildSrc/src/main/resources/fips_java_bcjsse_11.security delete mode 100644 buildSrc/src/main/resources/fips_java_bcjsse_8.policy delete mode 100644 buildSrc/src/main/resources/fips_java_bcjsse_8.security delete mode 100644 buildSrc/src/main/resources/fips_java_sunjsse.policy delete mode 100644 buildSrc/src/main/resources/fips_java_sunjsse.security delete mode 100644 buildSrc/src/main/resources/forbidden/http-signatures.txt delete mode 100644 buildSrc/src/main/resources/forbidden/jdk-signatures.txt delete mode 100644 buildSrc/src/main/resources/forbidden/opensearch-all-signatures.txt delete mode 100644 buildSrc/src/main/resources/forbidden/opensearch-server-signatures.txt delete mode 100644 buildSrc/src/main/resources/forbidden/opensearch-test-signatures.txt delete mode 100644 buildSrc/src/main/resources/forbidden/third-party-audit.txt delete mode 100644 buildSrc/src/main/resources/license-headers/license-header.txt delete mode 100644 buildSrc/src/main/resources/minimumCompilerVersion delete mode 100644 buildSrc/src/main/resources/minimumGradleVersion delete mode 100644 buildSrc/src/main/resources/minimumRuntimeVersion delete mode 100644 buildSrc/src/main/resources/opensearch.properties delete mode 100644 buildSrc/src/main/resources/plugin-descriptor.properties delete mode 100644 buildSrc/src/main/resources/test/ssl/README.md delete mode 100644 buildSrc/src/main/resources/test/ssl/test-client.crt delete mode 100644 buildSrc/src/main/resources/test/ssl/test-client.jks delete mode 100644 buildSrc/src/main/resources/test/ssl/test-node.crt delete mode 100644 buildSrc/src/main/resources/test/ssl/test-node.jks delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/ArchitectureTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/BwcOpenSearchVersionsTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/BwcVersionsTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/ConcatFilesTaskTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/DistributionDownloadPluginTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/EmptyDirTaskTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/JdkDownloadPluginTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/VersionTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/doc/RestTestFromSnippetsTaskTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/docker/DockerSupportServiceTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/http/WaitForHttpResourceTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginBuildPluginTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginPropertiesExtensionTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/precommit/DependencyLicensesTaskTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/precommit/FilePermissionsTaskTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/precommit/ForbiddenPatternsTaskTests.java delete mode 100644 buildSrc/src/test/java/org/opensearch/gradle/precommit/UpdateShasTaskTests.java delete mode 100644 buildSrc/src/test/resources/ca.p12 delete mode 100644 buildSrc/src/test/resources/ca.pem delete mode 100644 buildSrc/src/testFixtures/java/org/opensearch/gradle/test/BaseTestCase.java delete mode 100644 buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleIntegrationTestCase.java delete mode 100644 buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleThreadsFilter.java delete mode 100644 buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleUnitTestCase.java delete mode 100644 buildSrc/src/testFixtures/java/org/opensearch/gradle/test/JUnit3MethodProvider.java delete mode 100644 buildSrc/src/testFixtures/java/org/opensearch/gradle/test/TestClasspathUtils.java delete mode 100644 buildSrc/src/testKit/opensearch-build-resources/build.gradle delete mode 100644 buildSrc/src/testKit/opensearch-build-resources/settings.gradle delete mode 100644 buildSrc/src/testKit/opensearch.build/LICENSE delete mode 100644 buildSrc/src/testKit/opensearch.build/NOTICE delete mode 100644 buildSrc/src/testKit/opensearch.build/build.gradle delete mode 100644 buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-1.3.jar.sha1 delete mode 100644 buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-LICENSE.txt delete mode 100644 buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-NOTICE.txt delete mode 100644 buildSrc/src/testKit/opensearch.build/licenses/junit-4.13.2.jar.sha1 delete mode 100644 buildSrc/src/testKit/opensearch.build/licenses/junit-LICENSE.txt delete mode 100644 buildSrc/src/testKit/opensearch.build/licenses/junit-NOTICE.txt delete mode 100644 buildSrc/src/testKit/opensearch.build/settings.gradle delete mode 100644 buildSrc/src/testKit/opensearch.build/src/main/java/org/opensearch/SampleClass.java delete mode 100644 buildSrc/src/testKit/reaper/build.gradle delete mode 100644 buildSrc/src/testKit/reaper/settings.gradle delete mode 100644 buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle delete mode 100644 buildSrc/src/testKit/symbolic-link-preserving-tar/settings.gradle delete mode 100644 buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java delete mode 100644 buildSrc/src/testKit/testingConventions/build.gradle delete mode 100644 buildSrc/src/testKit/testingConventions/empty_test_task/.gitignore delete mode 100644 buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java delete mode 100644 buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java delete mode 100644 buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java delete mode 100644 buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeTestsButAbstract.java delete mode 100644 buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java delete mode 100644 buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/opensearch/gradle/testkit/NastyInnerClasses.java delete mode 100644 buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/AbstractIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Integration.java delete mode 100644 buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchTests.java delete mode 100644 buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java delete mode 100644 buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Unit.java delete mode 100644 buildSrc/src/testKit/testingConventions/settings.gradle delete mode 100644 buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionTests.java delete mode 100644 buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java delete mode 100644 buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Integration.java delete mode 100644 buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java delete mode 100644 buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java delete mode 100644 buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Unit.java delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/build.gradle delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/settings.gradle delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt delete mode 100644 buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt delete mode 100644 buildSrc/version.properties diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/AntTask.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/AntTask.class deleted file mode 100644 index d7c3b753c37cc89c896dd5f8716a8255493a44b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7446 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 JNHPHJe*w}3oSgsw diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure4$_closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure4$_closure6.class deleted file mode 100644 index 1fc0c09a4e37da31a624299b689888f9062d6dab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1969 zcmcgsU2hvj6g^|RS!e4eCN70Q`8JJXhnS=vw4^O@Oj;tGfN&KFUaZY}yxy>xv3A#m z`~-do?*XJz@c@rV{3ZmP*|nXZSb%t_ERFBpnS1WJ=iZs${`l!<0Po==fg>Gybv=+O zl1}LM>t5(|16ki1`a$>8VCea(+;O$)`Q9*;E#EZ<8>+jfW7-`z&=LJ>Jd;}M6YKiK zx-qeCSr7sxFVy<+aXoO9S8t|q7P0~>hKsAavhNHdGD%K_Llyf+vi?vi89K4-P9iP{ zES%xFng$5C&!8j=d4ZX(ZaP6AuwH4IoFna=fnV?W6tSrX$L)c1H+S} z>Bbuc*tjTAEJv|JDVu>4MLVje1*!?wIT>UxV4SZNB^#aH5U@HOBJ4H=#1|xV*H?ag zUtp};!5Zc|dKk-aM^OspN_O=;Re_5g!!K1& z;M$Y|r>M-Z)=qPKuf4q*e;w!XvOva2E|5CugaOnvG?w2(10n9csIwKZv)EV`;{#(RBvY-NLHCB{Mh^A_BFk`c7wE zz`IzpQO9}#moPU=;cf_2rV^Pl#TIS}6vh>%ci`UH^l6dH|NUANa2t1QzHjfRz>~TP zxQivTaZg}&{A4kEu1Pt}+-bId-wAy)50A`3W!OLW%Ux$M`krt3O70Dh4rDm;EPj?g zQTu-6Go+!EHZ9kRb5qz+e72GbBtPf3m3b(A<&jfgcLnUW9)_-b!1n@cR4xZzV`Pf9 zkrF6=gLxGBSkKVUyUKNwUw4q@53s7Wl^=2WJDLIwuCFKV89a|G{4!xL;6?5kYmrul zHiw(*CVe0CKg0hE3s+C@3ymzcxE3J(OmKvS*U+TLWCsqD6jzdv>?B1NuOul1laGP7 zc*X$dtFx{ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure4.class deleted file mode 100644 index 5917f31828fc371f20a960e992a1d272e5222e3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2629 zcmcImTUQ%Z7~LmH83-vLP-+zG4J9O$luJQNTZPzGG*Bc6#;S3coFqe&nXJjAF8l}n z5a01esV*;XuH|oXsr$@KLb`~ozVI^h%{k}WXMg*NuT}--5?OUqpp#xV(9*Be)br1Yz z8eSC$m!&H(n&_JI*D(>rYj{H-=HZ%lT4i3tBvVAk4ZTKMPdoe9vS6l=j3R-Q!1!6! zrr|2VOv|V?iv*ibJm`or0Gm3yUSmk(T0dqmD^NSP9y%EYZEI1(yud{&vE9x=4A+%v z5iCZrfH77to5IuSdg7^m3C01t?JRjHFk#Drb73L^gh<2xQ7oI?*wDXc@t+{y1M5h z5NAA{h2P#H^Nv38TSvo&Krdke=aH5e!La9SVk$QAQ55&F#iXl|)J7CYbqVADu8(0G zA1msdGlLjX)8!L^L{~Ap%tsBJiLn+{f4bi4yuPK`vjQ@(&+vH^5AcN#+>R@TFR`vR zbb-Fs59DHpy}+8vFuiIx*(|Od-7!_QZL0@WVp5EU>v}!-9?Y7S+-TPJq!X;fxBPP1 zF&idbRxHa_d9*DK+Sr=KpH43t$0-l>FL6m@B|&GBy1em#^N4#3RYVPl(4OyWeqLpu}gA zsG!#ic#&^qjpHTmDeDTYkY}m;!d&IAWPtuPvDMzSRODB@k`E_;MEnSE{(;01rgKj) z7s77p7cAtH$s;U1##>KtGlWC@PM;f2B$8u%L{8Y?wSZOD!+7x*@qd4*Wy`yt;E^pQ)IRtVaE-I&jw diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure5$_closure7.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure5$_closure7.class deleted file mode 100644 index 60a2ddfa4fee0bbc3ea1103a02eafff6126d9a40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1968 zcmcgsU2hvj6g^|RS;yTbCN70Q`8JJXhnS>kQR#w{0$JZ0`a$Q@VCea(+;+9<`ra^+LXBid~@&;$BccqXw{Q|o4G zt)0xk;_%Y(?Fl+C~y40cpk3shsQ3o^)Vz&KwkN;W#XAz-!JMA&T#h%ZR!j<5Xa zp1?xoV#bS}#X}pm4=MMyQoc@_j1Z$XS>tQ6r9YraWE7{eHR0S@#4ZlP^ zfg2MFoS?EmVejF=PIG%X`Z~(vWr2(zaRSfUanK9(SI$u&Exbw%T=vtn=A{BMc!Lfn z^eD>J%0%$%t=E^K)S_<;u*1|QVSJ< zJYhz`rN0r0ogAeqY6UD}NnquluF$?4`u%9@B$8&j8Xc!k*)1#!TrqQ#5)r6Ply@>~ z8}DMJfI3!fT*1sVg?mq+GLguHA-3?ofIY4-xdM03r%#Gp{O`BI#x2|~@Ok?n0Z!|( zaR&=#Xa2L~ zg*x;HK0_KxY14A8I5+l=;;R)`Ao)4Ft;{>=E03Idy2J6@*Tc}2_xW64h05i?TZ~Mx zV59_!-(VI+zSUFo^Qv;)Jz7O7_bD diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure5.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2$_closure3$_closure5.class deleted file mode 100644 index a6d5829dced24d9e9fb86e220d8e58c7cbc6fc54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2627 zcmcImT~`}b6x}yT83-vvpi~s=7fMJdDPN+ctwL-o8Yq$o#;S3c+=QXYOx9#l7ybi( zi0`PCQeA$$xt71lrS3a33F#uT`ohc1$-VdNd(J-R?8#sM{QMh$CDa5A+o`1Oy0jWn zcZ|Js#nDSunO<$0)zW6QSuw4NqG4NQv(j{A)-=??6|1yiyR?f&)oyTomS=oxu5Hb? ztwjw&V7TJg_QQj8RkteXjDK1~SYTR3VAv(Or#BnC-#g_rE!V8c^j&F5M|WkZ?Qub1 zs3W==-$9^oZi#5<73eA18NFH+m`h~UO#x4O-AtEF5|**+2f4a5mZ!4&`a|7M^WN^h zG~DGFqUaZhS{`Y4cwFFewv&%7S(c8p47n^2pJ=!`+09h-Mq|w?+X6}N%2OQ4a+UC= zZIRF5Ed8}&kqGM<0r45*zF}IXdrRO};&fnLR=P(uwJk9DOaN2cF%08U6cLQZa1jH2 z2;q5wh`VPt1f-YAIrke$7%19JS2}AJxg@RZnbWxn^cPiBew9f4N#Sy?V_FprFAH4i z%7}(n1;Q2S3XCMWmi%>0MDZHl5QurWrkz%m*D%Qv(Q!ksF|4PZ{cG7TQ%FXUKuTcz ztY*`2m0+f2RGTG&%_r`6WEp@>o!zc6q;ahuGnf^qo!bbVXhGXr(l9S@kxb;nb^RM5OH4)VnKZdr+rNx*)&j*k9|r zs%Y;Lz~KBx+08LOY+nNXX^yvgAgD6$8*c^dI=a;;+fMC7%(y+P0zWm;f$HT9$E>@n z2d-2nR!VxEy{zF5HN?;xZr;ux)LHMPvnSFMh3 z#(X;azP-iBJI2JH91R-+y@Uyzhg)O>Qcr1OB{uPK6!)-2@{}UA5d~6R()hpYW60wZ z6*^^R5OF0gp9&rpccG)%? zCS6u6eqZ?Eur2CrY|Y|_)5}Kk=iqH>gx#Q~F}^*!#74^5O~;U`eKAWGBjB_l91khY z2I5ggFW=wdISld7!UgURV}wu1Uz-SX1sF-DrXS<-)$5V5NV517#>OH$-*a7{%x99Q zpw|m{k#A*<<0bAX>k6%qXQ}(bT;(@1K>vo=YVTSq@+)2`gp-djc7!+oK;j6~xhI$l zVJGzq77EGa5tbg~?I*Yq!XbXAPZ$+GV-Wvx>=}rL_pnDp4K7e)B$gN3sP}uO9or0U z;uh~0SZT+x$}`HVH<>!Zs*fK!!S89|t6Y7&o;F@j8!vLlcXd!6#9-qA7kh62NbfYKQX9Qk5MdS we?)=F>>l!{@KWIj4g8H^jh!0CK9`3W%4d{o;Av^526OKU-i)5%RTFrA4r6I}fX zzWWz^M^TEpmip#e{w9~Y@62QxNno*-=*!$Qcg{WcoPGA)cYgo#$DaY5gD8-9X{K%2wHtQ3VL78!({<`rqwUFxWh%#Mr*_Q^Xje_!^*MivK9O}g zvCe1^0>cf@b?7o5I^9Rk^!TQ+Q4;M`b6#g8#DT2?7A{Cj?Bz3tR&ixtfq-i7hXUE{tH zRd{{vm0F50lR2EkS%Hx!PT@Z~py3?pQ}^5rfvf%Y?CwP@DD2v^LK4b%aef!x0ZH>e zKzUZfr5vVIsTrT75;*ki{3xv3qO;ue+%JrEMUxo@FezP1fR5yN#x9fe>`*M+vBGq? z7qg2sj&#}(c!uNGU2kJsgZcTC0;@-VVzFK_J*ySWYz9(!OxKJSkC=ve>Y8cz!Lqx& z+2T>7mTspU>txqVC}I5$la2}&a`+I}BC7uB0uz18dfN6n)^JOea$83pFDVWD zRA8(xxP8Q3LzTMFNj16}E_H9;!SHzlvM>YdIeZ2(P6bZt(jl>^KGdl@ox6Rq%O+Ek z`7XLmchG!`{E~^I-V}s0l3q~t`AFNo8yw=`WmtH(mSd6H&V)+)AOgp>} zc?G%-F9dzg;lDswndIx>Wk>yKQ0|y()2)$YOK#gUr6L5yCq?byt%poLrLGx(BQF__ zIR!b#FENB+{{3X>w-@{PyvMgD($F{_DNY>Q!pq0c4-^K9)$ehzFtA$4oX-}r>TRTu zUHyh$0ydwM7~u0TUd17f%6bj2^P92`(@KSw$|4 zq4YpiI?C)-{`3XpJ6<-4mrdeb zWg@8%XBAH&G!z#+RD6uR-mrXYdggxr5?I z2Zy6<%f~~huL;OweDdI1+^J0bhCwy^7`3&^L);-yjR#?Bstr8kd;Y+%#cv092LTMIeyMD!zDUAS}ACM1Gt4Na{vGU diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin$_configureLicenseAndNotice_closure1$_closure2.class deleted file mode 100644 index c0f52d2a876b3c14b8ee713ecf15b50282e2a756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3829 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 OOkxZ3`3+|YX#WGTOD3HF diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/BuildPlugin.class deleted file mode 100644 index ec846c9639135a79ca39ad870898c95fd143bff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4430 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoPlugin$_apply_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoPlugin$_apply_closure1.class deleted file mode 100644 index e6e93bd67f4dcd09021adbae77d8f9e9fe054898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmb7HXAk~Ce?bV>ImwG%J((>9-)=jku#kIB>ay)%Q5VMythJEJ@Ip5;B~yyxhj z|NhJ006dDf1Wwq_QrfOct0oPnyqsQgjD?C!pOM^JkXG50wJ~eao~qQBOsl74RI8P> zQn_N+>W&=HAO!X;IkvsJmaZ7qQaa~<(a<80QliWDf?PK0H464lId#i5S7drrTGBCG zxzM=LDsUiN?NR@3AaSS0YKRH6dIk&J*PBj@<%U)!z}g zJKyZmv|N-9k&uG|9X&PIaLsbAV$?ib1d^WMEpE!i3ZI-drII`Z~l_8YWNUN&U~ev>){Ut-ff~E)Vu?mE6KAfm(!GA_DtE zL!hBopoI|-=NVwo| ze%YLNJ?jLQ(J(4-7b9D2ix$64eB&g}@H9b-13Fqh(YCTtbBlIytx5`c^u1%{@pTv*Bw%1Zj!&RWlojC?yk0OaUBkO0&`qzK0d0Iz ztz#oDKEfK7n6(rWT;6vFb@)~!VB%67%ec%mRL!CxQJ_D>jqTJYumVe&ZYR)=4n@+R z6zB~FGo*8AAeSfBO;z)Nz{zIy>zM6SAUjPRt8ut^$`{=5D}gmEst=zg`S+-7ZE9%; znhMB~i|K;B=r*_KuAZ_ZIaK7DuayRvQoR?Ot`=N}M8VF_R$r6uw4XjX+gdc2>Ksbg zwPW~#KpQvxUM`ws^Lbo17RK8=aZX z7RM$hN)y@f;TWFf5JF{5Y<7pN7_Km+)5C?y{OoXcC{J;d<5OdNPEO?KLM1-WrbE(; z;p^->zHO^4Yg#|jNt)(41-1Bk)TGmD<=j19rJ-VSa?j%aj7YveLOXMH-XRN zX*EB*#PK6E7q%NcJkc7yziIC9^C~oUihX|&$1C_@0-wd_R7(Gt5N}l3mITr8lQ>>O zDuEaAZDr-p*wCA^IAA`1rul_B`?{JS{c-Bp|36Iq3cqfnfxlrUH986#?WQ4`4L(P@ zQlpJc$Y%}5RGeK@3#*?wh#hcr@9cx`F$S9B=JzO_tumf$r7|f96MlKXOe{1#l1E zhxhZT-adeX{HESM$hV01rj)mE_W|?-D*i>4s)s#K72_%W!AyTjKa@%7hcn4Hao{?R z+`>ZLa&tb}pH` zj`K>>4UFHyR1|OE@3f``f8v^e_z$k|MQAAU3q0$iID&_86!UD4%JVMIw<`_Luizt? zrgs9z8eZlpQF*ERUe08aG-9qL&=%Ry#+dlpHY9g6BzH63*({yj@n>fsT}5&icRt2sh(cnK?@InqApbCds_2o|5lh}g^^L1= z^8N3iUG3h)r{?n4;PhX|XB0@nbBBey=Uwd6;4;}rAA!6{;-K{AlKO-C7Yj-Kkp5+^ zhxKQ;KCFM0>q-4NuBW{H$G!d2`q#LV)4##>jQ%aIGx`e!WwOd-R(&A+pqJ;se*HUt z#rMwB(wA@Jl{r0D#<;{v8#mpP#>t*XDTj wm)Gzrq5bV0&UL=e2YN)FA=L(&;S4c diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoPlugin.class deleted file mode 100644 index 322b0bb002025e8051d9779aefa469a315144593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4135 zcmb7H`%@d&75**=uaMUmuZ?XIyNPRRixpTgb>k$mX)$SBVz7xtaj~1yMY@PJVprK+ zNNLliO`Ejo``z@Brmyt4=@ zmMy20y)tuC7J}TUQW8m86+2r!eQw)p&kc_c=0;1N>n<%h6TiRf%XL%SmCz7p)FC4)ix-zuhC|Yz^-$)V+Vr*t?AxLfg?5Hz_T2G z*7X*$7o{UTE0D!dLrDh1R=J$F13Bb**0R7ry7xxB=Zj8YFUV|x=Y5{f)&z4px^OUs z797%HV1Ej2=oZ-DL*@Apl?|^2y3@TipTgX4Y*EYoIHI&1)v*_y?fmwDKq8p4eSuS< zOFOMFhSp|PDrJUqf4W)yD15r=lYUjsN{_`VHN1~o>FpKTJE;OZnZgOATUq;13yZmx zkqR7OXpL3JsQS>a1WpMYY^=U&C2M#{pkM86E0$)EYZxFjDiZ=H;v9{0OcO6(&7segK!Keb1Ja=wq z&{Z?qGadHIbfN6}i=I5K;flcE-Ce0sc5MITs(tcQ3gfs+ZmU%5yphW``i<>+xLKD9 zBv~90r56pTG#Zfl|_9(X8pdf)vOw`T!>S=sJfj+Hc zH+02UmOwhT3}Q%MLqR~VxvGj@;C#LLTDEtpkW?cvn?ez#s^X2fbl8eni?~TXtg-Lr zjWFV{7#*uj=(h0ThP;LaYV>72Qun26iW+EK(W-7cOYXd+f;qR?z!v$yvz=0IM{THX z1N!`b8v9-}>UajhZa7#J*iG=+!WHQSyePKNXrwZx)f%Fy^}#0ZHy73MES8n+Pt!Kh z+_ZhNKJU%LA+nFwpKNM823+1;&*5{*`tv%Dqense1%Zwpb&1qn|3~X&Ijdyz?rc!s zs0Vurp5*vYyZpncVfr*LxAcuV(HaVqNgOB1DWt>M&rjkj>`+gZY@bz^#8<2Rs_2w^ zU+3&oaGhDZL?TM!o4i!x>e%+sy$@}_!Rzhx;kN>N8*Tv37Q?)!1dLIa^)YFAwl!0h6KdfIceM)gr0v^$G2}R| zn(|zSgu8dtcI4&7g&FBZr}uCKEXB!I2bb&)X%(3Ycz|N#0%b3i1h# z9XQ4q+xXGYj<(K}VpyQ_W$Zx*pD(BhknyB zgNu(Px)VHkd7wM7j`1ne?7NM8RbIK+fV znam32Z-ol~!j*N}@hLUJB~oVashrzoW+<-!sAgpA`Dfro=er4l%JCk$?VFjtH7q5dOvZ^l zi%&&jhbg4Y=vA>be5SRj)N}Z3Q)8b`Al}CzlI+Pytcy=&tliA8LRRp?rbtw1EM&4z zl%EWJQ+PgL8m95(ylG^Nm${xdzQ%RX_y*U@#<%jJ5(<(KBEe(CLJ4*m-~AW9e~DTB z;W}QKGFn*sKMgVAasI0o9UqSDq~FA=Z(|?V75w531une%;w2s%NDEjNS@G2Ae lyUj$h5DvVH4vp;5ioeogiYmwX{5|{eZ+xo0Q^#A7`X5YDcgp|( diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask$_generateDependenciesInfo_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask$_generateDependenciesInfo_closure1.class deleted file mode 100644 index ac10d0e0d391128ab656ca9f02076de90e095f87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2757 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask$_getDependencyInfoFile_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/DependenciesInfoTask$_getDependencyInfoFile_closure3.class deleted file mode 100644 index c12388ff198b6c2a569e6f131cda9577e74a14c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4621 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/MavenFilteringHack$_filter_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/MavenFilteringHack$_filter_closure1.class deleted file mode 100644 index 15cb267c5085d2f9d60f6b295350d816fefa905a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2885 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask$_generateNotice_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask$_generateNotice_closure1.class deleted file mode 100644 index 6c5c36bcec2d50f595727c663007591b8661a923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4247 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 HT?*P?ArQBO diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/NoticeTask.class deleted file mode 100644 index 39e109e227923118b9cf7c41a4b11d3c4f268bd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11031 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/ResolveAllDependencies.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/ResolveAllDependencies.class deleted file mode 100644 index 19d269abb4cbd2931b086d3699aa8ebe07583f26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2563 zcmb7GTXz#x7~LnmOq&dnw$RGO0<~Z-*ny%T1cB0mpy48^t>UGgPEOK8Co^$og7PbT zmOtPNFRtZM%Y#c_UH&GQ`%I=}3MmU7GUv=W-~PV+T_^wi_w-Ky=g_h+m&Y)iK@8zk z0jDuP%!>~SIFAd%5V&M^mkYRp1q)XT$YasGEDhjV9@p`adAX4%_@;%AEqo$ixq)BP z^+;f}{6IdGPAk@)vlw`ua$_C%C4s?;uKO}>g-YN`SD}mLAgnv}P*y$V$fkB=80(sJ zEkD)`wW1?U z)eF8K#0fuYKK8sTv5Yn&XPM81?SSlYrGHhWwyFZNQ_q8T^MCq2tyfhuRIZGTTRXxd zP|7OOeyl=Ydd@b0>2T;*cQBpY)6QiYY=Kv%MQA0K?&dAoOyfM_$;NtBPIkgJdHS^+ zWoC0a7U-hr6w^@&TA{11Ym?|h-Lp1l%2D8yDXkYXy`-Z!)a$I)z+Vc!_q{+??|QAe z_HB&eO&cTFXQ6E47H$g^uLeO(fNb7U@kUUM_V(jW5qG(KTEv8nd#G4gw(%KOidg0G z=S580_yYHBe2K3td~M?!tO=aYRQl^B$i}x=vmvoAaJb{pTGeSw%DOUYR3qGWffyRcj_EE$D<>AI>(o=3X#WM@XLh6+j3ss-US>24UGGLd=4 z=9#FOXD6Nu{Vt<`6HiBrJLd=oBIm;hr%OfFl=mn*W30N0Z_5VTW#2a6B>2pW_Uj~B zOk$ZiW0yrStw*amCiNXDOHsz0mA1IR(6-_v))f_(EO<5=_|C?xX_6^S3ruwEX#Zib zshn~$D%e=kjQk*cBv5E{-Yjse_LqZTv(*%^Z~DFp7d;t8is%1k3n|stZqXak=hq~f zYy(S~dP~V?PIds7A2n50{M9epCSQ(C>n(|Ms(Dd*UPZH@EwG%9zYw2p{s@e}T#ju& z#4kPgQHPmjT=#RA!zlW==ZNF;08bpQMy7A(cjSIaL=N)VpB$dVA@1$A01o3Vz5(L| z=Mr$4s{xPC{ED6}^a?zsdTgOT$DL(%137fG<|z-%Q_q=<=J8bX5#AZQN4XBrfeG#n z#UF_>xU(}`7!-JnzMdyDePfoyBpSAnG0dEc6yehpvcX-js4m zZl0?N!2rqa6A5wfL{(qooxaJbBFM|8pVES@0k$M+Ru6e5Q Z5h7ru&hXvve~&Wn)6a9su0-!X{2%T*uZREu diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure1.class deleted file mode 100644 index 71a0f5e89bae9a2dc9447ae51f28f30b75dab381..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2577 zcmbVNYj+b>6x}xoOgkO=NDGR9f>ub=LTEui3TPW1mZpGBt(GcbI=M*)rZaJ7f~!Bl zAL4feSE;gme3G^NO)PcanQ0qHWPxAq+`0FjeO~*V^Vi?M{087G9tfQC{CdG_NH>tC zZ><*UzFBo-q3T(M%bpc1$RNDsH0!oITrnFBXT4%MUeNUAxCS9GSob~e!Fs_l-Fl%I z-)Kk+j44>ltIAcg84xsjIhvP1HIC&de^zW1HE;z$i+0z|2=U)w1HCh%RnrxJLQz={*)h?jFRG$XzV>?dk#rEOm^N&P#f#5vG#TA)i& zOOch3FPIb^Qso(()$tL|35>rg!ez_18{zbNC{w=ZL!KYFLKK*qUF%H z-8vf+dx|d`j%ktlH_4?=;sR%w&sU|attg__GN}rU9lM1tv0e=e2Ig=>5s(&4yg9Un zuU=|n%OpB;)IU7STXQ9=9R%!&W+Z@ zC;e9S_yN?^+q#+wac@2O=AG5Xy>8liU!d=$@y9k(WJRc+=rQ7prf;hzu%H$e2TRzx zKW8?Q|Gtv#${WqK73n7@`{(0^zGw$FMW$TWQ&sP|tXN~l<$#QWDEZrW#Z^O>93d@N zJ^HMdy{2!;tF|LC&M;)yL3bnFud8YT`oBjX`uWvWh?#fJYBd_Ty8OF{G$nwZP3*go zA02yww|`XRfXDSPFTnx1AMfz1b_Z~fcWQTtyA=0qS6mg;GJ(|ly@Z+@%O0K>&Ay)< z{u%iU9^!Xiq|xANK>WigMI9QB<6CZa6Ci`rk;;7p1+TYM4q`M?sT7^yolP1aFZ3D!p1hdpLWmtfH!tK(Zze zjzpN&@G^1PVfA(9IwcW5E z5Ai#;U6iHE$0xg%zo|>zcV-|^vbtKo%-orK&pzkuv(LGI|MSc50Is7fFy?yYj9ZmX zO`4vyl_`5>u_7}?*UH>(mBX0=+`DOeS^R`=wn1|iT>_FVVjPNrfy z^lv`%KM$q7tS9g4STW0P^M|!3&i-#7c1kN6JcO|qDNWN--8d?QT z1wjg&Pv(?el#N-nGfSTPKwADpYSn;_c7d*ens55Hm93by+N@J@1=4}hiLhmq-!q+B$@R7y@**{F;~hoKAb}Oz`Jm$S(l>)j3iJ{6sD=->n0{9y zlrTFDLjtX;Xi5fzJQh;$lP*8N6&=IK2#ma}3G$X_SN)kCUn;##7tJcE)-WP)Mk(nq z5P_klOg4|&z=!xq$0$BFa0VT1%>8=QL$4xh4W9@Y2N{MoJBIQj7vK1A#dO&ZYiOE!9jYoUeN$jL$4cOs^Q!6Ds&`k^gPLaNS>Mf@)#$r3XFGDCzP%~E=uh8r zIN?_9noW~w$8lA&x(*x7n00t#1SCp+cHVN-EyM~@O? z#kX3W#|0XyRXS9Y0yhf$68BV`lYFaF2ElV_v4>=cA8X+2+z#+J)H&ieLbte99xs!J7Nn5o zTA|KFsDtS}TusD<h>-*LELaEI0HFo$BvCZmi`VV{B*-)4MbgfkR5Q<2iaXjFVUD zFT(2&*ax~3w|~RubHC#5S|XNyig{(JO2F$XI+`UlD#YX?EdGUVKKHQlCk^JFA+e8D t8sA%^>Dpr~rk~)OW4?QzqeG(><0ukBCy?UiTh>+b-GVmeU*akT?LS(nU*P}% diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure3.class deleted file mode 100644 index f84f74462bd67dc7c7afcba4ead2eefb0fbd6f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2289 zcmbVNYgZdp6x}zW3=C5qfmX3atI`qzHl@`Td9*_MkP;pxh*H!rOm4!|Fq1Wz)WuKm zhxi>^7iH=4@yV{`Z|YL_of$|dSzWDPX70?rXPhxS95%ON2c#dM|!3&3r7~G1kN0HcR92XNWN}>8rlR- z1wjg&OJ|PT7v_-xL^1W*?c4&5)9%t-$BWKf`MRJ%c6bXUuXrXZv!- z^UPg=tI6Sw=0QZ4@QsfgU7uwBRj)7Ju8W3QPoG|EIppuru%0 zeCf?OB+9X*K;mQ~0v&nfD$JBT6kHXVz@;WU3^%in`=-~13j#6Qr=sfQt!{hn_vThv zYWPr~FWJ=kd^Qr7@0m`u=z2SKd6AlT@t&e)h`@^NTu|`^>6<|%1^S8FsNth6rr%u; zCCpC4h(Mbvnvww_kA)Qcq|1+RS;r{S0%Nagf}G{q6@PZumr8Fl1+zk`HH-0nqVTNH-OgFj@lN@d?(Pn*OU=mY0 zCNLcWALV7>7E)^CGYV}`$-1Ep1{#Fo$znR^7X1}jl%AvxS(?5<%afcShfNT5&vh2$ zRh%m?$C@Xwn~ZZ9;#j?NzGpin4foiQZw{zo?xi^p(zel%Rp=p@Mm?CwrTc&*Cqp5tA>oqeHPf?I@2;u`HOL;52Z)$w(12l$)n9P#U+TU;xTm&ij4hLPf0 zq0UCAL#cgSNyL6cTj~JU_nu%pJMtV|>hA$=u4kWOd}JRpdo&S&LrS&t1$s41kXPz2 z!W#(K2YM2Bf5YeVzvBLSB9?lF1!bv9!0ReHnjtkR#N-n!{e>Pr_p$mX4d$OCaey@% sKUk;f`co{We#SS)eD}RTr$#NtQ6Pj)AjQqMtgGa^1?|kg$W;v5e;_Ph*Z=?k diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure4$_closure7.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure4$_closure7.class deleted file mode 100644 index 51a7cc3e6f9f56b9d924ca4a0a8f5440c74192de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2584 zcmbtVZFdtz6n-WNY`b0Bl0voet`X9-5U2=f0cpdFwJ9K}m4X9iWQo2#15rn6eL94~13@^r25ZlP(h4U>xBoJrqfcNk7ldYLTP4Q~f*H5&2^7kSF3Gw> zDBE-Ce*5gCfL5&%VXh<~?vTWJ+qJ`s0>=_aZ09h#Ah0{vkfCB;u|qlK`{t^^M1J&c zGKqFvEuIf}zSy}qXHhe==gY2aP-_2CHKBewccYWco&LxD^Aa2!y`r26fM0*_8aG z%7#HqmEcMwvN;)=k$40~2-r=2V~cSf++-1Zqv4c5kJ5=!9wE1|iGET5AKfb_Lv3$E3POpYiRqa&GY%-@B&I;^O;@u!3FqRLh)lcUL1kpM^$h(u2RuCC8(~-JJ6*Y zU)GBiuO8l#bxFZllBpTaS-xaL>(pITuvKPfIDfb6Y9;h-w=t>eTWfL}I&Kfj%wg!o zTRpf=Q6+&1oMCnoUW_vwQwq1F> zwX!7r_MeekaiSLNz~+@H*Y#BOdoC;2m~r_cM&XlO4qS27drPfQp37cMK(BZ$-;!5t zN8%I%kO5y6qz83XRlwl)7{DOEx(Y5c&c|8xdyXqyU0}1#@Y}bJ;p>I5@n?AZM=k|i zj)$X8tYZZ4a0R}9`>>yTYIcCL6z6;sIVvcVKuS{k2sJmJJvdPq&mNi>dyZTR&yi2# z5q{-%8XiXj;xFRTl7=xfIoU~=3@c3;9ws!n-7!3Z(a5keH_km}?mWNhltFXlf>^_e z7(ca%uX8)XSD3WOvE$6QoGXjR8JP@tmFKn$GBJ?dx-({ zcO91(%TI7|Yz@~QDGQN7%C`R%hBRDaq***|yb=1V?CvUL4`$~oh3uj1jf#q}N(d#} zK6WHZ8?ZNf>u1c*(&oYo++NJ43eRv?8BxdiUbl~z+Nk-*xc57Db6msHZ@e)364`as uW?!JX$g7PfxL0_J2U}?Fd4+zB5>CS>u1-i5Mu(yZ_|2e~p$a)mLHip{O0x$5 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure4.class deleted file mode 100644 index 649a0ac5b487598ae95e3ab34c615714aa9d51da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3415 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 DDucu3 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin$_apply_closure6.class deleted file mode 100644 index d3752e4729291e13771cc88f9fb7fc06037df75e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2888 zcmbVOYj+bx7=9*A*|IFXq~+2=y;ew4N&pqKEoeyrD=E|_6bowDZYJqMx*K;lVD%UH zL;Q}QrALp-CppL8#8IEw-L@%>oZ^?+*_nB7&-=d5%wK>1@;iWY_)g#h*Q@2+hID*s zde(BT=9!hc%vD?~H|<(}N&3NDy;-xJk+Run)K|+^-SwNEJgY$n^w&Jsy}z2Pn@%m4 zk9IV42%J!AEw>_<&8APK;VG}_1on!|U6GFT%s^H)B{~HTY&Ul@k`YMn)pktrFkmatdxX!e!n$3DpY%ckM9W(>mb$o$Ch1SUC zWmS68vE+n6?}#6mfoB3#}z8N8TeJOOc%}RT(G7AEIBQ+W1&3e6P2Xe~u%vFIi>CEl+zQviac;4sv z+=k$Ufde?GBY{H#$9LtE0<<54I+7SNupixfDScER87$jGay)e4|5O;k>Mpy@KzcI{ zF(>>2shyYz>?$Gvq1e6a%hAZouuV?mjE+-yS0G^%h5oHjO3R-6z+9?J4QB<0Rpq^; znff;1V|Ueavu1;tJ-Xpc;F*qJb-k4>THyBn(ALIz4P4SK(+^5+X|=&RIJcX4+a~Qi zE~ubBGVnG=RH08XGSxf9u&rlhV1{T34ASk^%GlhZGc9S2Qla6JK$ikS^*U8<#2iy2 z7uj1^@QIGgm|=jb?>99HjJ65rzswuBih>Ga)<6$>Rli-2iE=k2q~S9GW5d;m!p^sv zkE$ipo;ljFnt>upI_7aBQoI?Lft#3C8=te6M-magfCspAfo4BWzPm75B$ zqpjB25vhi%jv6uszQC8NAZ=cTt?7twgNSGEsk0=vPBWtTQ?E|&4&1$Tup!X%!ktdi z&XaN!&ANnf!Srm^xalm_D9bpN4+FSh%A<6ml)|qx9M5(vR#)rO&F5Q)*d8#6Y5R@dUaLn{CZpk~~Tiv)P|8yoT(xu~Z_PI`I@I*YV!i zL;S)04m3F$5dUC^6QS|Nb)ScqPsaLH$6X577Ad;&7?OB?z0LN(b98HLj}Cl8y*gDY>^&CUD!)m(XW(1T643qy DVQ3D( diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/DocsTestPlugin.class deleted file mode 100644 index 4bc0c6e0c582bb4eb51a0ae60f6708a4d6d6986e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6383 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 PKf5GI$LcQ@`)la`iwF0X diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$__clinit__closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$__clinit__closure6.class deleted file mode 100644 index 2ca8bb80f94c8da2ad44c89de936c3dd01121744..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3314 zcmb_e-*X#R89mpMwem)ZW5p$iHjomNNLCUxEugOk_Ltsy1renzeLgZ6fWe zyQ`!EmjZ>B0xc~+UU`86g_qDUj;EbKpXdyayz#_ahd-hNoU4@`rB>SMz=L+bz4xB) z_jj)T_V2g<4B%1xLSWHx*E3E-+MYDsQZ=*gn&q0zl$}y$QF?xXKkuCD)D7EeG^Fnp zOz-N5TAgZIwX$?aR#!_k%eH*=cD$x5PiqhY2i9H3xz@_mOnW^u9qecb2^?1jOHNr< z&8A0l?Ne^k_N}_ioR_wAO<$IG5d8v&@9D_N04|XGAEVF^6^M=pkxU4LlBuN_bnFq> zKjQhOZ(ZY#Yc<32<)rJHErExVsmr~c=p?el^B&J5aK$*I4BVItClBFXe;~wwgF?`x9T)~>CW0rp{(S#1UX=a%8v3` z;AoEwrF!Ah$=rBd`c8ZHKhOUBI2{`d#`Rlfy|!^AiV>EwXE$tjwBfs!y*^uS z)HEDrJAJt78j^Rd2In=5a+Q9rIpx+wGM8Pkleq_@I4+>4I_@fmPYR@xmv?8SdnwR3 zraF2E59v6DQv%tKa@ub-IG%QygT0UD>@0Y(yGZ&_*I2r;k};f$zbGrxmE=MeVR)qEN?vx`6y4$W(=15OQ13mRz0f&|@@Ls~kX#W!Mb;i=ke2;6_CwRc6T;ai+>mLrC5V_C=Z_)ZKynyPtU z5V)_qGM$SspsMeyvo8wto57{`&?mq0et?$;=<5$TYph{Qg%tq&XFmKs%zFA+BZf7O27*u4*@+?9oZQD^Z=-8a9*sRTeGVMG{eh$vq z>faIRl&!;yiu7SPO}8Y^Sv84M%tV;Aiy*XLR~--Re;I?=&$q6!%*sZ%&ug2{SNL@X zAtHc1Tlm!cX!`gqeEN^=^1sUGVQzwdUK02W-%7e44-lxNLzMa`lRN@d;+N2{hkO5` zs=4@s^Cy<$N3!8Wcsc%sY=5GE`5hc9hHoQP3?=%F{@X|wL-7+vF&xhrxA5>5zWgrI z*+?SNJ{V~qRNINLQS47d3@t!p6=IxA@d=|Ci9gnb)e_ord@37FMB6H8LfO)kj;KL} z%3vFQR>9A8AqNrz%kc|YJ)w6ab%h+*jr^)Y-oRfNYY0E#GY0V=yiY-BSi)-*j$(jm z{S}|TX7b;_LHq`f;kVep@9+ZN#3p`^+xP=imMhFA2;a`~`?%Q7vW9;mk2%`di+^CA zQW(SdI~FMQvv6`7y`jXMBg5#Tb50sSnzJ0e}C7GXMYp diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_body_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_body_closure3.class deleted file mode 100644 index 1684a357625dbd462f622cd865aaac6c93bd5990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4947 zcmcIo3wspR8GcW)+1V@$fk^?ZM+-DW1VYLRfi(@?Gjp2)L9l4s z*SIH!DCP)g1s@`T#oeU<^vEIUNGmPdxW}|o(khp-n2~jR)M~T?)}Cg!-sz7;C`NLD?=%--wbLu z?h#l}KP=r&BbQ5=u55Q4gJ88ZG~Q8O<-nt9?k{kE^Z3EG7#3l16cxBeV8vCbs^G1| z$D#;fNepu_ubQW?i=oD!eVndyvt~hH*DRi!F^Fb~WMVvTz%IJd>9Xi5`cFWg4yC}H z0i}SCH9e8Bm9+vlU!8f=IaV??K?kSpkr8RR5i|-UXG@%EFl%TcEQ%aM5-a9lB~}Tn zo{dK;?U;GDW7L%@{@OD}o`!3rJ7^DGcnCTFsIq_Vc-_L8zSplJBCKrC&rHrXlH;U0nIWw356LDt{L z=xf9JC|Yp~^KUXu{I?ozQ)*VIfu(ARf^Umgp?ueFk?t;sh0<{u`u|N}ka;n5Vxxk8 zlj0g;bc{$hYiABD0U&G6wtV>Y=zLkQc%fCAW+v(3h;!z zpTXWJ`ms;3VObT;5qwt7t64%O5%02GIjrLAbByytMy@D#4hbx3=qlwIY@*i&k&ePZ zMlp)2VU8MN0yoTtkyoYqTr;P^WR|8K$;%}uUB}CyP!cbJIsZQj3+E&n6W|>{E{gpa zQQ9*4I*ShP4PxEiFr_k=MrB(WMx`K5@V1dxfq0OBGdR*&=`bI8pOF0=m6kp7V3D`_ z)EXD$jX-r;o!MnL+;HPZE&3W5cP07e>!jiH>=Y(Z=*>FzVPh~SHQcM*J6E7*7Q3h8 zH=QyA5cew}9uSB!kb`U7yUb>}K+0bI0@sfF#U0PP$u5TX$0`+`<$J4g3^hDNrTogK zDxSc)*~8T92inS7`7j<)mG`J`W!HGuQQ6SQZlP9P<|(iJ*e+eeV<>)rm};6=*7B!%Tu=IF4tO-d~MjJ{G8}{yBk$vRPiH zEz)p;^=@2Mzp1*VRQxz#SIdyK=WF{IPm6&+K|NALrtZ=QFao3kSLp=uKR8WF*d zBREWFvr}>0Lci%|Bls!vwon`_c$Z`ZKjZZyM@)C49l{d!+E9Ut@{KY_ik`8NJJZWxv6|NZCavEjODv z$@HpVH_d23)%*(8QUiRlq2@EH@{Z4=&{6BHi5Xp1&HZ&)$ng(cji3?{K39w(-ddGt zT6qrFCR@YtaAM#!Tpthj$3v}JTvMy1ajpLpw+j4`;~G?PT#jY<1fOd5N!0V5n%%%z zg*Q_wsW@5gDWz0hjupP>3iYuSCA*ary(6hNv^437^JuPw7{jMdu%$Yg)Yp=Dvqv1m zt(UN&H53m~C4a|~q~6|=)H_;uY;y(TA#Y>9I=6-Ax=PPg#jE<0`t2llmy&5H$=gZZ zQA(!8{Zy;>1QsRrzLvzRxc)5e@T9!N<}c7C5|8lkoh|XOephgsCzd7k0g^&vkRGwM zI$j+d2*;~=V5lV#uZoA`T0D}}ho>;7prsU))U#8_W3bM{sl-XVMJy}vCyuKSzJj=h z(JNS|VZ#Twi=+RKk9)45jf)Slo?C^6FW}FdbTA}B;z2AH4vl9B+lY#z2Zeg5@UGwiaLgG?(IH<=bO&r zJ13O{4?0%Pc~?-Y;RRL+*6)CyLHv|ueF?ome<_vF*Lq{S{v*yi^q+9t;!$q*#_itN zr@u`4o%$;r2lSI1hxF4NhxJ!EX7#fi@6*qvPLZ)HN-V^IxMg1H0v778zljaosQVii zaB;6*kvNB+D`nMo{wG7Qy))3R;WXZU7YjI^#k-eyVB2NrWBAp!3wUQQkN)Ni-ljW$ lKgHa-E10LTmRI7hE}#jKA?2Vo{9Y@0?XY`!{=6U5Eex diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_checkUnconverted_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_checkUnconverted_closure4.class deleted file mode 100644 index 1949136db4146217c7d64a4ae67b2c2cd73d03a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2639 zcmcIlYjYD-7=BI?*s@)ENhw+`S~Su$ErcQhS`ga^Set@2rPzYR?dBxeHrzdi ze~8}^m{Mg>Kgo>0iBX@ko8Ii!8OE_QJ$rJ_dwt&Lea|0%{`?DoO9%uOU9XmRo6_;6 z=~?xB%`+}FF2{+#KrWYp8>#jY_H%zCNFGM#Qk^-a3vE^1|-E8@E8%lXCC$Lv#{-$)K zXVTb~#sPuBeFHihsS8~DkJ)JG5a{`5Mgqy~@Vo&XoxIKXff?9Vp<(*|lv8yDa>dwO zWVIo!z;+$x-Ig5}(8^_6m?;Q|MS+7?Y{w2h78uGFm(4XZ!s+(XGBwBdo(#_m^k!-@ zD42~#$qwX%=a~-$&S!`3#Rt&_)S|pk`TVBhxPd+#(UCyEfnKC_r0|A7DyZAO!2QtJ z|3eF6&{cL@f%K*vLg`piAiXzLfzGlDCc=V9Ra_Oj!08yIhWF|x$#5{CLH>2%l)#zT zBJGEdhIgr~U=z3;<8iOUm>3Mahtr+NU`QZgv)lT%Ydlx?-0#e#hSZP~IFgM~7dTOD zH%8!@j$d`X)$P_`1>eHks)A=}SdpR>5_3idW=J@J0b1SJe_L0qLCOm^)i18yiSW_i6YfNh5-A73d$9GbULEfId>>8CjHU6qcjO#Z#wM7aOhCE8ReaFbA?|eWzbDA zC)SaV>?gME>%0!_t0d@=>t+&7?v=+gL?nfCL@Ww^vTb!Jw~kBc#1H7mZQ$yo$GBD; zd5Layx`FEp#V5EnvX0LlDG#AT^0(_1`ZP=sVRlj5ULW&SezjbBFnz0}FjXZWYuf^+ z!a@Q4=`UZPG)-@Jp5yL9I+1&ZMP*)z^Hpz)7uxo+k8%HZ^m1K?`5P6cUn0E$Yx+4J rEKs%j1ov}KvAiq5Bd^ehX|6-T>{$QSQE|} diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_checkUnconverted_closure5.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_checkUnconverted_closure5.class deleted file mode 100644 index d2f6ba8fb112836ae47f658950b714341d9063b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2639 zcmcIlYjYD-7=BI?*s@)ENugRUS~NnM7D7=j+9I|Qur>v4O0iIh+s#R`G~JE6n>zgo z{t&+-Fr~_P`J&ADn;7*uyXnntonah1)3Yb%yw~S_-uL|R=Z`-FxQsyHp6k`}Zc{qG zG(D@HuX$#rA@dd2%FjwanB%{H!*f?kj@@j^z@Iby<%~L=Y}t*9^fG0uF0JJ|j^#S5 z(hFpzY&BfJ<;ja0gg{@-bKTXoe8Y5V`9gG~At^AT99wQh*3Fhrx1p5Rasqor=5ILM+;;5XLxD5d;zM)QjBvWW^pKikdryYu1$r|z z85GP$qhtqi!t=~EfeYE8`|&}v0ktUaQ$D|`IA)*^M|31`)IcxNI#PH|AQjYYUtlpb z_W#g=7<850Rv^78hfq3}6iDw)RiLx1f{CyoQWaOlE^s;qsiD34NirNvXpny$I3;j4 zwn+Qoqv35TE7%0C#CY86FeU~A@8EPNGB_iUu-R>W+clo6d+s;pQbTIU2^`7Bs0*AZ zwi_exOvkUf-pY1su!3*kO;y2jG^|Kb3W+%*12ZI?zyPi8?7yum)}UuQln7!C7X&&K zw-j4xa#u*3ARG1`ea^5OZhiWMcz~={^k~2^gChM!kD=r~4?$q4-XUF-SZnQP44gk0Zld zc^SBYQFU>XY|khf?daB%JILe7YQE%FgIQUXo@6tyH2oRNlbn8=y&5)od6XB~`#V%i zfoD6lF*OrX%|^@bzzm5Lrz>!Y#f*h%KmLb4$5a!EU0jKrYM3=JjiO@T9LLYAo7TXv zcMZJ={MZE5g!)3qT`U-w!l$b4_XUn`Gk6b*8ouPzW~mL7F{0xEzA|tdpQ(VC1di^k zdVAWc3Ezu~lI27?U`CVm{HxE^8tR7_t1WPB|HqLvE3h-v=yOSrdDFAiFql&dn}n@w zEzg+E_V4bZ?Z{iLl_lx5PX=bA%FWxpO_d49aaH%b4m;PFa`=3PcuM~4zV4_enOq?~ z>uyCrFS#wxk~i#z#3&I-aZnyavPV~41@wH2ZuIc0E3`=gzU1nS;M(A?t4LA<=-fd6 zt=#a)Gra!2;t5u`4)PLwDF<+jU$r}q6TDNqliVe^=h)(^Of67a$@kIJ%t(6hLi(-Y zACOJr5q{xu5)M}b;xD?V2Mxn;xj9Jnl=v-l*iVz-^`^sK422Grn-ShAH{<*&DT8i` zIkAp>WIwTOU*~mbUnN10TsMtu z;TPyuryIDwP<(=G!|V9uk@65aB!9bJqEEvF5oQ;)?e#HVD;hr+D#QCbX#S3kF*~eJ?9lc!FVg5>m=@&?Ez?y!J s2MbiKKEYz{DIV?$@W@MaX=HH{U(>EmlM29P0`2je!Xbj>bC-bjH+b64Bme*a diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_emitDo_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_emitDo_closure2.class deleted file mode 100644 index 16079c3e03101531cf7291650e96c3bd92b8f1c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2903 zcmb_eYjYD-7=BI?*sxuCSuR=uDHw%-GEi` z^3fmScLb*t8PrcQ<8NZr_v~)dlx~?}urob5doIs=d){aF?|**#9l#m<$Z*YZ>jkID zZIA1&u~ewLde!2Es$&#px#!Q(zjwuT8k%i3o80&2bZxYVRpoA`!W*W4$*CBY z73<-0FQ{_u~%OhjKDYs?&W`h?dxXoSN=hgO& z9Sj58x^W`B&T!!+V~~($*cryba3fo~so&B=-!%`1@6 z#n7AaeBC#VaZC5SNxSAS;VS1c_T_@kqnYQV_&v2~M z_p6IH>1Lo|C3x4d3VKW`P`kfDS@`Z8PtyAL;*5%RfG%SBju;+2#*<# z#^fir^?s7N17aX5ACIldb_tR22Ezf7r-^{up$8M(zvfaNTz^GD28X-wCf=fIJr8;! zq~2tsX-POnjM*S%2r41BX*E1AVUR%{X#b^goB?SR7;@Q#t)X@>t9p|dD&aE2Zqb-+lMI6~Y23~~1rzu{#uZE|*p2R86y+2{ zHrA0Cm5?yapsYt2YRvgg^I?#=_>PYOqvme;t;seP#k`!j~iN%cjCwy#x&X=4*#+vFtiYmzAYmYoJ^pJcRLg7VY& zj3^X`#c-O68=JQ6+BguzqELW@f=^Kv4AV&NsQ41e z$wtF$$)ALq3`r`o0t-bM%V;S092Ma(y;Jse);ki%u)V(&XI+LJdZ_&;UtIZpw04oN zw@8Ja{Rkl07^hAU;_MI|=5^N;Z9XRkY6@ynV|iL{M$bJZ)8;d+#v*s4mHyeVGV`Wq z(v?x$c0^x0Hg&2pY13yykVQ_9J(q3q=|OL4qT`ZNCH2#smTT}Uro}N#c}RiY07&-A zqKkmupU{I|`jthFsl@cfBHmpzuF%tY68;qZcCBImOnz|a0bc!u9vQx-aUggr$mqvw z^aOgBAHYG{6SG4!OVFGIiADi+2fKpvX9#L~NF5j%Qjd(}AL3{NkB}{=9wT2)4r)6d zW2l@|PiW`=VIH>gd>!prpV)^$SYf6xm#Sglbt$JgU9bk(~LGyf}YZ*p_*Q*=wj@+7_^T$vz68owgK Qd{4hAs<46|XqJHVA6h>h`~Uy| diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_response_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder$_response_closure1.class deleted file mode 100644 index d33e7122669a134062f19a5ec470dc8a1e1e81aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2867 zcmbtWTXWk)6#mwBD_2o-Q7;hM(iBWCvyxi^ zl*=POg!j-gNlK@{6P@8Vb%3*ya;u#%9X#XJYIo0fZr?epzyAL9Hvkv$1H-f{>N&T; z9giEroX^#TQMGxl>YBM}?)fwH_eO=gSaPgJgZti$;Vq=(>PXYFt6Zcif_n{@#4D!l zdQHIx6)=Vab>X^qmvXk@)N_S!M?sunKq@rdDxWu+9;pjXiKgRQi##{R9WD%?S2rZ~ zF!b$c$eB=_;oAT7LP3%tx$X(WxpZ-7#BHI7UhKHS_?B6)4bK~QYA!=I z0BiA?*KBV3mg`V_qO*AhrBWe;$pQoWm|^c_%dz~c45!k?JH}ljjOWd{J0zKJUCGQc z^rY(CFBrC6vV1-)gt5dhl+N64Z$uP$lg@i|KDREI*Khy_Rm5;eLl1Nn3B1IR@aHX$ zVP==`?3k_ppbh!nS#g^_7vm0v&@nlK-s&PlM@1SD#(*MJb*0S=C)-3Q(<&b)=0grd z($l+fu_Yu5USl{Sm&XFuh8B!*|CXQv68@5g6pnY`b-Y3O+6{WF*|shpR?|_^IFq!+u$q8!8$4+k|l^`!tNTPWTt(^w*jPh+{7&vQ+PiF-tbF93D@Pu3{_`J5@t(RIktr+g4c2-x8_gt z8W)_3my&QeWeQH+ys%ZQGDsWS__{$(YJLr>3*UBzVpyaj< z+fIEgXoz`P|1k|8p)46@P=kDN5C!IQZ8;44j&;XXR8i9~iw|YS=c$=&7EDY06x?Bm zQ<62<$g5buqK3~q*SL;`dJAl|LYIs&?XL>Id0 zsmdr*lIdGS-d;2=(c2Yj{0Vw?tl{ufwtrw1FaJ!h3}4aM7u*UedhrUqfo}67I7)kR zc8q2*no~=nQ9|9vzTo^tf|?xA`-TSe6GPcYI2prZq|1pX$d=>%r9DqDP>$709vYFUqES5cQrvPr$RiB<6FX22~vjfOCrp7^h{8OHGEIA H7?ghjjl2@i diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$TestBuilder.class deleted file mode 100644 index c695918779c6dcd8af60f59a1018bf6ff3d49aa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19423 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$_closure1.class deleted file mode 100644 index 4c9198852cb0b65825581661ba8d367e564cbd44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2851 zcmbVOTXz#x6#h;Um^2-F84AiBv_P8{LW_c05ZfrVG%dBM)ruOY$w@nq&cvAsSnqd5 z{Q>>~-w|A;$U=RRwfs#i^*b|Znv&GD@L~3xGiTrT{`Q%_{{Hnh0H^VTz*)y#NI7L` zd(w3Ci>U?IERrOHLSXxX>o`}J zQzg@0NTtIQ4N-x9r91Bwzc~~gFU^MnmbXAHcx(!{HZm;AsuaKPauL0 z9Xb+-!4Qb~i==1Lc>9UJt{?`L63wEjY@yYWe!|_S;rID-HJnaQlLHH zt3Nv&o*iLtJX}HzJ*@bA#VYwD%W)(Hwy}6KbwPLaG>J?{KaQ!A92Xe)uTZji*D6!B zFIAfl7tAt~uHl40OWu|2?g_Ij(A{&XF?&_B72hhQ$i;pb#K{B(@RZ6Su@F;%3S4MX zj7DvZUz&z>8qcUSJ}VHhd?I%}Uo(rYbIqJDNeyQN_GYSR^R^Vj?N&vv8!Y?k3hT;ZD(e*eX<3x6B&wOso!w!drR&9V13cK!b6MZD z?1dpUzM=)ojYEw-PKa{FkK;`>cR1(ccv~RhITbfAvmEttyhHGmT}KVWIObV9#Ww9Y z+!X}6n%NdO#i}+<^Jef5X6TUW`mGxv96GJR((yXxRKs22q>2Dg_VU@sXFs0re1F(64mTBI#NVu5+y{ zKF@^4FpQCE>?2jJM;XI;Bk~jC$yHpqaTA$L-+i>JudA4z%iKbyZw0U3P!3eFKbF**%;z_86D4Nn@|^7U@1CN4noINe>u#(o=@as)DKd5-3&iLqQh+ zJB-D9xI9i@N_Sz;8Ij~|ysL~WcK$O}+0#{PJvZU~iB8fLy!QtM#_z*e#rxxTQJJIY lN4MZ5f5B%P-0ymTHjTiE;5+I~P-O&P;7fGkd+sC9{skZK`y>DW diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/RestTestsFromSnippetsTask$_closure2.class deleted file mode 100644 index ba0799b3a4b2d7ae0c204e532e2c892444e6bb74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2533 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$Snippet.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$Snippet.class deleted file mode 100644 index 83de97aaeaae84848303f737e8423dc79c193427..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10282 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 K%7gg!QQ&8npi|KR diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_closure1.class deleted file mode 100644 index 6877b44877758a2c25f788817e81f5dd54e936e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2506 zcmb7FYgZdp6x}zW9SFlKJQQh>YAhkp22ksRVhhnC5~vbN1*&nF+=PKJ6DN}@Kfxd3 z_u9HB+U4VuUCZCprS3ZuAjqJLFL&;pdmj6ov(LGI{`K>(0Nz1WVBB#_X{RFXsx(}4 zD_wGpLRqE@j+xHcR;41n>WWd_N#xD4Q?0pjLW2{2=t+-Qgjj45-b zQ;=Imtx99Qlv}esYgeY{q%B>;lZ7LV3pCZ}=6awZ(3z-uhG&_XvQe$h+eJqpl?}Bm zi)CqgmSYn~U3N-9%jaofF(V+>1uovSY|HyVU^toGHXa%Q?z@}Y)SNo~XJl2ND^ZeO z#weF_mM3Ri*Vq%7Opa`XgQy2+Qoc(0^r7OEj&^j!5J9I79WgW^F3{v{Sxo(;Z|gj{ zXJGAlr{+m_-e!JmQwqdS;}>YnD;Gh448PzgKmu1o!XG)UA0;^;pl{Z!a)BjLjA+Is zfoq`^I4gJ!gG8colBv0_v^{~_$!sHY=6rsfU5C@qbPVB2D_+HG3M83$!3WulHv}RU zJ#-(}cV)|UzA-k-QbSUpCm9l{z@GM?k@HEpC_Td` zn?OIUHb!)G#Zq-1LkU9EFfP!nc%_(1lP4hgKk0H3Z^kfzw*)5sE8RKMwJP51o+nki z%@m9ZX`$hUK${}_5fFjV(5i={*6}Xhi*Yo(ucH|)EsXu9Kr$3aNatx_lj(;M27No- z=spN?B)p443^E_LF%!cr%m#*!;?nUU((2+PHbp|Qtf5mcH!#PQ#dOXoddspX$wE`I zG<^xvm7GL}ed;%Oeu5XtjRw`6=UR4YO3edJeruL%1@^%LxfG@@aD(*>&D2>P;=7$v zOpctOOW;?-r#j~Gi6Y=K$Hn-Ykx7#`qD9gA2}fWH#xZ7h7f$wyX|n@uHavU!bQu#TU9tV$GHh_%F_rt6WJ@AxjX@*7iW zCl~m_GDmG(%REgZN)4d(09{L|(XprK{((n=R6n?&HoQ<-vDIX1BjU zw}x9xIs2<_ub(k1zip}bKs=jE#S>grs#Rsk>blq!zkWb({O&LKY=J&=&v0)o9!WjL z=gNr^=c8X2&(y6ZA7lLwbaCBB{&y-YJV*Qh#=7>$nprj Srrj7#Mp(ohCg0^b0_`6#9hk}h diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure2$_closure5.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure2$_closure5.class deleted file mode 100644 index ec1690db9102908dc1adcc0a75b344819c26a3e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3995 zcmbtX`*#~h8NDORUPa#Kv3AmmHqaKeu_Zfd3{8UV1{~8kZtS!~#vu<7YiVq4BJZlZ ztF-1>N(+?G2T&djP|Bl}Hz5Jnp$D3u=sEl+{0}{ZJG(1oL)IZVJ;!G>JKxNF_q*R~ z{ICD~?H>U4;G)0*$6YEpO=)}5bgT8!l55r)vQ%@brLt``o6`5@Oz(8QBA=AimM_&u zrP^@3mMcf{?b(AGgh1bt>o{jtN)6LqDouuaG;|3JDJ4~>ChKO)ql#dc+p>LYS(c`x zEnU->wa$rdUKLlqGdv+M{$9Xp$O!b*oJq6M5V(I}=9GEH46#1Ca7tGFvBB$?bY#&h zpm`w|0=Lh^jXWY3r7P{K923}__k7d0s*?@V^QP@ZN1!m1Xt-Q#P@U!2Bq`d<^IE0C z8)hd3#Bl;0w`|MbC$KL8==C_)K{YrpuqD4FePwjn^5ulKMPv-nx+@6~brdnwivorPMsEbjUuiNY?OKD@m&$d=_2;;9 zFj~=2640xr=g&DIAOAmZBHncD!blbm;6qG|tBDp$H9V+DWX0&oSDL0@&tNa(|781P zR7q0;sgrgF4>2FI8GKZ&b*UjOur)CUH86L&80-T51Bt9Wj00JG98&^!D$b{ZLKG4^ zCH==-2BYh*=$J;YV($@wOx3Y{Y5QIVGXlGA#AUhaT1|idiZ4~Ao2Z#hhNOnWtQns4 z-pKN{&C{gHT{Nq5uZ9x>xtisvt7>ItWzBSJv(h&Mljx>_ z!Q(nUjn8Cp5*6iE7X4o3l*yLMib_=EChq3-48OI!SU^>Iwx;U(2URs&6nNlPOQD9k zK$d|PHL0MU-fT6C&ai6T)wa)fP1{>^+~upikm7*yn<$Ubg&LL#Doj?D!~%P6Cb$yw z#6eR<(BljZ)ja4w_O+Pza!jwdZ#p8vj%9o38VxPx5wD3{-*-)Jh9R!w2|Ss_8L&6q zrW#-8MuB328SAOn@p*hfLI0wTP1vl0_saqUiNTxDg*AMI1+NV??BNf^)rV*YlUrxP zh3uMN#WPtvjc3D)J9g>#I(#Mg2HRI&1%9kOZ;#b|S1y*y&Y~ZGYHZ6_UCAfYWc*lV zm%z4x6S1RFqN_)M=E`P+nVG>0jFRYMqS46Ur3|txm`OJZ?53|0$y=|X1@DV7mCrpo zzJ=#iihZB?aqE|8_~HLNG(z$d4O9<}b6LECAL;le&MLqEghl>pUAvA&4L{A|HB9OF zE?!nBf6lfNcXd=(!bi+6)!x@xF-`S;((wlB8>sEq0vkF{U^ene7JgN09r|D(@VdZzX-&<|8>EK=O0b z!?t>YvuQJ)>Q0R=Ejul@Di2r<$CGwi?gBPvRXXtZIaSkxZ_-3BWw@^o z{TzSCuTP?jr-0lV?ifuMibHSW&f(GSTz8@JS8UI9AN@0h0>9^2pbFp)ydNLnubSPB zdni-0dpS!5Go`$Xt1PyWihuK5hO+0W;_$GM9~m<4HwG?YXBwmFTzU;3zKq?ox%AOt zV-IB?F~&j}L9}Jvl#Nri&-hp<>&f-BWj&Nlj0_w5M+$$z_Ej9bghMG5hr*3oPBT)G zz?h|?HI#GOdAv9pXwrjL`5Y{E;gL0jIG{^K6Wx$<@aL0`BGsaBG`@vzQ}) zih#42=Pbo}v19hj!7aeBGW!CKpM$=J&z?ii8|WK0%n@>Z2{MiIz}q?EUByxeD;2;h zA^k4;G+0-NkS-v&E6U3nQW|y#e->~BS|p4iEOrnUI|z#%gr{(t_bA^V;IDGpHX@v9 zb7Zf;6$BP=U%|*5FP00&o?sjg z#tGxwT-k5Tax{(alvUiSBw(&b$M2y-6zr|W_x_IEhlu3|Z{d|=439VQW2Ibe=YKrW z_Q^=wzy-YePi*11il1HPfkW@WSi>(4y@l6~@#wEE;#HFOn`_|rzl)6;%SD%RFLQw} UTmJr*si<(JX`zk_oTZ@s7u2XztpET3 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure2.class deleted file mode 100644 index 706730afc9a4db924e45d4a7297ea6bbe58cce41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8794 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 U9->LS7xON7S%CN9mxH{&0(BeZY5)KL diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3$_closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3$_closure6.class deleted file mode 100644 index 9dbd46e92b99f3db71f9a2f5e046e9d17b7bebbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5217 zcmbtY349dg75{&m-OOegNEk@$7OhaCB-w?PfPhJ$Lby`GAsa~pYMks&l7-F8Iy1{r z+uGV%OD}s{dRuC5D~E<4Rp=#ZTT2gX54G0bm$mmHzuNb{nIsdkp;&+U&6}BTzW2WO z{_os8^q+g~1F#rR39Pp4zLZrkOvljeOn<7+*0Xsdm9;Xdw3#au4A<$)n@;qyEWftDAdtb(XOdDd#x^Lc?eb?w{row}!M+O>0LUvpc1 zU~Oa1b|d39tB7HefZ}*y2%Og*v~si2YuJXFF`5M?JH;Ny&ACN4XPJ&bIG-~OfvQ@^ z)!kgCHLp8Po7rm#G_;ol#OTe_k;F{k`FlyM(%nrG*0&0XtzbzM2lL{zL$|!CH zrq`9U;c_gG;bmAMP?6EyO#dd`cB5EHNjvHluQ(`JO}XzF?iyLWJmogo6lAtbsj&I% zILdr(9+P!JIn4pc{aVCfzZPw5!zfWSKGMOwegQGi$@EXG%c9x0)>N#?+g zjyrQew|5wJ)66JdB?vUUMxefwkj(*$PrT63w1#c7x<;dZeJl~40U@yfQC7Iu`Wm`Dc0_^ipp*?>%Ib2&eonFfx z7#$4g^E~#zIaG9Cpn|t^0_cw0VRh^&P!KIH5y*jz@Del_iGGf#cn99eDe*4KGq!SU zkJpCl%4iZ%(~t;{tSERN)pO!)m-E2bQslc&py_Ny)Fm7Gbu&v7MPDl2Z`m$ewboxz z@Byw4(ppd6|87G5xhg({56AF9e1r#`dhX00qY&X{pO#b0dc)NvI0A99HCSgyK9PT- z#Ncn6HVlbB2GS%$>HG=Y9>W#*B#lWtz>M$;BuaQ@qJva?8lPcrd{)I&XgmshUZAcd zbS0)K1z#YbhE?@uv8BP|hr{4p1(IP0a4?2DamW)qVwZ}$u%AENP4Q66=@=NCE(k=P zZS!z+|mmU!t~H>L7td0x7 zGGWPkD24~|brnZ2#NqHwD*mGdZXCD@z7@kMtWfb4e3iBQ4o{cV%TD2Ygrd%at%~ns zZv{zxlzPv|FC1!Utu(;!1Za^vx9E0`D`y823Tn!h%#QVX!GEvhT;EU}=rL@6CBE4M zZ%fX}5zBJZv^c@!F9o&Dq~Ac&P=n^z%2g)+!XnpEIQ3guDrIS_XlIPoxx9h-q;;4E z$8wZcg?J#Q78T-gSl($ErhAODgYJ7V4b$a2!9%?)Mts$%A^IbFy9s5q0$e(T7dMqR zB$7vP!Q3V#t~7MtjSJ&SXFS{#jYs)yRy^7nk2F=pEBI}8yrT0UF$(;c=rU3TScqC& zM0b9=7<1?wKh@DwNItQm+)futRm1X$m5tC&syv=bp~p}`e+W$?mDVSsA2$vki zqB4jfwCqD&Qd=5W+%Q)QHQa>@2hpmnI)ODqSU0y*97t;Ijfu!u&J69FMf*t3#(jvF z-HR)RaAi|C9_A0-gXoHfJCoYhMt@&~HguIGwQT`O>8@~6yQ(o!J}f#-BBXZm(5o90 z%J3IY-9%EmCa~BPiAP2izSdJX9+Av?V66gQRO1a3Z#;}j}oc#P-_ zRGh{#1#e!`+|s!0SzNy0Im!kKLj^bEaeBBBGbuG5M;uR}1wWz4e3Gu8B8{h@<7e1~ zpVRdV9K}} zRm#8h|Cj%M?DOTXq|;dc>AwE##vy!^d_7J&RiZPs*Gg(1!*XAG3*A||Dy54-+%`@s zS1#%KQA}dvrB;RUaqK5u8S@ps)Hw}<_>>m99npp%eD1&@+|iymiAr7_!r`v=!?+_c zh`|GVf^-6PmMNz(O~IX1TB*PJ@*E0G_C;TV)}Vbc-JmU%v|ZAz+I_ULO+H^G>D7{6 zBdIQFPSWj?4oGTBE=xN>ypCLPCEcZcIn5=PYdf_rUx8V&69CoP*C>J3ku@ie;lVCS z_#^lRtIyl%KQ8|ER$t$`LwNXpOeH#qZ=WEBbtj<>;k)aO;Zzr~K5`fjQ%L?`3;@$l gV~Rpuv5XSS>m=-;A5y1zlI~$D+bX3R#XXe&0)dm8rT_o{ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3$_closure7.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3$_closure7.class deleted file mode 100644 index b33cbdc4746341c5f87b11a3a28cf5c4b36037a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4209 zcmbtXZFd{h5q_>LdzJMPCu_%v3DD4*SeE1nJAkPj0*Oh2iC<`BoSLLj*V47UvAnD7 zt^#gLU!gQ@p@l+QT3Y%7^u44BIHDX%K9zI&tv{omdrm)bNN09ewrsC*(sGV{_wL=9 zxpSYHdFJXLAN}=j00!}nz){DK zT3~zky!05HoaxC!j$bG12?OP zW4DHzuyqS*->RW4n0-PZ?k$)E`a`}eA3s?M+pT$~Xe-!DWy6sZ zws+)Q#n@PEjq~6!4fkMB#of4nC_!p%^9iqsxqG zNzYw0%L#mb-KhfZQZP%TTMLHtIH@BX2^;)pkVj*x#&27&yEO*X! zmex877rO7&s)B+t$J}teDSK+UOocyqBhW-9nFE*4Pe)hT*Bb2;XWl4Jg*xQsz8map zp@xDdxH0Wzp8Wzr&(xjso6WfN3_qL#UF1l8{j7eX{Su@QinZ5J4cj&~AWHEs<0~o- z&+xU)(3;1qec=cQwp2L&;;d_)b-Atl&ZSdB*0&wJ9HfPUy^*z6{J7AGo z6ZE@hzMnb1o={e6hbVypQ=wXZiHOW778CdpaaoiVfqTMy+H}4~eZb#+m^q_W!w>Kx zC&??+%Og?0t`P-4-_XPZz#|XEP5c)sUd1mpJdYPR*1s0my~YZgkW=uwiZ^h-hL`aZ z_VTyH`1RopTSag|_&v-1fuJ+^Zld8&SlmLp{aIkk>NS)&a)i1Ow{x3fIBhs4)6f(T zl*v>gg~f5B9KN@WnU?+You(kLXZ5$_achlD68NFv99j~JA z9qey{sN&Nvk#e5&Dii>!kKyAWh8YiG!Lyjgw!P$=xQ~2+& zg3>j-61h4Uxyq4a3wVnr1JDo`ZRir)krO(m>3>ml;90Q)Z;DR*Q|!dQ#V-6u>=Lcw zX0cD~_LHKM!!GvMl7eOneo_d^GmE})`W&SvCr2lReJqTwey)njRh$dX74y%fL0qFm z4ZY%&qZJxELhEnSyoFY57QuNu-oU<(-m-6h`Tw`C;$Ue1K3b*~Cr^L&E?%9XWW9o4v1=?&zt2MPkkilPA+{<+z)e^oyDFLFjC MI=_Z0&0z>% diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/doc/SnippetsTask$_executeTask_closure3.class deleted file mode 100644 index 9342be51b3144d8c972f956f8cc24636088f9bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11391 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11$_closure23$_closure24.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11$_closure23$_closure24.class deleted file mode 100644 index ae4aba57bcdadd57951d629a5e8a6efa19e465de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2386 zcmcIlTUQ%Z7~LmH85pKq0{|XHpSsk2W)cXJKJ=k4=X~e#?eDg~bN>40=idO_LP@}Ky-LR2l}=5X zp0%B+cxI_8GrQG##db1xgK4&IS4*LoD4M0xvg_NHoR^ODOy72$qE&Tkbx%%AB%0#n zwPW$R1|cv|@m%-eUZ!d~l}s*F&=3_EQyy4uNp73<8tn(Syt?DtJ2KNSB1=aaX9O;s za%((P6S()X!qLzv&{1-8X0U+{()qSg%W{=aOer(exSJKwibWzUU4&eMqef^d~CPSDqJa zU(R@*xhF80Ol`JzqLF%w_iMbLX)0z73}8@41m_I&Bd#NcR|I1Iwp|mD0oY4s5|hzW zbnCwK798f(v7|u!bj$+XMdejk8LsjRxw+-S+_?Xp--*`*BDPOP9+z-!+jGA)x2jUZ zn*xK$HnkMEly8vJ_e`f&cDRs?X+o@>yh~4<&fEw=n?+pmkw%HO@Xd#DD89p>uU;LT* z9QV5D>xO`S^r4Vou^c(98s23g*G9lNFm(wR+XeY0flHrBm)+mXxloh|7#c7|5N z`mEbEn<_Jo9;P5jG@+Z0MopaQe#^R7j+b+LJz2Me8OWv`o5);fojFs#_ zv`<(32l~E8FZwv^D!Z(62haILa{Pj;X+)_3bRXjUa(Z;^2`>D|rNEaQ-{2wmQ4HZ# z&Puw7OFUE3Fr^4(ej^+e)Cy;Hzl%^y@z?k9I~P%W#nFKH7a9ej;Vl#?C@*68J1}#e zK;UuHj7G!Ci~_&RGX*}yS=}-So==MdydC04j`4LK2l&c$TIASt{cFm~VuE>y;R;45 zE7aKr>PY$k@5CcNpfi1lYx|FIBR~2Sy=wOm*^T^T+!#H;?R~0N8DkpC0?91rm6A5>U;iufT4 tR9@bo>iT2k(?8+<3EP9u(4&!tQJ93#38Zqf$+~WFj-iY3Ta+Tu{sSWEhWh{j diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11$_closure23.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11$_closure23.class deleted file mode 100644 index 07dcf61c7b55126bd774897dcb882d135a2f4c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3283 zcmcImYgZFj6x}xj2g3+BAc~J#YpNlj5u|8Etw4oRf?9(h+BO{~Ll_M+bTUz~Z~L^* zU(xSYTg1BB`l+tf|I>bQwcU3zf!G9>u4TX6duQg}bN1P1pL6GrzkmJ}zyW+GaMp3N z31{B4^QP_^vx%&$XL4p@K3B+EcH)#j4HT?grnroz^-Si3<5`9|Y}%%)dzNFTjhvG& zxMo*Zw6yHruRsViXI;m+w2;W@b~Z6s+@+vKpi{avoQyfE7xHxK?{W*aXU&<3z_OWH zK2a;MsRGO1;xU1-ry7HTI)ODAXHd`O1a`%e7xYVdF@lrR7fi$JYp;BzB7%B>`W%TN zl|xp}6xf(75C60|W4fkon0*3G(Y#0MjKQ3q&yUzMjzBzFl@fC%N0%g-^aXo)UP-5E zVQf%9oFmx7mTh@Q1&&q$TZwfQRP7T2>!VrIlYyr!&+KDj2_Eb&$YUC>D z5NMQ~51Za8mz=oXf{Hz;uSX~L5~%z(Sa7K|dOsF>DBZ(;r3E^!46`cIedv;=yJf&3 z0pqDwTUp0gS@tM+L0}!}8(-#JWxpb0VH}L07n=n_7Q<^^DbDd(*SV}u=S&5MnN%K5 zmKS4FDGipBkmbq5Z!J;dxw@U7aoo9;*2B-LZ#&qopkJWtQJG2^t~KusEO@5uYyBC0 zo}yB~8jTow-Wzwu7v?Fh1COo;zsjq3nBy3V;AITU!crN!tksm?M#fA}_YVrRG0bvB zE`MS`O)F#-6`&v~P)9St;pP%YLBD3hVJ)A)$q2@9iW!l8X4#@ZN0nGsbFbnwQWF2T zibgca`ewt4Rb{kF(^GJk87V<6w#*~t?n}fyu0aNN4(B77!s|uD%W}MW9Q3`raafOvwgDXDwb{J3K_Ew zR7cp>=eWwUsk46lwZ#@v&8R>x(^WOx)p~~yrcc%}ui!E@6wxTKRT#)fea*A)Ke=fI z?tdD7F)LLgmkr;GAdi9y9n(?}mj$-0XtaV}1q%^eMZ1cN$Vrs%vi+88pmaa`m&yBb z?*{_4dhs6H_vE+ON4U0@06%64FaOx|lt1ie#s*pK^3HImlnLFnWD6RX1M7w5XdUCh;lmA81L-?klD(T>eaPaU!OhvhS9^0Dzab>ieH8!C0y z$q+}%DY%CJvw<$s5e8+0a8pQLpg>bZ78>X4SP#vACeKWM9rrb(h2!UZI>Vc64d=Ec zY&sN)6!?N;oGyS(cm~@!%hj{k!EbW)99JQKC7svs zE&qrD7uV=Os_r0NjCE=|yW^c&v^)MIwk;xl2Z<2wV1ErJJGGwf_+9i)#p8>3@iq?m zuW#Tto~^-kjw-}IZ2ttL;0V6tLh2xlKZ)osA7iVJqIVf%FZz6p{5!%+{3b&l;w-VY z5>GOKp$#nIm3tT{dJC<1Ybkk?4A4KvmcaT~T(9AqW1MBYvB3V}z`p9+7mFCFuo{s^ zWDF}-Bb8R0!gv*<0gD5H)!iiLH7)c#>f%c{bK@o^lO6ZbDBmvOjj7}an@W9@7KTAM!T-&M5q~cmso8{P}T}a84OZ~9Ug3UX8bpac+xnJOn z((~JQk)P5+@!Pm0UCHhI>kGCI2DW22apiZc=eUS>?(x9reP~N~Z}cv%PVwl6w{V3C p_~aq5Ef3J3u|4l^zl-*Od#@-OdYetrM| diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure11.class deleted file mode 100644 index b8d2e08913ca6c206a721a6ef38618c11d209c69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3344 zcmb7GYgZFT7=9)M7vl;T5T#yP+o&O+5oom)Z3|H;C8#BcqPFRh3}H3wrkjmQ?fq`= zf1=;5wutq#^;12kzo#EPZJ*g}Ae=;nFEg_<^WL8KdEeQ;|NZR`0Eh6Sz?kji;&wq= zMQJ#h*?7(|vUwRVd0a z2yDm`C_;O}%u9hS$!cWA<&1Qsm5~Dit&yTjC^Lz?Q7n#FGqym?GhTz1oXOKO8X>a& zUCL|eG&PJR1jKoPbw^CgbYB*DIhwp=TrtX-I5l04sdlHnS6!0=n<6>sCX9SOWx8_E zag2F^zG&Bl`o8&@%j95$rb0QF~g^u}5EBj?6iF4LgAqwoN6H`~Md;^OPYG9FU zt_!+`y#fuyT%bK#M}v+o#6pOoTVUVgs;MRi8ukgasO@3t`kbBD5l3VL_TzxSxwX~P z6B-hT{UEj8Swa?1}jTS$U`q)2fK( z^@M@Cp%3G=5Kdr3$8(6NS{!Bks=QNP=NXf(;Yka0GS+H#E*&wd)@8)XxzKP*powaH z;kF7;e)ngOV)?&;@eocUMIxxyw4_m>yG}rlGOyzdCRGq;b+n*WwS*~wXkA$A^hpgD zn3jsGGE+So4ycCxX11HtNG`SQ}ysm1XJE{`q$eDP`o^h)m zgN{hXk%lW1)ne&hfsW{fD$$hdm{yK&4ZGruW6w2VmSiays(chhn{bI;q@FH;gUnLh zC?D0rz1}~ddRJft3Cd1ruyxEJr)c#KUx>A<*1)d5;%O)+qi(>eX_P{6aYaWKQt{xL zz_w*-)}X54-4L#$TSp#q%FFlJfvZ#RH`90w-eVKz_!Ym-@PS*$xpNU)4+mr2J$JBe-{Hp2##s7S?C5Mf z`!f#(Zg7mz1h5r5@ib?(dIr0ArdH2#74TNdcmsFYwR{s-X;Lwfll zv0t!b0X=uo8^AsEPsL&jIH)%7;KjQ*62wjXNudUO%~6N=k8dA6(eMhs;bI+?2l0>R zSchjizT{XOM?J>`Ud15KRGcR`D+fF1MAEk%KDLP0@8ek6QefFqd&QCpo3=T&``W+d zTG<{_R~Tf>*MG#tF<+VF`T4s<@J!SbuYo02nT*bQ*06E zZr;NAWcLHKsNF@pJ(awT^W6)`-1MAMfU(A!AEHgeMe=}^?(6IHQUh#^g?ER|R4lwF zd^x2utmwj0^RMml$OLQ-Tfd_)N}J9-xKrUk><+FfBkDST5&i24Uu*Oh=KsPbjthA2 zJ_SY}AiRhVM(^SJ6h%M2jd?=<`3g7NAEH@f={4Xx>J2mCe$HQzv?^U+a{iukkP+$l JfvW(t{{d9(nb!aS diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure12.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_addNoticeGeneration_closure12.class deleted file mode 100644 index 6b5d52687ab9c07ef4475edfbed1f039d7728587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3753 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 RvMayiHO3qae9v73+W)u=Uo8Lt diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure14$_closure16.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure14$_closure16.class deleted file mode 100644 index 66306976edb3bf958e244b1f88f26ba4ce242f81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3025 zcmb_e?^n}i6n@^em=Ysk5tOOhoK@O_Rv5z#)D5b#j-p5rSKZcy_H7BINtdQL-0zS3 zL-w8N25cU;eVXU&Z}M!rZ<3a>2G2alFUgxX@4ffA_dd@}{`&jZ-vC_1cMOZBRZf~! zZq&GH6;_gEOD*a=S=H-h%}CBWx9Pg37u{tvuU4!2M!uk%wYtSeqRrLV?s8lLW9Thg zrn$b6)K#OLOu6SJ1Q~`!$bwnqD{8$)0i9D;-LSO^PtI_ITdK{AO^XhOV{JIjyJigO zmxfVUNi#J23d0p2 ztnEITDTEPl@)o7brVov+dPWW#V$K_B{M1aOpL@PA>7 zFDdB7fQ%4cQE&)don(E2A!M&;HHIYzz{_SQ6|yUD)@^R34eAHAh9S~kFNTA80mE&6 zkOTut%ePw%?q+REGs@{oRhJN@cK??_63#O8`LaVoj3G#EU^o)`y;|$(nIQP6P+xjlyBGpQ4r|K3_ zolbI|wd3(k_Z>_e#M_`|1vK*5yIae}70bM@F6&$Zk^d0Y%pDJ|`c5<= z+m>q7N~TrWohg%ooC-M;e9t;koa46YNQ_~C>fYL$<}1Pw76K7UB;!5paW;wh*Kl3N zAZ8dwo>#nV!P2Vs^oGsF0GukSRidGUH02@0+ziPuow2YjS zE!41hDVa4(cI)`;j}|OW--gD(aVAxMgrR>A%bS#@5$Q@Ij88~be%1`*)K1?*?KkF} zsFPwIFa;msW5KBc&C3^eB7r8)oZEbwkoFV*~IBPLXl_~c{>9OZX=eonnos5hG7cfng&TxNgMRH;1rG1 zWA`;f{Fl%OCcdqhMZ%Fa>sEnZ*L02%sz8WF_yL4^0^(Z(^vFUkbpIZQ5pkZWwA9%! zo$JLBx^B?ZZ3M{*7}&wFiBMu_cpJyhO>_)&B=SGwR|i9XuIHj2v* zHX7F$qIV+ID|B99>>?Z)FR&XSup2>XL=YKMOy}xm{1vT5%qek%@@x3LL|%no#qrCw zFx}==7A6Asu2nXGL2DM@T;2fm05HfWF8wHDi{d z6(6INiv$we(1d$&oPL75<0;Qy>><|v#9_K_!T5s=W}hOmgX-*KRB~imdxSMA_WeBo ik32({L~;t^Yw|0TOHshjiK*YvJw!Pu_?A`yNdE$)FfU*L diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure14.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure14.class deleted file mode 100644 index 66e84ad366b98596fb0b745dee1d927d6f529dd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3451 zcmb_eTXz#x6#h<kTTcwP`_8iUBna$!R-~%!J7Vt@ryC z?^nFN`HrYi?Lv5xwfrUi2$uCbGt-jVl!Z%QX3k~b_qX>xfBg09Zvb}TJAnbm9ZxxB zX;-A_<|k6)u30F`RJm9kx9rq@|F@@V6$`;Kku%HX;$$vgbShO>ZcEIqc4!a+E#t1^ zoSaM*O?y1m8xU!T3T#$-@=ifcnAHlk_*8Dy_NR=&4rRw@Jbm?Mx(*Y#hH6)DSdY{n|2CBK%-QNmEKfH+J;@3CylyN_Pi zF?6Awi&)h$DzGv!E^_&q)*K<_UKrR);J=#L15E$ z+0-$rqXlho#BigIp<0xc?nc}pfJWRY(9wQmq3^XvfqLt4iW|^th@PI&b z-YJz$R}MSg-V;@m)?6nx59`>2-Z*ySL6u9PJ`p94F7-=qze`}c-lUF)uuPdaATXj# z{9o{TwSVr^FetE`FdCTyrj8+noEU~x{j7>3jr{`gpg9klC4#%>oT<0nCXi;j& z2yFegWv$^LWm7*r4m#Y8M6>cVoC#*xN`-eUv$eC0#&b=(GUm9Yt8JXut@Rl-u%pHE zX2lzEMkdR2VAr)VoJ#u@W!2VQF;?@G?^ z-deUCyHe}C1~k`g*nY<>yAXn@5u8I&vNqybTIIgHviRg~C9^JAQkOAuQTQKKJN5m&Xq|Jzsz!{0M5 zObcI-s?G8HId=yUB^S^(g*Dx=WasAdxT&kVp{*gA`x)!n8V>!yOMx%=O;QE01~+3p z|7vv$Ht*Wy4)Y`}X8dSa%Mar?Dj) zyMV3P=w|LR4HvLI8#Q)hvN2<4<~;8H1@}|r6!xA*SC`SZz02sIW&H&YM=*_aHkmw! zeYE}&pZE-LQJld=niR#C{B|HZgCZ9~!^n&ZmxhRjtr`*c^+>mRf?SN*O0t7l-+(7@BEIH{GP*mm&h=98O9Vo z7@WqbELlJN5$`ZmpUg9M)fF^ptive2rd)$=r}_Vss8-?qjQ?-=kI^q3-*Od!_BT?= Bx@`ae diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure15.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1$_closure15.class deleted file mode 100644 index adb6da8fdb45838e743f407c1a60052b56d2363f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3156 zcmb_e?RV2u9DZ)wEhWp|(rqvS5vi=}2Bkw@WPofH=3ECz$L2(>S$o?BvZN*{Fcsh5 z(7(g)2s(xwl}~bxe-lUj-85axX~u!0Uv6%4e=pDP?Ya5u?_Ylha0EXvOj~w2WmUN8 zaLq0(r^>cgG^%Oif5am|;}-DOg3mtW_QI;z`+6)74jaYKoiO)?8lP&}d`W*5Z7BO^xB?e*-Nc z%Ftf4GMZs9>`i1ZYge@zgsHCHcW49#(-&635C%m$`_mkjc#TPCH;mnD5EpC=2m83y(?VLh&!x_goW55U?A zbrV#>^9;T5GIvGXIo;(Gwymu)j3tII1!MEeQy_VV`55)usi0*ky^A|)gVhsbZHYE$o!hf|5i$~Warir<#4 zQ3RqH#l8-VV7~~8i6z9aT{vkrHpSiZwN_qLFoq7HaggdE zvt5^$@G3+4N%_weY`x-6uDV<>(L_<`Ujuh>{s!Iabe-&#*)pG>uuz z%9z1fN{L{K4T}sT0kLf6Ucq_1DezxV(2X83p>qt0z>EgamINXgr4F@5dMBFQ*Aw@& z1}U(&uqa~z#DT)_MqCQs!L&GdmxetqTDFPLb~bgT%}c4ARdSoTc_3b}Io&pyX0?2p zVIXm-Nj2x%x>+6nD@3Jh~ICh)j;TnsB+ zmQ7tyLm}ac0u4)|uU3e$pWURL4dBNkNsfs6`l1$n$L8i6Kxd!sj7(kkJq zjB7|JScWc8(!J8(T>JXP>RkgL3E7Vs+O*mYbl}p zqNbSFY+caJoLFcyXc7xoh*^T(*jYBWG3Z0zac09BIlxgzl4eM0!HvwgY-(F;n!siC(DQ zJEfND9VNLK`e^-<-Yz0cTEO5swjGNkM@H{r`@UmsgKf$DFW5QQw(t`jGJHjAl3W1W z@H}?WQ|w;AZaNdY7ikyrcEWj>zS7@|@8Sl%i$*(0E@ns7J!8q_&)B(!;d@Ahu`sG0 z7#mg7W667XIfRX)qhZ{_AEXw>*R(2N|4^8OMZ!3~p^d0|1U3fXc<=^10O<{QX}sdW zV>pfzbS9!bLr(#7fS_c3SL&&CoOys#HE*GYw>}c|youn+KdpVf^>1n4PG3$65kfNL z+duBxS3LV{4O1;vWuYQsXjqk7t@cFlI;Q;uPWo1dl504phJHjexsKee+qjq=d5CWD zbsd)$vv+WDWDW1#@<55C(I9m_LQKK}bpwsFZ*P}ZARv}h_o&5OQazw@TGMJdC#o%4 zho;IG-t9FO(63(p4aN+4Ht(adsD_ev;Rshkoc_*y@r-XfaU0b?(M#(Zu0J4!nTJr< y@!`yUTw5g78+TBp0(|}$*uF>Tl4#1p_>Sz#WKtCC3u@q-^o&qE3cjaZ2-3f9Pf}3; diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure1.class deleted file mode 100644 index 7ea2d19625863731b672e33e05ac27d9af42d304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6328 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2$_closure17$_closure19.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2$_closure17$_closure19.class deleted file mode 100644 index af042949304c56fb590797974523fda344a3a185..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2805 zcmb_eZF3V<6n<_J*mk?LB?Sa|*GSW(G;Ku?3rZVatW66xwOCN&c5{<1q`Psmf$8{3 z{p1hvJAzZHj4z*L#^1!K&)rR$U>9eY;mh6oa_%|LIp;a&?q7fZ@*9A2xG%8edexj; zmrg^Pp0$>%dS=HP*1IJi+ zOn zE<1jt)y0(~Yo2@GT&+nBV*>lq5ts#zw7vE{ z(`i&(Z@p8fQ;IJJbt(!LgEE+xz8TP4;1CsdM{N6uc^~Yc2t%mh9f2OjWK|nf`5c;H zlN3FNcXgb_d4Y-lOJ~vY?7Ba*;Y-zPrpsoX9MeF%dsKOC10jtf%Irm`4P3(lcS9M&*wNUZ4Uj}AzMjd>_ z3QH*#clCy&U1arSC0BGS{-Uf%vfPpk(SelZNw(p3X9!wKX@Upo+g(?SzDJf#sSeb; z$|4KU_uvMJ6s17mEHfGzs~6Q^V0cO~o-aoiVM5CqJ~6O>>xzOm+3{XpwT6}d^w}^2 zkzT5%cw5IUd}g44d6oPx1P*s-yd#tvz7&Wv-v(AOuET_7U=c+Hn2m0Kck0`(%(605 zRkCXWyUehekH35?zk|EI#LCA^-+rZ8G>JURLG@UdoLDwJTNVG38dw>uU+eC?S#PZe z3brE`n(M35Ywa9b3^TQCH*8*+b{togyz8)Bjai3}cMw0x<-iq3{U(qgKWqba&-}L-T?Zxa9|;m9es?0 zKXNHh=XipL;A4CUuk)*BhjD~wYIc;f80UPdIVx3OQ(DQNrmFeTad0mN~ZFY;eAtI}?mq0&n9?%e|SF*5S-1 z-b==QKu=~1mmWOCOdgR2fhSBd1%!Cxf&C`;$w*VtJ01KYfB*E6G^qF+NwOlsJDgTH^VZ z?({>H{={C6n<)Rm3v*AA+(KpU3CtBTK0WAOk diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2$_closure17.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2$_closure17.class deleted file mode 100644 index 3db717deac06e70b3903e76ad1420faf40cc4a79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2870 zcmcImYj+bx7=9)RY}qbtNug417L1UlrJ)tMSU}ovu{H%HwOCN%b~8yA(%rb(fK~DM z)gR*b3Z7Esc=;sf_?tNDGrLI}?BY2b^vk?6vor7Id7t;4{o~J{egSY24+N%Muab3Z z(y2?+vlg=z&n#7CwpMLaY$tmy5R(nNS_-GBqFJj|my1@_tv5V5mTJvLPihbXy%o=O z?=5Gmrc=r0!b2M30>jFV<(A~4*{IV>aLQ{qzP%)~m!%^;)0d_78(Rc+Z!$g-UK2R? zYEEnD5ZGFBb7r+Fa5$a6W8O1Em#;3|k(NI`xOvNfj!uD|RNXgy+sakVdVR_%y8@Yf zWNflrr7GKXh(q)2xPVqHQo~G6K-{DgXKcsz&j}ofaALC$gL48qQWfbd&kMFMCp^zw z78pwp-imgj39!ZUb)L_*E{+@M#ZDbD>@u(eNgWBiCXnzK?Yh8ppzJ?k1w-yCx(#1? zQx1`HEGdxO9GO68QP~dhkCUAcn0>W0w{df0dP>9V0^5n*I1z1x?Cr#w60EGzL3y1Q`Vp>+S!5=(L8T zI!08)F`HiZZj{IDqUYW>7phXjsKCBfG`?p#^|I?NZB+8O;+Db7imrvAWM-sq2Bjd- zPrTcaSpP)2^lX?5q0w+sphK}<)e%)bm#koubUuxDbesYejQ(4i3YKTr{K;iss%A7% zGHax!hO^{^D#dk21co9?@i7iN|HUr{fZ)LdENG8JNZi^&!u~OeuD@^^yH;B=lrCTX4(%by=2VuO*3W zU&`_%`*f>|1ns9tCiJCmwOuXvp6yh|RkzwQE9-u}1J}u=so4(9veu%M2%KP6Bk_7s zeFetHRUO2hBTZ;s!@PlO_(0L{7CYq2tJd(zKl*Z*g~&)%6D{hvjZY0+!Bs_o1%bUA zRNe%qhLS*>IX6&NZAPMEU=BBw!?wV#_Vl-2r8#Bht~$$iYl|5+|6?!T`W?92=xa?t zUw^+(wJ%P$FIatv9E(LYZkLRiGd)}NfLS%LZdl#c-5ImiTzBVfM_y?xEl97q(|FPO z-lMBR1A4wiH+m>_g*(Z>-w^enacppP7IEGHI@i#5B{MYq7`wmcQs5rP0e%FZ^?vN3 zRI|O<$8T!3pR*X}eDpagRbMN!l*g%RW;l6ZEb{~d^O?*lQjhWGj~I&M#&B|2ZI86J zv%&TXe&xM5?sGIC{=yh1LZkSc6P54;9?IMIx7vZ?h5V>*+JeTRz3UlzHC$pESaeN&{ft@J-JVGvNEQm2X~XWX2o&5xhp_Ixsyc??q-QOEhW(mbAPYE3_c^*eTOT*cyV zyfFO~$u-=WegZkqt4ohyWq!bC&$+qt8M-u5KaMY`cMs(NrANk$P}V6GtUl$JlnHDj KbYF26gZ4KTl@c)k diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure2.class deleted file mode 100644 index b6055cdeb60268f9fa120c2d3141d9459626bd6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2822 zcmbVOZFdtz6n-WNY)O~Cqy<4hKqI8v(9o)&mLhG0TAKorS}dq>yP2k2w!3k&0V}@y z$sgi(1Wze)eEB5j_?tNDGrMUUNaURQWoC9}?!C{w_qliWufKo!4Zvx9FL2iLD><(! z-I_FgYbjUp&9WnNRi|FD-Q4AHnyA}OIa;PmX0__9mMq7s)qOdlK?w9!e9ybNnsZFI zlFLUY8sY+3rQGt$a>=aMs5-pm*WJKgk-16fO5Y4*c~fGCz`hoXLy?%k(DsmO=n&Wu zq7^uhDJbcNb7s}fUG}|YX$7MLb2^gf6zECU0yD6!ykpjCQ|_WCV1z;~_~oKQN!xSj zYvb;yfL1C|!%SX4Toc%N#&+%CtibV1VcEQCMzOiH5ZY|r8JH93O;==)Hyx*F2Xfr^ z%~gSs%)s^bAR0lmc)!N`xedWl9ewCeB8ELWdXY*Zf#(Dg!IE7QI2S7W|LLZmT_vv` zNPo&@xLivLq*~n(=qxFNk-v;a*;DugjcH-USzh__GHMm z2*IQbnD46egH;`A9PY$Rc$q;__jDYOHZsa!OkiqzJbSt#(i^ogd|Jbxz;0%Bwka0< znKlmVIDsLRs$3FTm9I_(EnoM2=>|+&rqEns&905MMz5{@5xko7AA_S`15OMh0eB3IhA-T{G0pBQmFF z%Vv}o4J?oj#d=joRQW_`!cCeyhw&ud!i2!^v#3zCe7hPrJA?z_;BBdnP-pD*NRCK(LIYk1SU1p2UEg{u#LmsV2R?ZDOX5k6Lcs{(tPDbRQn)I-z@U)^OX>@cGT;N5$i31!FD8u8IuG^BgA`>s>pzzAJB~+ z&Pf$-l7PP%>M`SZn_pvm8xov5*Rl7aF_^uNeLwM2;0umN!iOV?{dk^V;NyM(2YIGe zhq#Jy%`V1Ksk*Jqavr9tnQZFFNH%qJ#CU*XF+9LP3|F%$W5jrf?7U&D;pBY`Kfr5o z+`;b@isMU;I>bN7aUnFkj<2{-Sx!*(J_1sZ_VOFNvH>ZFQz0Y;WQb=9$QjP+mQElA zL#$ymvJu;|k>qh`L+PYdjvH=%&Gk<1yup|ysB5g@-b6#|ae~jMVn3q8SjW_zyO=Hv zK0>$JUB`R#g?pGDT*K@gWg#?3j(0sqpN1LcfR)zJcbGmayM0FLNa|YANF7am$kE`a zGN2MhmNzaR4buwjNtJ$uIZeyfL&*75%(#ywWlCM=&r0KZzM(sF7t4R5m*X0|KPWK$ z2&r{^I{gsNJVk?hST=sfXHS6be~d1TtdHXx>P^w@Eaz2{Mg{eA&fjuQU>5`T9ak}E F{{q*S`}P0; diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_apply_closure3.class deleted file mode 100644 index 4c162ba73bf14a09a270e51295d9d6f7f9c4867d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3094 zcmbVO?R(Qy6#w0}BPE1wq}yP;h-hJ5S11exWiZ()jJXbwj^RM9S$f+Ax+EqkIN$JH zk-x+52s)-bDxc(e{F`{xbCYcAY{mnAxw*-`=XcKeowxk;_piSLIEvd0!Ct+ZMv-4c736&*Dbf<@WT=qL#pOj*7b#aT{CO> zLU1A>&X5z}x>ezGTEiu1|CZA*J!78d$GFKI&Eu67i8h99EgBC5VhjhK%~AxrkPe;GY$Jc(v95C68|t4{AY&7QWCvduwicWHxxlO3;ik@q7&_Cgr+J26sB5k} zZdNUZtPkAcBd^v8-LOpJBfLxUQn^eBlLZELnPJ0m!!*2Mib1A$RlBYQ{GFTi?TYvk zZB_p?!zHVO7p z=#`Pcb_JW!zLBJNG98}R?LizsU^TMdsp<0dgrL10i@nPJ#e777FEh}eoH zd}7!a;Y5F{e4L5_Vqs#5F?2^#Eg{1YC#D&?G7&HevKWxjj~v7PCuM#M^AZj)bcoMm z+@s92x#KM;IEeHn*h_QrHAp7fPR@FW)Na(HUFmO z9P5TQTjvs9VUWq)uv8eflh^B%5yQ@9n>rGix3pS<2(TGqtMcS{zp-3u5Fe>9D3JP9CT4etz;zJZv z$*=WE?rFX>LofN?oEa-eqBX2C7(_zCI75w~ooH6S%-+)iQYX2Dw`5FXCIDXX zOTiVK5eIKmX{SY2H?^!?O#yRwHD9u-UUU2HN$U=$iBV`4D^q#&WUe%cmORHWYt-2p zHdZ)|wu*bsOk$QynQfRf-GUjDM1=-~r@7bMB&t-?QRoau!lZ9$@$0owzyA)2PC^r~ zDJ=rCBwSPQ9yF0?^VFpyDSaZe1R6VQ+H(+|ND4%IeqV+SN5Q)&i_D;M-?5skEj&xO zF5?Dr3g%!4D`}Q=Hzz~bXoA-Nk+}P@7_`CEIr!`|=TqF=NCtjJ9q>Ot7c@r-RP&4^j-*voHks8L`F>05+!Y!G@6ug zlYT#Z<~Y4}oHE5P4do4`>YPQHA(yO%qw~{7o#PPEkN^!9Bsyba%mJOUs5E-s!WO9h zJMl|FPtv^Qb>Co4?HkPggk6i+ z{|g3V2$v&q+`%7&6vx-JDq#O0LmMXHReVF64TPG&ZQr6EUuR~;q73~q3X2$yVTjIz zgQw{!EbAfd#ZaL-yoA>uVmQzgTh-LHtV#Gwx@qkS(Z8j=(0yE7A@2r4{No|M;^VVL zoNhstg@~|!6;*CU?Mz?{X9!zZJsP6+WfyT)js1Wmv3KFlT}%}R9-%{gUBcy=;yp|a zEaIIzzEOfODxmhqNJ*Hc1fVhw@pk($0a96Yud0`_>OPgz+Nah^BETYBsG7pdd;DAi zy49<{p*}&H%?Ge&)L8aDT%k%_r$4dqdLhKl+(qM0Y@u}#A3P+1iAPYE@ZrP*+?XNJ qPwt^X0r-54v0abRE>U&G@g3pH1Sx{`1?B85dM3yp1>e&y2I*f|_&(YI diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_configureDependencies_closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_configureDependencies_closure6.class deleted file mode 100644 index fc46e05e576040b11f328697f9ec0ca38d242e59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4682 zcmb_f`+ro$75~oehI?5S0yiNL6|FT$vV^Qeint&G;n9?Y&};||w8op=Npi#H-tFDH zVEWS5zO)ZpYHe+6--u{y5i|rTN^L8xecSf0DWBT!%x)g*?xKD^{bA3}o|*5NGiT2E zp4m74`|>LQ?!vzX4tV}p!pliFFKs_Po*47(Ojagx*}|CPCJySaT?HqbDGpnP)1Eu( zj1_#jTN0I#ZrYLg;dIu^Q@7cG5NH_lJ@5EbB5S*2iLT;|fv`Zk+AQs5|PU4{NO~`bx zwQVqlD3%BqxuQm3RnNln^~+J|GYWF6!19)SUwC;E= z<5OBoyfHjX3%y+e;)uYaZI0^%+Xc3__DtBv?P5IpMzmj5G}XOo8x&a4GA4sAJDW{8 zf!yi)_LM+pYunN4zLoAH&GmV%Ps{?h#;_7iQG~EcVBNd&Nky*#%~3>fLkvr?Y%$R{ z2}FW%CogbNJMjO@K8A4FuvZAA-|g}ycqsx_Wuyd_3@ZnUp=6*lo;stz?NtudR*4U@ zc)-=w6VTzkCyFIw`}Sns!0iGXu9x{0kv7mOP_NYcWWY?!Nk5p1A&!naae6@DzR9JsKCwTTXmG5I%(pgYT*(kVoEF( zSgRmeFRk+|km>P`e2!x~yJ;dhKQdvf^~;o~S7Lc-vohpFkWccnA?^8+n~kc4E0nO5 zXb`wfZD!}}^tj}nW9(XL?=fzrDamUo^MkQ7%(In9F4!F{WIkkM1604PHX5zat z=uo%Tk&(wcCR{tIJ|+qRA&2>P$9tt!11!CU`8*gH_q`MLNLCv7gg}(VRBA@Nch(gB zuGXjoZko;WV7AcbdnzlesXEZWg901XTt$;AHG)*ycXGk5Dc&So_s)!+Bf%Q@EPYGc z`C!0Pp>tTF8iqGK-G2Dh0)nC5Ec&L_@(%rOI2DU~EH1qrmd1r2l z=Q9Z?Eo&&Fp5o3id<9>Pq8DEiSgIQ999Cd`71wKR6vJcqhI03tG1OzZYG~gQXssH+ zDqY^dw@JIRt`^@2_bl9gHcs!>AiMH+@ZBh$z>`J8bLWcT`*>7M{D5t-MRDSS_P=HU zGx%~ek@7}^g-@BLmb5SV8tYmJ8{Wt?DkGIS24VaimwDmZSrb219PCZzoUH6~vr{I1 zZYo}|6n7}*lapj-%?>6`GmYly%fuO4VpGVoMdeLAC$M;qGEDrE&4p}W;#UH7y1q@k zpmeTn;yim!HLnFWm&&GAhO5|=J$3XOX{#!DK3jf_pQxmq;hU-IrPO*aX(I++e%oWI zc)>Mk_}5Wf!sQr#h##rkdX-V_o-voJ_nLO@gm>(&x;HTwYrV}>u zj1fM*79p}cq+XQl8&Oq={C)&0VCmls9`DZNx&|~-{)N8|Axso0dvPrDT6w$$m`R z7t{E1h1IBnsI$&njaFJ+9>F7cv{+KuRkFG+K8>$ip;Iv9GdOwn93Jmke--sgJA>~H z^_<7!>!ONExno^meeY)sE?&Z=AuANWfLGL^)pGtjFD>sX zowD^DuDp&Fl+*a_6$18Og*AiU@4tlCh6w$`d0b&C{HZK#jn}ZuU|R??-S`)PCRN(} TndJIUen%MD82-gk2*&>asM`!0 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_configurePublishing_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_configurePublishing_closure4.class deleted file mode 100644 index e93619a4e821fb433060467aa3420281d90d853d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2924 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure10.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure10.class deleted file mode 100644 index bbba3dd35c1eee966f1d6f5476e5490b630d366c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3124 zcmb7GZF|#X6uzIfBO`=ubfatnDmtL+24$!q6p*a~&UFmv7!H)0rBAy+m((O3%y<3f z5Apj19aAoqPjX%U5&s02dQOsUg@!S{Bu|p(-1j;6d3o~pzrXzf;5fb)7`L5j)~-v- zmAYfhWvh-}uE}h@)~K3R_L6@aZJ4!kuG0=+HthXXT# z!!PHyf_8x&Ev^d`(*;Hfqt@$Y_L5`Yl7^S_-@iZ@+FO^7XG-_nU5_L*Z7Vl0twF^$ zfi1JXMgqGE&5~S^73oOJkU4>_e%I4I)5zC!*B!Gewm`<`ZIMY-C6YbT&G%3|zm0n)2)rzJkM;u3A6gZk5 zxDoAJm_md0yR<*MYM9fo6Dbuj>=HP*DW6!pZuF^0;1vzq(Xo}R_Xs4sInx!G*i2G3 zTdkyDN6Bt@(iyWT4U`dqWUFuj+e*wH=twG;Z4OZ2Ktx0Xt@d&1GzjdBR9nFTfjEgR z(36fZ){w@4ii5}q9NMUVTEtf{M4t2Oe8Zu7BZjl-rwZ|c-+|99k4SG0BfAZUa6}+x z5@PpyQBBP`_8on;CKbFTu$4jzMufnA3hbF4^LTD#d3sO>EtqBLP%`$cdgnR1X4acl|ql=#81{*2sb;`bilLD%tyWW&NwOFSrI3AJNro{Rk zn2Xfs6i%zi;f#hi(a)8CmPF!aD*AmsAwAu<7U&~YnoDBs6NTEfE^Ck;1@8;Ab5C;f z6Xa9168NLxJT9m>hYtj{^B`D56c~&M=y~)SKEyZ&QP9wdE^fe!0_jLuBc_sqO9I-e ztHDe=-Auo#-ev)5id;ca#brzdz-w`7m`0vIT%%6z=TdJPS9_Zh=EzF6Xji=E(VOZI zP6O`cHM7#NKq`Hs$+YM>rd6e(PBmSYbWE1rNvj>7P`^e22pkKmy=8(wZ%X>(HOEte z4$r2{2h0j)HQd0*TuWsd!jYOnqos)lCVE1}Gwn(X9 zUWJ8>h7vwyFY7exn)4kFm|(Iyyq5~NO%D#0BQJlXG_bIh9K1sVW21i&Iy3Ur<2=%B zDvfE~F?l*o@r4?M`q8*Oq1VIb&Vp&li;ekN>4b0kt^}%1o32SFBbH@z3)>cXuZ>ys zx8lnv>9O;i#lJvQCsdkqHl;}|+6~8$=gpeLFlmyY17HghT`@k=fG(9gi|#*Q2a^6X ziA@#IPW!siL)Xvg=_=x61@x_;_hce7IP?I!51nl5Ys-{=!QQ^MYd>+(;0wBDhyv)v zt9Xs>ym}q`=o_!zpjFIYF?pQc(rgMTZqhTCUN2Eh3?=s;&18PY-enB_is3kx@F#tX z<4d|~5dR@X3!&g`d_{{bgpt5MK7Yz*NUiawaMb4)cn8Pm8;5hA?(9d3xC$Xn^27?> zdxR4KQ*527XO)SgBW}9(gy>(>nz@hj7K&vc#6K0{Yd*eM#z+gQ$|mgpI;z@=+Lgd4 z@`TM^kA|oRGs_rD#(qS5W(5;V_b^!)e2h+hyMn7Th5MKsT*gOBzEdn1^-jkVbSt<_ z>81`2@w)vC07@pgKY6prDdc*f<_S0K^Q#5enbd!WF-~mqA*wUUSmpt4F+6Xl|Eh3% zKEzAkL+vl@pzAX1M`SSm7|9iUHvSOS44HcOQ6tgsKILG~6LculOmTcexGF(%f)=SN QzomPEV$kp%tzuCA2cTV8Z~y=R diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure7$_closure20.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure7$_closure20.class deleted file mode 100644 index 7af25435042e6105256facdffca3b677b06644c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3528 zcmb_e`F9gl6#ib4G9e7KOv_RQMXl1NErGg#6v4I#)~1N06bnim(${n#oryCOwC)Qo zxbOS&lfUCusvMW2=jb{9O&s-mGm|!$z=3o8<;|NncYF7K_q+4g-#`8gU@N{9IOw>= zj8m4jCr!67ohiEJWJzYqrApDVGy8+bV8tp;hTD#O!Ih>j2P-zk#!T;omoJnYuj0zB z{1)!|Hfs<9twq;yPR?dZrd`Yog`YIU1$vavf-@BSqbPlK^PJ_&0oOHW1^PO>jx>%fDprB= z9_2Gt#eN;DusVep)(C98teCpSb+n>Ag#@nBu^cOwQhS|1!k@N0fkQz6|2smN$rX90 z;!AhfWUgj8_q(iv>(A=A8OxTT z54T(pYj_I{w-K9}B(@14iR}Viok!|3TYD5L_J>H=k-|pY!TKww0^2SRMD-4I?82QY z$N^GOkWkCX4BO?3Pj}Ls(ZC+sa;aqG3a(Z52WNe$$ZBBHEE6so?h;59OwS*4#%9Ze z&DKjt7&LEV=Gcq7Q`m!HRoj?aNRCYh$M*DYOJbDNc4@;AC)MA)ApmyaUX_gf0x^p) zX>q0JRNR6bi+GFB3N2ljCH6^}ynw~Wrd{U|^H@o0I7nC!a8>n?_FAgoqY-sN?R8bo z@mk>dGTuU1BhYdEZ^L#I#0M!A3}N2PBDITUE8`C9xhe4?Qw6(X_LY827r zA$gLQ@^~nPE|>z#6=yE!3UoKf^TizLC}2_*P3mYyi{h%HKxac3H6U;e7VlgQHKhML zYTZ}Sa=8Y1u@fkza2zwC;e~tYaBx(8D3j_sR5R5u`}!KxxN<6!bEf>-DYd#IobyAq zYI#z@>I-^#p>fr;m$VRKYQPIyEQyosW80jONj%EYL>9SUnn2GJVDZGaDWSthMWN|g&ao>uqT%`f46v{=7p1KiQaFVdb-3^pC|(x0dXdHJ zQmo;X6kbI}$5VJ(Mfp1WuNDW@AC6!+zNuv2A~%@fT;6=;Q~4ddyOaUGNA6nuO=EF} z$ZTrzIRwbK=~}9}$JD|$VgD6QjGE=>y*X>ya$jZUm~^9)_5)!d#x2jH%7AS@~))6OL0$OZhP`W{=DfdnV(5+qt;>K_1TNvZzg^E6h% z2;P}mRyIkwRbkZ%VOrxwsYkG0zq>F%DhxVm?HQ+rc7|2@{XHy!$#9|b<*nx+e2 zEv~_}e5&0BT*q%}cRhEpV5gkNdCI@K$i+D<4K#~%G1_C?&}ZCu4jU&DKcQU zL%5$>Dpz~>RF_=Mi)5pqjUz!|M?$}`MZawn4E(CpF%qtAk)KbwU&50KCBm3CMfP_@ z_VvKNn8O2gR#Qqv-Dc5hs@`f#0uSP7l>WiU>c;dOjv2A9kW9~G>dZHo&UXKaW_3Cb zdm{TSrn~3x@R=Yel|HuNit}jIaGY2o8ASGO46;JRq>USlM{;Q+ZOn2VF&^idHJ;2V z#3=Z&Gb5Gj0&oJWjAvNg5&D1b98OIbvGiHIq#P=7{`W@WLy?EhZ*ck#tmHa}*M6nK z$e%Fg@y5tGygEVEx4*?{mf`&iLT)>c6&gD=j?ZW}MU$#zAFv5N=QF`u>G*=X7_@%@ DNR-KG diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure7.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure7.class deleted file mode 100644 index d77227e2318bc26305a14c91c5316227b32fe490..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3437 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 qJG??^^uakMFZ&0J6{4#!J}13g&Y(3+$t~t diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure9$_closure21.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure9$_closure21.class deleted file mode 100644 index a9567e0479f485df849b20d1e3413ad5d17d9035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3352 zcmb_eTUQfT6#h;U92iEx0a3iPwW5ZAMri8|)B;|L1hoXPs5KpulVmW=q%#v0dr^D0 z_uETXpS${MwMDF}txt8W{)PS(SM5GC10>DhvTONr&Y5%0-upXy?{Dw<>z`kL2e2F8 zGK`y6E^ZdNVROw&=i@m`%M^ILSSaOmBYx7I21OK0Ayr&|JJXwF%td0{qQ(2QJs&^wY4X6O<&(`JU}wUSL1-CI`4aP%1-Kgtbm zk%i2nL=D5*Dj+*NF@|GL?g0{N8CGP>L9I|=*cwetYZo*R{)wq+o_2aWs<#x#sArIh zmMN|!YWoT-*9nI0xg9XjDhm5Sr5K9F5f@ce)OE(Sjn}3(&rBsSE zj0`fc(*(3nH+1I!!+`*x)i{?y)iJ@asy)XY@#v)P@P5nEW*K^-9cO~E`Eg3qeVgvb z7X*71tVXMh5Y{kkdn`;H6AGHqCL@A%3Ra?_j-)p*M4Y^CGn{e(Jn`ftPd22?lEbYb zg91XaVNk0b#!#OUIK0q@i7*fYCHCsT087}y5GGGDv_u0FWgDV0wxWY!dtlU;^Q?qU zhDPD=que=ZkwYwJR>5}E*P{zN7;myj5!xP){Hz|Q}hyAlo(KmW^j z3H?;YmUhSTmU&T|DsTxzLYZPs(ePNmjzTUT@7GVQsK@;?O1BLQV-qxHVW% z!b=R@kMd|TZRtg4VAkQHn)YY3A|Z;J&grx+NyKv?VYiV;IK; zs}*vEC=^MzhK+DXa|IdN=;`H*SUjSq)sldJt+|2}o>2u!jL8_lIKxU&&K6}EIs;HI zXGp;*ydscJDriKLC?jVWqJh2(sI3xSrJP%U>Q(0b<>nV$^tcMC7N+o;jC0UD#f$G! zkjAJu$WRq(7t|{&x*N-)V)1M|X=a`B2GZK@b>D@O>(=U2H)T-tOqpoXv4~>5qO{lL zHQVEQEv7}6avQo`3u1hoR}qeBRxJ!FUDIMwr0Nx9g<+SU;mb8{@s^5);G*jlw2V}6 z%Y!GOq#zGnq}E01H-WBQt|GdsB~YKLXf$4!0$m{*%^NZ<<4pxw9At_L`M zHXb&_-x%cqrC#2oY?G5_$x8DhdV!;xo)ZE6Lm<)=5{(yVk_B^UzK&H;-EZ;}1+SLw zHKT>bPw8u%n&1kW+vc%$UnJJqbsOuq@2hF6iKTwQ#XEesh1h5uQ;c1%1 z>KSaJGqHM>Rv~vKjE8BL{-S&n-_y6qnqe|A(xq zNAGuN?Na+H4u3>*m%6`V>jwTHbzyu?V=KZBut&m+CnO9!qzytV;Sj!{#R>ut!QU?U zRu|sTBKRR3aKSSi#t}Lbz7Vr`L@NPJ_yE&)2WG`q>;#R%w-mh`_(3Rj$_B6v4|FCEWt`fUk91Yz`A@=m*rs z=5hMQO`J`1-bbU@oyXK<;ug+!&Vk=>K?&CpXBr-$S;9HW6=JThZ;Kl~%7~b{Sv{YO zsqN|vjeV*~<9_w^q{s-7UPL2bWRshGz-ra`4Ht&V{-wLPJgJ6axAB%RD6Z4bq9-aq*o@DB4nRX Rl7CHegkGiK8(M`R{R@&gl_LNE diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure9$_closure22.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin$_createBundleTasks_closure9$_closure22.class deleted file mode 100644 index 6699272c2c61217e6801be1cc3bbbebe065b0c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2649 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 q#Jz7|x5E5dGBjzOXl!Jjw_K=~iEA_;*2 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/plugin/PluginBuildPlugin.class deleted file mode 100644 index 1d6a33d755eead52fc9a1d19522b475a643123e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11440 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersPrecommitPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersPrecommitPlugin.class deleted file mode 100644 index 0a86dbd9f722e212d987b90e9f4e84f1c4865a76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3595 zcmbtWYj+b>6y3KCOq)(01Sph;ibP10LZBcI3u37Pr72WW3I(N3)7x}tIumE6g{p|+ z6W_1D;P(oOtt^#Ku$I4xrS3aPnzT&{=!eWq?mdrv&OK+}^Vi?M{Q+PnOLG!EwDcA z*!I+PJY!ht_;LUH^zdbw@-(av2ruh(XHHk3DeQWNXQsL`hU<1)qqaaaq0pr45jkc| zx(vtn;>ghqZJV|gpO@_r(1wO+p|?vwTo9<8ke=ah3#?0&;_EGJP-oR*pJ9QOhfK@# zUKFT~vX?f;^ zjHf8?Qa)Z#?9dUy>L9AHMn@x>f(W2lV0DZ4u@7avSP4AMG}{dDI-_Uxk_eK zOO|wON2Cth&??Z7S5mRTtVC=utmWsIj^P1 zqM==2_i|}VrW`Zt9i8^bC?m3S#K?Nm(Xdw)hv9ntcK>u%3hZA#0>3ZIXLKL-2k|@( zu%ENJdLq3nKI}rJu|tZ7(m&?dSB&9|)NqJwQrsv|5nH-OHLKzmYO;%pGC4##UP5OO zM{rc2Ua`P@YYD{4gjBf?U&bpcjAJ@#P^4!E8S5NXyx8hEJw_bXq6|isN*~?*5NE(6R2bIS!7x1 zc;xd1bdWb$T0D7_i=xS|mPAuoRmUZ~p?n+k&1@EZZ-2Z5F|!9tB`Z2Ffm2BCfQ}TT z@;*u)3o8mNxy&|~Xz=EZC+$)1j2xAYv{I6F(Hzd*3Wcl8zXOMMb0c!GM70n*fz~)O zZMrP18jx#MODg7bYhVeiDQ8V!ADgvo_f%qYABBG#R4w3w91IPvj>{NVMKqb`=_P%% ztZ5Bb1Qwi4jzP+XtgiIwAg>~9Ggc3GOWx#Mu zMY{d!!P(?YE^Py*YjUB}vTQZJ*cKVLo|8;!yw}L)Wg8QwB~MLG3`-}!Qkyi>mf=l0 zv=mI*lTJz=Gcyuf7+(M!&9H)_5g8R|x``m__`abg9lnET@YjPX#T)?YD9=fXnqTtY zUcS{>&^(K^iRiCb7rldxy=~E;E9k524{O zzU7Cq9^e?Ed^Zy#xSjK@zFt5F_rK$66`pMhsOgUX6@sH&QPSHPM^~uoN7O`TaeU?$ zx)ZSnXjH4SI6auSjqcbToSC7h@FB4H8XjV`hMp#&xSv*(y*S@0@^#Ulv3c-50yF2L zgG>?AqgIOg1l+BWDpYDz*{RednSOx*oXZ;v@vXqEjK-+1lABBALizI;%*(gr(^*g0 z7oxGYIlLZ#a#>F85{B|>>zP&MM$f6uVYs@YRth5(ouvaPk1?n?BA@UUI#UU%kA}8} zCX&%mIAkY%HC7&5FfX>nuTxe~$oU;!4-aMPF0KxSs#tSx`yo-BqkdkzD{nP&3)k*r v6`yzT!96PUJV0m`ANAbD^+BqBdK=ex4qp_{f#zCRt4=}b$s8@ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_getJavaFiles_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_getJavaFiles_closure1.class deleted file mode 100644 index 7ac16f54d27b6530eb27346606b04f6d60ab38b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2535 zcmb_dYjYGu6g|Bgm@pag*Z_)vfJWHe1eT!UBLPiT9wD26*%*vb*U4<}W?(ZDduFln z6Z|25N1#HK^6^Qk{7sa4dS;R=W?~gpe(CAy$36F+d+zN&|N8k?0Po>jfhk`#Oa7Yl z0%}PsvDLnuA?_^NV_goFmDI~kd zt*RT!38n0HMx8G#r8|-E=b<=8Rt!!_R$^IQzVxkO`1iG~#w8Uug1(%{l zLXP61i3@mJVD!KEsXEGC3n$k@R(M@b)a^B9&A__?2enGK9T6B#O-j1g7Td}DCNALv z3kT7AfUz@@e5xZUC1c=nT%FrRByhPCJ`S>wF8>sRov!8AsYnH z&9WOesim~*0+*Q2RHpWlbObx5tARbYLoP9{fm;@CU`h+{)1+DM)p~XOFSLxvw1Mis znpMnyYK*$Gd}d-E3l^^7x=#J)0>^elyo*Q!Y>HXx*}|77m{`JB7Alz04%Y+@cP2jR zk_8$cfUVCi3+%Jwj(Fka`(YjO0DWyRW$Eu2+hdu9q5GFlb{1^q>RvFf2i6EH*||4k zuOq)6lohyD_ zz^wXhfd22%hkkxd%{0@`M_2cCjxPT$Bg-2=&nAw{7KcZk z;ME_sMsSzoDQ<$V+fls6ubv&laqj8a3C=Q{vuknGrta`xpC6#9nUUP7i^D(RtqdOE zH!fyzkD~?gH{GFq19`MK+0V;en2X?!&;Yo-1=oi&5u64oa8HAb^Q%u;1gR9o21a80 znH~Ekw=No$;CVEhAFx2T{1 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure10.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure10.class deleted file mode 100644 index f17987126c803c1f11ab4b9903b741715651b0e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3143 zcmb_eTXz#x7~Lmnostf;q!*}wiUdg0OWLZS6p#`N)TV%>6bfpbCa3K{IumCm#d^Oh z`YU|!9YITxh4Lh8`I}hkK9fnCnv?}=@iKE}&Ue}0Wq;@V{m<`z062&r1y0+}T+%K| z%aw+cn@`R;M!q1EMMviBg$2_~rp=t%JSC01blge9y&B6pC2Pd;vbloomK-@0tE>hG zGzfvVImfmamy!j;noFk2LK?yXy~^c7>#C<8w;b4BL7;qKaBIwEKmh#2|2>6x}=P<30n zI_Pt9Ryxwk$zg%knClsynM)N6*B!HFZGl9(ZX)DtfgWj)Neg7DuVu5eFp&}vmx%SS zX_?+pfunV>)jTGtUC;@w%PVgWd=d z=o9Fx+Y=k*T|<%?Q{~Vxh~{PtU`Sx_Q8qF;$1HlsmpoECFGuo5kvY-uG6TvvlFXYh ziUP6t<=W%~&`X|KNK%SLKY)V~ynyU?sy9n6XjIbCy{DofS-;V_5F2?JTTK z8*Z09tk=@;1{t0+TyN5zTq?3>4nDfMeahCK7AJ60ap`ymX|?e#$sJP-ST)3U zRrQ%8XOkIw)~g=Kow0JeS4NmW`?7-qo$FdZ<1>6%jY_R(c;t%JgnYReQ%0dAn=ngS z*E1$?fMu#1=0<$>K@6*55?VKQ$|y8k)iHyd>YxRV=_fa>f#=S;`CP6>HQ84qR`dD& z2#RoYyaz)y0*Sa|jfgdA)vy@BHT3D2hpABVFzKkSedRRuXa7e^_G5uYqkQZPJo%yX zDL&gofS;43Yqt+h#1u!Hn(sE7V#;t#H7zF9gVZ4Ba#uONg722JY01;2g&FAtf4a_< z%QI!VCRIi(%T_eCEfP;3vv@!8lP3AuGHR*o56=KL<-Eo{&~Oaj za`6mpH{d59SEui}e-&3hj{3L+MsS>aD$EmnD}0^AkPiGsM^`X*AERYYp*2tK6;CQ^ z`sTAeu>Kv_%6CeMFvi}%{^7vB?%Nm3c(cZ8M5!qJYgQw*R$Ch|jx=p6)C#>qy+5&x zv(eDcXiBVL^2SX}rF$NrMg3jD+tcY=nCe+Z_J$8iC5#N(@(^trF0u{CFlh%Fk46~_0p8=*-R@R#h_>wGsb L5*bDrni{Qb{wzXSLX_XHL_zn1r! z(ha2PTlIX+H!F_JH+^Y&jfNfOi?*dUuSv5a{b0!q?q-*tRyZ@!yJSGekicjr2+h#83XT~B^KR7> z$QAqEP*xqfvOSmCXxq*RXyr0JEEWXBEe3JUcJ1(jz|lTI^u{o;EU+_Elc9>dWQTIr z_s#nP)7gpJ{ex(y*`j?w`+Vo%jDa!i(viS!13Qt{k-}R7sjzMb0yiROZ;T(j_Hfy2 zh0>pQnLXE%0_on{2@I7Leq4hjxeDg{<=SX?S70z`tp=fQyR`uvB4K77XWXo;Nk6m$ zE{-=yDc?4oU;yt4oa|elc4|tNZ#Toa`yr`ck+T)E$)g(HCy3=s`dKua0-5aX-hkUI zX@$0vrxkO06j>cdFd=a4|1f*Xp<$A@SIdQ#?@KonxR@<=E9z>bn>IaP8A>F+wvmBj zI6j0afKf&HBTLf>?Qs^>Sh8uAGb_c(?MJ5a=`YJ*2@C&%nB6Ii=KGrb~n(k2I*gPvR*+(R=0y1zO7gQ}i zF|Y%}gA8|8AltVpeUz$!3N<>R#yUUW4If84(O-3a9P(n9aYe@^T#X%X-pjx|&Z>=1 zDU*!iK$o%)bd}nd)qKgThBswZk|UO6iuPn;l6G_*HH7j>ZoEL)Qlym`)jzbR8Is}d z06t^o`yCfJ!@~5<)T`P_1UsW7%a@=_vN5iPFAQAA4aJ!+*{xpRwT6|KdSsmcZc%RD zQ8l#NI&R@>14S&V(tj(kZ;SmsiPZ3&K$6uqu!>VUOjrhPqND<5uiD*R_|6NltYB)& zwl1*Ej2rQZ*KfmjaCeZg@*x`Bd{Ehl3v5QJOL`>4vdLaXu`a2BvY_6qyKFe^-y=oa zmDgL1Rq3}^_TG#OwajkFBeSmSDT#V6MQ6;rd~&1oN&XzU?5YQyO_PMIdldn_@&TV^&@s(uyaA_r# z&XhKg`xPgWcz{1>mBjZP4TygULqH85z~^K;y`}I&gujOf;C2UpoEKF13iTBC6zVyC zm6bu%Vot2%Ozc0g|7)G)TzQ>qdp(+4$GLRkCk*5^ zaPh%I%oQh}VMMKN;Mz*@5#}b>vG9OLLoe*xO&g|@%!LzMr*PLAuS{K*3g z&ye0gb>Ruj6&|%8p`7~#jTZvk^&G<*Ih;gDzdBv21iEBJi{BImnWQz&643qwDjnT( diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure6.class deleted file mode 100644 index 13bd0cf0be7e7ec946d200ef6e2473921b46544a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2723 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 AJpcdz diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure9.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2$_closure9.class deleted file mode 100644 index 3e869fe0790603f20169b556e53405dab6b4bcb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2675 zcmb_eZFdtz6n-WNY`b0Bk^)+Jv0#KWEreD?uz+pDTWtzTYPF!o?PiiJq`Pr<1BajB zKkyIu9l=wo9Mn&8j=zbcKC`=N0|}nPIeeL!?A*D}oqM0>PX7Mqx8DJLgnI%@u2;*u zP3id3^sIWm=9!g-%r`x0x$En8kT2Sn+Po^wiuC+t)4!7`do5?q3CdQ(^;@2t&a_u& zH3)%`n&-NA@8=t)Q_B}38x2W;Nrh#(6oInZF_(>6wA7Y@OI4FxriN zB048fcmt7Z=o8pkaSLXnA#gNXylvh!qrk7P-Ii7`Gv58lfQ|uy;fx=cfo&BUrtdE} zRaYQa?0G|3ZP1nNI?P6FJ0qZ#%k;2R5D+&R#5vosg9`%3dIZrO!}yB8?o3SvD)N#Y z$T`n5?+Z+4$8YrxB2KeKd!P3C_Q4qgBiN%OfxQNHBdsHaw**o_-S!2phtA#@KX~oI zvfB!zx8N{)jwJ=s-M14MC@cJ^21#-i%=gQ+(eSQ7zu#K(1J8D9eK^dd&N?n@BKz>3 zz*Ns_#EB?bp4|-Q?*}A$Mb1^sCZp2uK3!U#BoUX)ra&fpt2?}y6Rp5*5|3A#GFsw5`kD?N1 zZL#isimZzMJp2M~_>nn0i;s1Tfu_5Z6t>O^O!Sb%tAGrg#|2f3PYmqBU_Zm16Ug?g zN)KIXpdO8OsFAAAcfv=}j`!AB4~M+iC0y2V5mzF|TlX@sfHP|2Q;H&^IMAWvgB_*z zWHn!MtHBLfmE?#enWBA}h@@>5hw?8^apMKTmO^FBsBWP(&43Jd`tTVm-|M)*X%?nu zre4)NLf9E4Q1<-}fkwC*zA$hN*A-{JWN&(X*BVw|>WESPJ4Ly5N7cS=>9~on4HU7Y zO8>3E{%!VmB~rt80!dcez#2~JFku-l8cEwCA>p6HSgE2d{Fu`a8DvY_6qJ8U@d@1dgY$ZM_jHR;7)MsGxg zTCshbN9G(hLq1WiL(v%v4juyCrFS#wxl9%m<#1s>dV$a=) zf=SD=UMj#hlo{>BxU# z+rQ53(7(D95jnQ+;O1&Nk$a49lzU~)2R}A1#Qw4mQT_|NIc}ixCl4$>LwXa{#V0UVdDMP{ ma_$$bzYyS_=NQz;;Uoh3)#*|t&><^YoKxs$lJ0Vqfc76NAl8ro diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure2.class deleted file mode 100644 index cb6d0fa4db22effd2a9818d22d460e47e7de6882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6414 zcmb_gd3+Sr9sj<~CbJn90<(ZDh(?T%EDH�tU1s;gk@BjlqCz9Cjzk;$|n#&I0MB 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 OzaNzdiUzKHQ2qy3VeSS1 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask$_runAnt_closure3.class deleted file mode 100644 index a12daddbb7384603696d1761fc98715b979bb1f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3471 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 Q>R<6UL9cXt%~=fEzk;N?b^rhX diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/precommit/LicenseHeadersTask.class deleted file mode 100644 index 7e2fb10b231a955edd29fef846847354e468ecbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7674 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure10.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure10.class deleted file mode 100644 index 1b6dda044f63c4aab5796ff1ea9b28c2b52c199e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2830 zcmbtWe|OVV7=CWsk*$PnbYn096)n(qKp8411#wh1=Q=<-h6A-`?QI+AlA5H0sb9bk z;{OObrW}>Os7lZn?}c_ZC}diSf05g^Hb824vp3}GLF$>(Y@{RTcyW z)2?TDX0_NdTzA^4+X6Y?!8_snEh~Q9xW5*mlOWOz&NRcQd7% z#u?y}!^v(hts9f46M+FihnBSt>B2~~i-26kC5&4kKB zPthWXLdScUNa7sM3+zyhxnWUYEFz6(x!3VNE~wBabqruoHN*!3nMg1rri6wM1@!e$ zgBf$S+x$9AF<2QimzScV}Dnf99hqo?Yh@J3P;kx zv{ik!p;jRsM>03MRLh=YT8)AlQt`G~>%}!TWt6JG$&k8RX6du$l|SeTs+)NYb=5rZ zso@hHS23^V*=HPwk$64Vw1&_BF$V+eBlA;pa4`u3RUKu_sj`#*dpDW51w;*vB$~+T zSip4^)mN_I)0#|Xyz@&7*DZM6Fs;1_J3XI|+X-9g4g z8Z>k2!MGc8*El-LcE_p8NwXy}PCycz(%X<2jH#Oi7)+{$;`Cvsy)9$@d$(>;W6~5K# zRUF`%TD`_q%wH+zaqhm3bm*eY6Lq$mE=psmgC}y|WB)30KjL@{ckwHa;#lTWhxm(^ zD*b6Vf!kbcqlpCm@ZIy2JG(;n0&n0=npHVWh7LxQgV1=YZw-Y<=nL$}Hti3u+gB+C zHitu-cetZGzD2YWID@lc0_Q{fhjXharefcsH@AkVyZ10%8heZZwY!E(3#I#*9$Uqg zyUK&_ki71Hf*}nvtOmO)v^V4f#7g8+2U8!H6~d}qBz7opz%M3~P2KnzpU%)*0JNaCN`G^WLkC9r#t(k{tE>P9Fk2>LTo(gdI3Hmh> bJ&qOHP12;Ql}plm$#(*M1nDcTV$l8uNFE6+ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure19.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure19.class deleted file mode 100644 index 9a234463a326b81aaadc542046461ed2b3be2dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3008 zcmb_eYgZFT7=9)M7ME2pAWFSdD{2U6gkG#*wU`P;g0~9T3hrZeG`h6aH?<*48k<(#?T(M_<*U9f#?UZzK-EnV6#uI^|Q*k1L2 zEL<;e=0C#K&@9kYbTVeSEO0oPy=mSyL$DWTZpwl`)U*DV0Ua#@S}7z$U}v`WlviX) zy3#JlA%V7T&o_OmkSUvv3*?s%MH^cF#&*9XeO;y;19ag}BWcr1GyIr{gjvL&K}*GBAaVnz%;!b*m(;DKUF%LW3jAQ#SyD4n~|qB>zNXGElT~3 zZXN}AO^pj645^9`TayDJ1`S06H}I~?suD|RUH&%Gdth3_+&^k(7>l~+Rkib`4hy#o zOyjyrgL#&WYG$q@RfD6Wf*u1VW)w=7b*(n?E7x35mwmN%L7>qLuY}|O{zABeyITm5 z_laJ83b0&dC~H-J9Wp#+x|XU;ld7RGsKdgo36oEW;JY7 z;*w$8c9e7-n^%T0X7jNSkS6)rdd^la5atI{a?U9dN6uMr3sPkU`pG~XOdG`8V(R(< z+H|ET_TOSV62UjAWxSiYt{ok0KjGI^-U?0ZyOyzQFrMn|dx+gf2OGN@Q~4jUx2y5m z_nZ{?lx>PGfL+*!7ul=PejMPO8ok6(EEp;04gAZuMC78xZ0+WUad4n7(LIp* z0ehE_dW3Wgk1!C!J^acw4fu?$0r3~z(6NSB@i_-gv=zr60gleV)4o+4`|xsrgDT)- zFBTkYguTMkNuSxsS7LA(Z$80b=qXn9)Uo18osz!Uc0|^{;8^*7oxM6!GO~XvvTp?T z#S(_sS=H4Rg}-W5UvIT7jBn*xR~vIidOY^8CR#X z4{)(}3GdtsKqJQ4hkn)b|A#<$MuE%QKPHECe4N%1k z;tlV2AAI&5K}(Sjb%G#E7em0iZ&1`Jgo01S@=n;-mR+{JZQjy%atL&2L7&AOJ%1v&Q{q*9F z8isXC{&#xo84mtOxDvt)wP|Zu&*vH1JL6~d^STH2==52hat6C9e<_er#~@`qG8i_* z%TIZnXSmJH6dz;=7K}7QV_VVD9V0cI*Neq5Gh;DC<5kbkGkJ1qSSE4huO%x|GD#LD zh8fstg1g@^4d*F_6II|=qFn*o3ctIii0HN~cLXDv;qW2b)@K>|JG;(QhwO(eMeB>S zKDMxNP(cee$OzyOhK^N1?V3{1j7MdJuu;KU)UTo4n-w&8y{!x(CubBH;x3f`N2bJY zebOp9+#WM2OcXZ;wUS1Lx}~+c2|ZGljf_9i*}cwJRYeAO;xLSJkJ4eo`pKnxVO~s?K*| zw~QySXPI%&t%Q9h%r$NG`D&@_};q3tX+%Ak{mLjEpq0p5euFDKKzKOq`{RX%mtzE3BK#RBQ80OtUgh z`3=(2=3TW5W!0_6$v%dbWf`@YK9n>D-7sMkD3W;3ol-iP>T4FUX^l5^=f zL?IZa)D@SDMO;qlwjrv|q-ZD;D8*9eCUkmEx#NboVe%uTnQ3nOe5iqZEK-TSSD~WG9TUYA;Wf0r8SAP2j7Bqb^@Zu%F^|YVO|-k`CN}LDsEyP{lRsli zr1oSaG$2JJF=~xSCx4`+44+fG3pLcXV;df$ujoCFHkuQ??bHjnJpoC`s@(-8pwfHG zcl|v<5pyTV^+b=_-ru8k^ha-@CxF}7nW(vg-bAoR?dy;Jge`N}>&|G25Di;tsMX%V zlZl`@NWatrTB1fhsNKY&TNnxA8h#_gL3}~20`@mF>M#jo_>wxc1R#Vz-D9-4K()nV zXc%>mLCwWv;bQN|Lu}Pd@$*xk>uDob>zmHpS?Xo#cRaliPt;&^F8$&pWQ-o5m zamcsY5uL*eYTyTiqw{$A+I39FyYHbv{GCTG5x;@y?m3*hCOo+GPc&FsGY+*cWJ};J*e||Z~Qi{Bxvi^8@Nn?{bU)~=KH9ZDEEW- an(WGCQUvK!N~&+@8zS{8_?CJBNdExfqm}jm diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure21$_closure22.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11$_closure21$_closure22.class deleted file mode 100644 index 11ca1f8dac655fa0a79ba649098875e656be14a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3101 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 Px17WDNXK_vg`oWd#hQLW diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_createStopTask_closure11.class deleted file mode 100644 index 04e6af0266d1ed12cdd3aa1a966392e9c3f8ed4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4609 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_fail_closure9.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_fail_closure9.class deleted file mode 100644 index dac438bbb6420588fe8eece19bbd161d3073e7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2590 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 Q+~+rkJ*4UZXBim(0BjeujQ{`u diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure3.class deleted file mode 100644 index c7ab858199b15e49cb51fc13ed3e4543c2248725..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2438 zcmb7FYgZdp6x}zW9T)}(;h~7NptMZ_Z3@*|rC1>rL;|f1QYp1@NG@UMFoTmxm7mZb z;&*JjD7DMSC%cxvsY~5=CcI>D$(K8G=bpRIIs5E$=Fh)={uRK7@CB~AUM1^pNT(`I zue6%2cxKs_SzlKD?6~7kT0i(TPYx8ln!|0eWV==FuV@eg9Tm@YA8lrB)2U>0;faR0 zz>oqhxn;R()~bXItcc)S>oPkf9qF0AEbrYoCD6X_>r!YhaPEJFrlC>bbQqpMZz^AR zSMx1fWiU~*?6UMm(+dW4Gz%mKs=n!4rJQY6tJBVkE0D=Y1}s->S@JE{VRCibQ30)3 zB*JV?K-{C}>y~5rp9ow?<=4zdW=O`Zz(^{+ z6dgpJwG!>Cw9oEd95v8^P8~6H8E8jRM+4pvXz*99s=&1X?BsQ2eyv5f=1XtdAx%z6 z3M7xFA<$e@j>0_2LfKVu37n5$A$|0IobrQOsG^IJ+#i>=hId(I#l}=1t1yBo>EHI4 zt>UAsHR}MV?>v-0#h0TWT2MfvRdD zP}Z#U%|I~%J*o7rAcHR1J0j7EeW)-C4VMKPl{l2#2+7O)Ho-?$eFRr@4C8%);s0W; zQ1Yw|e`3>@su9P_<_3$Z;i^E3QtVzJ0)r9s92d2LYxqd#==j(`3tF2fzv}|2$Uq|6 zM*};>*v&9(zOjSu!z9zutq=i7K0d{`jvJT=f%oz<@ENk|;3g$KpoDOs-Oe1~)srjP zg1h41kt@=ZR6I-5Jy7x_XOt54-nHT|4^m49t`>aHaw;4xl!wJh(uf)Mg6&o+(rd)5 zKxY&Vhb{{nN!f9#52nPZYM9s|-Gl*XxMN@%U#MX)&slPEXbnu^&;$z$5t*zSH(%?x zi$w!d_*`jVi9NZm)FX^)_(mYkvXhZRny$}D14VqR;{i+qw{TnKQ4;7nD2%$Ln&Rz{ z%63KIlo?LX%O{_mtFW4w!W!xP_rHzB%&}$E;B%>)1=F)sm(Qz(-NPO)J)AW+>if1l z=fYfVeOY?-FUGXPKU_edWEZ#HbktvyLZLQS-LimQaBE&kPFl8PBgZ(nsT#x+x@svP z@fdAL@Tn_$S@Y98=Y;3F&fORXX9J(jJLsOv3=TcVn?G?Y;Bf5=rmBt}yu}^($Lq!0 zJX3FH_!i^)J2=Z#L7B8xqUt5o>`=0AWGLA`l6isiF$}&yCXOxq#^X3#t_H;4#HA+< z7qP(?6;}fu2adZ54Ib}0?!lmPoM^x$Wb5uGXrrtyWVZ1^GWH`HGdmdFdV;b1;48GL zuRF*s=AUA0a2u0b%2(i;5^H^p4h=WR358zA>tSRnwU$h>FPSf7lKsiKg5p9^M;+D8 z`U8T2uH=`$pfE$9U%kZL#bhk=9QTwHWzK(T-8@%EO+CT=KhVx~8_U1*!ptiqcTk>r ti3f|kT6v25nP+%-D9p~+Xw|5zIKCsUPDquo&GLDCHlT?#R{0i#_74icm3;sJ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4$_closure12.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4$_closure12.class deleted file mode 100644 index 1d0601628f64de7dcaf4f46074908379c4682cae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2758 zcmbtWZF3V<7(F*hyXiKx%@$BZe_Vlg7d?dCRJ2)lK&DU^TU zjDN%L2o4k()K4))T*bG_RhbK9Eyzu~!Hjb^sQWTi^6M@iOLo<(@%czdCWK?saie9v25%T+D6 zlFK)ZG(-i)m4DkS%Vn!xqxXgtodwQqnY$=m>05y;w@&m4B->#RHSGnC{kJSN#0C1x zUf!x!1@@;4H?38xnd9Zfo6-)ZGTpBd&@m`5lBxw(;Mn=9RjbXqOP)Zs(6bo1RHZA& zb6I$3J0+l%O7t+F7Z6`DiBpd21ZM;e^hlyRhs*+TNL6H@GB=$-PW!&KCNP=KT<@Jk zh^S5b8tro%2d5Gk#a0~=Y)c>sLq`m63B-bBrzVhZIQw7iXQ@LauO3K$)+J)DEd`A3 ziUbBrDrOURffKKXL${+SnG3e(oSg%z(micg?O2^@2mvp z)&i+GI$gF_Scr!G0t2=$NzHj{MIe>F-knHDoqFI@bF?DRX=HR9Kvv-3zs2n8k%n=? zqh9ChzAxQC;B30ksi=z$-GrQdWhxEvg+>V+LT(TTahT$4V|8`e_wHDWRjFZ;EKo5O zpj7acH;VY$IUG|t9A^%S&1OSU^D?j+N)gzR&TOi)^@*&CEBY%z@i5KWH8frl?kSwo zu@|QWwkUD6&I*k6AlIt`CGauMs^hh zCh!?PSJR3!bMnnyYxw%55!-~nQ@*Vd)ja%0#|@McxP;59^OnHQHqp9p)L;`AHk*iS zqGU^S5=%PDs3hXr zxa^e~%k=8LEoYpn#00C1aU%C4I-)BH0VCgI7$f}E6|n3!|0Af&hii>brxE1|U~nDV zFJ;HZALH$x_$Ux?-NTRI6}$uQ@K^12;$41IyItHxxYzL>SLNy+!zx!<#>`@$@qt4A+{bUUj-t*r0r59yHUn$;5Ubqu(`yVrbmWn4 z<&nm|Fpo4+VID_Xd0gW;mB(l^kE4?;>j_T8!hn%>z~n~2cCpD;kYp=JvKeF~hL3PE zEcP6WkMQ_`>?52pB0nO|vd`Urfb)g1=NMLR*YRnw@DS(69%25ziqr^9Y7f1@sD>GK zgaQlw?H~{e*ezLOw_%!DJzcCE3Yiry^p#1|abL2?? diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4$_closure13.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4$_closure13.class deleted file mode 100644 index 22c6269f4cb5c4367224ba60b733e9b1d2561b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2609 zcmbtVU3U{z6x}xoopw63C8bs5qpe0r(?V!LP(zV4Laj|f306wQIGx<21L;hiOi+G; z5B?0_E4WIPh596G`I}hkzB7|H(BN9=%gmj*=k9$z_Br>@zkc}@z2PgLWFuue*q-xSvo|kN2<~`56FEE`RU+L^b zlu?WJ4ccd02Xh7naZpDLLk12YsUv~c1QPz5-4G}QVE?Q947IQ9Hht;MJIt74NrB|v zhy;4eiZjf6obm&6{9-*cj0o(zXV#mt8)E`f9TOhKTCzNQ!=JtHOQo-T#oVA18r~A< zu{=pxEt(qwsr1TTZ=$j{eY>8e6_fNfj_XL_guuyvU!(Dt(H?-Fo>z-RSG1&D19@KuD~GzwmZMG#WHs*Jt~Fs@N>MuPv-DE-qkUR_XPGU zweOr2nCPJTmk}Ar;ex8gjDh{=>!G_J2&6k!r99nllCT2yc+_ zDqby;M zIKbx?R)6P#g{Mevqq6WAg9o3XPosw8@QAAuQYElXQ8f5YpodBF Ixr#yi2S1v<6951J diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure4.class deleted file mode 100644 index e58a45e30dd958664547a1a1d1515c7190cfbf9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3431 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14$_closure16$_closure18.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14$_closure16$_closure18.class deleted file mode 100644 index 3fce27b8b38898744dff3fb78effa3456082b268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2791 zcmb_eU31e$6g_Jj{KRj4$hcX2S8$*?0YhCzBcOmzL2ODOg3UTM!bl*7cLZYoyj>S4zSVTMQH2TUE4d9{ zdQ%Sb=vY#~=)9*uZ%H8us}UuE!OXv0B@H`?xMJ629J`f~P(wsu|LZ8%kqQkT2y9ia zCj)YZK_{hu*`ruIe@Vwa^!8#eQVgf;bfm)k$8Q?Iz*LQB|L#W9^e z6>STFbY`S)29gliLWk|(*S1KMxZ=4|4iCQ&H+ac}e2mix?81b=2Bo64vjQVs)by%A zI&%0#CHAb24e0A3+)05{*Rpnzw1z1GeHCih5Kgv-577>HmuDA;yx27I30%NT=y>g3 zIxgXq+PF*=B^3wSTEOm(uKievWEy&beFfjMooZG! znz-+Vt2nsoS#&+Wel8H(=VU@RcLGOQsIHlNRUZl(SXSwlpNckxhmkdWspBd>QyeO> z&Aqv64dzSDHLORw;@0l0I-!-o9LhSbprEKwVQXlqp(C*x<^`gxzK)wXo`8*8Ig*KHn|a2!`@)^(^teahk2I>?{ovj423 zei29)GIZW86Gy>qc$QQo!5A|TW7l4f=s-dV3mEtb{TSdgp|Z=8^T$DbdpO?V>Lj8( z0rak5=wf=;k4dx~AfsPTTG7#lVAjE@@0@$_R1NAMV<5foN1{uoE2xQ{=1JW2BY*t_b44SPegvsPDRcf=G|h8O->C7^43Hy<=2(nQlq+V{r=su_!x1{Bma|pQlTILTK9y_Ekjr5n)QHy#OIwpt80x}Nq!micxc>>I(;ANH7*$Tk zY#QFz$diQ?&%J9dSEPn9f&F!d0?%~(lIyKD(s@#m%;06k+kBWib22c)oDdiwr$GT@FN##&^6a(X!g?T8=1vvOH4;?A zS<*t~E59f89!<2!Y=-xr!nd+&whO{XV8ZHSKbq}NRa<*B0v}l}>rjDA=uh2fx|$C>+bK_~veoTL->rI|Pvrzk_ z%7xf7tclcXxMtu(e581|#9I0CqBY$3SA~wk(AHH|PCwOg6Q3EF#}&nZ&jt21xZHxL zhGl^`gKnUxN{t0+U;!U1gUbSYn&V%8pB9xGTb;cnu+5B~f#Wa#2vo4TgSI*X`qqQa zBx_7gH%}(`LS&gOs(!nq%%bVpst7EohKa-Uwr>b`ZKRIf_C1 E2Ua*0YXATM diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5$_closure14.class deleted file mode 100644 index f1a135e5f54eae3f149e2ddfa79b2c622db2716e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2833 zcmb_eU3U{j7=9)xY}qbtNugT4EEpk8OG9g0)B;ih#o82<)M7!2+s!0hNO$Y*2B=^6 z-g}O}!21fGQsww@CFl5?IO;Q-qzQKM9K@S>XJ%*KkLP{fclM7zfBFT$DSRm~<$C3e zyDA-Dnx3_sDSKwIA~S*XgUpl@OxyQ@swa~Luj+7Fuqv+4^?0%|8yV9e1bWJz>)u(* zR7|Iw$<_{OhzkrU{gzvl%VyQ5_V5&y1@?-}T#}CT%s>{mZtM`)(=XZz?jwM{raD@v4q~g~o}A;RFN7+1P(T$2t3pAORl%lEYV5DA%m9{E%RY%%*ntEDKF4RoLdpt`b2tk zH_g=`(QrzjU9nr$3spXqq;Qk8eG_l#cmq^0@^9(MTb{idoL>v1>M~PBbCp!oaE4q^ zCAZ~>z+gn_JPnrS^xdjwNqNuq1HT&YtY{xvSElM4`H}e~b+_Ney zbYoIgLhLE})cnw}Xy84(uLyaAJ@NTfYxwvdow$~d$e2~zEaG>XZcd?Fl+7pi;3377+-=c%SN?qm)uz}JzI5yc{Q+tSm)O5IdiqX?#kJYyj)#bl3snM?`kcF z3$}0b%9P`{sx`O{%i5T6_`HY6N-n!DI_mF%L?U;WT|%ViLnckz6^RjI)5a%ZC*s|@ zDmkG0YjmNTQdhW>4E)njPZ-B4S7#9C4WMHay_eI2Ll5!t_go6x;n>fQ;6vVr{gi5U z00;R^%?@!E=UW zuj5zVi{maw1L7}?aw0T}dz`3*x8WPw{xdu8482mm9OXCV%V|n=%AhZ~ zwAjE{%|@(gL+9tvhKiI{IW{6)<9sJ~UMFmA7{^3C!t-^l#~IV+568%I@xT;&39LPbY>FALJGM zDqEy_{n(K(r@+3%hd<-`ENy=D2salKvGhZj%7{A7|C9RhY+Y;WKCIudhvNp8f8&MO z$4G4A*6bt5MP6Nb04x0iK7Go~y-(1ok@|6bM!owf`zbv#W|-2aRImn=pHsGB7oq!t Ivlz6$0pyYcumAu6 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture$_runAnt_closure5.class deleted file mode 100644 index de782acd879f794a3e6c66cd0c03b2382621d749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2666 zcmb7GZFdtz6n-WtY@059NehaA0tQIaLMQ^F1*DBF)~29Mt=6hxyP2d5>295Dc=-u_ z_BZ$)!P8bbzI>8%{7oG7ncYnj?BanhGqahQ=id9==ibR*fB*6ufOqjg;G(B$d2d6y z4QVNREnibsr7rWnZ20*}*Pn6j`%NV?Wz}@~S+?t5gWnen2!WxR^1Qnb@^#CtZjgSB!O7R_oIC9nWQO(b)+B zqg*D!d_h2bNz0cV*YU3koXQq&TX(IHjGL>sd2?d-FC$BgHB*y*!K&9wjxQ&bvY3W* z*^!laCnDBto^SAczIAcJ#1Mv4NMOH-L8MdY!fOIu{+iPexDJnfgj$ru(!cHd7@eh`>^sSNKDU#2C)@$&|b3G5@Eiyht! zXJbs7cpDi_(uov~Yo<=e=KMu;8^|(forOYEDe3wG*LJiP6u|XB<}c3tZWc`BFxra| zj0q$hA`Z0`w790cd)8`Q8psPAZmHT=mfNU$YQ0@X6vCT$OAFx~5wx~SfxhRZZw0y) zI7mXGvItz=*!Bp|6LrPYGmW9f>Jo10M>Qtq8*w zaHZ3H801KNLB;@*j~QG~VHzKWz&ml7_!t-T#vBVPqvg|4^hY`*p=32*@~ZxVtV+tu zmQ2lojIAU)Wvk?aUQr(BMs}s+YROlQTVsQxiagbgPX&hKZnD`km9ZqfNcDlm30_P$^bdv$07Y@yF}&XD@p@N}E|Duoq%ZDJlbbk@u4_-*~};?RI4 zkYu7w*t+;vQ87`%qIS3{u)j0sQQ_)mVi0TktRt|;3fuG9S8vXDQ179y>jJ5EyCRAI zeM#A}3oH%YWH2U5DMfPwGO zj{(jpO*mD+XJ5ZH9KYq)6(o5B=-tMF8@bW3Exi7tmI@Tdquc~v+=F<7vtAv-VeaYG z5v~$kvu|8gBk8=gO@q$Qzi`-b7B+kg!qXzeu~=xz7B^LIkv)S za;+_nlbbG_$Au`2sR;EH9iK=ien59_8!sihlj;HfEQLk5L%iMDd}v5E!JG z`<`LQz%;pLNkw==j91$=a_OV#g_34hCxa4>4jc_xdG+>V+{*m~_c;fLpP|p7q?5Qy b+%!Wy&e@|NG?5#e?{V%z56QaERRYGp5I4_} diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/AntFixture.class deleted file mode 100644 index 2abbb8e55f2b0b83dbca147198fa24d55587dc21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16476 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 MfDT;da{|Wy07uU65&!@I diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2$_closure5$_closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2$_closure5$_closure6.class deleted file mode 100644 index b569557d8269a8ddcbbc3bc22b2d77f1821859be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3236 zcmb_eTXz#x7~LmHnUD^&q@_>+5h*lHTLM+6P(VtATAM;8rC31YG&xBJ(wRD$fE5+5 zC|-Ys?+99oER-i%%iqLO_nA!7)TS(4i-(+?nfWgJyX|xS`un%v0rcZXfl=EjBTZ8^cR+&>Xel_h zePu3DG^_$`c+whz0zJxC*3QXkqgHH90$J6pI48W2sBV6{7SMW$qN?5!jTf4f>4COGjE+ zIUvy7QF58NY_e#SO2by(7Ko?nCPLQFA=bk)3Lwu;()-uC;3We9dp(_KIcj`se?IV zmbugLion{eBRQa>#;ia`?83?<`XQEGvzVY1d*cuWA~=Y{Os@iwEIS+vrsG&_S!dP; zF|ev#k5Bxe)NvHAs`!ox1Wa0NS*q3ev}0d2rixMnr>2qlPgm!(lXZ9kYp7vXGs>>n zx`@zq46Bs4otY(y;^&=DVMW910+Fmya>woQxmk8z|C1-goBR5N^9Dv#CR1wEbcU;@ zH|-J2sB{faQJ|gC)pla_69I>*;ES~^YsQLG9dF`H1iO$HSf@Cqsw>c42lZ->bezS6 zLV8X|6Pnd*PYT59c3d68({MpRUxZqr%Okb!7gO}K2HAvf@$46mH@vX%Pn4TNR*+ZceqDWHWNHyIHqEiakX$r zIDOg6q&fe&DP>ynRC#7fI{usXGnEuhm?e`cgO+8hfwe8BP9L^--SKiJ`Pg*AQr9Z> z3fptq&XG3KcG<~F)fi;C01rzZ{s=V()QJf+N7Quj|0Xsd>OC{FEO(f4EokNX6`#%` zNG+g!0hO9G`Ih$|-^F#hRDE`kE=GHzJNx1d53p-880}0?hI*p0zMg1TU;Gzrn@8dvUJl?M z`U6NW;K)4;25}32P&tU3Ty=<7-XZ*RL-BA_K6-N`bOiXG^vVpgDw0$|3i#N#}C{Ep#2M>f^QfA diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2$_closure5.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2$_closure5.class deleted file mode 100644 index 391f52fb3fefaaf746d352480e884aa9cf8f0e18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3279 zcmbVOZC4a!7`~p}#ldw1To5HSGYOUjU8U3%e1T1kShQTk$Z8vQAC}Q&hGu3_dVjO> zhxFaFkn&W1%5(Znp6YsLhh;fCa;Pse&&=Gf*L~mDJ%9cE>+b+g;I2T%c1me`L0Yaf zoWfkX7z_FjRQH)py6=Qk==SX0${xUQRt zTT9-qu<^$%!p}+wBpTrn*p^pbt7R4F2}vNN{80`b1SU3Uz0C$%3;wu*z&N!PlpN?1-ZW{Q`$J8qtQjX*k5>)$2^fVXJxq=aTDs_@Y1LLBlsf7aCU@ zN4DWGjtWFfT5Mk%oXI)IzGcjmrG{7Nm}%x}v(w8YH-NG>#R7X*BlH}@a%XL4evN!s z@|~gGuHmFWlpb{qDcnwBSm59$9BSa49o-1lT){CHywN33s$m`}8Vl?=4d(>n1;h0w z?a8GDcHW7QwyHzapZ0K?8AT?J5xk}d=b)Oh3q(~7ZqDbF3F#TWwm=s_tWUr8Nm0;R z9jf)z@CMn7W&-8*b!}FSM@JSDag5^<+ftEE&7wemNJ7tYuj5U;rINU!qZMsx*e3;& zp|FN9payc4z8Y$kKTp@YUqx@T2FX}&V>*s&Ae}11wY+q^i!t@#J+eo)nvFVY+*emH zN6w~m_N-S=^PSxVM{)_S5~I(kc}_xS@_L z%!eycYfagJrv^6;55qbnW>u7n9Pav}2eedOCAXCuE`Z&59{YJ$rx$R5-_+?vo+AE9Igj!!nJI8l0)H0y?Eqa& z3?#Y-Q;*Oyok}eumHG+$9%A4Z3`TJee^4ljuX)uW{_(vC4ae{e-)y0=81DFibo#FL z*8%M)ljEfCc<4Q%vzh*VwXtgbd*D*%hsv4t#)n0;gIT85*&8ZdS z?%l`LZ2uFqs<$h+KAnAltNqJ(|DGR|0*uqs@)YeFuCeZ%;lN(IUkX4=CAt&EoT{a2 z431AAaKLXHU}vKA8_aQfyZH$7(}_sxAr_Q*CC*>DKs*!JOWud`CwB0*zpuC8pkP$Z)rEdRC{>;ob9O!^#$+W@g8F?I=<&A0_|T{ CABlYc diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure2.class deleted file mode 100644 index eb2ec0afec0b0f3a0b3510d0e1a1633edd1b105c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4618 zcmbVQ`F|AU8UMa}WG2f1VK^ieb-@V9Ca|ytQ3ABEK#GK;Zon>J)5-2^GO(FhXJ>(E z53Q|=T5B&`dRkk1w<1`Qm?HF&)>?bt=YP>3YHPpm>~0P+@sbW;>`Rw zM^xbYAa$#%oB~ZPWse5r(nX_O-f0&cfkbzp4zo}+bJA4WQ#;!!p!D`q!tS(yI4IDt z(XuUXv%reh?jy!AqiX-&z9Z!9oW9d`Kww@=zv-ooVliWR<`&mAh6GZrZHI!5s5zSB z`7+NZ>x`Wm=3s6NAv9^w5JLpIK*Src$^xCftp6(*^l(nEQ(?4r+Po+`XA0=k9TAw- zD|J;p&W)|qtgVI1Y1&uHMpp<1*no>fe4vAwMotC%<4&bAZ3-vx?827`9@+Kx57|S>|>dC4rV82{qvQ znZi@74tL=l5)xT~^bDvCDwPwJd3?1_!6AX!%#xn*q}On_OpFNLDX=-I!%WS$U6tm*N|A#t z^{}OEoe8hrP>J2l&KHUG5M9Hqtsq&z(&bRcKN+{`-z-clKo7<33;$ll9)jI4j-j)&xseE9AOqO zn`S<4vpB^)X;R5?y?B90jvrF-ZkB<&H^f!ES75!&@O+#(9+!oM?!;++-14NXJ~LiL zZ9Z-kSmEMpS5vU8EoBw=*V2h2LD_RFInQx5yuW&V4{{oqh-=S)>l`=wiY(u(dCL)4eXR{z!4uM6jg?VCI$d$uk*Fiz zT36!FI+H6@z{C)cMH6>Zn==Bj_z`?mV)0|VOgV65{Gn&J=^6eoBhbudH#r~2U$K;{ zWT+jRKcy%7n=CG$#HV6dg;T5va{d|TC71%T=Sqq+d`VA^4A0=%s^D?IG<+3L$roQ^?`x6aoHV@M zFeyf^Sx9D_f;T>Z@HQ8_%04*8bfQr+c!^X35 zA2YJNgBhvfjKr5?dxm9~cbROmFR*XdTCQa>)y^@Vo>P^sVuXpev4srvv}@U{;zg;2 zGrEfJ(eZID`&~=LODdW<8U^_va4XRf7_KXgt^T~*Df42shHv59a)A92=ih4=qTuDr zCZuY(uh>g}62m3@RKqv$O^LLhaYC5Lq-k+e@beg6!!ixu#}A~Hzmz{YDn<=CvTOJa zo@k`N-?BN^zhpQuC8Z!kU(6^z z5XMD3bb%rsp2R~nr*VOy2;;A$ixK`0mMU1H;KTnGYu|v*O`+f+{Edrc#6lD9$4z(u zOWA^#;z2xzlS0Fz;s74!--rBwuSJwxRxRK{4B!!*^zk9MdQ^sBe1YgN^pT*Pd=kWE@QoC;q zi^rVTF<-$m%o~=ln!H24x4_K8LI<79%e3e^-X_0t$wsQ-{K-bJf_JcdhIJ(L*6E7DAP zoc|lB9Z%QnYCVHjU&cJrbNIzYGVHnpeFVSSHHO!+Wc~G7yqb6cznkLdg4Z!eVU-Kv Z@06?ad6>`NV;)z3#Gm;52Y-j4{14WzAtV3* diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure3.class deleted file mode 100644 index 73ddc349421212d1a9df97ac4d05687d754f6590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2438 zcmbVN?N%FA6x}ya2Er6V_)to#ts*3WHic>{22_Z)B7s_h5sDgza1(|OGpw0OT|9yh z;3N1S+b)WB`SHuH&z(DS@7d>^efBx?=U+en3g8ADfhotWWu0AV zd(v<#TiKdxY+5qwOV7{dt-9w+H}BY0vsQNv-*oKZa>a7Ix+||~5CXk5*KzLeWi7+5 z@qTckp+#U^;Z~eYxna5nhO``0I6iA**d^Iv951WpPOkgB}hxBRt7Rm+!{Q+ln z-?XxM#|r88G@KW>99feW(V^irX0KS%aS`V_@j5OE#7v*cI;qRbmg{_LY*f;W%v+M5_OwVt}EvhLBK;Swn8p+j*lpHwDss7+pY!Xbvvxb6>k8x8; zaEWu{<)Jlv_OEHxs6b?vYP2lJaR)^md3>ab|2YTjiHuKCso@KO7M4ZF8b;z+#a$iq z_*4b_B^$oE^x>FHmz0~Y)!nkd8KW^0ufF_1G_cXZSStcq#mh^~KMfpn9mjtpj*>iE zNKHP6Iw~2isiww?TG&nO`O3XTV>f*7E||7ls_$$_H~ccV+^BBJ^h}z}+P0&{gk!VC z^?95BtblXL*LcyXyA^rUv?M0TQ7fln8(I=^)oeiGJC62FKI4jiih@5&l698r7T;#j zLJOet5IswovGK>~{ZT0gCfAER1kL-<&!^fA;1!;!-K*TixaTzEs-RZ+uI?uZwK$#} znoM5!32(%(kKg#U1>0P8h`*8GMre2o_qb`Jbt}FP{0$I+kskX?;LX6F@-o6Rr zbxWt0LPi`Q-N28X;Kz9!;Hw<6@G4sm1u z0j3ILPtmQu9^!+w!b41r9bj%>c?cX*&|S~at06~%*;XN5FY{G?wM=p-`AJbxswzMk zhZimdbpra63%_7-f!=OE!JV~aEb|yE3SM33|2e##5AjkDQ2GNsTo17RI}H||D!#v3 pc!Je6ntt;TrOYF2J{Mr$GjwT`bqqVijT174Dr)F~&G#6ze*nr0iR%CW diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration$_closure4.class deleted file mode 100644 index 4b82fb323ef73c97940b944f3ba4752cb791d08f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4164 zcmbVP>3RWeNsxgGn!3aISsIXM+|kIy z-IsJpx~5IjeM#FSZJIU&Qm{iI?iSi~U%&Lf=;!>}o;M@eB9`6IFV9bJ?mKro_rB{_ z{{7+=0DJHcfxWJmOS;q2DN56`^2wZMP84L)mqkB0P$(6B=?%Efq@62yrf<7W`?ytb zizQF)(jWxZP6Ebg>ibM^hyprSFQ!+Uy9Z5Jjv3R3i zU~?^XJHnd+&Fw{>23P|HvsfH*CS8Hfk(xT>WI5+0GOTJx59&r5rl3kdPUbD0J2pGb^zK>Rw1E7z5)(%ccEr$)BO6R>PU9D}$ghPyGOf)r&qrpP`s zCv}XdlX@0%5a*!8?qZYFa43%LVPx+YsPF6B-*!SrhRyeZHY+c!)3mWIj9zb>jw1rl zag34$IU@@?vdoXo>eX>VpwaRqK@XbK0`0ZpR%ULXo>FXB58xe&F5?1stWLRd|E$UV z-7ppRPbwc91nP>OrGqSvGReM>v!FPG#w3WSlWzP zD9J;U0vi*@t2LH|Xtx75hAGfd&6A|EBp^$=3UJ8rWlq(WuV99%ValHZn3)(#IHN4o zX|Up@z}DB*FX^c15d6lK8YgY@r>0eJWZpv(mwTmpvlQo#c=Wcqm6wUc^e;tbEbqBz z%#*6aepuPr$VMOZvXbXXWx(M?#e(3au5P0>-n-@1R2`afn&bE=KBjW|ahjqY$4u}* zAC$fs^d5oMM8`E+7eCQAUA?C2edc9~Ex8i*tvEi3PsOkcpBA`5z153%1-fdma3w`? zd={Tm?0q!OqG)X7!}|q+M9tE#F*s=WA~{(xH5@zos?}Gz?CS+2pT2}I$M8755&|#! z701``i2Cq#GND~1uWHcPQWYRiP9`(%q<>gWN+#EmjONDnu&f8FuZ^>3Z@i|&7yBTe zx_#}|(nHt2U&nVyR_n}!j_;9qsz)F3Y#mQARZeM2O#m#P@00)1%CnU`LutlE$Fmgh z-4I#Fk2zDw2koLy;j=ng1=iOxO<*^ZUNdMb%>cp3l~&}A#qn)Cp=PKH9Ko(1M8n)` z2EQcS^O-91^hgY^LRmd@JoRW z)qJY7(BP$dS;<~yBR9iw^S0|BHh+Ux8fpA*1(GUI*D+ga_&r~X#c7|39|#(sG2)V( zM@`RG{bo!pEK%0Jb(+sb`S;op+mWNCsgu$xpTvh8&ip~3C2KyGaZ8>hRpY}>#v#g4 zu>p0>F;%5N^TQmCoA@`Tg07whHA>)Osx!EhX}FAZw$A9|sc~l}TW=i5 zT*O^-xOV~R-ul-1V?D-js#^;%jDwV_h8#^9_s!#QfZ1AK!5ULoM-|rF6qec?&tw~n zw`bR`}$0wo) z4T~%qhL(z9OB`saDCWnqV(tRP%~3pzM?wyupN2$ueS7Bxe8z}83B7X;pFevJkBxL) z#aeYbhp%Qw&f~GJ3;4!ar72L%Zm{N6tkdu~iOQZ-#v5Y56yN$fjm^e)Go8lG#*pF diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterConfiguration.class deleted file mode 100644 index 34b149cca218bd55af4e24ba8133f339465603dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14805 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 R+B?zyipGoIVO|OO{t4JJBCP-b diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$EscapeCommaWrapper.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$EscapeCommaWrapper.class deleted file mode 100644 index ed358d9cb80c6d44e2bbbb3e98fb9cc3178a1f89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5177 zcmbtY33n6c6}_J%GqxDO2<%{zGzoRVmP`~oKoST^!8PDu8;T6BLQ;2-$F@MyC^KUc zr%Ot@Wb3}9N%yAB)+Kcy0TDt=+jEk0`kT_y`({QPk}#YeAJ16d@|OGFyYI>W{_h8W z18^Vyr7&#Sb4jac797*CGxNzg+nC9jN!N7T9qXDRiDRP8-RbQJ6~}I&sp>xEjI=8|G}wI=$$x@Av*L@3tx2)>OmY z{vCy|Vb3YV#;%pTi`se}mo{aFbB5!L7G^Dl_?Wnov1ZJ9W5J;#o?_da&CwWIPj`Z| zysu49Q^NSLf_hY;BX7Efx26-33H}9Y~*sOtZVMEZDUbksIUKcbITVBZZ>ZwGd%C`e6oCTmyY%5 ziXwz=9cvMbB7zMH>v}0X<)KosTA`<}zig8io5~iYY{ac1mN0Vdf!pw4+1xe@0}=89yXcxyfO}?)B8fx89)&d-D_=BhbHZ{* zo>(v#s4X|<(W5$s@wq7WVuW|Dr+mK;-Dtj;)3Be&ZEDA;LVw@!Mxbh!f_U^FlQKFO z#Q}`*GPA#ya)Lt&_uOomYB?bzFtr%OzBx^!O+#y&Crl@#ImENU&EiqNlA>CVi)u6AF(tLfR;x zW+i~2iIyf9=y(FQC}yff3PzszM%Y>TsVnGc)7QYgrf3r}+g+>#psr?H2Y|`C(lOn` z!F7d4Y8?xJsPV(ko|=WmBY`q0(x>rdapNoOwj?gL>azI_=GHNBSwf>4TFca~T02^6 z?M>L$C|SoDJS)b2L*dqP1FjAQ!moD0$dQA)nvNS9zRmO_l$G*O*w|MVbWJCh$wRNr zDCz2q@-pDJ4r4QaUc`4+;yHYG*^bm2ZUN={BIE}O57a{4GU|nW7*xCAzQd+c~bL6ylJ-i?mFfuBXq1Co7jZ2g&FgyL$mGp9sOt~L170w zL{rLcH5hrCz3D2Xy!yQy`kzKm+n+Tb0 znDd8paEq}!X4qM2xRdhWEPTX=>sZ#wa$!%QV9B^_6-b4vI5}rdjT^<_?3%G`!JJsg zpD^uUMISA2lJ}f9c_Esz7VM0BgUs46{IIRN5`yFL1nF#rLx^WP9tK z-g;C3;-t5p_c+A!-iQ3Ojc=L%x=Z{b62E|+_<7tuJ`kUNA9oB)y(^O;F7v7L4RlfS zU3|;8xfNVl$G4IM=2N7Vz%OBZr$t&K);kn`51TJyAjF-aE7&$ZFqMdH9~y|=cM&_o z=)79OXG_@kDz;q0fpp|DBI)ozs_inirNgmDQt1dE7clN$UK&`!-zhxoJ-ZP44~}a1 zyoPO8J>!&y6t3_yz{8lpA%r?3^5rD( zVlU6gsV&4}Dn=pg@e+1_V*0KA1nV?RcPh+b zK9Khk;}hYb{X}IV7K)v$I-4jvn-gbqRcFJ*qKrr6!)Q7jK2$=n1lPwP&XEEWW&9iPTLP=Hu?0Lydts zia0%m#Q>*yW^fz#b_h-bJ0m?2bwgN{@YSA3O|JSNY_EW@y#m5^d@TUsnTpoq)GE=r zS3pQiY^~GT5(etrTBFi;Z^%<5?hSd0eD}T{xOXZ*d$1AhmT6GJHyZ+;r2I<2eZ|R& zuSwrmhWQzk6&vC+FNxx@8w~TZihV-x)q!E;EKMas0!h9l<8EQ`-;w?Zk)^44nyf-b zk(Fw>kU>T@_EljMpZ;`PSp2rJ;FySe&eMLOM`@%;)`_!L*ktyvf?_n$@rB|^^ zUy3INF5-I;@_F-XX9$shZ38cf8r{Ek5kCyKy!A9wrXNYZ&_&U@Djw^N{WcYk zZI8W{@+9&Y8(?tkF0ZkW>SM2yh7XeY-n@jj)3Fen!=KAi`R}0M_;4V#?=0T=2y6K~ zk8@Xe;o!%JmGJ(-OIS+t>V@~ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreFileTasks_closure12.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreFileTasks_closure12.class deleted file mode 100644 index 0430f80b618da46ac158cc2746215ef935129b14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3197 zcmb7GZFdtz6n-X2*$|etY)hd+MI_L?P(rH$QmmFru{H&4Lb0O8?PiiJO?Tt&rdaV6 zU-=<^N6=E_sC<%h{4M?jj(TTz(*&~ZDIYSKotNj{dG5W>%-{e1_6LBIxWzDUTIGyc zQ(Me7qqHr)74EqD!Ip%F;IR2~$kq~7V*z_ayzjpK~nTD34}^C7&m?re`i$ z<~6Q4ZR3IuZ*T*CFVOL)jFLH;d>Yc-DkFv+3=xBtG3?2Z^mykKhXwVk|~U#XGTCpTxuEme|;=JEY3k};06F}wk)+#XSDIadZ| zxTCsz82X8i)?8Vi5~}euo`mxZQBkr&8wm1=T=cw z88f&bT)!xz3*DkV-(g4uk{KXc5^@Z3!&Oi6UTZbq;B2daBr=yV7egLbJmB?n$(YBa zm>_BFjEmA}QL}-Tpjf<=$(bdmRhj$Zn#JiJ6UDv0tw5F1m$=%p)xTGSW=0*;`-gh@{~a@C6`i8pIzq+@%*Ak z3gvIbq&$h`%(|ty&oc}YKM~MvgGhHsT#G<=Oq3t}-@+~^?l%!n*+7ps3PvxrU(?rR zx_-9NfBzcxo{pr_NAF?Z(CLo;j#S}S4D@$g`I#meZc>{f6Tn_Pj|22CdN1H0&57QN z)C;*iVLVKuhY-20 z@eQ>y*nf22kq;7H#kbViMz9g~kLwc6(n!*GiQzOx$&@(PB>fAceZr`3NEuthn-4MO z;fI>|y|mE9zeybrv)9M`jz)yVGsIv7=Lpy1?W~VKm|8_v3H^j1g$36jrGDpQ^hn54gs1?0yaO(2Ku=0Jtf;w^azxRn9aMNuL_ma- z>cC%o&hrYq#$DJ%)t65=+xr-u64gZ*-xF?(AO)>oQBwUt{}F5_!hWP)2-5$*$b}&Q diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreFileTasks_closure13.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreFileTasks_closure13.class deleted file mode 100644 index 64e7be302431cb15acc7396ca7e9787264f34a43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4416 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 LQ*o1T5h(uyn^oDI diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreSettingTasks_closure10.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureAddKeystoreSettingTasks_closure10.class deleted file mode 100644 index 78f1b1d4c4e7712b9e37ba6ce16b7f146b0c4077..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3209 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32$_closure57.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32$_closure57.class deleted file mode 100644 index 576d7371e4cf00628b13178f6e2cf7c7763ca26f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3078 zcmcImT~`xV6x}xj2Ezy#5T$-pE0qw?DAwA7+F~k{68s8c(YEO@xd|g-CY_m}^viy| z^cVCO^xbNUSXW!0>RSCxuD1J51_&j%?1L|N?#w;+oPGD%=iK@0?_Ylha0=fE7>-*^ zIb~^k(s0eWRM9o^C7JT2=cm%8iswsr)NvOK-*W6J!<+Yda;9S!tYXEL={af6UvlN5 z zHhJlRhCB|YdNMdNq z{aP+Z50hyDah)hnTejt&6*yZ5-nt;DxG|thVNy z3gtg;GdawYKzuWK0xda(sj7hnRu$Ah#qX?}Yz?mpG>}z+&O}|s^db?%Ve|6^E~9lii-t=A`YP0FUpiA8ewDcAb;wR|1=$!bW2)+S?OZyhkyZ=W zSa&^2oi#0IUrpV)vXII;1;4g^cJ-L9X}0$=jCa zd(HTe;x1eHQL7}Ikz-NTb0zS4DEqB0Dg}5$&kG<7t5y)%pn)m|4S5|m@PSfQfi1Nz ze_IuL;9A4ne|l*(7j@68dg;v=EX?be!F45r1@?+{Wo{x>gA+p;eL4)xDwHl8T5aZ6 z@4TQ-`^vT=&}dYzh-3f%g1Cj-+X#^NOKknmfqg0+be(v{A;Z&#YpIqrr3MxT>(HE^ zG|J(7TgI~Gh04OLbi*&*SE?LNTb{)&Bew0R(sgWJA^Nz@e~W-L$=9~?w)$bAJ}AjK zCr=z%r{bDYDFesJKopb>qU{lN9RckzRZ)C?j~$2y@1&ObZl+xaIyrvMx2wDkn)vKq z!S11GvVY(K_8b{%>~2ive!;%(#%n)uQQ!-XNrnJ+V?SQzQ_T+GAlKCF70x2TOa*V? zSN>RpAqsp~LOZ|^lLPTXg9GuN!Q{`_w~XXNq#}5T!3gf+585=~OO86kKMcdb8cyO4 zCr$JfZTKO;(G^76zlLK!P6Rku1^i`<1jicXQ{m}i%uE<7KD2_jA7iK*DY71^b2XAW zC1Z2!484EFxr+S;pXyAB(EsVszaID(%NW_@HKw*G{Oew0o4vM2aSmzvR>?RQdhJav zV>}-D5zWaJOy0eRi<$l>Xj5NTaCIhg9~b+V@&4Talp>53)A|%08ZI;KtlQ9EcaRBS zdoq3~{!um=?}>k$RS8wKzA(zT0xh{Vbm-?I}+ltG$<_A9X^d#qby`TGePX7A)*WUr0!1oNAWmhs* zotqBVY`vPP*jlN^GcI@BOt#i=TyBq8_MGM#mRZo8Stn7{EwgM?8aB^XxjuWz=JSTt zaKvFzuUQTq933Dje|v0D0%Pc`*p@ZFkf~{Ah3tA#5~2(Tg@4^D@v7Ev$h#+HH%!-< zdl9knJHHHJp+;weU^V7LFbDit%P~X~D z3S_i0#7xSMVSBC_gv-3lZEos(h@m6lxP-8tt!a)kW|l36R4x=4UapZZss(`<$dbNP zERuzZECahrQJykP!#%@rCM3$WL9P>3-xR~vM1{K|Hx);E6Wi6rFRK}; zIv(hF-v+Empr$zTEI{+RZPeX!3oaKUX}F}-i2xE_V~};taSK*qp-x0N@ob#D)(oEq z=a7{#jMoVq(OY@1?I*aac{&U|ghw+uR*opej#W7Qx=MJ1Ax>rj<<6(b=SQL7O^nMJ zLylpKms&AcM+ku!=)Oj*BO)$2phFhT zMgO<46{`14&{DnWBZ}beqV)@Unxxxg6aDurVaLf>Dt+)icJ`la>1jz7f5GmamMcHe zA;XunrpN`b1219^{fpg8*h^<(_cHAw-cC4=(pwq(0v8q16K831kxQ$Ifwa1xeg_6p zKV$bI(hqPr0(Ia4jz{qTgAv@pA0!^dSF|c%|Ii&qF-SOxuW7T1%*LWWcp=d#z3B@= zVi>|HawYN_p?~4DTR06Isb`mP{t?dl_9LtIyGYQpFVggFb_F)Sp*OP$YR?pI5+9#G49Q2|j-VtOFF*DE%#O*MYQ>^OOzdkAYj~NEHlZqqIT>0hc(SLXl# diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32$_closure59.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32$_closure59.class deleted file mode 100644 index 2590345e1d14d68f7a38cb14e5f4216d7b8d4e41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4563 zcmcIn`+pQy760Cygjtq>zyxSx0k;xMvg83Nl#);KY^_`NfeWMeiMf9Nk~?wot>Ip?1Dee>V1 zy$)at{v}|z-bkxkFdg4CyxeH(h-c(&vo$dNptaL3`hn@~a=kGluw19l@Q?ZRgE`k3 zwnmDc**R+Fj_vo%p|{c71N#+(xQsxp}J!Ay7Nwx$f~&t8F+VR@bOLM4Z0$B3(=!4yKXsy7U{yu6TB4%@{qN0%R3rr!Kr2W(4VehBUZDM2vVu~9$>rp2i>a3# zb-kdEn7d+(ie>>VXZS&%n+-hD{O{TK2Kb zWy3O;#14VRh9k2bT8@hE83ki!iUspdfm`Pnz_U3^hwYLc>}Fz3n`@`*+NR;C*v&jX zZrDY0->|^ShQsCcBqpNC_n;?*5206Jcal@dEvDJV(vb$~ob>VS>0YBWWRi8-we#u8OQkJ8?FW`^r|lB+FKu{k z(aE9PcQ#a!Te8iFW@itMS=LDVnmtImmm#a!`G#z-_THlrLqlvOQ4}*>Q|Tz zRD7EmKdEXoS=?4Ge$qtqWyrMr4jxb8F?=^-JasP(-^asp;|J`V^|DNt4GpWy%Asct zw`SeppnL#YS)cPv4tkyC#|GI~R?eu=Qw5p!58`%}#IqDATXf#=^81QGp%^6bJSjM* z28QMMNxaA;V74XkLoUpd-2X8PhUs~(m&8w5#%y4yUC*%?+9y~m|t`VG&LC9O{aW)agf zcdXYa#Q!xtmSgTMjt!Y!jHx>i8KmFxEgsq7u$qVO7EX-XZii2a&;llZYq}iyK4GXCJeUe1)B$3|YK3JeQWEltSjlMN*$(~sYWunc))O@Y4b*uyclc@lYq$h%`?x!8N!GOu9uIC7zmlQK;y^NuN*WID|ABNfh%5^u%$b0|~$ z*en)yo9;B}Zkv9u?uTlf!*Ku}LqH(|t44KE)uE6Z>BY8=+hk&0Gi-C$Gv7 zP?1o<_v@!rYyz&*%h4wO#zjW@L3sjcRXy=Ml9>s7^VDfP+Oz%&Y9w|7-y7&TgGbkoUB8DYPEif|xY9}d?? z!u8$Z`X2o>cZWmFNQfB?IanbFTYrVSu0Bp!(kBS-BaKW~nft79u}U|Fl>u0xpJ(#y z;r%Y0$Hf6XkvWTB$qPwxK6hjC&iDomr}4&REF&Dpl}kLZ=L+-*{BF;ATpr-jKb*lE obn~BPm}L38SfVmQ75syIQ)DSa;%!!-fAU*Jt7&+Ls|3{l04`7P4gdfE diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCheckPreviousTask_closure32.class deleted file mode 100644 index 482044cf88829d2fe8fb6c8d74276427c49b654a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5088 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCopyBwcPluginsTask_closure17.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureCopyBwcPluginsTask_closure17.class deleted file mode 100644 index 70feb527a5c6a80f7ba797331a512de2ec7b5b37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3298 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 OXF07D#lJZULHi$^K9H;c diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure14.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure14.class deleted file mode 100644 index 23829174f2925504e9679a7772b085d41c376319..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4287 zcmb7H`&$&}6@I_ng~4^?G9W2QG@F)kSs*LaVhU<1D3%DCx`+ka(qWl}(Pd^cGmFyn zmZnXb-tVn#(~C`N)2r14u|BE()I3lBrnL6`W(HWQkSXE-Cav#5KfZB6LzCAW1ZXIpu5 zzT_Auu6T|bnOwnkxz>A7fe>h%cWirUIaAQBdCK#b6vPF(rQV!9XDsL? zms5(MfyioB(YmSDF*Td9vLe~ z^Q@6K9K*^Pg91&)!>*Xr3nfFKzSZ^Ux!iC;cU`GTAnmKF0N%(Kcm?{HP73!@tTHo0 z3FE^8Vp^d3uxXjzQGs*ipq!ZvF24cO+Dx>uTil^@QlO!A-tdO?LLqB<#xcjymj(Jd zIxj?<9L7qH`(5tOtQ{Ow(Tqouh~WbQ?K?8Hb5cbU9!(;F$5iY=?Jl0)r=l+SdO{%K zEtsxAV9FNmjEv76rwie(ov};Iw^55;qhAHIvfv9*71%u^Z3%{S%A74PF3=Wn)6UBC zaV9yMph3+KM=n?4IE`ckYq98*M<+Q-l5tddO8mYb)eYN_>TiUbIU?nJh!wndMRIf^N+f$SaxSMqV!!JZZ^Y3H*5#PR)^fG=XbpbETIR>JTZ5ml{zPdL=nn(1qJi0}8}Qo* zpOvdrd z{wD0@^Y0ujBF@qQw6CINpeo(feH)MW3{A{+8}tI$_rTt#2EmXAKaPCvM;#jg3P> z(1*l-F{@xvLH`3h!x^Dq`hoO@f|!D_U;2Q1W%&n(IWRO>0NAAM!b({g}@S+E4k+ z^IL|5OgPd{c<@O-ErGq-RR-lLTJg)fcx_6HrElZ6Qmx$1|61Yp;ZRS6@nWb=b#coPpomZ`< z>+@{dysbImT^^xPF`1uyKY za73FgiSKo~KjYNhiTv}Bp{M~J2LuM>?l8}r&6X56Ty78TEm@bIbSya`(3AB8=F2KI zP2X4e0)-w)eo7w`$OOx_FAy2=cVN#eMfxb3I#X%D|P*t`> zOUAtBDt85rC-|37k{?VAyN34#(u_J;luM8^Z~{3U$B`FE*}T=ilh3(j&;8b1YDx{G zWE(-AEBBa($F_LLUf}q3_KKbIWv<>sR^@7p*ed;%keRbGFhj-(4AHK3+qaJtk$0?# zBBS90fqjZaimrs*Mk{x=hD&ulK$Al!h`m$;c zt4q?0cZP07DVw)_n<7(=FZ#kY15XO@ zmw}CXfMcDj+elLi7}~^<3z@>m=o1`0d7)#dqfq??!$Tc+ehOLB;8>sv;0WHtTl}io z+jxgCYW6N?sc@#0r@70X6swrySCOxaDrO5mV|W9Fb^OVlG?qCU5dU!?IW?Sw%}FOE zGO0l*t%pKfV_U0%kx;9^Ddc#joS5W&rCn(#@6wP;(4bJMGaMsdRybEWi~K6fw{R~K zRpA;TuGqkMWOo~?u0)jGJE(eWYa41$2B&d`*vi`J81+P910VIJe#E}QCO%$&gsJk# zQ*^7{OD8r#!w|3R45*9^vla=;gS9#lI+U?J4>;@fC&dEl~8E$GFQl)^_P0c!n;G6_Un% W;_8G{v5}-#liv)@GqB283fljXv;i^z diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure16$_closure41.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure16$_closure41.class deleted file mode 100644 index d5e130b08100843fc11efd2194fc047641dc1336..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2997 zcmcImTUQfT7~LlX2Zs?bT$HM9tyDrlBi3RoUW!pHC8#xsMQhVxauNo^44s*%^!DB# z(s!yY(z@FERM+Zna<$!OG9jr1mp=G%=FFV$y1#FKXa4@@w?6=!#PgL2SnV;luh5Ca*D1%D%%t#SuE2lYePgMS?X)~ zJT1&*1jJ3od)jvF;H<#eCh=|!cblk&<^*;Rlw_cC&)I>T@H}%>;COQAR`b}R3R;x+ zDW9$>jvMGjpN<&z2n@bdOha=9y3wyAjyDYKLdQ;O?-z&%i?%ON3$7{(ESm`$hM_4b`z^xS*qLRo4!#zHfu3(vJ{S1m%@O)I(+ zj{UV>;T&-MBIiV%uRJzF^O3lQ_XS2@ltj+*?3LjBY9Q4xm?)Slgj&N%0o^kFVAh>o zT_NNrU)(Vv51P~PL!8p_0mfD98O&aFb1o#>j10_BQJ|k`HWq91hzWJo@v2r=!$$&b zG!rRz*D#8P94X0eKaY%#30x4^rI@&BQDC@9F59^`Fo{bl{*MiGqDwL06MZUa;JU98O;5SWBO}>H-3(~-K%&EGU1oqWiaSMtX zY#mET8n}heRg}D|dK*h!yQ{*f>L^*>Fs){FpdWknasCy&oeYqZSg&9DEKG(xRx{FN z56qdKt>(+DTF3+v&$=^Xu0-#hS=*79E6WSgi@x+N<2|Oga25 z2tkv4?Y!uye+@PSdvMV$FpivC@hqw46h?_aoHKX_;$1Oyc>rCyq7a`yU^f!sJE3L0 z+bGwK9I2ywm{^U^$?sGLD z{^h+%e;PAd#AACy_kE#*-c9$tNQds(o_LREDw|0@RTzDAm5tma#x`*J3C60P zVs%eFHBTxz`sUgbS^t`Q<@{nL?sBeXBpab}BEU8$(}>sIxxR=eUji*vNC zqCOv49Zap`Vj}h<+EN>sT6=)$?C?``s;?XPbUynK)5GhST?>O!fRQL2&(N)5hSerr zBYWLp0RSzPIFz`VQx#P0K&C_j2g7CodK0&QM}C^#%*U|i6S34I6qR`;&L5aaJQLYV zKEUE%*v)kvcb-sT`Y93{Se|~2rFp8ZJj5bF5B?Wm&ogvrWKIjdpsO%5V9M MGY13TaTkO3AKIQOO#lD@ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure16.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtraConfigFilesTask_closure16.class deleted file mode 100644 index 98a1ae6ec23b2ea78317944aaf70dd4c65f1315e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3977 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtractTask_closure7$_closure39.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtractTask_closure7$_closure39.class deleted file mode 100644 index c2bfb3f13d9702bcdfe28f085d4dce8856223d27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3452 zcmcImYj+b>6x}yXJ8c-+GA+gMP|(sx+7c+pqlHSTfItgK3Rpnnklv&N=}erN07b+% zif{c7en-$!WT||Twfs#ib>GSKMN$^J^viwBJ@=e_Ui;1;fByU{fF1Zw;Edzul1@R| zo;2OeL^9`^<9V6%rROJy@=?g7W0G=0mlM@{dd*P6~acGk)jUAg~?@0uB3eNJcc zj>k_scwAa--K9YYH04~!xipo`n|6*010fAn0^Q1R#u=9rX3?YBK*}xJzBMV62c<1t z)0g9OH>w5JR>ZTZbXDNkf9#2dT7jBzXUNRw1=>1>FPN9ik{`#;UyvEUzq9<4ju@5+ zXa(0%A_A+17Y5*j%t}|<8QCwed^V0jYy}!yJ)g_WP~P;sLw42?NDNmDlFa6*n+ah+ zLs{z6(rIcK84?g@2z<9?TmFE+$qK;BaW8>#iO-#<1Xi@>q_1L=vV1w{y5^KXZ%60Z z%8%ZEc(+l-#Mcbu5;NupO+f?1Y&fTFiM@WnqDh!LIyGmRx&(eu-DF3A{oc_ zvSg%rj^J@i<%=3#64>&j5T!D%Rq*#s`BG8Q;J8^}N;M1;TgLSKQD=0jz|`(|ax8*2 ztV{<(csYiB*w6k}{Ss1V*z$>Tmrd8VvLsb6xk#2iwms(K5|SDYsdmyCcGaP&fKx`K zZw4R*;6^wvOX?HHKq2K~7VoGpA9Yt3uqC zGOuG4CsnN2-;G$Iy81PNj*8i997~G}kC{V58(qqhDN>s&QDCWNs!)1`QG8k7i z^0vU5`LZpGxQ2IPxQ;Fz4hjn8dnDk6Wik7f2d~NpO7=s6YP0m9ZT{!a*~hq1M}VI& zBlEvP%-az8MZFOYBYetqEk%N(YGBu}Ni!Em%tE+t7`AMAv^aTQy5X1jiBb$tS)Ro! zgSPFczIJT(q<+Ze&r%RH$!)`aTm6Bt7+9|p&Ny+Tf-+H+L8_1N-Q@29sv9Hf@dP;Y z>Es+!ZO8d03^WCMhM0M;qkJ<~a{P?DNmQYhbNdY9ebtGs?z>pq(^nI(Nu+(MFl?RxDC}D+pq!8b5^St(8@El+Q?NTSSd)V*xCY63Mzl7Len=0 zTb=Et>5*=utvB%_o}ET_x6#wvZETv|-ow@ix{YmWzn;gz{vLK#AsBAqH|nUu7aVnn zzc9ds(9n-Bxu~J7sBi|M0uv4ncR0Xri!z&wtItNx7 zZ~X%A2<;c|SQx`$z8M`WUZ% pbO+a%=1&(vZhnM%jZI&LucTw; diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtractTask_closure7.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureExtractTask_closure7.class deleted file mode 100644 index 3683da2a4c593dbaa87384627b0bdc7699ca9230..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5190 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureInstallPluginTask_closure20.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureInstallPluginTask_closure20.class deleted file mode 100644 index ce3525e2f528232844fe2a0c51d8785a1be9cab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3739 zcmbVOX?N7-6@K3FqG3>MBMgbNFUHFZFyN#iu?Y%OzEE%af#vOUy*V?mU1!Sl&-sJpitAMETGO*8 z9X~MZ^&|CW%?=mKmAdP5VQiZQrLex{x$gP-eBE?vR2D92=up@!Ml0@&HET9~nhbY& zO((GDto(k-il!CHk*hpH5=FSf?| zs8zK*%c)os3Tql+dQRC5g}y;1EU+tuy6O93Um+VRZ_9;Mt@C2cIrA3pr7o>priMcW z1$9cHd#CN#!7hbkt)Y74OcavkYb?$rd$@w*qtgoO25VMOAi_#^VD0uib6#O=Wb|~h z%Q1W^-0yRLe(~Uhj*YlJgA{I17``S~N2hi4zSof6OCW|kuF=kT1Xu(PxQiZi;aU}X=MrK^OwL<^MX#4IC);vTg z5h)R@MLkTE?dJE{bxXr$neJ5BkeDqEd4&#UMaOmwXRr-p3R_mI=C*WbxJTh8ncg4P zedPOoD_}7-EH7Y=hZ2&Ma33A_V#iwi1ow&0T_U;_dPCLA>U8Xkc0ItX$(oLzMiURl zn+q;^%xhKx*Hbus-8j1taLbO$4GX!YCt;fW~i{5z^ z9VhJ4aE!qh9w~*)cgPCN&?kifnrQ|3(h@cIEvGBOr-qXXX{w12ufL+eqFd@Xjh|(3 z3O`r4PN;E7qe3nrOe>k!QN}MNG^UO|tP}33D2yZ~D}kpqFf9_&(5r~$A80inc^iT4 znuuRV4YL_kVMmIW?xo`#PRIf&r)N-#tA(j=X(HE3;28wV?%#XetXJyzbX zuyN#c%h9;?N2Tl*tX?4#FC)DzNg7_u;B}1Y_#J*P zUcSk`(2AtE4MpwpE!q1ACc}(6^|l}1r{BgqYv|yg6gFMcUnUv75OSwcbcw!c)3b$G zr$jL8Ecwd0LuMoX?k(Dmb+|cq#`5Bsfum7)r)}Tnk=>5t3QG__1p1`I|Ijd=7C(C* za^&ZhI3fCH-5G+Wx4#PnJ(^ z%-E7MwvJ^#$E}xf_gA<-g`6?Yl?j=!dKWW;-SvPQTR!53IC+#4!lRHL;V+1 z94HO@@jeIL^q@0!F}w#?IWraCL*Zde(kltgKEB1jjpASIiBVj@(eF@<^rx2f_j6;Y zUt$yK?2mPRz!|Z4K(?SnTgm$6RtAGX{nP)a{=QBe#|c^y|M$fH4`(mq7e?yuNM{#t z=F+E_DdxUMugoss?8)M1n8{tn+@;Vx2^iDT^8?mvs1igZidf$c##3UI%NiqwU&zowipep?c_2ohPxv64GNyaF4Hr@zIs2kFuC-{8fQMk@Oy zUKST*JO7*G?S&S&sSWc{|EGF dtm_VZNWB@Vlyv@uRq+wuoxG=xk2y*~`yVED5`_Q& diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureInstallPluginTask_closure21.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureInstallPluginTask_closure21.class deleted file mode 100644 index a442ed64fa3b44bc077486741e1e3e87b7028462..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3219 zcmb7GTXz#x6#h<$-$y)v_&m z?qX4^nl>#A4@qDQJ!Q)@mzFbC)hLrOcS%B+;izz`nG3w4)@^d>?y~BJqc8Hzd2Vn^ zb@;;Ci4KN+fw3I(jxrp7)>}x3GVEFZCJa9%a@W)))eAoFSh`Wp=7bv`A+@GwrY-Xt z*POO_0hBkn4zd^M?h{7I%m(;q^O}6xt!rLJ4BHqY2AN{mm21U%hL^a-4UK0Ry5p22 zN7u%xs%;CO3@O)O8~(ghrOQyBDOdhpIxiKAWMOKIfxW}9<&19V&IrRuD?AtHJs6sy zH)evPO3pIuh?luDM&*;&9X@JV>N3M{B6&49HorDB+HceTOygiy#!mFb5W+5oflbAf zoR!go{um># z4E=;hYo)9$3BhQ>=@p@b^9)hJRv`;y@`+0HqL49xw_Pwif9b>F~jvj$0DE@3u?0xo-o*X|`_4&!2h zRIxKIh|wZs`&)|G;-yU9EIF;B+!xm@PH&u`_S&%`@uV+twdJV)>u#pAu{@HG$U`f^EiNpeEy8yeF!{V%Xa()HaMII5E_bmQg}kM0ta>v9%C< zx%D1{WwG~Th7Q$xhmJq{EA%No+e!g`&Tx2BA4nvoW3DtQIg^TKR<(4YTLsY&g^01* z^(nRHkGpcZ!7tPo=egz2^v`(k&g!;KM@9|96eKqdBB(rJ&?l6OC#PZ8IYWGx(FY6_ zZ^fh{iRI0@rSWmS$}vRXL_iM>BHbbJ90J`j!9DuFg&k1bF`-VSKwou~iC${IqR}OK zdA87h|0;H$j-=8@?_uxY>5l%6RPi_L@9(($3oSC-q&7t^fZccw2k2k)p2tC26TKIx z7jk>Td6;GoA?~{<(>bx0CKtK1a(Fnc9HHO9aOzj=U%}D)7!E;s={`<|;r4IiFWMf) z*VM{j|It%NF-Uj?-%w`@nT>>gbVH(5no0U0F`P!0T#0*))4y=qC!G3@l#x}u@em`P z{ZP|>FKu+~-=vObv)8xzEzJmzX9&Rv&XHXYx3j+efz%3eO6X@qQ>&Q1eFrnS^doeM z*;QPb%iYCHdIeW+3lFYCs{78z=#fyM3=#W$dk0+5fS#0cSW)vS<%ptDJD~8q$bd*E zk-*=4&`mb5Q>pxcYm?-;`T)k95=z~}hr*TEPM=i%_A%df;tuS;v4h$bEIp(HlaHXR z;-kq2sL#>SPwv7dsJ?h2*xtwJl!z2zd`EU;WKzKTB^A~8^dG@i0_+Fsg&_S8M*xis diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure4.class deleted file mode 100644 index 690e37587c47d3c8d48e8dcb4ac5200a670da208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3415 zcmb7GZCle;7`{(i2-XOgBFfY`XO&XW3Uji7Z&(G9qRt|WxvdN7X^EDkCMn9^U)|jH zH}>7>hB&Wnewx>{zcjCH&q)F;G;raUlark1^?sh`KKc9K-~Is5j~^K>m{u`mmbqbb z)zW5DMN7?>c*^0nlS-E=w!^Jq)0$Hq-83dt`=%YwX{J%oixrDsGV?sAl}wxV$0RU@ zSkW@g`Gr(THHxI}o=6BY^awW^$g4iIi4Ef2Dem)=T|fu81@8uKjNt} z9DUKaB{VT?TNOLQKZ%U6<0q|__0$#1yumeRFmpqlSG_#4j-?yL!L^bCjasqGGoIoG zfeFAyje_af+8Fh;kFtw=opaT4^n$86c501WKmi830z;P(#a4!hK|wL>%+zXLijRC-^Q^rc*mER3fa*gFi3Cv-!1PBENH z)Ihw9T^01@FTqiDO)_kc7rB#GOQo#t@FB}m7Z~~yUDtzS^IJ_Ld7I=@%Zh_CcA!0q z5Oy+jZYrj(Nf|M8L=nMDGPa?43u*5mB%N8^X1M4EuyJuWH&O&%bIz>L2#y+511blD zQjZ$L)|_zdK}HbgO_3eLp@4L{>h;6K1rQ4j@Qy&dC3G@`32uhAM1TbuT}VceKsUqT zjV8SgehG&ec8kv=E+=?7jBtnMu*@xIK}HJktvG_Cl%|kNS1jsGisVdURm;}u2aIK4 z)O~nOm_8Lj{CYZzsW?gm|=Z@-XGjtF#wQaO=B*{BMmx#dyeXLky=nhC|J@+!M;4P8FRT(X46=OTWkO+h|fXgHh z>&VNYdQ5n-*8MVin>9$>^ERfVm;w=_FuanNjCV0A4&EaQh>NzbA-TOZ<*|4nl{E`a zEn&CEHH*`AnyyvL^)j?4uGgsg*P5Wx#yl@^hc`i^4xcsW_&MEb0<}w6yPa=Bk;XpA zCc|-m2+UT?x0NxPxvPI&O$4KP1YmZ2^B=yer~kA^QnKgX-N*M_>GI`V60M zp#Z<23woXZF1mNpE+HuylNx1GwRFK&6Jnupq3P6aj;m$=y(Oa?{8D9ZhFkuZj;kJ^ zle(>w%8+50VxUcft}=Plpg%JgK~AqN=MC|uqPa{1$mauCelI-qzgx!Y+8af)1 zxnHrjqhac2I%N2U)+D(AcHw30qo>%tg8g(RcCXSd{(`-W=y{CZ5FX?8Fs6Exgb%(kg@fhXL9!i5}n5M)X32 z#juaHxpB6;kqoTFIe<6ZI2i_Ug3d(R!}JvKwo^aA_rn?Qm5 z)7s`+|Bm*J^yQ=wp`4Sxec?ygmtFg85hHb0qe4aGP_-JZx7r%P1&sPgp7pJECKqv8 z3H^kohzF(QmisFk-qKWfW_Pc!s>`-q0j=3@NZ$81TX(g0=1V=a&;`CSN zi>G}Li3gbf3)^X3#KKcj7<&d~2_KC;!JTPR{q!N`sSIDP3c2k$nkAaRFz%7vD47(H TentKKJv}3om5d)~7lQOZdRw!+ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure5$_closure37.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure5$_closure37.class deleted file mode 100644 index 62fbaf202f3ddc1e454a3fadd4b8c274a4dba1c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3032 zcmb_eYgZFj6x}xj2Ezy#5T!n)zI zA^mQ(MXal>pXyruO|G{4&P+%sfo0e7%bhzj_nfouK4+hM|N8sa-vOM)_X1hlDW&Ws zX}QvH^7E;ZV-(6VaJWc0~ipzNZDyL$3=AulEOG`S2Ckty9 z%>sKH0y!3#3S4|qThP!d&{D9|M!76-IFY$++%bX;T%Nlv^WI4R#!ot8XcLH9+>yYp zO#Qa6$)a?mm6sy|oqeuH7W3({;kpx6(H2N%8d4#PWyT`kq%B-ado7ovhpDuHxJi^} zOw07n37l(yawEu1Q1#CU?C2{=PwhBsdUDipjAenLME|YE*upgBx!&daRMl`q$4>Ob z5Wy~iBhQ7Ye?~_adSi&MPy|_TqE?^=R`t$?>DBP6KofZs=uR}Okt0aNa2WjpM;qpRGhQ_e2<%aGkNZLi z5RFUkibHA~Z&}Atw6$Rn$H<&or{j3=;eP* z{m1f#>rLC!%S%Lkdh0Ut#nV`^XK^luGk8nYt4@ZL1hT$5r=(~2h624Lr9Rthzlfu= z#%Yid4etoF(oJaGwXO^TC_2V49>WD(6xgohyXH|~put`?3$No{Oe*{t9UbUYvbiLX zXvk=TUZUZOfL?_fbfUBM;j6?wuS0788nQ85#dP3!ZC^TOkXAo#P>yHL*L65Q{D^7;k#+eG;%g}AxP|vsMHSgV8*;aq$bHuu=Ks?D+0|%a3CE2 z|Hr{ye6o!Id78v(Hv{&lwBK>!8Ji5x7>=ph(X<*U3TiOFFl8)-?;RP_l9wurbJ7XF z^j-@%oH1RKCZm>RE7{r>4-9?6;@!a~P4czlf~77btPPgqyj>uUtX*;Pa?C7CoFD^H zuw)SJjHts0=!_{f@%aOGAnw1DTIRcz>$=d*@pHai=TXqYXYVR@4@Z*&gAcLi=x}py zb29e}_VqU3_=!ISzTlW-2w*q%<7Gb8>;Mk(pPIeGS;U{I;7$C>YeX2L$ahs}2N+^% zFn(xgFy1$m{2BXJkbHzx1dlKj!9D!JHBI=EqYm*8!!WRhQ}~LL7W#^c-9C;UKhpj+ z9Q$$7$3YeF5*YEfHO8mH)5DmVFjjnc6>mSma1bd{i_~3>q;|>J9J@pBUvsWvzrm;4 zQzG<#CiJiS{>2JLH+YRH6NSI#HMY@fXB6j=rf-#u^P$%x$rVh*BR`@wxr(WK_i;Hh z@Dv^D>ng6#W**@3zzW{G=Yvv&Q8De$(52xj(@x!n{(AjP0Na!CL-7x@$#`GkzoIp@2a{q1j``Rm_be+RG=-w8ZsJL4(4 zY*?FO@D;T+eV0+s=92Gi_^Fch9+9xx8%^&GCw3oUjWmV zcWCqntEK{5?=)`(%>pauIug_YvjGb%vt?{UOh+Fb4+V|aQ;q- zM*X(O$Et>lBqjknY8CCOuf;;m(!-jGi#S)<-QCRw5FYT3Fjvj{60^(_b zWqVD_^!5wvPt-wN!)_Mz+L!RGdPW3Rca0lfS}&Edre_>*9DPz?AklLsJhy;qdG2?) zKUFgvRIvsfaYV3IpnFL<^^B-!LuVW@+@)eAT9(uLZX)STn6AJvKY_)IyR?=fcr7`* z!WKMgu?8%MfYykbz>1s-acZgO?gA_S^=QE*hCf3d1&^Nv~e4o-T8town2UMBw) z92bb^b=MoVhbPO-dgtO0`2s}Yn>~I|bQME55l04(tJs7t+4xTqCaEP^U*?7kPxq|_ zI*Cku?PivwD$e(;;FLf!-2}#Mb68%@N5yG86~_oh*%eX;XFLk@h8$?2@G8#W8F`3j zRjfj*)SsL{A{5pTQC6S}sI^q9lD@A#d=0&&I;4o^QHWyw1+ttcqr(GC5w)K^9;&XkIi94H7flNA1!BsAG4ol?+N~YEbv=NO-%bTrDbf=XGC{QsbRx% zU=y)t^XG>2a`3(?V_L?E%K0(F3BGimtfD(&x+YBySe7l@+_rdAt4A&Vc=~V}d|h?O zk{1{M^+?|dyTA;ycE!mXhs~0Keqs~jHMtD2)`-0If!4U}K0dEtH8lU7ppyyB+{a6d z<7a$3g($6n&S|XM6HE5?UB~(@dzw0%lDS{7p|k1q4_p-ZoMVz9fOWVB_wp%c_hBQ~ z4zzZ=!oNnVdpz@@H(gjx9H^EsE29+V+7y zZO1_J26jczr|lk)%Tw6zzu&;YD6ZiTI*Q^8jw-}|NOK|-9Kx5JNQT73THGt{@)Pdx zQ%cVyoaT0!u)tv);hH@EVLoNz9ZW70#M6#V!jn-a^CgEUwj_rZ>uQ*@E zFOSJBJbX{!e{bMl_5F(}oNVwKmnQNIvtHwkURz_xVwk>V)&~Qx-30MzE%H5@lhb(a z+K+fX(|a4M9X+`Q9m**Zia;Xl%Ncf6%62jQn8h2mUtuB_j)x+GfqpCbjL_ z3mkW7F2~(kB`aAVDaAevOg8$21J-CS{)U&1GyW?#@!F^sNnXdBGN9bfzt>=UI*5?? z5tshNYK~KQ=N1i)--b4g_m1DhI~!*}!f35hLB S_bH#>@EPOjRD8=>1j_#te*v%n diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure6.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureNode_closure6.class deleted file mode 100644 index dedf01e46dfc7c201bfc909225b20a8fe0aa50a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3749 zcmb7GTYDST6J>EgxUn^DC9zvkVcMkYpYJ=BWV(O#+@05 z23lImr9in~dg1oQdw@1L%?IQOzOR3&d~MgB8QV%EyXHY>&dk|ooqg8cdu{#eKmYs+ zz;1l3aM1G`MQ>KSfwuixv)J(M>6R{rItYuU)?5&3f4}F?*rDUOlXh?+7_8Pjx9&9N ze0|iL*40|e3pn3pKq+i$_?~z1Qn6*b4Q`KC4D={$lVfVMZ`yMK4~eY&IX84>bn$?8 zwQq-ddT~du!tGs8e<0qfu;cssZ6Kp?%MHFO{5w|`oaEB>tW!MZd*^j6950`@FWT`v zDxvSVjq#f;g^hNzC(gwiS8z-SJLJ~A7;9zLO9{&n^BsrVe(2QgS{M{>vg;Cn@!_tn zo5*6VLfWNM3b&TqcOKVu?Q6HD#}zWR-w4iV-&5Ey7=-kvR%+QnAQw@{N7x;a)%6xx zWX>=P5?ewU)hZE=loZq%g}#R!*9jj{IFV~(dx6F!{ujPCa1?$#u z_Z=qI$FsZ0df0RVg~uaTR!)S~l^@w%SM}ytu7_L(iJ?=lI%!o{Ta}|@P8ow~PwuJE zpBwJ9?x9LR1|>s^^&LgUb-ZHTp-LRH!)9QhAge6$`&N3dJw=UUppJ{Apm5aE#Iiz|7V zd|6Z%iswRAgud+tbqe^B$nqK^D^Xdg`Oa*(_fn{Z?1^c6mPuvckV3X*2jQeQd1;o; z>|XiiQQ1>@I?C9@VU)9Y97mXoyxPQ~y4;w8iRvnht>kP-Uz)Z%-J(JlD^1T2#k+&a z7Xv?4Fk`P{y#F8d250#U;|- zh7+fwfwR!CoD<$_CN^NBC=#QX z>q>4H^)}ETl?$%M+P|m$_=SM47Lc;);CvQMT!?`e?`2{JXJo;prVUEPwdwaAZ5ie3 zda>fw!}e~qWw7RJ{+AF{TijM1QP`3@+qN}{vUG_|=*4dtgse7S2VU!<&fsDOI~g+x zvgDO$-BEjn3zQC{>CNbUj-SEPl+JEPD(p(Cb=8s;b*OQX1H*)mKw8f4*|EAZx}5Gs zAO`+$Q>%)j)0F{fRnKSf99}Rni(g4%{E^bRl=B@l8+bX3SMZ>T-{KkZ@>L3XdoCm$ zJ8pxoi|rc{GzcYOc;`xf3_LkHjC-;`zkeNviBkw#i&j~O#%`;G|cqztSZmTB$6 z5qmayUte}yeROW-oc5D11IJ@Rr<}mymI>GOq_RDiP1-!<^8abXpyuoP$6Wc(OTl5r zHoa-;V#S;DYkEIhB1T9@8f>iS-H?*j5Aeyx&u3N&kI$E3VN>)@z8UTe?fbErc5!cL>YJt zf8(T&KBU#b=q6m{m#O3?3j1+@ehE4I`4kVgh=++6R&gFjucH{_rZ-Vf!k z;FnhF6J+x9n7;fO>gB?>STA4a(K=oJ9QDE#c$XvRgf50<-FMhzpvfenG$eSt$)+$> z$XhvUu9CNgttUC=tzUE8Zau|uNA!Kf`VHqL&Lv$W6IrCv;- z@Z4!DmHz@SiVI@Sf53@(DLFIu8D9DZ8#!LVpRRMm;csEh{T{30Lq5~Ir-_d^OTqXbOx_tN diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43$_closure44.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43$_closure44.class deleted file mode 100644 index c14c5966dfd2275f88f3e6c8ed432970ae5f893f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2874 zcmcImTXz#x7~LmHJLxpE%@j}sab{4-5L+Z zkMnDDJJGhC&>#ecE1v7Fu4SsGQ=#dGf`+ibsDfa*CAnzUYXs1c^6HLnFU!m|=}6D? zWvQjnBe16{vZGB^fxz3>^`?ClK)$?V3Qj zVeDP^6SFZ;bnEQRX@^O5EGb}g1})HERIr+*5jg#3sp>QoCR@M?zFKV!`vt;FaxIF3 z0zIo{wJxJb2#j^DYmm~s<=HF#=88ZfdAk!x&|P)k zu4X93S|pLuaTsZVBmd{Kql_9xnI3hVt$Utye1VI}TsuXtHHa9r^=qLt*c=GOa1@z- z9KkWNeKS{ci=KPWT&PM7<7^b=Qzeum;pSU;d}9nJ6^2v9pcX^cG({L-U7-n!reaMk=301nb z;jy<(!7(Z<3?Y!^VPGwS!sIYWaqqrG`F0j3u zw!lf&rE8*IH?SI$Zc=qzXbXj#ZZ&)r!{_)y4K$9`@wYdv;hR^ca5Mew^lgQxM&`FV z?w}aMb=**uHwAWYHd;p>HCW6Gi_MH|X~`DpB+5EUsKoFk=2aZFz>fBI2qaVU%KMU% z<>l35HgAAqZ$JMXxP1(PLrQO5_Y-7xmg7tfVwZg~Z+f=k{G3|I7ShmK;>Zf#2XnR~ zuh*9sq!*mTrXAk&jnqlfZ}6(4{v_BK?8Qa5L|=Kg?pbomu1btC$_OWNFTz8*q7X3j zBL*?Vr>+vqYV)T<-A`O=d^?9QHGuvN?7W^H8GVfRf99)z&vidPg17W8e88vL?ZzH{ zQ@g#~g}B%8Ay;MUKHVx)X=Un&v2Q%BJ;Q-Q*!U=4h>YY5J;ulRLhopP10zo`7RCeo zPU$e}Tw@Uba%R)9hT~Y}rk7SDp}*U3BwIL=I2hnaA`#%2XyLd;6bi?16UT{hhV=xe zBZ0%vro;G4hnvC1TTbFFC-J6}p$I;~nIPE93_e8l!|8RLH$p!l%CIj#c!(>xk>?mx zryKaJkb8tHBkP!bpgc7kv$Y3aU|7QxD?)+=_I5E5DzV$r#y%sTPa7wUxxA``DjfSa z5Iexgl-LgA)-x1l==1hd+$k8L^kaOdoG5YrhXmr;z-sa#7XCz>>pB+ypu)^^7#p}d v^Ax25RhJ)OA^i)!-vV>{3k+!N=P>Tku1=FGV2{o71D_G}v1)7Fg`oWhJ^~V4 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43$_closure45.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43$_closure45.class deleted file mode 100644 index 83d252928eb3de54462397458f97c8a73e4dfe3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2725 zcmcImU3U{j7=9)RY`b0Bk^+i+YlJi{1j?5hK-vgcn-*l z;yr?=R5_?ua*mh&9*+9VX43|`cn%lb%uZ(B@ArA$$zT8c`Wt}rXbUtvzg6^Br5i}o zx0Z`7-)uOt7|I|lmYsGGO8=_oub83jxeI1+H^|j3&u!YRwlAxp>4)mDZaH4SgNf6; z?QGBVY|m;C0wXQo^X}a*I;PvA=}19CT3}p-V0jI>Y_5 zT4l!!f@!zu2^1=csmrEAQ!F^k6w8(bw0fNuX3GNNCWE+OyLNa<;8;QsTVohq6xf+- z$xuaJwL>}S`{sRtiTvoTY)-o@s%uGs?AD|O2I?xTPHWPHJlKYpTc+WVz_xp))0TZWB5*3PCviEd zmT#|yQ};uu06W<*R~dwc_XPSaUlOOY=Bhw0e`{+rF*4er?G!1+I=+viI&wHBaQy## zZfSvrQKqJj%WdD6ZYXd$U+JaSwTMJ9Bwray#Kc(0z!=5{P{474lue5xn{`@P_Py`T zB}ZyFDX=S_fN^rN8$jrrZqVe+*yL_W!Ns6Wg+NXXvS3z*W`u5my)@Vx{KggA+@~O` zNI>Nm{6>eY;dy+Z<1juH*r5oqp(`+!K#W&8GEl+=)r*S;c3`ld;eITTPwYwpJ2gxS z7~N1i+`icBz7y?eGSdf%#!Ag3_U!{!4$t@dTJSoNCW zylhHh#FDJ$o?Hi{T`osMpni%MF95b0`nKCDshN>B{Z=35*!3h;fpct1VwGMsJ|dST z#YH{|JzVVg)KE20!K}i|mz++oZ(74wFU`bG?RyEik)Il1H61r_)4*q#QEmTPVBaS4 zw-iysH!KP}ZQxr>=%~Xq@HxIv0b2sQdz;>U5f+sjsbrfRG-hY;o_zhWy9~RZvEC8T zH(uGZoV;aDA~pX!qG8eWZN=0DwU84en{}7dCjLECv0XXWURjcUe6n}G)2T%}u&FZX zx}M^v=aO;8w9Cggs-NV~p)0O>+zAb$aoKAyj;h!8EqT>;Bu=pc8P3=3NDu3ZM8NP5 z7{V~Wx~eW)&i?`G$>6%eUl)<41~9OWJ#&Sz@yB@kCxr{RTo3aSd^q>w9e&krANKQ3 z?GA94;-1ecS7oZD-12*bre?>p2PX>Kp5kyVoqe}j%Zydmk^coJ(s+R1DU^oC)qwaH zhqw_MV_)TFJB?*he@E{3&;fYeb$4Vipwmi0tl><@ernUc&g;m& zN{Jr1c2oL}d*$&o>yyD*oQqSLime_itl^_<>PPey)^X{p2EBVmJ+-c6FLm1#}3CfZq)IS)`D=6tw>Us_N?+ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure23$_closure43.class deleted file mode 100644 index 55a2dd4226894e324291ecb976e053ab25b454b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5530 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure24.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure24.class deleted file mode 100644 index abb26c5f6699b2be7cf5a2683db6e4b4e7dfba9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5124 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 JBUb?^{{tqelaK z8GiM)r_X5+0wXoYw%6}x8-`V*y|$Ewu)w(TYuXjLY_yv6+Lm%!mRnzy*=cD>$8cq( zqtPdDFfg3so~pq7f18Mgs6cOG1<$AG}_XwzlE z%zVRWHfOA=Es!n*<}0fWnqp~L8(%gjpq0zCFqan)w;05Qx>a{S6c`H#qBn-rqCkAK zCS4VIvF^%Cj$^RVlgZTW;2`{>o0M--KD(uui(v$NbcC=shBy*BB6vd};x5;l0-mw| z1vxCiVA*aFdNUR)X_-p|Qa3Y@xB}I(4fyv%1#M@DAJi zA`~UR0Yj{^6G;t-0_t?m(D8>X3MM@x*yxki__mO8Hms(VH&*(Ueae?rPWE=a| zjYf<07}*YDVcD_o8A}bR;RM^G`WPm?Au#c(w0ioj;WSICj`Jf z26vG<*94M*fdo)r!^Z-#tqi@vG1cwfOEMKq;{b!K$0wN8F@u6^r@1m`toiRlg}No@TdPab@lRqi7H{iz=_F}6 zbk$P7034VE+p=AuucF;@OnI%|kT}UKBb-eA2oLLuBf#+Y7{V~0x+*OD${z=H-EejI zHia-XfPqcyn@?xPALGp*RrAs0dYB)7C6O$a`V#5lV@y22Z&V1wjQ_=44(rMFv8aHo_A zr5~fL%qwyJQ~2U}-(K<|j6V?Px`Ep7RG58+#3t&qPhgg)+IR#b{S(%91i0rp1~q~? ajCI=8X;P*74Uuz?&j@z0U*B>Ug7yzG(E92C diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure25.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStartTask_closure25.class deleted file mode 100644 index b90b8ba37398b65bc0c89fe37f9de0d1c9e63acf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5965 zcmbVQd0-UP8UMZAO=ejZ5*`5zm#ZR#WkWDkp@CRK1Ox&^HbNuSIN6;f3!9nk%xoaF zhqbl!sBLY%kDl7YUZ@B`)Y3~@Yi+GP>}Bu!z7J9Rdoz<`$tJb_G2gy<^S$qV?>m0q z_x7>pAAAJBO0iI2t7Z2#SOvp$4BgK3HT2qgHg7bzhT}H0=8KMN*y}C3Uw3ns*`Ygo zoJCz3%k0VZ7HuQ#>b9#UyE1vp;Y8zE8ic^iUfZ$;1{?Ca*-IhbCkxjyGC|oMTNlpvN|mHmkO--f3?>T6_DdkAaGe-+irb8_mxh& zcFycw-KN9`7SRj2hIZT9ZDibW^U4PPP3!ApJZC|y5lIx0!dHwIO`fcd8$nB(Gvl$lGN2j30qnP z#6<#?YjS4JJxAceu}0X|?H_j3EWEb2AfRz06j=Uk)3w)H`Q#=51u z%Bvg%M27qh`5T58u8w0i=EM-fNdik=l&VX2#8HE}F+?ygj%k=ag{v3DQRRcJ%IL_u8mI+j;=?#X<_%9f?I~YejmP|zo z%LUd>Ce9r!FxSm&p4rrJp3$Qh^KJ*{I&9r^dWLaD!wP|Tw`JuG-MrB3w)P3kDtG>i z;%LOnVmJe5s)GwfLW&SuW|a*}4KEi6Gx!8*>dM$Jj@4KbLlc?>=6R>|K*@JU$%$X# zpZHvXgi45g%T2>w?l}47u1%CoyOwRVGr#s)b~cK&0@1?A+j)#KC0k%qnNy8->iC(m zny<$O<%9E;0V0Z2C{ih~uvEc4#^4F+Z6Sc1nAIA#spXm?#K@X$?d!It*R^bKJ-=&H z%Z`?=ZS5WDDAIyoaiPE⩽ev2z7??VxKYIBLo21?GWK5bQCv$D zR{7alv{`8xnCI4&)Upj@Fk$tC5$kn30j$Sy9p0{-`wpcptJT_iy_cf%x$dUj*}a8k zR{@|>p*ibzIaX$m;ihPk0mE({Oa+Q_q-V3X;W*8{p6^n^Y89EQ$UH^nE3$y)aI)Ch z;5&0;e<82oR<&ZGA}1@7pc}nLPT5H{Aj*tUyoact$TI)zTsL#kGMhO0K7pm>a&~MQ z2T|o0-VelZ8$Kuy%F(KF)K!~^pxX*A>u$Ag&(U-jsLfb;)w3Acv==x*)yWxTA6r6$ zo!ABbzkP&;dsv>m;2qgm!^hdVjs|o`pKa~cyYq&IPqJSk3aBPd^&Nf>H+q=i4$(uL zkxq}j>u?Zx&Q{fKw8v$8aM~oeH7rHL{R%U^v{vaZuyS&|@p?RVnWN_ziO2_VP@(7{ z3glseR#sqcaGo-4uE1=iNGTOH?cNFs-J#JH`d@_xqASUD;GA z(>if5vr^TLKX5XFxP&bzIg8O2YT9zn`R@pFDBYDMu&&h8%QZ?Ss`^S|bC z3%czXL79l+x5QjO484vrir))Vc<3F)AGx%^3z(ay^gnZ+>a|e8zj8~}(nj%jDwVf- zdks5^e=79$Z>n4MepZrybF;C?6~(jcXUf?~;Orp!$6cEyx`TL^m(>b5Pl@AO_%>63 z^&5?4Lts)Nn&8TkTZ|u06M?CS#6(zB#PJP$laVYmcC4dmJ}xdaF(oEqXpZAKJg>B5 zt5mkBRyQOuoxGxorqPnoM~(=_IDe0FjLE#uKo(xk#llf(qfvH0u{?7@W(f@cH5qXR2`^V zXR0=hHH#_KXJx5p+A7)^V|^}f@O}_ti^dp1MRiEs`q;9B)SZvNF@*&Dy&4iTy?5G^ z?wmsY8qDJV7qj`+k1+dOV95|_n<|paQim|VzNxadGTHS27S>kotc^5jwVHZM)M`8L zC94o~NY6wC>0+FMQ~9e#r(qFAtI_Ekg}jkcNyX4&PbsA;(bV5MbcBBfRPtUkjazR? z$+||FJdB1AhH%!cxF99ZZcNFQd{#9k4`AUzoO2j0A$TmZRjxaXjS=ij$xUS0%%`mk z+ty*W$iryw45#D;WZYiDC_Cg1PgHscui9EqfftkK5)- zj9eIUkM}c#S09Db6se6+hTB+Q8}X+3Qf#bG$pK2+J6_r_&%Q?anv}e(QNB*TLB7#b zD3D5HEJ(>K8tdhohncVB%Ug$EuA<;z&6~2*cE4cP%GTfpV5}qsQs3W+ovm!9;?IlaoospEhgA48~nfC0L zu6!6yXIQ?MO!EEd&I-9BeF%4XTJ6WD87yIO66t(Ijw7StW6$Af4WH29ta<@A@`KRu zDN)P8CPsE7^ekqDj$=*eIb=f5Bf}f=b>R@642SVdI3hyf3UO+9if9PO#G3F_KGVgn zaFyr_SBqkJ1|KQz3eWOFI>}r@XzFlCb9A>C($|X1@gaPef&7GM#z*i`FX#5-UV@Fv zq4f-Q74EYc$ZbKa$^%0fI*J4Si9+6q;t($|^@0y)jBp_>*@&ocQinjwSm+n%$3i} z(A|h8hw#Py_u;X&WyesZW{2>#&bIsU*s_CoYQNgSGZQg?`f<$E@HjDyl_!w*6z#99 zbu20C=}P$n(pB<@q?^2%&E8C#H*N3p{(NTIV7fSJ|beBTv~m9r7K^x8z)=X=e*uL1a8UpN diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure60.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure60.class deleted file mode 100644 index 18198e3b202b487581492d623ce83c3ca9fc6b9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3051 zcmcImYgZFj6x}xo42BUfAWD5yE0qw?D7M;ywZ&8@CHM-WXxns1Zo+7oNoOW1eZRi+ zhx9wu7O}3jeyVHrH@VvGJ2OBi!DZKKzudVqbM86&?z7Li_m4k+{uRI}d@FFxcFJkH zDlJzUPGLS>c8p?0rakF;=}e{OdeRxQodv@)ZEM1qBFsQ;7?4q1EYA%ENR!+_G%mtYqmzH!4 zPZrl!Gzsi&h~{XpRAA~q-G_!2f##x}F)9^-!^!MT$4K4A-5oO13~M+mH`gsxTIrCwHMO*K7GaJxpZ; z#C4)PZCa*xM&L{Xl$$|rfvSH-U`KCRdTPfx)03l)V=M{`CHrqQ#unzPKzo<=>D7fJ zI(DKvjtF)M^gS1*{uv#e=!qkS7j$e#+cvJ=OD4T}(-pYx1Nc8QN;2E>c8waJu$U93 zMqGJr>ah$_D0^3y$uXz+0Xt0;9!s~b!lL~)UM>{%H z?VJ}#He|FxL(y4j1{w9^D(kLSsk5%r z?5nFgN0!n#yX4h(&F5!DJJ8#EAL&`{KI1MewSmDoue^0!r?`>r+2 z|D%NlxoEgw)k1H^Vd9pKSzK2#SYWSMSLP;CHP~@f(XYe6oI>faq19)8^{DgPv!`rp z0!>D6G93H&=fWM_-9~^sR^sdT1oo+n-*pmMn+(qwj;UJGv>I3#ti!^sDTDV6|GhnH zTJn5tVNN>Xm!8W3hcl*Y(qz=KY*o6p#gjvyuy~X3Nt1kSKWC}y3H3oq&f7)e$k{cg zAeAz3oD9T3*&x;tQKt~l5myz(=XcnFg#S)zneP_bb)t*or+mA@_$ zA7Ias;ijIZRQ@OI>uI|B1Ahv9#xcbZz;5ivi+rlt0UYE%HG7G(h(A-oqx{PIL>QvP zcO|p~3^6sBI5aev=p9P^h<(dQJw!T!hZu@r3BS=MiqARf5PvZY18aB{UvSb)U$N+t zkE7d1x+w;p3Sh!k0m)U_H(?UJ!Mc7@)* zO!Lso@gS&bkf#_4t_pwx<$@5+CGJ ziQdGAIh9bQ4i-*mcF@-jurpEk1#*%x%a35rCL*Z^sHh;yoEM|eJQI3N-h=f!c5qzA zM~}H+@(B_va3>$3I?JWE@53VXA8&x!^%QLy3n_}P=r>N6DovkIqhIqG<4$yZ!&wB{ E-+Zq)00000 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure61.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure61.class deleted file mode 100644 index 0ae7bc3a2d23ddda77914ca9e1d787b445e90558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3058 zcmcImZC4XV6n-WNE`}9wL6oYsRuo9Y2)1g)mm(EP32IG1(YEQ5Ou}l|O*b2qzQ4Ej zfAqW67O|eTeyZp6H+kAVvl}3m;GyTVA9i+j=FWY2?!C|KAAkP*D}ZD8PT-2;77|WL z+GT0F+1W(FHFHIo@MPIb3>Pb9Pr4(HJ7;>9W2epXjdE8e>)3g#P;q6-b4qG0lPx-B zejho)&0u=8UxN^6E4Yp`zmO=Jc7f`ADGgzPgUW2y$;nx>Ql?Q~%B|R*H766J(w462 z$=u3`27z65y*U&d6`1%>ex zgF3dMBZ?5V3v_SDr`{LGxyw-bEz6S*t8?)py|ks8NF1oN+3w@iCh@ zVR{6NwU`MsWt1yH>IK?+>SRC6j)EG58bSiw>gHcVw?LRc>*&S4D0&bR=&PIk^$^x@ zP++G5e$?-qz^zf~U33YO>n-Rwgr+9+AtBH(nI7po-iUs}sg4L7-&ju8!l2^_UQ%jb zRx{tgF}C<>Youpg=cYMRlp0=PnKH=pek*hnuV=KU5>jozZ0uStPtP^&a-PJqN(S8C zw*f60*bDv70yLF%t&(?k!IO%BhH_?!1)$+ofoRq&dub=VP+}n*dp1sfN7ko-vlxzI z2(J+w)lwiAQa5tZXsF)>SxzylQw|ppj~-hufYizQ79|Z(ux%F(d`H zC^}ftC=jm`#(L&;oW}*_`b8ZrXjN@^NuZ}Ln02^GLs~#zb~RwOQ?=%oG25s@a>*1f zM=^;jf#Q|8bX>)#+PKCR?ox$aLt49QYS)$dM9Rr~wFKPJm31ZWmu1TGxh}&F>FBvu zb2R0-mR%TB)EMD(t`TNX)oFRlYebeGB`Y^#6=fq>FYWcT3LLE#|9Y35^8G0S^}QKX zB*J^LrW^uyG+ft_!MloJ*~|lVp7B^xs#qACRWZ;J!Kh?{Axr@bP9k_zBy0_3wiz z8}_-!NIFD#%5*J7OldW+N7$0t8xtn~Ui|Ntq-D$VmAM(|R#!SN1sG0QWs4$1w(Y1c zc5FtkkJ=L(T|i;6FcA9@yB86E zfWsje0}pUCj0ZR#!X5lZ@i4yRs6+h4JB&VPIDxM?*+jLG@Lk^}?sBEK>XN`9PSTW$ zYlLrQv_l!K8Zyo-;oKvf3G|0n^|w>d*RR41bhcM@e$5qS@e~n^Q0r(lsIyi5-LXYX z7@_ac7+b=dckUvUj6X(;T3y2Qbn+fj@kP9KM_KRf7Uk2DHVD zE@LJYGxi%fjt7ikD*k)M2;Kn#D&pm`QZG>X?;VM%~oc~8v@!_iO zp1bgV$5xJuxcP_&#vj92!ov7N%un;^hxgzSs!yMCw*3j3HCBEY-%xLqDiy4sv8cY~ OJA%yw>^5g1XnzA^QcV{C diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure62.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure62.class deleted file mode 100644 index 87e18c26fd5ddb6b89e674938f64f83032ea1988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2865 zcmcImZF3V<7(F)$Y}hVs*+Lb0Y0v^mS_l+Hq);gpYH12cY9*k?ZE}+=O?T_=hEm`C z;*3AU?+8pOGN_+q#^1!K=WfzBnldt@U+&)Bd+&MP&Ux9&uq*nI>>0NZaSu3zzXVUU#{N6&*b;@?7?#W!>&Z%#OV$JpW ze&Pfd8`F~m8iYVs#dF=;3z?ebR0tRD(hwEsS7wWDNmi}8Pov>3ukHl)tjvr`M|xHu zODiX~2<&a?&C$kDfrNM~DyE6X)PF|kZdbMK&lRwxi*VnjgPpc7|o#}0-B4!3Y(qYtSm zfgQaS87R+lb|8m6&sq=|NTzPKcA}Z{BKP~;pIJUQXrK!_bwseszz&!?Vt7R$7F2Ct z;6@1cfAEGGXfL>R@@~vwBAucXFgFG&&{j~cG|CYrouLMD?nujAZx*J8guosZ{b)$S z2HvO)u6m5l3ll5{vDq-8ZdAIZ>og6B@nR#ihMQD$*SkhThleE;grD6WDAv0$=Rmf1J82& zGP}#F;s+Js3}Pw{=RzG#$iNEqA+Vc(&9h-gSy>`!;)?W2Mm)UEZupUGei!F-Brz;- z{6%HV6+L?{IKL1`)t-h+)*Q>AfpXlgl(=G2psz&+H}lWH1zgne9!3ppNBcHLIVO;7 z=}3#VpkZ9VSdOsKRL-t7-v~0*TH-ALnU4uv){(`P2JlK;20p-$TDV3b_A0KdX(RjA z(7}`COwKI_*JN3Gk~(D(x_gVBWanOPB4PI_kaXSasJg;Sve9OTjN>{xUCpgjq!$Of zUX)Ca<6}~&6`;ULR=8#EHj{bi$e@y6)W8%zQZ%#J7GEAjL-Dz0+{pc=x|2FeC>xl> zhpOyVwwqPKY)GPpTMVC-Hc-Q99W$6U@F@z)VcsOW))syFDhlQOx!UUqY_S?0|Jcj- z`vCQA^!2uYzIuBIa*1e*z85A>To1L;TTjo>j39lvC!@HF--s2(mmCdF@49Ip zTweBWh<|I!JLS`9t|_0+@Tqng^eLMbi#XH3kF4VBTn_P7#I(q9IpVK5R~84Ez8F(A z#JNH}-$Xr}Uc`Ab@)P3eCA@$49xi43o}xp2UBcCT_C7B4Eh2Z9M?`3l1VC2f_*iyUfp+z;RlhevDGyjHDl; zqD-mn{4Hs2A8BGI@4@~9J2)=F`JD&GpTb$&LYtM0m(uSq5uE@ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure63.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33$_closure63.class deleted file mode 100644 index 617b3b86df0debd0aa7d174e39c628c7a597829b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3607 zcmcIm>su6M6#u=u3$rdG;D8ujQWLo>;3}9HpoOS}ENU)-XtfQyFEFso(Cn;6SG$r@osOVm_Il@_G83e5!M123TS->Zvd9yfbs&bAIP{Ztriu|8yHb8@>@ZW7%Ud zYg(FFsoSaX*qE)SGcxALtP|_b4g(T0-Fn>+2tJ-=>JdsP!JXT=AD__A>z)@UMkZv+>1bH~Nks%D z0?M>)v53Hic)t6mA(LDeD6h#n#B8cNqi3_d=BOnQjTdA_j%G+D#ei7! zWl4>aOp=EFZUJ$Y@OB!e;T#k=T>$TLxGR8L;d8^Fz`B|-=`bY;!;xLKtKA_(9Cfx1;eZ5UKhiH#A2ut~*Ql&+!ETU3;JyRAg1Gj3!B z&bmt7b1t5rztQDQWLG{!u|3x26EFvve9 zs2A06?d0|0EqO&@%h6cE8g=p~PE}3HmNZkl^N%H|^sDO6dn5vFI|9ID%kqK!>Au(`RtxVku+{1FdU z7Y|j3+LdaB-?mjNL*J9Az^AnCMG>vF*p7$j$-5n>p?|#FNxOi%V@RBAwJs=zN*6lc z^tS|?|D7h&{Y_eJOY{dkIE$txt(mvmXnPYa0o=sCAcmT>wnc&cEn0h%*0DrPJ8%F;Dzt zm#PSC+y|=l&f&xz^m^6;i`FXVtuaw#pVmrW`xmq?rY}7#f|Gb+1^w*3mT>ha{=NPP zqQ3r4AHVA27qb{xrZvKln4?A1k>#k%LpY5=KZJ*Tt##2^JgEh~LpVBzXRcnuNWAeb z%J}OX#)sqAG154T$*Zo@926?`(tD^-kfuDPhU4pNq?j>VTccX7_G}`mHEUT~+uZ$r zEl2wf?LvaHkQ1DGfPZkiTL!>-?fIYaVjrP+`4%n?Yk}wuyv}A>obJfJc(-q-{u(a* zigmQk;;lP$pzkiUIlSF>3zvuK=zG_3iGuyn65y5hP^wT*2;xi98zGgP7#~xyeMQd@ M`KID)+6AEe30t|#IsgCw diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureStopTask_closure33.class deleted file mode 100644 index a0ba8922351d4866d93adc72ce96bce91cc86566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5279 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure4.class deleted file mode 100644 index 904c1c073c94f6a5786d2d43f056269b8e60d809..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2620 zcmb7G>vt1X5dYnz?WXC{$MR69AdgDZ1Xvo7q5+f!skP}tg2jRwx5-ViknYx-O|iZo zpFI8@ey`vuMUIb8a*qFm{|HB&*-cAImUH0C-(Ptt_k9?aMghpPpV0WlH(MmfYAL9PPmnhAFM=P{&BHkrX%^;-ftUp2OkTaWA@Vo75Rk^pV#hTP`mK03Y;HGKmS-yLLy;Sbj4&71_ zkNTf%0uAQ`V$68%A#%BmD*<2~7w|?L=kcb%XlN@oyC7dw_Ods=>PaTV#ges5oYgQc zu!Gxh3y46fH7(6{d>U#Um+)2`SzOi;Lw7gz)Y}4yP#_^QLBl%&`euZ|L^=`O5 zN%Jww?Abh47$rsGM$6H>r);N^@h4Sq;F7Iqnz_oB^%$-RL@Cx77O1SA8(7D1g9c;C z@+`8A;X~p96Q}Abk6U`iT9PpoXi$Vf5I94e2+j7>hMzw*Gu#f^Hp&HPG?a9_hj|{3 zWty$e?^;9kiHRQ6Ff>m*es9KMwY@E0{VZT zcdCbe(0VWSkz`jtLZcmEmR#jh#$ejmpE3@lje{xUP&#ECPABgp5y5?=Se%Fk;#$fu z)5d7ZNR!Q}?KWdktl%T0N>Gf1ls@N7QpNP diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure5.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_closure5.class deleted file mode 100644 index 96bc4b7377202f74b88d12a2af03ef8d825bd263..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2264 zcmb7F>sH)U6#h=2%@6_%0cwF(TRWDy(59d**6Bri=j3{GS&1g-?0k~tJ##s8M4J#TwZH% z+jl&de28@O3~Hr92nz)U_K@NDHOF=Q8w_LV;=1+N3Vpt_x=t_iM{hD^hW=EY`vt4f zC^M4Rb&|wvd)q@1bHY!!6g-N92Yd?aFJmmmVi<1 zOSW(}{h2MF%M?ymtxc+wic1VVl6?D)Fyvy>67RK+NxZLN0w3r|psS0RbcG=u>qtx| zsQ8dU--|HpqwDSF!yq&9td0Sse0+qwhO4+10`JGA;|4NPaFckNl4We`oYQU06TD`Y zyqbTX*SO$BV=B#wlr1<-g+lwY$^;40D{W6pzHr=nUiN3g_rg;GpHRD3E#JE3hy-Sd z=y6~SSE#zNd3#;+23?<*&7mA3PiR*~QAYu{WOFalYsZE!h6i}4V-BB5hreVPYNtUo3NvMC=4+{2VK`=m zWADKfq+inEt1LIN!ls2 zAI1o+5~@tv3VlZis+coICv(QB$?S8ytKd1_Q?QL+N!o#RT6M6$34#o%7{eplNVhui zXJD74baOJao9sjynaIWrS&%lyvO6#h<$ENuySTjl1XIP_OZ3UxU0h!-KE+gS2On=s z3xPo*RPQScsJKdrAX-Ow!{m>&)srMP!Q9&IVZphK%{2u`o|I z@4UdhWkbn6!;&;2)#*`fGwfeXxns128f24bY`NZwbtHi z@0ZuU_T6fWSeLC&b*=s;SKECuLkKXqv{@@NXU=@r{e9m)^Y=f${{dh>eiS%tnA35i zsOgrbn%SB7w5jF_THMwwJ3eaUv>|=U=*UcKcEXsQRrOrTHuL&)CR;G9lBw-eAOu>b zO~be}7cZ##bUfj_QQ#Nomd3NRGNYC(nl4M3CEd=?YVnhru9>Q>}u=LBjG=JmXNnAk_FqB}Erftmvz zJKj-sP6#x2$eh(eA(gkaLDN*{1p1<#=e=WdanDlTqI`T&k%+WmeF#2m5ZL`#F?CLa z(Sr660@xJBIyBT#dy7E8p2=GRN6G>G|E?lr4H=_kYvzznNC=z108|Q z88Rn<1CN))YKwl31q9kWAy=?Vz)!?iHkMnuFrw%TVK-ug(X%@iJKyQVq1j?VK{wlL zsYe}C3id49b>tQ76{xwgjlUrJ1bqFxKgXU51+h<{GkSh?Le*Pt|2wri5JC@L5a@YS zpsQL%0ZS8*+hH6+M?DULecb;j8}?k0XrL#xU)1?woRW6dVxQ95yBvju_~6VN}HD=JM{!k%CejyR2TWbM8;Y|e0;_3;8yfiPXAXD&u2-gq`!-6fN{7{}c zoaJlym`tcT2j1Q%Kkh!oXLStZbAe53f7%fJ1bbYbJO&Frp_+L~6XWv2cIWtIFOH~1 z_qj2d*R|2o?4)M8JMCjm0VeWRo+^X7Zpeu>bk1OSNax2-87z&DjmLHQK}CjSqs~E z=F?m|F`ve8Ic6bGDL2xyj8o>=;zT;yM?CIeEC9!$Z^>cvqC*Lc+ zdIBU7KSpN~s#ZElx==Xjt@6UMIcZ5ROqAD%>*ZUnWuoJ(Y=Bjq;96QgO54)Eta;cFp7B4T_3#S{$~9hiFldW9M+>U3=~2Vgl=8 zk)4sZQnAQr#7xPakPXI}bH%n3HyK`Aq{J!?)92;8m`g`|vD>&Jok($hLb~D!*J|`8 zuKtB)Ugz<_eJTt;Kx6?Q4d2DJG*v&jg{y?<`m!)vAEH6wZ2IvX?S^PlCj154{CnO5 M?6xp|;K~Q(KTbGwDgXcg diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_getCommandString_closure7.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo$_getCommandString_closure7.class deleted file mode 100644 index 971316da3978cf952450a06ce27580ef17011005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3059 zcmbVOTUQfT7~O{i2Zs?bTof;@R@4x{h;7w^S`lxQpshh{N^LqM2Z)B5I5R=%{odOC zj=o!Mk=AAFQ(ddS$<=nB%m4uftIfmY%$f7u_P4)1^Vi?M{SM#=eh@feJ5x!!BrR8( zPHs9m<(T=ROnTDwk{9f}9I__uj_j252JM*{)5@nkr(jKGb4A-NJMxGIA<#VK*!JvP zvS?aU$wB{#hKNA7a-O4?X|wFob>);(w!FfOOrDdLbWBg?mn>=p8W&?8@J|cud4>cv z)Cn}LPEw#H-kG{)&YFH^e(L=ObksAFbXSxluq9Pp$0a!_9ckrcKV5gYp6L~GgGJMI z6(RzORA_B-vM6(2!M2D)aF+I3HcJm9g973mfeptBR>3<#?BiA0U7WZ^%l?p^@T@w= z1U7f5n$2P{UGU_9-hvJ>%;kgC4=Xl=b`Q)M@5otx6jv8zc*#As9b&eTmM!SwE zwi(!jhK;n|ArSSZ3$DP)N&^3%RfMb|YnMIg3|T~;O%RB!MMj`Ls{;Da5!k$~Y7*EN zQbaWq0<0q(0tmE*0<2-5K!o_Nrcq#QAdXHQ`;j1Mpc#V(s2?TyNIj$*cwud0_qITsz#n;)y#riYhG^A=(JFX zToUMg8no%0Qz&_-<~*r1cpz_GMKp1#`l+C=sj>};>S@{=L~zT!2(5WrTvfEW3%R=cp9&(!KA zu4*bP6+FV-J?IER+{Q-k0D}xM(jD7-DDg9P&ZFxAdNR?6NM<5k>Dq_r%|v1^r!&#m ztLghV`YTREkXgX#N9a}Ov-3EA2Y=8_1Yh%NK>S0UWo{aV@eLOn7%ob>s#M!5$qX!| zI)I@{ssbt0^O>srG|#J)TbNcVNXd`q$EjJ4L-_nS$~PnP8Vh`X%e9I;LWHBZfQwu! z@2BWndEcLyM>c)jCai=e}_j!B_K)P@C3~ouCjw1 zy}(~{1ypt~5!)NPmR4O+Ehg)O1G_5(09s=+#B!L?><74!iPa?T!&C0naei(E#|Hy{ z@w=G)6PtOR$J`?t3_nI}0Ur)Oz^x2TKfZ@qg7f)`1Y4e);(w!FfOOrDdLbWBg?mn>=o8Wv+7@J|cud4>cv z)Cx4NPEw$`qce5QoHhN-{M7pm=%`~P>8>bAU`wjHj!SY;YJ;(Dd&nFiRiAW1tbwsd5VE;4a)H!CL32i!J z*k)i8>NnDQhd|7mF1P|GD+&C6RuQuLtX=k`Gh`8YHbEf178!xMtP1EuM_}`|s!3p9 zNDgz!%vFrpK$p`$cw!i&%(5;_)7`IxvOvnm3ZCR4lu-C{QuNYy}RpnV~SP zC(RX2?^ik{3`}8KiL^zHe|{$#N~^@(hk0G;aCF>&Yd~UBb+|0BeR(L>;HBZFj$23= zxQ?RA@&omP;8fkhN0c$se>WX`{x{Pn_;e!^`AlHj`d=Z0evkxLFA1An9y6VSn%Gfw zA=f#3x$7flDY$P)amFu{XC|Z*?6h6-8!%RI3p5$9EL)AMZE*mNA&cKB6|f|48_rnj z+lN|3mQCAv0X=P(ot!*dC`$CQ@)%z!8xU)ZsP`h!sH-92|7~nWymC)S*-?Hv5u#>Z zzvSIzL}>-IEnsV3EYa0{AKQESYT9ZN*(&4iUjzI*91cVTk!&3857C>6#$Qfn zV)0kg_i^-BoQNW`fYXoAtIlWVasCeepqnVZ=GB1shdRsLGz{Y#E;cY+Of*zdZLK6T zu$1ZmhAOEFq)^9as`Ar3uTpMiTB#r za;?0dqHpDWe_|f#c;rXaCKiyna~I>OuE%Ily9+Qgse2gjnn(T)kBUk_lD_^4nlxNx z2RV9yzorVP>|P?iH-0Uxx}sW4)&~c6R|o*K#Ak@*Fr(QIa3d3sB<{mg?$vRAZw1E( z1AiTNG5aSr^E!{YM>H6IjQ9dR9DaaX8Jd2453>a4^A!m;KS905>4@Sx`qk-DmHGvV QcANh(_S?YsTt%S$3%s06WdHyG diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/NodeInfo.class deleted file mode 100644 index 541391e9f16828306f7d51692f3b34dc1350a109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20264 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 b8zqh!x05{35!+<>ea&|Q{fxE8RSd>IPe!rx diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/RestTestPlugin$_apply_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/RestTestPlugin$_apply_closure2.class deleted file mode 100644 index ccd463237abaa194d4f62792ae62f2b687f68780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2373 zcmbtVZC4XV6n-WNEQA$Of=blBDV4mSQQL}&SRqx54MHKsqHWV98NzDV&Dq`9!%yfB z>38}fr9G#u-+E4eQ%~Dxc9(!;d$jF`%uHtHKKHrLy?6HaKY#iKz$B^yS8b*P~mT}*>0HDSk-8?np@Rc({|gAyre-0q#KTHKiMia4XaTs z1t%Kf0uu_iX4mD0(RPXI-*VcPXKu>k9cf9&@MOJX(Ias5d3Wan8-d(QGt|&0(Brcd zIGHUg!!RDBWfm75`;n}9Q@Ir#Nel?|o0caVDnfzd<%5wd$#v;St0t!eQe&=XcxJ8C zG+cMiTDJxAK6F=fa=l4>)3&HYc$fBCwMvBfl7M(1(0kpqOz(!kjcoam@x%y}TUhg% zMeIbg%B={DzZ8H9HjSf6Bydc}5e)VthEaipw_&;hQ+_1>DgO*@uxhtG>C9PFh++v0 zcSj&FP*uKy5Gg?2E*Z_Hz}X1?xhVVep*&U$_pydInVG`^YB<9>ij+*lTLSThWU5E9 z5pHyhBb&rowIeb~(@ceu0^r70Z+Obp;O&I!a!I!f>Jt86&-m&RIC zYPcYvlgHeC?Oh6uE0fQ(N)o5zb@At zv*pchc~ae&sT(b3UBje6vS#p&uq#_FW`8mwqX)$En_?VK?#1)WvqQ>IT@jBi} zvQXJ43BzfyP}5`7Y}s$bdFdHGmOzHe9ZYxUh)8`j2(P7|%Xq*;M+xsIF@{?LM^sOC zYy}Dtf&7yr9e417B0r~N2r1QG9|~k6<&1bBG|UI};Ij&zm+6D<1GYhdbmb=kkY%`l z#U$?GqX4)QmyTu3s)LHa(4ohiI+vJQ)xkD1uwpo-s@94cs1Jp&J)SpO;s2qsX~}!- z%{A$SJDH`RR8~yaq{)nB*(z7I#nkC@7N2`R4#~emw=DGuF|7ufZP;}d(X!okYVx+( zl(>$7VBhJULjbC{h$0|o1;xCMHAvDJEfQw$=!%d&TF&}5N!(bFepMk(7yv;Ke z%PeQbX*l#Te0dkwpW$-gCARN{as*yfZ1l@96(T?6TKRoPUBPrG5{0cI>B|>(@Lm^U zuez>yE5v|nZ-;9yZiZZ^ktM3)dL`uAmlrR@3mERO0gBz Q-DjK==%?17a}|U3H;n*RApigX diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/RestTestPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/RestTestPlugin.class deleted file mode 100644 index e4b3b8012de222922733aff4536ddbac2764fba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5448 zcmbtY`Fj*+9sj(^h6$Sm!iKx84Q+sAH^~+hDI`Ec2r)DPnhlAe)-Y@)n}N;DGCLcJ zT8q`H^{BO;^}cG+dQjTtC>G+?YPDYVsP}EX{RjH^_<3h$cPG0WtdBqJyqWKO@B7VD z|9Mbwhy=xTW{FI;qA| zs*#KxJa$}5*loR%gGZ*O^_Yv@UIMmE2YpvtZ_+Z&$AZs%{0l|XGVdj$c3m1RXJ zSR}A!A!Z7yNjTqxRu`FK`nzsA+|%E+cjQp-;qIOTae`dSvbLUz_39bBO`xF&)b2Ar zZdcL`KBHVq0~nIpC>)yRyQ)9BsDwkct7tQfwhfIIoq8?&3_`7jo1_ow)?U?CyKYTrX<5?>_RCI{Z>6pIQmL;-FT07Qoy_V4)@!;w zu37ayRHy9fO^cWZ1Y(!-l-qcU9Ce6EoK9t##Pb5?H7Q@fI>%KjPCaB6w)u0%Lk*!H z@gQ!(Kv9Bv-`$W725}>XSbhc94UAjnDH#<7!;BisQeXw^uz=w?H-ww<3Yp-yFn^0& zd&r#;3PuF3Df&k9ID|6Zc%ft$r@yF zN}!t745*nCjMBzZD{T2CCcpb5bQ-U!!BM=LQ&Bf;Eh)9E#%=5e3!CI@Ej>AG$x*@W zrRh{gpn}(Nh`OUmV23|wWeQ0S`_eEQ@KQ$1Evu%E!rR^t| z8f9wcO?b0xM|TOd_GgVuz3eUZaxi7;)g%*|Z>r(zDD_@sTdVO_fu$ME-m7JtdCX1~ z!rQ?TK7+eCeHV!Eey(}`l)pzHJlNIWv#+PKW1#2YfsyY1gNNC6!oINQd&s?b*J8XA z?`G5~nY}8T4&lA7%=a;vX^Sht#DvaZ-Y0NvkqZ9Mq`ZYm!3Q~V4Rt~rEplV7F%=h7 zfeX9Jq(17D{D<+88hi*J@f%QeIl$xjDb98OOG{*EK=eNMRlFh{B=gj3V;EOf* zJkD{QNV{FPc-<__achuiv}b9KxfRl8ffFz!JHi=9e)pTxH5( z;mvIpkI53a5W-R{lbhS)?1$1TCHrTYHCw?Y#yqF0yQJ^*i_g{G3uVY6|1!Q3#2mir zGS1r-!q?@FIfo~>9OgEo!VWH5lVzwWx^CWbn5S3pO>$)2@{&cX{ff-YXY6T;t{EryVZg0#4*hpkjtQ)4`xD54XTzd-#y@3HePu}9Mm&9p&f={ z$~&BCa5-4Q>s;bQpPKe?Lp=u9HK#l^eh$XXtd-FA=_w8CscRK~3Klyj?}ZR}j{n-I zz>?aa>=QukU8u!!o_EL_AI~6GNH}kitU#T8xS(dMCt97%uSa}jw35W`>jx6}cMq8Tkb|K@#N&6C5M zI6}%3_fqRcJXb_7VDpiYX}qMbat1phk6^9H-@FOEDjq z#m6cTpTei+i~qC(zksu}vt=5e2|wtl@!%{TlB!C-R^sn`Rzp0G-3o6D(#x%kSrA*% z$g6EL@3_0MoxdH3qYdM{WZr|FcmTU_iO}b8gA&k{|>nE;T5vN!P>-#&x9-PM|ETdUpjXl7ki^mVwr@_;A_LZ594BV3QwMM z7)q5nnU+3}It6pJLQVp5k@*$lDf41ABOD!m0)cZwkzpni6G=h}^h~85g^fcdjx0u* zINxB}3VaLS_LzlvN)r}EqNJDZauaPn{?qu5hrgCikjcG-YJWEpZJxys0+1rhkv)SS zdSq)zB*lbWvRVA3azUzR@zVu`{UU&}I?^G(#IGnsI%qlHq=Twt3AnnsmHg|X8u|@> z>ygZJ!vGA=XN#xZN}kfD#gXV7j!xkZ1gH{ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneRestTestPlugin$_apply_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneRestTestPlugin$_apply_closure1.class deleted file mode 100644 index badf7ba8a6253a792270b3333b3d3e486ca548c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2578 zcmbtWT~`}b6x}xo41_5l(AL=6+7?Slpb@KLON&BED;hoogi@<c4<)^W=jrz&kv z8g8MIDZ56|k{MrmerDY_?4n^gwp`=m27jwot!&z(d81mj4)O)d@oKJ|(jWwe%dX=* zImlRsUCv~~6Ae*;3FV>S6lKMzdBhLia%;A4?#s*rX-n7eWwB||C2;vgj&Fq40yqBy zYYjaDT>*1}3(1^Y}A&BIEDuhAy z=bf4_-9?+ZV%h|T+G7#u%PX&8uuMhK$r_d=Fx^%z-|+UlK&B@3rnEUT-U;w*$Mk5p zA`mUBvW_G>*y*^2(KxQ+b%9GQLJ2)Lg`r_gpqEf9HNRRTV3L6UZW6vZqhlPYJ|vMA z7(I=JhDqj;t^)B$@1E(hK-b&-l}xtqeO|JTRTmt+W$;EHZeU8_N=I)>?~PFC74ozU>E(jYkr zTx)gNq5AZ4+$|dw*ZI=ev80AMq7*119hdQ1oYKC>h9w^*nPw3MuC`~frO?#y#l{Hm zUBmWDj=O(6z<4~R64Tc6^+~s0aLuYef8a~?#$3^;vKurk3d9Qrr>nDZP-Rz8>BnKT zH+_($PDSh$SXsl<{$fawIKD-w1335{&RWPSK8FzkH{;S#z^XbZ3JkP-1SzvD3#;auL%nSpuBimLp)Sl1%Td@{ zGOG3Gft+c}<=Xy^bn82bdV_45o=KBA+jdk19h)t#FWUS}260F}4lLN})5~5Zvx-A9 z@leUC0R+qSn1S{n)%3U^F9sMglE6ZD{XGk34 z`mabn$ArLhyeY7~l%6=myJBnW~f(R z8hA(o+X2aQ!Si&Ju3E>34XXOaF!ewR?n}?cDcx%wXhGvhBb;c3X9uu9;m2Gl)ygkG4zsy I%~b^2-zM?EZ2$lO diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneRestTestPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneRestTestPlugin.class deleted file mode 100644 index 018f9607f024f01630dd5a1f2a9d9be28541fb17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7734 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 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneTestPlugin$_apply_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneTestPlugin$_apply_closure1.class deleted file mode 100644 index b8e027a01afd5cae4d11056970048073653b6b7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2734 zcmbtWZF3V<7(F)$-I4}c8(u7+7AcUXg;+sB3St|e29vh7p`{?k+vGM`NOt4y2CVw z%5s%-%C$_@k(Ij2c*^xM%bv6Wk3idtB!3y z+|1OaRn26BHwK~tlN!BjS5!^5Tw?pHoR;O84V9TwmU5)0D(xM61djF!dN$Z8kok{n z4fG4_@fj03mDk(D3}w^IEIRgmRraRGR}zS0K)`4QGXjV6yK`Dn8_H2uSxpNJjk%um z%yPCaT{mZK*aB%ExGPV!Q75`-Tht_6%l$^FM1(?CK->}NyKGvf_rAdUsr-HUPzD+< ztoyur%=Bh8z9Mk?r2urQNgRwLhC>PL!~VU9;8lT`S2JCK89$T%;RhzTzht*O<>V~t zM9Bn(yYmnjDCvknqLiUxXJx%EaH>ZZ^RG&Z%;RKlOoPaR|R%8aGdd1t}o?o zLe8G6BL{^j@b$47|c}=M3tnHw%*%xRM~DcOs^jw2%P8$w0nC!tQG^a+{dW1 zoAa_k|BUxiwv&jaz{uBdeE?b95J)syu1CdZHfToHXzFgajk?kaQ9eXYpV>{;DCJA; zs9vl&_9MAoR|X0Kagq$B5;)Q=&USwhIJVtRJV#pYhV3+V+8;}1O3TvKKf*q_>^ot0 z)1#0THB*sICS+iV@ypWnigt0cNtG__R;jyz_$_F{{=c`(l^n{PGNl@rd4 z(B}G+x?;K}x6D|Uta9QdH)KpV3>a!`uIMH1H3wXT0|6kct4PynEVlk&s>U)#L}f7FftNb z{g(3rF0W~#g1e63DDQf746pH>9=*;{#2@K+QO?qSA^O*hrgttp!Kt;v#B-$ho7}>r zSX~`HyEY%roY}$@XTqo0&p5XhO@EJ(Exh*})6Z~~%FaB)Tm;Ko_~|ev+ie*%ww9h&L3&C%6})Y_mF@-hv#Cd_#Iqp&ma$H9zqi2KDSyG}iLpp-S4# n$9_^;bXMv9Kaez73{gDdM4X5^zt3s0FL;k}NdlW3MPU35NO9Lf diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneTestPlugin$_apply_closure2.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/StandaloneTestPlugin$_apply_closure2.class deleted file mode 100644 index 11cf88c9c6446e814287cf2ea33d106ccaf6c8d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2553 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 Q4gV9^!Q6ezrx>(<06pXdwg3PC diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_addPluginResources_closure3.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_addPluginResources_closure3.class deleted file mode 100644 index a3f11716b5e3a433862bc9e924a09d418023ab81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3781 zcmb_e`&%4W8Gg^QFq_R3l7Z0Dn~hRf7U&k*Bo)%yWN8u%G?Aqsjdq>v9$=DXW}TT$ z#rv(bRcpQ9?>;{M8e65rK5Bll&*R_JM}5DU32fX2qmRFQbLO1yeBb-s&)@&?r@sI= zf!`=Bc>Y?!t7|vVwqIEI3KW0EF^sf1ycWtv!v)#2qF+MTSp)e*2D_&Kv+l_$gA}+t-hR%jA zoYk)O?NC>DZgeUf-5bXv@qLA3|C1R8G746!DGD>WIgyxn!>&7pi@tY7SHkJN_DANf z*w^gX-V2u_RufqqR5;)@!g?c|aeRfl=bHVppjWj|zv^j)yXui=6EzBl27}NJol3E0 z2f?hn>M7(S-7UV;t2F|1JePh>cqz{)mnmVssGy!#=sM}RPWY6i=O!UO7_b8;pbth0*jG+8~Q=NY9E;GE^pLH27Mw0o|>Q04&WdRZA z1*1{*#A1b^HYT=7qz+aq6pplwih&V@4tigqFW2U>iBXJYk;k~g_8uV}0(I?&n&Zja;f)PC^@H|uPYZnZ{H zh0?m`hl|`fm+TmrC5Vb0go|FR?mwqf0?WjC%w_RG%(Knx+83W1xWHW+7q|DFesnK$ zYmb(w(BJ;VKuKX@KO0LG->HYEH$yFL?NrsSvz81zr;v?J6O$EA>>tml?@hPOwq<-c zizTd>7{ahLmP?GO^r}+SUFVrR(QSnR8rWQ5J4cLDlb7OTH&9l{P)u^U_qNK5@tCl2 zIg5{>!tO5ZcSoYaXd8p}Qg1?IRg73OaR`T{zc~uIwr*`R3k+P1vo%5$Pm(8_)yHV# z=-$zAF|h$RiyAnSqzrcKGVyV|AP1au-Gfq!P1E3krULZ!YN6zNDp2A@{w4DH}5m!B0@r=~Ob zJiBE(g$l=$L~n7$UPCLIcGJ?Hx=dWdi;`t8ar(6l(7r+peC6N9UL2dY_RH9NHH%m9 zRTCi^k``ZAxNoQU68J!-JX36#)X|sz$SURlK%GG(hp8WUBIj(-Tv2j`Z$v~e$p3A9k&boY3MsC#n?RmzPXDT}?lXl&!vd@&F=j$0}1t#c|GzV=L zIuE7fEdlV$mju6AsXcyQg@xYepH64Y50JkPM@WCdzYTOC!|(7m2BtdmqhoL3{_&}< zfv$Y{k9csPYk43&Wegbd_t1c`{Cl!0{FL-@bdnC?DBjDjtloz~p2_NAu2RuTAW5PP zMW6&KyIP|9ca$J!D^xu{X5}XH`9I*nEj)4qk9S~s%sMuiAG3~6j#(!rdGb(nGL^y& zL?q^!7M_#0&aJ0z;B*H$cz7LurSJ~?jMRksCziQT2A;vsxe!=soa5_l7E_!oVp4wu zdU?mBWfUWm6wcr*&%|Fd1TUub5%gSwcN@>%#Kl-&YFD2{wn(4ICIV6`k^Kv0-0BxQ*v;VzEVjpIjDucIEfAl|O{BME=P{z8T3^Tlh$e)NHHN zY^&5mX?zqf5WD!~bRu;)zlExm`Ykf~ZLD8^16Sro-$9S;Zlk_3_a?54ZXviX8X`Bb z1$4iQUIR5|D;rTFZ-TKAZ#|s1a@J-kZymEfMS9%&4Cx8$bEMPJ&PnSFCCNxhc6Ny5 z`q8K)fFstI|BQ?0iRIaCfagu;I+TuFzFV)d6O5;zXNL< z-#-5~USHwW@4boF81Nt62EXrJbQ|m#9rz{XW+_s__hS~`ulP-~*i8JIs}ziX0WZ!6 Ai2wiq diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_apply_closure1$_closure4.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_apply_closure1$_closure4.class deleted file mode 100644 index 977a897774b47de6afc981f0e4f8ead1e6496ab1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3493 zcmb_eTUQfT6#h;K42&b-fY^AeR!TwuBh*U;wZ(WTC5RG)Qfkv7ISHd-CY_mRV{Prd zwf8^KcdIR8U2T1;YxOs|+U_$mKrn;Lx_mivX3jo)fBW0F`TL*W{s3?YKQfG)Rv}@Q zxM6e6%FZVWmX<5>gu`toF-gm`?#!Rybe`izR_FHFV!5Cjof)lEDpoStqG^{c-ru>r z+b@AJv=uDVyj)2XHKUM7dNLB~7n!|G|H|iO7 zuMc9ccc0sqwbOPqN6#jUnr)95d6OaT8m}RW z=ZmCKHw_}ymnAJyCPNy=k__xk^5BSW=*}^Q^RZfN0bhc#tpmAxieXb{fjfevwC?a> z%hDvK}e0MC(u=A$1u-c92xFh(YgjX5*A4gg`Yw0EDc*WtOmWOj% ziE>E7ahDw1nKUOWCCa5k)#UhXq>2lVu0SeI;G~QsPEp;Hv(%VGG1WL4*t!_@JmOZ6 zn1t6wL+cWinj)@6@p~~HJ(f#BJNsOqvLrd;VeTVsqrtjt;tQ#R|OMD z%Q%NghK-`1t!QNE2_S1d^9rUgEeLu;K`SQuRE%e!Q%Nu+RQuEbEKm)YjK*K$?C40 zq4MmA%~oAaJC<$~hC~xrwOq~{$YD)e_#9aSeMFEWi*bKcwDUoezHPdXwrSA^R~yz2*(cegA(%eu~eU2;k=o zO)Gy`H0F}jOvD5-DNm*}OBWq)QY=(0RGisMV_M07Z%OF}KT}?qX?-x*zqlc40SOpr_dFK_{Jw-HWsfxjO+#tN(aW;q-kBdzM10mfDvs z3CGDct?j<{Z)q=Vzam8N8b;R9FMLr)UHzj^uU|%=um6aTUvcrXMU2&Gl?5ch&njxU z7IkYFXE09K1uMsWt+7bx$jfB5<$6feQn#<&_)FQ((_KDC$@IV94P3fLFh?Itm>Sv7yhyQ5^&zK8OR z8j9b+d%}nir+-ynJn3tV-NMzsu!+`1d~lyGj6Q(6gzKaCaBYUJesUXEDYRd#f!Y2L f%@P%K9lj&IGN}}4@FkVX_w)>tCklR`T?o>DzB;rD diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_apply_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithDependenciesPlugin$_apply_closure1.class deleted file mode 100644 index dba67395170f7a97c4e24bd926f67fc160e2e7b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4041 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 O#L8G=As36?clbG+u9GAH diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithSslPlugin.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/TestWithSslPlugin.class deleted file mode 100644 index e82ca8b7c030e7d24cec8fab1856fadabcf7e327..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7388 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 JzkLiB{tp%0f_eY| diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/AbstractLazyPropertyCollection.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/AbstractLazyPropertyCollection.class deleted file mode 100644 index 4b7ca7f0a3a2e48278b69c3e59c91fa5f0215900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1707 zcmbVMU2hvj6g}gQtmC+Ga9cw8C@xK##CGEXZ73w9w5AmxH&k*JRP|}H9_(#4JJ#+v zA^j!%1D=s6k%9zoAn~IpXV%+#T}M2yTHU=ncka38e$4#+&&lrqKEb^ridZUQ4p(NW zUA1D_!AgbJMgi9<5NH;W$8`rEI`~K+7s!1jP-#Dv2eRqQpx5k}&Dtsh&{Wz9(rN1LX&;BQiIn(zd zf%Ucydrdu1L8N5p_M5#>c74^nvm2REx~46k9X$+b56w|a`#!mNIv}0pQ&^;UCA2NC z#hxuQMp5JVHklo?oJ&=RATn;`KD0cKPbk%*&*7Wj! z7ii6Pw}b^OT5+R<63&z`kFvnUapNu3huRB_3h({kswDKnU9F9+{@{T!ecg@9Gq_p6 zdWrLPO8^CYYSqsy@*4s-{!ar17REG2<(XI-)kh$^vbs~m1~vuGRuB6ssJc4%-s=tR z#8w5HyD#@tO9!qr-+87_Eiy7NoUE(q0eLwN(=A}BMO9P}WmFAp=LEh>rj>HcoUt_Pt3?>rC}licjMep9U_H3C}DVc%RkGph|rU*%wr@4vG%u y99%-K5WiIUzMwx~M9JVXzTmgW?OV9Zj$FVh|L19`ajhQ9wSNIBDWc{8 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Architecture.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Architecture.class deleted file mode 100644 index bf1f0acbfbe4b0a771f90c360c5e36e43e6dcd66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2253 zcma)8%~KRd6#w<^?9MO_9}cJik*pseu!fDgu13Is1S4@#;v$N~m}Y2}f!UeO>?|dJ zLJq0QAqSJnDTk!WT!>bQrIo~UF8MohP33Im_3YvfC1n`s>3QAniO>g z&ckVff(tr6z(o})6~j8ZFd|>08ZK%0P{$a?b)3az4HI(yNW-LtD;hqQrdQ=_O1?f( zam^&3H*~aPM#Ev97RkvG4LvG8Wr*L&Wf@N7J-?Xo%EGM(?prIFqR*Eckr}6NI}lb- z^~EqlV*KW`R99zaCUV*QBz>Kj8_(aGEHLyg?9E4VojX-gVK~`8utyVR!dnsyt$EuO z*Q=#P;m`6#hgQ_k*NtU{3;p?3zRoiacZ-=q;M;C-cwldU%)DoDXO8=}bXxbUxV%IG z%s0I?RrP)01`K`udxU4md~D}{ zp}7!nYi*jBL!c^dGH4@~Q%97G;GJ}MNLy}hm?}F+u zWuSmrhGYL|n|P})9|^0`}jg);|whgN0KlyYAn?1h)`ON=Mpa+l(WX}jm1@J4C3xwvu(qN-eN^42Md5O-y*M#e>^+ zK%v}9z}ga{AX8cOcnToKvwR^FzgQqQRK$u6t{u-q^LMSGW~;{)UQGI$YlK z)~aO&W6E`fALc+_F%P3q>ON|vaFx4szg6holZLzGE5h>*!`Y3p*hPIIqQ6aQWU20A zf;&!udU;sI8r_(0oNqU53_Wkx8#_%`dKcaC%2=mt6M$ywlyIhI0ouA``;tZiO*o2U zU^q^aoaLiG278LwOT;%xBHrnp4EK(celPm!`dP%nRozqupCR!Qiqwzo&_78lMokO- z7zp?24j?TV@igM}N4LOWx_b-BU&HNaxQ4lkQxZDf3w4GFNCxlMfUsEI%_CDawP$F$ zHkgl%rk_Ipg_P;xG?cCLU!SA->R8L_dciLI_YM%(6N?5AOFzCio@ z;B#~UTR89s?Z!i*x`x~{XeAg BDU1LB diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/BwcVersions$UnreleasedVersionInfo.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/BwcVersions$UnreleasedVersionInfo.class deleted file mode 100644 index e3928dcaefa5b470e0a15833fc2eaed326cd6603..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 857 zcma))T~8B16o%i~E?p?A{SZ`&ij|tc0s#7NR03EKPVc5H_%GdQz_8~&6R z4G9P>t8(s!z1bD>| zTnJ;ORt#$`ZF;dj7s?85l78GXyqk)+JrcZUD0U22NuQzCI^`EUPPyvECz+9|N2}G5 z{@CbKkz~g_BVjS?OWSVPI%hpM!I@D>AM{~gL zVv%8Y`mIj*O(&q9|1SAU$K5GI<6bj{!p3GB4SHh%JwYE;2Si!bG3Al4fJ((7Q_bir zqe8Jt*%ds@QLIN>L$K%?UbH<#A=(+jk5>F4=6=$uhZ>EKbL9_mH{@jT2pLu|pa{Gh txnK!Ts3O0-o9k82dAvMxM1?$aOg`mLsq)CBp2t<{0pg~YiB&9v{RJob)lvWe diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/BwcVersions.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/BwcVersions.class deleted file mode 100644 index b6d0f9c021b58f7cd42ef2a26b1eb365901fc160..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16759 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDependency$StringBasedDistributionDependency.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDependency$StringBasedDistributionDependency.class deleted file mode 100644 index 122a005c5af6a06dd100d970f400d104032845a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 827 zcmb_a-)j>=5dJ2Yf6Cr$M4BP!o6$MMmn{jT_D3|ks zm5t|7YE_bPv^stFj{?$LH)S{CcWRNj$7A_4VX6FXoL=|EgV3&=2TG zMR$}kNC-D`=G-~=&Y3&+jFC+qXXsFWlUZ(h?(?;CWus% z?n!y1+$Vwjg;Jy&p^RgS1rkwTpk8SWkw*fBR-mXoyz7y^mc5W8rB>w1uq$<7`FGI!@zjotv@Wgkj|~p`WSZ2M!_Z8W zA~*5 z-OpnKn*s;3R23*rnlgTCuF_!cd-eo%yxrdUkUV5AEDw7D$F)^)e+-L?O~ zzv5>VL`3=n{4f3marP_*K~dp$W}dluW`>#h^6k?Rfcv;v!Z}omDBygNta%47c(~}m zB_}R>SnzO#;a1Q;lyNxj@cqEpQDF9kjs&;iI2c(zR3ca>TgD=c6Dt^|cDEP`4?`uj zj2|&%YV{q4Y|{+s=S*8_(M?_rgnh;biafJz6LPh~t#tUw9f<5J%wHWZuE zF%~vt6k9n+Vrle-In>JVVNWF^sc-M`15Q<1I#ec-dejl|*bF@^QA=GB#g9!Cdsy}n z;Hr-jPWZTns*f7#4D*iNP+X51UDHp(@un1N*s|7GAJ<*j4OAIcXbO$V6dFIK(D-v# z!CeM_OKV}9ibs)%7|N4U+k-tC9mAdfP0O(Kd&;l-$RBW(xSG{keYgF0#sh}j`qR$Z zDnsyZ;hwQWskusbP0P=`aAdF7Yp$)fTjfPMvLYQFD_7jaokboW)1*%ldW{TObd(># zjy{*(W9pszG9Qr5ZofhHNec4>a}($h%%|`z(Tg}kC!0eB%e2oNs#w82(izN9;(VI^ qE6QX~(L0sC{Bw^YIzI)nm`wvtQ!)^mBY8IU%wdsqDeaq#a^X9Z%g#jr diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDownloadPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/DistributionDownloadPlugin.class deleted file mode 100644 index 5110e3329fc165c3567dd0d018fbeb6b0129696a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21815 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 AX8-^I diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/EmptyDirTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/EmptyDirTask.class deleted file mode 100644 index d61bc179bad692553e1bb82702609b3b642c5408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1755 zcmai!X;TwH5Qg7LLN+Wb5foHB!7BuH6>m`#0X0@syznT$ESoWmCcCN4#?t@f2d(lb zwMxJHU;GP}-LoqhQdkzn9@9O~yxnhae*XUY9l%-Kw6O_pKO7wA%LyCPIBC<J6sKYud(b!ir>@4T)e8<0tc#LRCmLc4BFC* z{8hIed9{Xg7n`m4&4MCC`z0Nm_ao`W#M*JM6U3@1msML4Y%U1G*o##d5NlksQh?V| zZcLloE+giA&LL2tF5~&tW>^!LC{3ChR1nK3@EY!Os@2swls}?d@Y+?u3+cyhMc-Hu zaY&xPW}@_TX|IXx>Zqg#&~7`~z2wEK0$cwQ8eUL$@5hk}>XftVUzAoSW&!O~z))%Z z`E12Vx@Ho2eK<)qm)FE3zLJ&XtewDnVxCGIDNaD=!?(L zAN5^7kqLC~2N{knblpmC7bq_1?vy`6l!wHxkI1~&*&}qdDGIpA(a*ssXC=AVhVAr5 zpB-^Bno~tq$HvMZko|<*qw**8@iYBrz964PmpVwfzO;nzLOSGt?`t)Oe0A99Cp8x;= diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ExportOpenSearchBuildResourcesTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ExportOpenSearchBuildResourcesTask.class deleted file mode 100644 index c7d1568578aa8034427b1dc39812be0bc523b7a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5886 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 S5C%;RoA1y}qu9roL}XvpxkthP diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/FileSystemOperationsAware.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/FileSystemOperationsAware.class deleted file mode 100644 index c012487c6862e1ef8709d0c0c11632f9c1600bdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmZ{fp$@_@7=*85Y=Ghk&|s(ofx@7cEMWqH`Wb)5psY*VL6E!_f(PKC2&=%5VD8S` zm%G>d@dPkOKSms*ClKvfv15VRc$*yQLQ+vx$aHt)+$|=FHiaw09X`5UjP6A diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Jdk$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Jdk$1.class deleted file mode 100644 index 37eaf45dffd8e82e3a304410cee2abde982bf9db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1101 zcmaJ=T~8B16g>lNx2+4*ip7c`>Vj=i)~X2)H9XKrkW@65;Db-o?WA40ooRNbB>WTq zgNf0^kAw$*fIrH3x4Q{dS~l68nVWOZz31$m-+#`30oca#43a2jk;3gP3Ruol^sa$5 z1NRtGy6Xnk6Ncr6@;kN~2pI_OJ6*fu^R_4KgLbb*uotd$^$x>o=?Yx=m?2SDZNae6 zaHTjL_FKX~;w_IN`G#`1cg%e^JjcOASf0UrC8hA|9uERR$Cc?dtSWVr)~cy}S9TZ{ zOXbE1KjpT^Wyg-9gvd74(09b18&*z}hOH1pZM~F^rvgfSEp%744cs^J02YA`MWFXp zpiLM^o5*0@#0K&Vxm~4npnX1wa)N~v9;Q(;QAUM~o9dfYrR0m|-n34HqZx`*6By<@ zLhrirfSP^Fb@zXL5e4a+ErniRBlN!Ni+9vu7MplP!kOK2r5&kV>hqqcE9r3k-ql^& z1)57u4sVn$yEef{1CK+MG#=K44p*M4o`}7U*!Q@jm49a7DUC`)sorqF@Nv9GoD?~@ z&n1mkU`5E<1t6k@Qh*olAuYw(ZFAg!x~+# z6x}G6%Y}nOyBT^j$b$Y4?RMxKMzWR7?_iamnE5)wnDk8%2KaZl;YVzY z5Z959xwdHyGv+Gaz{D VlC*};7OJpO#2wnFiDiY})xQXh6`%kB diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Jdk$2.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Jdk$2.class deleted file mode 100644 index fd56f53719103c5ce7af6254ac9959f4f89c7b5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmaKq%TC)s6o&r^CNaisLb#PuuF4_=30K*$0I@+-6s5E(75j-Zaty|U>U40`RoNfeP3Wn2 zbSRT^nZ?!~IUQSG!2h16DmzSMo-3Lw<7+h9?8Y_v%w%yI3CuOOIv4Ur28m3gVCW^` zo#{aqs&BEa>~e-33$d-EG)#2P&>zb5b+3XIAFEg+bgFW5taIa|jEWBz>pnIx!_ACc zOrtGOd$0bpd!a%jurxM+4MfVEu$5zdrG81%|96664o)!9wA-8}ZqeUb8?5sRCwZHq zR5Qd&&f(hV)4g*w?xl5IA-VRp6$ zhk$|#3Wx|&6j4yCf(nI}HVCL7mmo(~yg&q%%M0%VssHz8b~C%#RQqe+yf^Q??|t9@ z`@iq|cKYPI!w&*DS=5EF7JJIE1~<#*(;7Zgfm`rdIk;6epOek!Wpi5vZpRm7?~4`q z6838Na+osi451QVlXG8}bKeNzF5Df$b=W6|_kD2w^@R*YTvB{9Xt_Jf-7l z9pBgSOqiqnQm5y_D8=D0%4DO-M#o_}@q(20<1or`SStHd9Y53Ya~&`0cqxQm;N=j0 ziC1*Is^eEWey!s-I$qQ9x{f!bg>UM3OT%w9{7%E~HT*%qSer~*c5A{+r>(TW#FqB< z^_$yH+t#wNbZ3!G-Fx~8q z6K1lnG3wayWM9*AZmG&j-_*A5wDlV)cYOBEhW3`u)$2EQ@LkoWwvExX>(_1D(9+r2 zwsD=nRG)a;>a%t=ZZI9kvXhiKslDy=me#Iqqc#PT<{(uIk5)yXGL}mA#``k1>BLh> zf!g+z-PhP>n>`7u(Hx35nzj?~HDgY?vDLql=aucSl07L~U{2wlAv?7r-ecK~8|>7O zWjnjMdg=dMGzL`K4$Dp}-SnY^>GY=TK|0H{WBqZ*in*v)bem~wQ+8eHpt)V@Rob12 zCwc^e{bstK`ZmXtac8-JSvwkuLhZ&fyKvoLs>ez+uJ7JXRaO(Gl)byDZWGUJ zxXTi*leWu6Yf^)jyHFw}M;lWqhs2Gi*GJD55a&>4Z#-!x;ulz(%tS`2Q&KCPpp*Q( zvy$eMvWKXcwAOpiW9Ai|@UB@r)wnvIuv9cMhD_Ucf5sDb?=p3mPORVJA)^D2H`S!! zj{;L1+f1hEYKvUWciFsRG%ChJy*ZZfZs-QzyoXw$3zVbe6>9RWRmSsO5gS9%RK|{3 z(q^JZEl-efT%cl|m3BHTc|+3%dT^D2P1tPUY;-Z$t61*~-WuLE@F)D)z&Y4r;9S|9 zC!1~9qTw$F{))>DoQZWB{$}9s_y?ooh>W#~gw87Gs8LkQB1lJx@6#W+J$i4t8@OPjCP z#duwWb#aU#CP<%r6d%*YL_$NSbJI#bqN*-o*agNINq;~SsEwA0$(@ntq}r~2h9PC z^o*I#=D5?(UfMCqRDm^qGreNY7ku*GjMRrkb8ZQ9-59DfxR3G-lY}ht$jHHLKwjim zrnTR+qt^KurYwulkD!(3Sf&JTzneywU1krO30YBDJw!-l?LvqImibT0Gtw6rv#0uB z2`tRQpRL>qr5AI+((ERAxwAFi|Fdyk0iDLE;aI_tR8f}V2`?Q~XA@;MDYC#+73SiCn*xP2^Sj>zG2ltoz% zA7#nBJjjl+urjZzV5sTH@jzaUtjfG1jD~%7Dl;V6y0$2n-6W|9-(uV5Zh}x|rrmow zw|0x~hGcK2kD%U9sEH$#ZA~#t#$;Ngpz2JL!H0;+kmZV;c>Xi6}1+t*RB6JIbJ9x{>NfUx(TJ zwZ4{L0nWgCQH5!;z~Co>_56|$zy^+4{N#;UjpU74!Eo&~S-0>RmerPevfxrr7FN0S zTRG1fD{stlD{suo%Qp_lLWgn!ver>gmOJXniigi>{MQ4EJ9^o>ou4m)e6Fa!52C(d zKLYiU{V1tl5Dp$fX#o3C=Id*|zV7Rn-%Sw#^s$}8&l4a#LBdl`fX1O+K{SsbEF?(F z2~j^+)Vs$bj_n*#0R;o=Aoe5>0o5Bof(i;*mw5^|@+nu9*58Z3UF^8WmZ_IfCE9Qo zc%lVTxy>hgn=84w><~hNUr>UDLN@z^ROW;X;e2kEkY)HiMrs$?hl++nFao$4Q|?D) zSA$fEFNbL~?nBi>@)WM94nX2lqVSR5bwGz1*h(UuhXxkT5|2r)%p4vO*4LYPqOEp{ z+3co^+M$hQM|V*>oSYq3QWI%M^FEAkIDqg09CI_~?8AiIU}DayVNCQ);^ZXSr4`yW ziKu}1Orw<%T5%Hn+Jph0ZOu8`nn`J&Z4uhW5}B=p*Y6{JEZdSrZQGHv&F7=Z#e6h* z7*ldS(hF^IePq)|Y5Hg*88>Yh({t987h2P4!jeHTfAZMWeCeA3lL|6I@EA_++Tv&AT%)-rA7u|eO(ap08H(ytD z^TkCsA6vNjhN7GKgRlrWOAet%-~eV93fbcmG7>;8$q89ZVKRh;=sgOVBltBoKaSnv zlMu?G$6u(P8Y9pjz;T6}Z}V*)fu6r-z0C#3A3yr|y*>#e$A1u)dlD9@m<*KPkGWk; z9PytmwmKpzan*Q<%NveYscV?o#6>w0Jb-19QZ|pG zLOn+qu^%())%U|Hy6YfCDA$=CGQ}j;kqLvTnV|QsC1no7Q2#T zzPGuq%-#IF<#Fvyj^ur)4xhqA(I6>*>RtpJ)DcV&UZjK(rdk$jxJ(%Xrt&npor7cZgd6t&EXwnoYB}{jx$+nx_Wp~py z-~$mA1d+FZ^7uih_&^?7np9|!M->oJQBhG)QSpr^sQie2XJ&SGva_28ett?O_ue`8 z-19!?-aC2n?U9FxXc@m*Mmy;VA6=o);WGLrealZx^rWAjqNn}zZF)vp-%;pUAAQ$P z-=ps<^qhu?KaugD`sf9Pex?!AiweD@Q31Uy(|;|G-zfB3AHCwI-_h@-|A#Wt=#TRF zlSYN~s*nC!M%U46GV(W#is*G8y&;`{$m5?H71NtO`d@*0%SZqA(c2o8F!`8$T%eIc zuWIB28ZP#638t{3Q7M;dR7S5V?AORoub0tcp5Uizd7?%tPm-1ff_SpRQ)J3iA5Zh~ zQ9hpTS$&;6PKCgEy`MMmX?||yHb0ncmsW>HQ-q>c-ss~lKaFs=MpOBCg?kj<%v9df z+}_l&vA4ddqqBScrZy(6b%(x74@C56U!W_M2uJ(sm?kvFqREsVP4(!JL4#?sds;_l zbNhy-)0igOqs~CZ#^%nB-uC*o=HAYY%`NNC@bMV{Yd)j9xxH(BN4xn7OJa6!_r~>Y zZOu(KAXCZ8a5S7+%~UvlK@U?=V=RP)%Ui=yqkV8-n~~_&w?#0bwZ?*aq(@JLrEd=w zrTW83rUk9BL|-5lH=;>HPXzk|eF;4jF#;PxJDXy=qmh^%>WmEbg`;4xSdYgeLrgR0 zo0DuvJsu8pCSp5`V5&~YP~ujHX?i{|CUr+>XMGB?+cua2g~w+@>gjjMfCB~!DpPu* zK9LG<*Mq6|zDG_U@~Kqaaz*KLt@f)^tJp(_dC-IR#H1|db5#uyl&b%8di2ph1y zMcGWI(I*3;WF(Lw`BXg$n@m71KEWWefZDoJdT?i(9yjH!@R)E-OemWcNQfyO-&)hG+>RMl{uA zB!h`?9KLCCG1K98$OFLC_#Uj1pT(t2n{z2vl;(1kjGsER!l6Yoc3{Zx*s2f32Cc+U z5;5CM4ddit417qDwwBDCH1}ktNM5(}ESD>}c#U_A)QE^s6t$vIFc#e&?i)=%pMP7SLCG==g;#r_O-Rg=PLDO+2I4@<0=_Jouj%XanEHv4So}}>EOl6&V0?J0l zL()>$M^Pm-M)YJ-a@d-DI?F7vDH=zja_F6#!DfAe&9 zXaim(!6{Q1+i4_Q2Uam@vFVB^X=|3+r>rYBm@0~K^Denl%drgEImQ#rvfsuGmBwSDI^H63Y@uAzZ# zu}CeJjyj8l$x;U⋙v55)W*z08cdN`zsN@^mr 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyFileOutputStream$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyFileOutputStream$1.class deleted file mode 100644 index 883147124a9f643d9efac622c9b868e2caa15c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmb7DYg5xu5Ir|7O&bD)q6qR(v1%HS@>1Rp>EPIz3e4c(D4){yQlcU0Bq=`rl`~Lg zbjBaxk8<3bmKx9x(3$MsyV*Tw_iXd)_xGOw=8;c9#e^_V6?9=zK@L;GOv{*2kbsdw z7PAT^%!!0&!aSETFJplrd1Bg`L(Aq2-Ng^)iJ7z9+)KJIGbDl|%g;iF9Z;q(N;Zx49p@a{WMshF%rj=n-#*WUQ!I z#hQwBY%mN&cNpD^iWk^aaTh}>MsZJ=G1~0)7n_-8xOIUZMP}%`2p4wRQZX3U$7bl& z|6RX&0o&BAtIC62)8kIiylZ;)at;0Sjz3l`kG4*Wdrz8GxXr7k*j0Z!HQM?z?$c+{ zMci0bh>B6;6jB5620Gr-k^Mm8od}&nK11>^es@SegHFt11al#e z+C*sa3=^8b9HECc+~O&c7u{$^11UjpisVoO%2nhAs$HZ`mm(8r?Flpz>H*n zl&Ch8E5b28JkmhtRhBi%TPH0xLKdT0)n-W(%foP{G%~~|`cC5!onjH@I3816!V~D> T#90^^4Cx8do$|HwcI&SBo;7$%%nCz*rvDj?r z*wk@Xz^Dg-jCOoCj%6&6?MPqt+(Zg2Iq%%}uI+{P-XQ4@lKmu-?$Nfu%tJ5mlE(t` z<~U^6^W}D>DWL6y9ZH^ayg)VvM=cq>c3VDqN>12z{iYjv{6BJP$)QJ8H=Qu** zv2>&Mq1}tzjxTM;{rri^Qv$Ru`2>oS)deyiB9E18W}T&o7LB?<{^`fI>?d9r#5$@1 zx_MBmrxD6QO+XF1U9!Fmh|u=Kmv&$`kiby<2x zfS?yf!fB<^m_?C1bF^w8LpwmpI)<=*KzVCz97FvE?F)GoTp(M7O14UwTbM_U2B`Hk z3neVjALU~a7l}y^63ev5>?bsHRL=SeZFPvuDUu&NuuI~e{e#PmaXDPV3c)T@lt%Mv z3NDYpZ^*}O6d1fwUK?U&8vPu3I4RmX2_2&ggkB>YrQ-?}VIc)vrIk8Sj_!3-?mk6x qe3r`%p-Wj{et!Vt$;UDP diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyList$PropertyListEntry.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyList$PropertyListEntry.class deleted file mode 100644 index 3b0a08ad6651b8f5f0d5397ee04233cff632a190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1674 zcmb7FTTc@~6#k|y^g=780u=#8L1@cm@d{ExLQo?~Qw?qE^HSC_xXd=YvnKGXG!czH z_yhbOULJhWA7DJQ-G*LlgAd&^bM~C?JLj9T(=UHMeFm_Ghfze3iy?|dwOUe-?4Xa_?4&x3(#Bu9&lN&a}bm2&Ut!u92ruNbmRmm-(mHgLvhG>b`gf3m%V7S>Y zcC%d0Z&5-*SoX1Q@>5+wF)SA>yQW!nLpX+RR}ZzCtsj_%_S`0)El-NA;gmlp54kh9 z%8==iSkO;Tn#l$3NR_k61(#b4?uC>3wUY0_++=MpIa^@}?N|pS&~SkZqv#&*8+KXW zH_4MKSXJGu=r&h--x*RZGK@6wR2Pqhv`-k~yFwWDj;TA2K_MGGD(Tcdg=1K2m`iacP~+>{c>aGh~~WLCa+S3x;80&lQp%8x`(wl6_kU zOM2r-l1_P8{t)VQu1Vc_CBT)S#K;c6ttIuCC}kq~pyaO6|Vkzw48BZ-kXQn(jK3`22T!f+h- z@gR(~IMy-Cu>SAQsuR3>G8mGbT`|mG42>a}QS+Wq^J&vT$)anT3=94!v?|piL`m9Q z)bc8Gvd?ux=%hYo=-!IbjTWT-sd>;>LAwAFv?m>aWKzlFMSy&l>D?&pPRWMIj^-B6 zz;YiD$Ss{Am|H$W=&ct$M$eQN^OYFB5!!dk{(*7w&k!HwB8{tL)k<*(yp>`NVv^S5 zz9)?-734)F$k(WFnrgj<>$F$(Y}1aB9mu^y=nXA`Pz4Nn&YvD>yb<7&DuQ#5BAD^x zZ;++?7qf(+pkI(x&}o8Z^b4j2-eXWLJ|fI;P8Rd({YBdSZXrx}5h{-&Z1geLMjZ0J Zw=ho;0W2Wn*(@f=#;A}8{li>A;4d^-vnv1q diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyList.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyList.class deleted file mode 100644 index 2cf07247144676a6edb41f778273eb23bd6f6980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10326 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyMap$PropertyMapEntry.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LazyPropertyMap$PropertyMapEntry.class deleted file mode 100644 index b8583ada83c56fc5311a24b5fe02e6a5a76569f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1910 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LoggedExec$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LoggedExec$1.class deleted file mode 100644 index c561fd95bca2332029c466cf20c3c30fb7de18e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2497 zcmai0YgZFj6x|n)31KJ^U#(O-T2PFSXti2JsYpR-gQ%e>YSqi+l8huX>C6p^ZP%** zqWuN^>{`}WS8G4_M|E}InIMs5m1Je+KF(vGea<~M|NQ&rF92uoV-I%WWEvTqO5->_ z@5O1HF{3ZcS1C-UVPh(V%NDK};psHK#y4r?F=KYF zT9{4K_%#dHE!+_3)@3gmIxet3AB3e`P*Z-SWayT2rBD_tDwhvRB~_e!tlUvbpZ9!E zj|mKqY%YFiUZ86tC@O*eyyvT{_3EMu=j39AD+Bq!m6drJdS>2O>@r{k>}lUu;Y3A7 zk>Ye{Q&&SLh|N;OSl6`uVFIoZfUJ4BIT8Bc2!M#flmWn zno?%l5V28Nps%2%yF4Rn4X`^#n(WLjK2)xbUGx;Zk}q{Vq^paqA{(ubyT<+bjmt6O zF``Nrf_mtxDbKLhzn+a_CJ3%f`feqNJij!fbU7$mDA*XpoIvWTiu9Er(l$QAZnOBU zjd|R(aLdL5ZriwnyEeYVJ%P-nAkdKxWi7E1^>^cb3J+{ZELw1F6rpS^p=69XSo{?R8Y45;a8XGK=(${8*)hIKqiHf$`TVxeloM_{35<9me02Z`La z0j8nb#-|wKLD=jZ44q(+Y|u}#DBx_SEO4}?I+sXD&Lp_78fjIXt*KC&qKM*p>KrkJ z+gDQB9Kstas#mnYzL7)CB~wc%V?D2luypn`fov7vIg4$2dfsp-Ku6O8JzR{dENpRN zPEv*KfW?-yg^*6xfYo(!u(uP~dL{}wr1WSS5eT|(HqNuN6oigAC$Ot3m(@hzyHej| zYB`Fu^fk}?f#$>2Fw(~E`!TlS6WF4{FkmR}oz^vjpGj$ zzE&m0Xso#GXO{$aj!ZZ6(vYB9({V_`B|P$8m4tV;4ZJ%|_}02v(^7*n3w6^I9FnX(A+j&g@r<($?B%nYGQf3w!spIJiWc{CM)}wpFEP`o5?g|`5LtZR~RU~!nT*#{`MIG_2V2apqGG5D4+5F1~A9fc^t$|?%n3@Er!2< zX9z|k(g U&1Z#>A2A>2I8M>pD1Ybw17O*l7XSbN diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LoggedExec.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/LoggedExec.class deleted file mode 100644 index b2c7d2ffaeb7f1f3f73b1001a793dc0489f206c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9804 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 IZ48%x0;n?d7ytkO diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OS$Conditional.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OS$Conditional.class deleted file mode 100644 index 4ffeacb602d7126d413761f998521426b42174a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3180 zcmb_eZBr9h6n-uNmV{MaRD8G8qK226+S+Oj#bQVbHYC;rBG9Ur%_XdCcGKMrO5b0; z^e1%sE830~(V4cN`H_nvdldCob{IlF)T^Xzv3SMYrd$8lZ3 z`!TfPdKAYn8N~!{bR&f+xk}4NMm|1JFdd`+nHX;3!x&=7O08MB%E?Dw!L5F>T8yC& zb5eC)DwGu5>BayS6f7!OVu)#$S=L?MG98AV>;t~e6LnWN60^LPWQZ2@ipkx&Ef{7S zrQ=!4t|Y9QFde~dZ8cG`dD#$&d?6W9T&bIyw4Nx`Yc)d`_IRV&vEwGE#e4C;(&3Oi+R z#}Onv-xA?a=o%pzX!NjA+x9a0LKggx7!=DS@byOw>G*yrNDjY{SpwGO1X*J^y{|=v zv-`=n5$5;BLZVbIQEX#FVo7ZNAyK0r4o=$w)1zUv!a&iWB73+AY;t{AQ zCwIX&b*xmm%rMld-NVg9es{t7wPiTg>LyVpJCmEc!*HTyN60enf}^a`yr|V(hN}UW z!!&BH;GSGlGPl!dkFt^3$rRPKG?Sakmxy_t>)fcz*>O5PytE%CKTK~@PTDr#kPPQe zR(A;5x%g5`Al?nBMsXbvcVo(;QhK8@DW_rQn%E#V5JR@x#k=WuLev&jYh6qlH1k>- zS){mhCta<%R9_mgi!pqL&lyhTtihe3Kj_qirmyItJh)=ngN)&5m9GgJj~aJNy1Pm% z$K|F=@m&bR-EPZpehaQm4NQR@36~}~l|d<5-L{FQ1cIV!#R@VIsmRdJhs^|oBJ3|X zQt*W&_18qvUGC}Ty0s<}zH>jE4A)%C-cax@r8jF?Yjxt%k6|CdCBI>&xk;}xXUNwK z-f14$f`~#jZn#*a_s1UUtvTTt4NRoCVH9*%Bo%x|Olk^fFKi5F_SeI!^eu6mz6R)J zDrXY?pQ2qGPD7zJjW2o*(#b7EXa)3+Y=VtEN87?CBEO;i7dnfO70{PO8$GY19g{dq zE7jM>YdBB43k@f6+A$1cgzgN|x=c3Y?cR~cX#W)*qg&{VpfvI`orSGW;ULnU^#NZ$ zuueBIiZQY&{p`x5A7A!5$^6JJ(kju)v(n1*40*o!5=ZYYpRHp`4y3}#)`bTgYG|Eh_=eh zA|Y4`dG6iu{QtP{7A^-Yd>rH@^Bl2-r|5nPbrT1&qcTlfILPn>J*Ckn==}+O&(XIq z`izh4`)Od=+TR75&KQXX{qYRR}?OtaLpo7-;2=9H$7$=;|xI~vzBi{~glg+}vZHDNg diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OS.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OS.class deleted file mode 100644 index dbd4ac7e5da69d73e37c8f514baffd5cd5c1dfbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2519 zcma)8ZC4XV6n=)h>=IXzD58jpiV~tFwS`tmO2rr|H4y7YFxt0aGlqrDZo0ccIj29Q z?XR$Kj(GI6^>cqyPfzb`ma;13xH-wpow@h9FVCIX{Qd8%KLLD>&0fS&N?{IPDHv05 zCxx?^mp@;txT~U^!U7gmR8pA6J*oVSiu)=q%BilRD#r&ZmgKms;9;6zzfIvdzEkjh z3WN9|MLR#LI4?&69aV8j0cSW=bnLq6n~u#b25sK9gVl!KY}#V6-CPlFm9JQ|q67$)Ckzvr@*3aZIg8tkobJ1(-N=u3 zbDl0c2Dg^DYf7jPFK+WD!KUBGVn`ND+w^A`PVD1qetd}`?ys7ZO|Nb?Z0@&RLW*VN zhGMi`SJ*zoaHeZeJr3C))_rcQFYs0nl!6sv%ZRd-=>jqu;gu*V7OK;cWGX9b!tnDm z9|%yWR`WB2(jRf(sVzg{Lop)mLtZ4LS}?4zo>wCpCA-}$98815G(bh4 zki1ig7KP_82-zH-hRgCejcG7YXE=FK4{Nvzq2U@nA&wkxqQgEEJkij=DlN{rLeN3b zU}8(1b0cau`Mr3O&lR)Sc3hM}gtUo?BT<^0K$EOI^aS z9GjZ+I8nH_8}&*!f1Et@{EGO!QM_@fkB_=#?;BDcrM$2xAy*@^wKc z#NfV!q8Z`ZJ{`Kt`(eHx+yTy)6u6SMHZitWQPbXV)XDAry00kqR9N_4XJier-E2Db z0*8KuvIXsVHhq|c-=JmFM|M~HX!Yo>&`&~oS2*_kHICP^uP^}Y;KW}98w)bZB1Q8Y zRLY{CA|IfD#weUC6v!lnave7?OaCHDC}1~i`j0{DGV2@k)sXlH0}7`5W12<@&~*~l zVT4BcsIM_t+ri0q>%JDI{RLUg{BJcJBn`x0;?%nqc4+Y>#d{M|VWEDe4v|mwHR84O zP;3XMx1j~Xk$52V1;TJ55c&h*OfnFTDSwbrj4G$T(-j_KQAlDtl@ zoIrx+<2Xzl4^e%_sAndr&k|uwv$#e3Jt*Qfjd8LX#0bsOv^GfcIm*(*27H`Cjn-At JctqdF{{df{VSxYu diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution$1.class deleted file mode 100644 index df0966ba39b8511e88a99ab6d9220254077640af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 899 zcmbVK+iuf95Ivi?b`o3~0)e#UQmAPYD2)mN9;gr^P1Pzl)Kul6Pa9{IY%$(w?G*6? z{0h&2gb+gg06q#a>qg|IFG2Fo%o)#3Gw1i8pJxD`<53PbP|6~M#VlD%1};0eX}~Qb zZacW+;4Z_q*Zm-4f7s$9Pw9cDMk0&^*Z$BOXxW&DyMU9KE4ST)tBp9@VHiuU+@Pv}G53&>MwDxU{OTuXx|&iQW4{dY9L z1n0VHtbMU7O~&%Y?Ke;ODW?wg&<|83!$C{LL)CY1kH%?>DBe?1>|oW!eXP02;gXAW zlwDNtfMLmGR|6gns%_OB`@>x+f_`0VrCmHUVH+qjY|=ui(}h&e7gD`=B5#Yq-48>d zYXOfU5i#VaZ92UZ;l~Ucvy^1mnk9U466^dj_9+j>W{PL!%5ih%Ixpy!JN4HLPyQ>{ zQMxZf9wdw)ir71yTBCkI@Ze1=ze2>!5>Z*cWKLr&^0=5MeVNcFq{$*8{{TDtmHUR& zSM#O6!?HS`VKowH6P%kuhoGInFO;6eHKO?(N?64j>2*BDQ_^WHP+>bM-$0)16um3S ov)?)t(fTJ~p^yYzrD7mdBzZmY6tP0OK*<@>$Y-co5#FoCzn9qIs{jB1 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution$Platform.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution$Platform.class deleted file mode 100644 index 2b0151dbc688923ff3b44bc417ff3f6aac607d25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1626 zcmbVMTT|0e5dIELn>2)r1-YxB2yHs`z%*WmAz@s_1SVzl$e2>mf@w}>IC&PvEap_q zlG62d($bJhL=A~6g*?!HWOLW=t7gUioR#1E6rETb!)o2wQ_vitUB8R4K(j~iyuUvrDTj1>*te7AcvB#~m6tZDZ&^kG%Q00uP- zVOYjX4Qoitc%@+-84ayy*U-U9CnsHKXK1{hFuyy)@c-1N9nagYLwCIib9V2@%=?7L zWcBF8$2C`l_SH_^Y=YvNg@(Q@J0aGFDoC5z?AFz)RGF^atM-(k-gh(Z2l}FoA_Wgr z`lt@OWiJ*-=^xQT|DE7sCx;6lPKXIkpb1X60nJ@}WZV;B+{1k^JRs>IasH@furt*C zMBo!i4824{!Zt?!eZr6XPoPd{)rb`Tg5Xa`+`sOI|0B|97hdScV_~NulNZl0iU7TU z93SdAN9eOK_Y%Ds0lXR0^Je zC*mnS5_bIA`UWW%Q3L0wKZPcQ21y8wLTCyKp;-ubLPChh-zg|ihNkDFG8*+sjVv}X(h%&)e_S{SRfJzX47au?JQvpTbEsCvuX8r z_%ED(&~yeI9i4vmM>(E*vqI2(fz9kaIp?02=e*pzfBpU2p8!6>H!(<9iX)FtW!#Zb zh~qjQ^QFj_)GhzeqWojJ)piWO z>yf8$if=@Hw~v)!B9$KIe5`ZmcI^Z0d*3r!zOdV67}I^D_1%_n9Keg_TXq0K8}Onz z-J|>!icp}bi0f|GYnf{nuk-Zq37Y36r!2P3j=$k{d>K^*Z}VetN5Kw0XUJW8AQjA^ zrr;j#EBF988M=Zxp2%n@_yS+bXe!vno`SFNwSpU%RxrbtTYQ=2%WX{4i8-GJUIm8x zmqEfX(z0ELGQZfC>i#pcE5?i>NVRIUel}VI zTW9J6GtDsSyA}5Z9eSff#&ZFVL9?NAG=G`&)f_`!)n8bC>yU;_C0q6UR#E%6iaLBI z#I3>*+AGuXbiD)1F>EomH+sr6vN2DLzfy0x{gh zJ77?WyGxWm@gCR-La!12nK*`bX^n`z0_o4;y+D5fAt8+?rOdAwc@2r{hc4)+NTT$$ zkVZ!A(+rXpkC;Q4et?|0H*<=}FJgNz+_|}o_c?UT3!N;vq$v)7ECxVEGpCSyh@K$! zUnJ`|cQqQgV)zgb0v88?i&PKs%n3&4f1)__%+kxN!corr`-WdiFNKUl9T$6>luwl( zv4J?LAkG45NeHQQqOk}Lo#*}|$@tU$9a1x?gikT{3gd#gCJ81Xm^VfQlN8LG5y4Cd z<}Fz;lhHrOL%4@=y(#sO(3>MYB=u&bhY7t&^_bLOf$`e*TRBC|1Ri4yMNDCt+PQ)S ml;~f9Aoc6}kUqh@l^^31K_8JOkR*wON4QA?wnjV>(SHD70m7L8 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchDistribution.class deleted file mode 100644 index f0d3e8742ee11679af7407fdaa000fbbbaec7269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9959 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin$1.class deleted file mode 100644 index 1a6589d3ba7b4f9b5f5afac349e4f9e900a3f2a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 zcmbVN|5F=96#r}zxFlR@NChm?N^Qgtz646OSZFO!YJ)%`p7IR75!~G;az=JsEyRd*owLDB>36B!^5Rc<1#IdZzK8j;S!)hFB>QvNFN|LRQ zHLPnWGxQvAJ0nFPi*@PM<4*e({jxG22nE6DXUhHnPiv@#a&N0f#AMTJ=H7{ryO#W#sUvS z$*!B0qjcvi$CCFM{Om=Q&mw6#{kz{In+&la`u=Z}1(PIO!GF;Pxi> zEp=`%V+tpOUT_@YFWNi^1RZZ((C^F?!Pdmr!l+An>Gc!bO)=h}7|$y2m}KZ}%|Lj| zaH%Z0vA@c_hHt&ulK|M9@>1N{6NU_JB+8cQa9Q{1sR!*Mt=8uaX}Qi^D?5DjKKY$2 zyLI0Xs&*Kzy(+I0s>Ud+OO9c?0aePXkX5&$VME6g5VH6h)xl#okUFm8O&wP;pyLg- z4C0!OA#7>*M8{Kns^OWA&+xg1FLZ3(U#McoMch>eRmI{1NixbMmjTXr5 z4^o+%LTyET)Vwp;G zld6*Xjo~^u+Y*kZdwOc%)wc{?n@j8ELUC<-YI}xZ@SiPp2ZsT*5T)G{zC2_ooCCOh zQndNko-T4z+dHVu`z9fs$v*pkMyUJy>0?Nf5wTQCjRt@yO^1-ufCwqg4f>i!=|6-U zB>fic)(}Al(Sh9P5m;{Q2$9_Q5u&-Pu_MHC&(ZN6-9~Ve)=ts^3}k5SBOYntZM;KN z?UZ#Iz^a`awtpqdO3KXrfXEAU5{aIW*fF%fcgKjQ6EBgB;3c{k=;8(R?{VoHq)8=~ z?oMAmMr!L@3^k5D>ZtaypOAhUOUH||9 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin$2.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin$2.class deleted file mode 100644 index 41b5336a81de860fd5193c5375e5796caa3d8639..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1428 zcmb7E>rN9v6#k|ybSbNpihvhXVAZlfw^k4kL0DuxQ!VNvl{NiF&D=?L+>7UjJogbijrg)&U=2vs`$L@2#eQkYb!ii zWYCnM6aiU{cUnmvybLULXuB0_nn1S%z%W+^Y*W5Zo_S+wnIEDKrt~vBCqf zCu=)_ORd18klw(6AyLtox@#YUr66#h0ZI)tS1UWq$9 z+_#n90%NL12K}k)3V+q%K_E!Yoib-5M79z^1FPGTMcPD)*270>%6`c zLJp?}7o<;pUObL0Q=CM>YxpJc#8yd<{Hw zCTm_Gb)3hbj(((coWp>QAuKWUEB_3CB{Nl_$P!T5G3hsij(ecF>52?NCS(%B*-+)a zv|sR&jN`tJ2Y5)?h6idGajfWARp4L<2BOsPZMmPRahF$wPd(aodB*jEeY!2HnEL;u zGIFh?|LQ73=5%4G6o=P}Wp40#-Pt#081m_G5VmKjrZ099?UV$JrWFmN^#(n(`Bv!W z)HjRjjUJtP3z;}Vgcd|SJozCr#4AE>@EVb0Abr%cMJk5T4$tEcB@D8~Wfj-xBa@^r zQ8bxU6ah#QOPZ2+Lnn;>Ll`D`fp(t}MU3Q*Ie7qPP8}d(P9Gp@enZSmb)~uw5r1x` zwDzXQ{EEnTBpAYjUecq7&_nG^+w5$(`9hH+xJc_5G+JL%E^lxdZ*d*(FpKxZuMf!M zBc9IdV;CnHgF%sQG!X+MBok!YN0NSj0N|{K Aw*UYD diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/OpenSearchTestBasePlugin.class deleted file mode 100644 index 33480afde10e9e12aa41d716d1dd997fcb3e5d02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11834 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/PropertyNormalization.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/PropertyNormalization.class deleted file mode 100644 index cd744a858db92621141b07ff159957634fbf3961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095 zcmb7CQE$>v6#gzP6uJrENQ^VMzZ)|E?s3^N^444qQ6R6 z;*3VKXMdFO+(I0Sd*L?ez2}_op6@&7p5K4I{{rwF>nX@sQSk_?3KkSRR-vINetHrr z#dHBEC6N((S-}$qH?VnN9T~lVAG)^jIv`&Ver)cpJzd?ysqC=aZ@^;2di4*P)?E%AjQJ?j$yzL*_3>nk$?B=lF zwSzt0b;+YdNn7t3>P7RIpK!zFUe9QUf#db6`iv5@rf+e#!vjZTpHRpi?-Nt@|MU!r zn&Ua)CPVHD_FcWhAcsc|)tqWOJ&%XOfHFx%5lGf7cXIi~RO*H|?AKWtcdPtm=`0npkWOahVl%vpdklC!yPPXxQ4Wb4AKngi=GSR3~|f#JrZ%F zs83bZ>K@xxNJ5`Y_i5YZgF$r)_V3v)XRU5+&?IX#{nFN=AO~nCeqcT?Dx!#t6tcJu zVkWCVyIAT7>?>mDkUo>eaFhOtC{`eR4!0)wr-(&fH7l3CA$|^7;A5BYx5=Z8QCLJi zic>cTB^Wm#(FZ7{^3oX+U!w3d-NkhUcZGD^i!jSb;y#uqLYh>FSd|};53-7MhU6(y uk)g_wF&F)Z`0;V37Sp^0B%({ zN^q}GJ|>i{)K3wg*G#EGTTa1t6*1iwe%UQXv0&m3?lN@k2<1O>m2bktB@?|^WEf2-t0)zv zmM1Edk(E$$2{m7JD-5w#@(t2a+%s_>OC}y**~CMPMzLaI6^~2|VVEJI&-tGfW*845 zw@aR3poRRm*bGzu5uIVe=9PSr$Em6ZvP9+2x|OGbgur!z@dbu#TdAFuV6`C)tHSHT zv3#!HDXSSvY-=0EUeWptC3QP=vCQc@l!U)glXmg3^r)`Kx{|J?kCF~{fE?CIld>+< z23KN-S4cMLwnQ%$CI#6Qo}x5Q9bQ8~bk`1Cufpj*E+@~+YyX6)DbWi+=*sKg0A&Og zi)kUz4}RmlS9E-&SqCmt+etpaEA&%q24e#QxI!~39)`(F zM>s$vSWEYZI)5O%7fO8s`-TWZZZE9IN9fG$MH<#9S&z{5f%Y{phG;kNn&Q8~2=;Lk zZ;_;V3p3rs93elQ%hlLAp^rAvEwX5qk<=G-x5A#M9yuF^fX4zF*DxOR*D(=5OyUO7 Q&;%zjNWDP-2KDs(0XE52?f?J) diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/PublishPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/PublishPlugin.class deleted file mode 100644 index 00a24e3919edb413b4e5b3a55fe74abc2c8bc6b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12606 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 AVE_OC diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ReaperPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ReaperPlugin.class deleted file mode 100644 index c65503056913a7da06406ec99f7cfd8f5a16b7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3834 zcmcIn*?$w)75=Wgj4X{o5e5=MK_QOgB_P_gDXD<~27{<Aq!YlP*a&y0>Z5eIZ?pO}gZ{zy3FUZh!sm%m|Mq+wDtV=5FVld(L;ZJAeQ8oxcKj zC;ptmE=;G9!+8xCk|?CmgNthYZVkmWW-zN3mr|I+dy=@EMhRDvcyAI{Q+N>9vXt_a zqIkcC4`_H=O+T2%halCgoP|IwjXKN}u46F`3ylxRJnqXB(HB%5Y_&ULOE z6@OA`pf$sVz`a|M2_#Ls+49etuE0?7x?GZZ+jQ~^CNG_new~+Tp5ZQ;6>9#_w%V0K zGI9)-d|6qXkpM>mgQ(_V1$=Pjo!tpJ?@ z*I`6!_@s_U@F^Xi#%DBqR>$Y?EZut~3~UY0>3AM5FvZ*;4+Ij+%R1hH#{@EGsF3Ho zvN>b;b*Jj>?8oPm_=1iX@tBU6@I`?KH&-Y$Ir1?jt>YB>MaP$vI$zfD6}+tD6?~Pl zzm~xX4qwmU8#=y;n;O2Q-YtJ zDR6N8ny@TPJ8nb9eX&QW+nv)2qQg3Vg%SF6JBvb4nFXD4g0R|PXqbHhJD8!D31n10 z1on-NZ54hU>D5kP7MzsI^WYMevhi*S&G0NA(o8wFFIgO2hVw{=s#{Phsj>8#vZUv+ zbaXI>;#HDFRt429Lwy41S>9CI@LZ3t8C|}kN}j-;Hfd)m%mxe_b{VED0FJf9JRFTH z*TyBhbOX<13ctp0$Qh*0VIi=$Ar}n-Qjz{O)30;p`O@|Y;~;G~x9qbaFi*KYyfv(M z$>PYS$seR!0K!-YRBfEQSqVpl+2+%%i<_9$<%OqWJMD_wy~R>Uea;6>joq%>7Smp0 zcT_bgA5syk-{N z-N2$_*T~hBu4jbv4ehv{7Z=&zeJ5P0l5%lVxk<0y@~h4>wuaYLN&l0E6&<&+s^cV{ zUt9-O*L=TEEmm*j-++jEu9cQuCWY!mK7M-AW7)+>}@#v0ZgstR)wE6b(_$E_~ zld))yY>4e_V7zjpX>3CNUs5CzF~v7e$@Eoyia9hoEC%lvswWrP5tDAjSO56`TeGdH z8xBJN<49~c4q%FVJvzOMfQC2t=Z# zH*WRw?W(OInZPx!1_V}+%BI(#Cy*TshaIcfc?TIFSk92_9x@GPv;BX;uKAvc(tI!X zh62{oeBUFbHSF%io5;>`dkmU?+LU&ge2#0MG9}j5T8ni_ybkIF+7dO z;bRid@~1{wHXdppSw=f>Bmks<6F5r#1gW!>@hIiKJ&-PjD3oun2!NYBPyjr!Je4n~?DAcDXY25^=jOk+1L zkfKP689He$&@x9_UO^jooTi&jL|Q&d zl7wO%pLi3w6+Ez=p9exTGAUJKA_0$cR08_OS8%A4c`{IPPe>4eMM_55DV!!-FV1k4 lpowRL@f`lhF~yVL(`$dgeRz`VEGg!>_dZl;Y!wC;{sSa%Fns_3 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ReaperService.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/ReaperService.class deleted file mode 100644 index 2d0d9b7545b268d826fabd650856d6f8bf41c4fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9279 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 eUW?b^-K6s#Xa0VCz!`lAA9hA}JW_Jrd`i~S8 z#Rq?YKT15ayW*`X_%Jhkw=?H_-}m{;$4>yZakqmxThXSqrbV|Gx-z55J5l^&zp(YVMJwFXpbf~OxcI|BC$A;t{`>73OI@3v}l?{$% zXw@{*a%|#Rr1#S}R>{;M?$v^x+w{~-wI!wVXAlusRN1#&;`av|Kd?Q>wRId=JUlb- z2l1V8TG&88F;33dIk382 zGn)oF%j91gCeR$XF;z(AHtboeUb0E^Dszh=aQ~;-Rv(S(27cck3TkolSjW?I%J{aq zk_~itUQu|Lo+Ww?XgByS4c|iyH$R~94$U`Z>N4+TGwy$=bL;SHUdX(yzOQz=_t~ z)8VHj?Q*W*yQWon)GZc@3`e0J+(bUy2Zs@*_9>B$Q9x-EKfVtsewr>J%wjHdFx>KbJ4ds-oz&YjxWYuD;NP4`=}I$x66n4{Sv8eU`J&fC7rs_L`0ZMf5x^gLy2D9T8q zAF_ekcs#O*HH0A76vUQT3E4u?5rOW4FN+mQB3`EoPTegUGp1tx$YaxZL^Y_6?bso( zwb`s>e8nhTklrFK=-7%UG~CwlI^NJBF|VPhqXb&&J?l8W=ex3Y$?zAQlGoFTg)s^Q%B3UesKtXn0<3omnBUx#{%7BC>`pQjP-hO5kL? zZ=!aHalg?w?IMAV0ci>bQTiHv5s-}{5;kTp(CK913|VDPTa-hon!(&0PvJehFR*_V zuj0gw+)D9g`GD+|oN#3C?iS#O^_qz$A$^LGuEj31QI)l3Hd=?@Lx9MIV7KKwp<_&m zwx%7+;w|F1Y{pLC$(tTCwX4O)M>UC~6~ki!N8%0KrnyQwXollGOg3lFMK$XC8}{O3 zkhSCfTsZHOT&8drA2N}L&xr}aG*xBAn0D-<^lzB{B3GU-ZJ%+p(50}}y&3l{Qqu5| zj*sz~j$;_p@VRQ3F9h~B`_8nNoQjdl2V;)?Ef=Ip9%D#Xn_n8fVwicysnl7oKjS=! z0K(C5fj6mTc-c@hez&)K-E#0cFSNM&<8Ov0*FPK2OoTiwEvsPq>UznxWg~PpEX7PC zAK(7}QAbI-)!z5(MWEqpfqiX3tX2_r!uoo6ip{-+zxoFFmr<7j-`n`JF@Y!1$u(~g zK6g?wi6mD*@9;f{;a`!sc@N2-(eY!Ty^BxvI}{j32M%I4S9++AJ+uO@_u^@4C@e{= zB;Vb`KcVB`p%rXM;)ViBq6suYfLs8yCsdArcnn$W3&6Xv9|s6J$g`n2B^jb53}QGi zdyr3M_R3mj6EU-+1UmK@W)IPbz+sF;G2ITnfvk#Y1)Tyb&;;&dBe?2H;1{G;kWSzM z^dIOh5qdgVugUm}TXz2Nyi4Yq98ANx*zInmjLPw*vu+{V~K`3!ZR#|6yd2JOB452QqkXaE2J diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Version$Mode.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/Version$Mode.class deleted file mode 100644 index 072b26c760d90a0ff2db97ecc0b80ee0dab41c88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1113 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/dependencies/CompileOnlyResolvePlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/dependencies/CompileOnlyResolvePlugin.class deleted file mode 100644 index 1be809f31ae01ba53aa7eb539edc16f71d50445a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3011 zcmbtWTUQfT6#h;Kj3lFm6sV$7wP*ve#QUXD+7LmZxln>w&`J-JV;Gps#F+`z{*1o$ zXY@r^T&rDu?&@#q>OM0A2^nLvRv$9w%+5aF{`U3EU;n)S1Hc{p9K$GX#W9H6NfO+T z;{oOrd>um^-^7tbPQm;!^VdMPa~J$ka5TU#oZwo19;0z8^95DHw+C>!$9`F$|=p*BPRDt4h+71>F>-W_?@OYkb=vNwQ#R+*s$f zF5d%T)ZNh?h6e@9u4Sx-Fde~dZ6{N+dDRe^svuESn3^t}Ox~(DbVHO)jW8pBws!|C$&;o%bouWwiR zlxJz`8biLPt!{8`yZTG6xzYvmrCw{=+|@19<1}V_uE>yd_{T8Q4N~HDQGICDxo-Nb z$g_RDDr}h&trM3a#H<$shVi3WdDA$^%v#?B?sseUvNk8FR$Q*_6?r2lfTLl(%24T> ze7|O8>Y2tcT+wSLcbhg9V?LbZZaBZVLe3o&lyoLmv6{9f7O5&3&UNJPNPW)ACQ@-4 z6DlfLV@S+fmg~4SZxn^QV^y7#LwJ(F6fNrsJXP^MHWX~Cc!uYcA=w(?idJzR7gYR! z7YrA=R2p7iIGJTK?7P7b*V^r)U`xf1;0)RS(RW16FJ94Ay(+e$kuz24iBRxTMGenY z>_Ats3!UL|7vUZiqhb#R#j8Dq{L-f`?E*OPa-=5QBTYubqed6XKK8yn(=w>GJEph|<*M28C!MWGjI5C{a-4 z_+S{NP_%=2IMO=;?8|7Xi&sruW(*`lU9uCN*AI!9&z8gjAs{E}gAFyulm z^l&~K!afXNsw;dwjnXtYn3)uoghN%s&3O^@ZI!OE)TRvG;XhOwPLn1uHIjJk(xv1q z+E!hTt7m-{SD1D${}jAZVPjv#C0tf9iwwiXcG`4v-`W$If_ER$1mW^-v242j;`R2M zg4dMAf@SSBDY)vANoAckxZ?;)>ffCi3-J6|^q8A;@j6rf!ECr%IwVI9uF=)esowve zzR8cD?JU~>IZuUO(Or>MK(1d3#pgr*Fid`24;QEyN9jXqjDDvvj!$VlMPFeNsPsW5 zWfSx~Ly`=wjMl-KcVNGHDrf0A5N=&qDgCvtULG#F6I9Yy~|YGC35%h6|%u@3E6)E$wohI diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask$DockerBuildAction.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask$DockerBuildAction.class deleted file mode 100644 index f5b4eba67dadf5c60137f8f44ae72078652f47ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5474 zcmcIod3Y3O8UKCBZf3JPkaTIF9H9#hG}$C9q_qfvCO|GUc6btz97Q5k?-6j;Vqovtznel?R;l{2=Blq?+oECPIGq{ zrMNeQ6}T^e`vZ7D!h;e%&M;dYSL59o)l_WF&@G0mIt()zOPWd|rN%O*5mzlMws{&+ zGeg-rP1o!ehUK*vKwsC-;A=G!DnmtwrmJ1q^pI-yDMKmR33nKACDpH(8ehAcK6^wX zWiH!f#79+gV^&KgHpIDx405}!t7dCTu`HEHUMb`o8CADb#f*?t^^I(8{z%6LrEcd2nZ)-E1&XI3VgN^MjuwLPsQ z$%?94K^RLZdNS5)o0^_%=4LZ~<~iCt9#=Em5aJ;zwymZ!Hc_=Rln>>(g*`W1W(=XU zGQPpNL3YpTwUzj2r;>3Ilei%gwQ%Ln@)VM&^XVEW)>hls7YPE`?X~uXJ%nNbn zSeDvKl3}iE<229LtQ0(XkWBOac{Sra%X_t?uGm?VJeKl^?H=NR*6h8%+b}5!tk?iO zouFMOjxPn;7IIdw*T|Z2wN2yccey7cc!sRtrZ5D$RLkCKShj>u$W#V9WxNd65u_Up z!?tWw$#kmrh>@@=%J5Jn4$|Y3mH3p54t!d|!!kaDM;PYhammG?j6-;oVU-)ok-ht3 zd-p|bBf@cwINC&bE<`k*T67*6R!G$Z3D2{0V3P1z8He$hgvVtZ!4nLNJ=IIeXt6D# zkmZDvniByWm2nJ{+^kj^$8myTHNSQVc*^)3PD(f><224ty~-;{IHgoYm+>Ud%6JMV z35^{dKf7ryVZz98X?GQNaoC48Bxo#04W%)KS!Ih>tBb$VtqEXd1t z>siifhDB`xLJo7>R25r|q!k`ikzv7hHNHYMJt0b_gs;l@8otipAL4aa#y9Xy3E!f0 zI|o~SH?~PLDP9e857+tIGQNZF%J?3>FXIQ?=3rx^ZZyV~_y}qLLp(3xN7QtLs##l0 z#X2<0Ci8z>$zAai{8Yxz@N*K~*eG(&$Af~Q<)YlkO{|^~G9-H}84;=9*NbxP~1@GN~qbf2J18t1rWj8AW&J`uw!| z;*nG5mGABTJ*t&W*;G8rI=Z)P+1$f$rI(bmNRcYk_F_UMlSn<;(5~BRQZ=dPjVY0PIdz|~;S+otjSk&n?zG5|O0wN4k`&3dI!?h*Hv`PM^6mk7nMY6V zJK>K4LJ~6-U~c;&$rT*+A@?OnW3E7$gG#q7}g5EZT#~uHFt6h+a#&m&_ zISVBGo%%(=c`=XB0DOKr-x7-20DYslmj1$grl*e@W%PSBUQQn(*3hbro+b1QMvsC; z>z_c$VOo`7E&ZQOpAmqY;lnK`$E|3l)m(=f>+lL%(LKSH-puJY=e&WQC49`K-<<#R zwCktm_R8RTUrTjm@If?3kD#RfIA?wgzJbGQeUG6mER~%^V6e3M7`-eF`YMCs>96md zM6eY5OWDB}pE-fhAl;LJqnLG?1cWdj3y6KGPe_~!zLUpJz$ZM5@63Oxl zKAHOPl1VHr!9cxV_&t0Tc|AIb8gAY)Zr<`qT+J|nS_*+WBBaA;4m$_WIrTp0G7l4% zrh(Hmat13XR$`#l$`X2Qgp0=l;iV%K&=Y8)0Bj?IetNMpaMBat8DSk=LI!J64e$Q|jbXiKhlgN$lO`Ik^WP`yZ-$ BERp~K diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask$Parameters.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask$Parameters.class deleted file mode 100644 index a0ce5d026edfbe7a411cf1dc2a407507cdfbf612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 836 zcmb7COHaZ;5T5lxv4Z0Jc`@+-(byv~5D!3%B&bA4Ja`(*x)e&6>~2y1ng@S?Kgu|* zQ5#>uLo=P-`Mz&v=X-v6d;)+X>{_sH!IlNv403{-nsobIRb^oKgJDp}7aCFtM=0$0 z+`*ye+)3CjvB~BDwN}uyUh^BXoQWgwrz03qx%_Pbt8dG!gr47NqwXI? zgEL59aBa?{HWutKC`Rk09R`}Ca=Y)F?!-QDzA)@JQQ?3auBcBtnPlogK)&%&>u84D z=Nn(%_Q)y>_7Xn2myu1hb4@YHa`>NSQUDC5=$j@dr)C(;z$^g86j*Ug!yMh(bUOv} mbe@6iN4`M$;+H&^$d`z9IYzF)Y8=;KlcG%w4Ax*Hm3{?81M%?y diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerBuildTask.class deleted file mode 100644 index f5ded2d15e95899ebcfd2976380e35cb0cf64d5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5240 zcmcIo`F|8=8UId5c9PwJgcO2Mq>zTNgvw&o9tP16LP)zLG)aR}s-5f(n<2A1>&$E* zR&CYVdf!LA@4HpBr4ZD5;!*2;U;m09zt20H&182Lil2}9;hlNkd7kI}KKHYE=0BI7 z25>9>oy1P$lITS~1q-KAC}6IGTU*{v%iFvxjx0r4Nvd{ksSs^eoiKCU5o%=FBn6oAN|bnRYYV<7ENJ0Y&({Q-BA{~=awxmSR~`xyn;LI zmICW+pkY@m?;+c>a)h%O;cN}e0`!?)6AgFIQ0B0krPkf&`{yscqPT5#@&>Lcb4DA~`5{4gNM(N(a5@a~%Bcc

5iGf+!QTh2lj#`_!ms4LPPdno!nMY(>^(p9hx4S8KHZr z$+U`ujp^O7v9L8>sshW)b$?kvPdbKQESj+WV=A6#V2LPlg!|U?3Hjb(`{T7Bm0KYJZg!Jvxus;m<=NgfH zE2U;onW8MEhp~9Ovg-dLMnn7loKwxdj#`p&zJc3t z(7-3~Ngbau@M(NT$7c7a0Se$B2P_c%gw8<0S@ek>w`5z`z&qMIB!<@MR(R z3ckuDIOw{8A9!Z@s1?k)dA~D(ueIar2EKvEbUbe0oA{QFa|XVR@922Kz>_$y;egc8 z=d5@{r7-(=$x~gp(5d5M7fu>j!X+KwHSj%r-@wgyk-^Ty<&eO9rKoi$p4RaL13$!% zbo^Mr{KUXdaaqUD4E!9w(D6$-ykOuNTsAO+%NlOF7K}Q6W#C!-+Q0zzXxLKMBMw=o z%!CYm^r+?T!Y-Px?>NkI-kvoV-3syVY`k0qWU5d@GTyzT?(Rk+-bJ~p zUDqmSSk=ba;x%mGO$`k$iQnM24B)Wq`WbC+_@-e~(VVwf({pBU+z#gW<_Bgev{$2? z7}3-%4s#9Lij7)D84b6jBhw-{JS{zfo1gFk?}aN$?MJnWbhXT4eOv zO6*`m->tRjtxZ%>sMweM%52f5Y4${csZnsS-d0taVxaVDb!9}TSu$(;lBLVzS(ggE zN?<#gA!_)n{do|K*ztBN)1Mc^NxmX zSEj=bmZF{fP1=qv(#!eQEyIs`ayn8^&PIH;$f%*79Fx?OlahLJ`rvaNf5P5|+e!CQ z?jFY)z5(|RT!1z(@Dy5>utwwP(yHM++M*{3Inf7N&!b(Ij)6VrksNrEM2agVT!sej z)?VT*+;z5a>1yE!Bd`X!_EG_06sYhVWt3D$EGl;gU+zRUM&`zP znfEo3DK{RaObz3h;3_UWK!M`Igg9j5imgLc^JwFLHdbt!sM$230!0)%hPz@wwLeCo zQAO>mf||rs1E}j6FZG~`1XXGRN}^UkO~-=js0Za;71Z7FpgQV7EfCb1CZHsR1k_Bd z`+Dl#cmGvE9glZkPd%sy2^IE{|X0>foiOua6wcU6T*DqnKB6z+!X}^eVOSnOuY*!~8k&_+jq(>2~ zsJsn2@0>s2U&pb<5>$#%<`GwTR$smn(td!O8Qx-b|u<*(u>`#9rzRefj?t2e17jH QZ9r)iypfa-&^vGXFNxAqi2wiq diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportPlugin.class deleted file mode 100644 index a148f86d9c36be30cb2386c74ff66c55c38fbb15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5579 zcmcIoXLJXI2y8$&Dww6D7)0bqVg)j*5-o`0#L8$jk_L@tHnX!B zr8&L#>NwR&oaz*(fF&For^j)6@4fe)A2~Vs-ps7DyR%ln=j4a9Z{EB2zI(r0XYT#a z!d(C!fqzBNiW5=9aZ2~~PVPTG zjvBa86mVL>4G~0eMn23%u@O&*Q^ZrExDii{qYlrMt7k>>fx7#M7s=(^}Hhtf^$ibqs5&Q($GUZRK6faz{0@pbKmcL<|j%rTYhu z9v@2`?@b@g^bZYY#`^lx6jQ(7unf0LptiMbRG_Zco*>_~&rOg%YaXJ>RLdBFS06mmJ+afi*q zlwncT6~WPX`?>H|-(4f*#0C3tV+c zoB~lFd?}To5c5soO=dD}c?xw>-R?0g%+fFh{U9JSyR;ua| zREpXqkP3;S=RJHYCFK3!$tQaXhB*;_1 ztpv!=dOuOBWV-Z!Bx4txtlnqHYO}6N&DbI9or)bus(2k<&*HXJ0Q*f-pVCYwl&h!C zWc8ekbQN#F8x_1s#hY;pL$k-W-Mq^vAJE-tdm_K89&c&DTUERbw@SHhSMd(KQ^C7b zyc_Qk*maJz~R;zKGvjF0f(Yz*h* z!5s?bRV?5I^d;won@g;njvFstfnA|G9g0Cw0nu@RE8!EnuZwYL_2vfb>lDSGX zz8%AN6nt03_oM-;cY$FiWf-XVK7POku_J2)tz^hzUn-oThs{Es9?na*{ZPe^@MHRS zDIEMLWPzx}!)rbQ`!7Pt@@`U+NrYiacSjgZK@kyH-`W<6_@KZDG?3cMZhp)!bu-J6)U;SPQN!Z9BmYrD_ISM6((pdvqhUWglV3XR!|>VOXa* zI(V(er=rP;3de+K1XfdOW?FOfVil&UJHyhe7VHsyioM5~>x|%M__-X|e!<2TDy&s` z7mK~(w@ezfE5uoBA0fAQXQiRE(9468RIGYeQBMZ12dAC^X=+k<}l&;OnnKeid@6_LwLpTpf zR+cBlIqsx{>sNAg(erd}qD;bM!SdpU1F1e?Fj;hpY4*xO_y+1RX_%ZH1oj3Y;t^F5 zvYeJ>XJD1MFK2(*Qu^JcB8bz*aM+xh|{X`iY%0?v@Y5nC6;ZN2n-|9SFSE1M&HxxP8~N01&ShZn-HB6aWl;+S zH3=DHl|_9~Uh|}8nEjLf=yTNKv}2h5%h#Gxq`a}ZZB)k7Zw0!2$2{OsPUd54MMhPv zRkAK}O7kYjU~-Mn8rcUA7>vbO5$m9P6Wy(W+Qprc=whb&kQb##CJTV27~ zHmcxva!~uDfRM}c)^xzfQZ-9N8 z43s$q|6r`7ZF{D`XuK)7(tDu}nEXNUkY=&BpYQ_Bv0085c5JN95I&9E>6YbqjC z79W318rEEXu=%IJwh&0wyvLfbJRKg)ylUm=pEiE;xdQFz;Ceg171bch=c`Jdw?W|< z-$(d=Cn@Bw;O~m|a}c+CEW7x>-rG!KH`l69fIWC9pM;#t`Cl^M!;eR`{2lJ-m`9Dk zt!O@v+7s<(QFj(A7AOVhpxn*F27!4rvPDJXYR3Xrf{&NgVW4=liux`fCbw7DK3hxTc*~5bx9yGRhTtNIR)+~odqkms4BGWk#a3|R%9z8Vca%u5e!FQY{ zX;pI#SL@{JiW=O3_4C+JgA3R=uzem661W+$_IYd)+)}rn#pWdhwxEF$Q^c~5_#DJ~ z9KvSw)1`;$k2JbjJfxR=6nZ?1`G_8#^iZ!3qR>mUmQe6_QrwX!G(h|t-3m6+64s=^ zlBKY?2Z`HAR^z$D4~v6kVR4AcfXpmy0dqI0C5|gQ+7}p_w0Vo~(^4T_o{%P=(DN8M z7#L{`Ku{b@Vj%8XetDGQnmW#7>j}ct!Z_M?4p+|OAz``Kl*nybl-q<1j!<45j#5$$ zMsdvhJ&s57SAHrTVuTFWH{kd9JO03=8RPywqW(B?X*fl{&cMWMuyT<1R!_u}@MLfG OG&~*82u@#um;M)-kX<4G diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$DockerAvailability.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$DockerAvailability.class deleted file mode 100644 index ea970a271f25737e41e04afa6c2a08d236a3e373..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1139 zcmbVL%Wl(95IvKZ^Du25KnZOLlr|&=YOw+VLP9B3k)l>2D2wbI=PJ3yv4ibIV#S+p zVap;yV!;RSQHZ%tDv;73%EEKzdd4$n&RqZa`RzM^yD+oJ;CcpWY%8;)OjVg1%G8vp zYcMq2B;;i9cw$M%>N$>Vi14!3 z>2wx3FR6V(b4mCgTG!hwRm1DCz^hH^io@}+EBxm($%{?Tww$)*OLd;VOoRi;;}&NF z&G#T38NMRy{|Ax9I;=;w<&Aw?>`S%z@@d-bs=X4@haw0MydczYTgMu9b!3s#p(}Gv znH8++$fKa6h>L{1(-;0XsTLU$^1rXuQTJHbd>`(ez4FObx^w1F3GrIJjcfeBWcbHQ zp`hkwub@Vckf)E31&EL}V9YBS7>S=XTw*M<_Zcy0j8)?+$XK5uW^7CmH#Vn880Ewi zNu!*cB4w0QQ)pi}Glt7-x41v(H4^j&8G4HqdWRCdN0~mLLLae1pRmq(2eazfz!g4m zpNOsEP>uM;B2O`nN1o!Gh&;tQ8F`9#isKbN#c-8pSGa`>j79cJ?4RelX~s=tegQX1 BBn1Ef diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$Parameters.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$Parameters.class deleted file mode 100644 index 75251ade0d14ab324743c87fd00f7f1ed0dd70ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmb7Ay-ve07(BNn32A|Zjh&%gYB4du#GgPyfE0<{IG=)xi6h&ocs2$efQLdjX@??M z7_5`e_uZYp&#(6n0LR#mF^RDkBV))b@|SN?w@#VbT`5fr*>rZh5KF<8;T>}lWbU^t zpZ-+M9vRZYv{ur}=itJ~7qUg$G{*XZ>{3aZcg_sS9XWq(oR5(+oElqk(@^b5SozE= zD@skg?C1GkHir+widXVvT}a)$Om6C$?70@sQFzPxpJ-86{QhY{(lgAvv~`4N6nCp; zj-Rzkm+PLJmPh}t7Xb`|aE4*ygAv0BTR^}FabSi>Iv(3ddmLjoU>fucW9&r9H|iI9 A+yDRo diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$Result.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService$Result.class deleted file mode 100644 index de7a89385387c3c8296230d125c7481116d04ef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1432 zcmbVMZBG+H5Pr5jxKfT60R=>*Drj4Qim$vH1BO6SFtG#^i655hrW`$Po4YNMpW$0V zjNkp@2Tep1KKKLtQO4Q3Bh-`_^^)6}ot>HIX6Cv5@$=|AfcuzFBZW*GOkCE>6}?=aWn=QEw1|vf0DmtE6tM6_Jf1Pi+gxgb;Hg`9;@92GOG}N{e5YQ75)Lr@> zYsK?~zv%KH5M-YzO21N&HQ@z<`}TIB;`6dA3T0_mg|8Fg-HvyaGPQ3 ze=DZUC$oIKwIgim=j1C- zzssv)QF=C4PaU;QTA;Y6Xe!fxNvr0`n7F6=HO(+`Qncgk$*PEX904wITS- z%4)sFaFA_C7zahOSmqwlD;SA9XB*t&pQFL@Tj2VBO`PJs+29|IWVVrJaf(Imx+O=6 zSrc;%qfG^!_H7K8{_KYg-2^GR1Cr?0R3xoivoVxJ$nXTj)GpAlY3CvVgJfU+8(4nm z5Q+TQA(Hv=Ll~dQp1>Je&!GiiFJZ7(Xk)L@$=;xsy@kGQ@=-i`$xA46T?(ln(p2i QOkoh$$etp+>-1)S0W-;A?f?J) diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/docker/DockerSupportService.class deleted file mode 100644 index f51910811bc760b7a37c7fee65c5b0d3b20b3465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13680 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 JFj{{dzL?1lgU diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/http/WaitForHttpResource.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/http/WaitForHttpResource.class deleted file mode 100644 index 286a190e02b579f9b4317f57ebd5ac3564774131..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10178 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/BuildParams.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/BuildParams.class deleted file mode 100644 index 4cfb1251a3fcfd461e76bc99dfee0ef864a94ed0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5171 zcmbtYi+dDT75_~L*<>>iNFgnyg{43VLD@c3N<*n7KnW%R$qE*%b+Wl^hRn{aGqV9& zwJ)`5)v8rXYkgHMzHLzhrP|hKwZ7l)*FWOt@7$T}&hAd~_50-ea?jj*f9KqD&pp3$ z@AA@rFFprg8~&5UHF#GSuEo2%@c`b_g*@JyW%Ira9+b}eGx&hW4`%R?$PZ=kVUZt^ z=3!|*D$U0-__)YNq&XwaqtZNI9yj@nhVoymiiZjt8@htUL#(MFNYHG_P4Oyc$)|-e;>fmk_TDHS&_9kL69{RRhl8xH#Ub_

3ReHF<9<6nTDhS7wnl#XE z2Sc`jtQ`!yq4HhJ;WplcH+i}CKb zllAkQz^*!oRyuYt`r%Fki~2Vorb9#CB;D^Bv0XJ*El()FAbBTo@rssn*z#@Z$Aj(R zl+Bg;=UGXgbs}ZCT)V7hAlIKrm*Z8p7&4mqAtqY2%*}}>-Ga0&$G%hf2CiHX&m?Me z?{sC(#iI);E|{bV$2YXnPp9tf3vT28vo0~{Evc}Huq0yt=4elKUSCSwa4NM|&VifA z-9wE8LnQI%kV%GbZy8*0Qw_Xc#U)1Pq4pZumHIF*xi70LH}iW1r*757B(VXO0}dx* zRbzS6c#Y^Q=C-CIQ=@vfP_ah#rLtC%?`AYGM|tV$Jc(Gpdd_Al@5NYxdKps6TAQzyDi5gW*?7&S1E}uWA zP3*)?CT^DIwbI;zU39o^KiZy&A#5|T8@o*Gk!CM$HE^khwI-E`F&r?kF8!)aB$0`I zVr*D!@0aFv7-`sDoG~UwW%m1+$>0Yjeuy8L_%UA0;3p=2ifIFD>kbd|aw=I4Pd!w7 zP8C%}YPgBJagQ8?=Y>J&Ta_q-f}Re%)QO*&_&M&8WB7%EHk$|XOZ>{jukjlbzs2vE zNz85e{Jn`kV7e236oo%AH_~_5e8DsXG)hkc+h3k;N{#1LJv=sExMgf;kAcCLdC8^N zAvspp^QGmwBfYGm#E(TRji9^;%!%k(b~xg3B5ev&zOu;BCB>@mD>t0$H$w#fMBToKm@pQ{`hS=c}N?*MQBpM(()h*YPY$#Mwb^ zu6Q)swJH_IR+C%FnX)yl_@XFU;SoEWlD9=@xgl@5h9J)s8U{H_fFA~eo(IHI+Tkd- zBmh>{VZQl->ICzgUWv+ZYQ5^~A5Nd>4!sfYB%knBz@un037Rq(QO3Cs+zRnQSQ+P;6p|x6im8s=*BY&1-ZDw8vX+7MOMl_ zzp_&0wPaD}Pp%vJ-G)Jqvz+U37HutAx3y&H){@m*OIB+wS+KQa&DN4-TT7N*Em?WB zWbxIK^;b)lTP<0~Df{RHuPC;M*vnHIl#2(>!+4q>Z5U_Up$E63z;81G;0-v;UKftw zjYNs^eo9f!4xB^VGg#CHv9L&6$Z`(60=no#-AWd>;V8$C@h`F~BX43a3d`-pzZrMX zs@T6uTc`bVXup8PFQDTojv5IM4-o$rSgrVs#&>ebslB~;+r(4!hNKz5O)2*i^yF-ZWiknUpI@ZMxMp`+qPW5hKtw;oX6GA56If> znuC2<%n^v8`wgTd3 zvKBpwwK!Yz4Y(fn>cY7eE4ZL|DV}7|wsK#Fj<@4JcH3}2-bvZc>1(MXmA#E$d0fYk X{|*1d-?0i3+oc@;8c|=@?S=mV8J#Mo diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/GlobalBuildInfoPlugin$GitInfo.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/GlobalBuildInfoPlugin$GitInfo.class deleted file mode 100644 index ad874d1a762d52ee57936f25cbf9149b98461fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 804 zcmbVKO=}cE5PdZ>yOUYRB#u#I{E8sByNcsYQSo5F7+4Z9vf#0Ix1DroyQOC~f5{IJ z3>X9t{s4cJSUo!^xO>sVbXC8qdiAP$e*FCQ9l$+ocF@Ab1Q9m;aVf^-7*_~OP9CXJ zSwqMMhvG=&T9_i=ubeW)Lqgj+RVa?OA1R}%$Ap{R`Mi0gHzY(`b|MKY17+my^vy`R zmtv$D$p&^T^iVkE?+qAL2dX5*+p5|zuPq_nF-E#AEy_}I;K9JUBDZg)DW!1ZgS>EJ zqGhf)Ip5ZHB=nQ1(i30&Tu)i_jfRTHI915%#qUYiy1jYDgoKm!nsGb(cIw9Rsq%U^ z7SiAG>*5XW%CdT9%PPjz6bY`SXd_OsgqU#ue>D?U|GdWD=unO;!rgymBZS@F5ZC#| zTl^aY$hDNgoco?wy-$- byZCrPafowui}Scp+jXq6^&>}EXQjz6rAw|n diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/GlobalBuildInfoPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/GlobalBuildInfoPlugin.class deleted file mode 100644 index 2f60fb511805da306ffa0a841adef098de414042..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22703 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 Uj2^wodB5Iy-=R diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/JavaHome.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/info/JavaHome.class deleted file mode 100644 index 500351b00209805c489e286b2868464785973576..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1320 zcma)5Yikoh6g`vICfkjDM{Rxd-DHz?MT!b3{UV4dp)FJb`fZX-w^O#eVY3PNuM{j5 z1%H4)O1!hXv1$TY7H00;x#ym9ckcc9>)Q_iFR`yf!-kGcY!#5jwpw;H?CP|aHB=b1 zq44|Ca~T$!SA57Vhr71ba06irzs`_X&bQvRVAyDSzHQk)?>fTbJ!$oPZz#LMx6WdN z;tS`}c6l)H3GjR>;4tEpp7lmLqJBgPa);8D!4bnwxiJ-Aue2C4ue~m@%{HYgP6pR) z;lJZ;hdc{Sufv@d_oX_=&P;GA`wZJ*Zm%cYzTkf6a#WXeFFflwu9@Vp21DuJJRf_b zTrUzx94k>tPI(s$#|hB&NB1vE{Lc53z-4HXabL4Sp zPt(3&-h!E{Uy-^&+N|9m^O?M9%&R-X04A+f%2FfW9{GT^2#G~3(MiSSu}nNJ12MdD1K&^(fZsVnbNkx5kQ!DidN#&*+{8u1> zka*w^;EzI_QB_iIqL^f5g85zb*(;umnjs_=s7hV>e^=87u>Z2k%HA{)<J=W~7l@Mu8=S6C$ zOBo5Ix4n_Dn4Dq)tD*7Ql~ow93}plIuxLO*E=5=*uq*HS{}(fEPzjVTJMzAJ#w;H; z@K2J%e@q56sSbFR(b7Q22NO+g18vMXwM*!Y7YoX`Ucm?x-vr+awVyz~1rjT`=7Pft zT*bYi9AFi$p@q{2*HLsn_&aD{L&0W5uwuM{A~)gISmYGnnoL>S`2m_l$bdwUl>j`) zI`;ylHRUzNkcg`8+vueb<%y2kD$5<*-Hk-egi-fnQSYJ1dNgV#j9N$3MhvR@B(tc6 y09v8m$1EF>sM#>;n^@FM6nPMhnhm2i5%nkrRZYt*Y7t7Ptx&gcw~Zaw;Nd^bIEv^1 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/BwcSetupExtension$IndentingOutputStream.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/BwcSetupExtension$IndentingOutputStream.class deleted file mode 100644 index 426d180e831d613b771f0c4a2c2755d87f8cc55f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1786 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 Pzq@AKrREKMgzxx&{P%r2 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin$1.class deleted file mode 100644 index c66daac519adb1d9ec7147e8f4593792f2ed02d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2617 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 T$8k(#mT~OiT%vcGGe2JdG7i^p diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin.class deleted file mode 100644 index 9a70e01cc7acde2f6af4674e0a3fdc98dabe814c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11643 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 Jd|t(?{|`I{{mB3T diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.class deleted file mode 100644 index c8366f78413df28eb7bb5e5dd7dbd0d94a18d2af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13366 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 J`^@J<{{y4Y8X*7x diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin$DistributionProject.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin$DistributionProject.class deleted file mode 100644 index f34ef72ac6bfa6605e6a64edebbce4db21afef7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmcIl>vG#f6#mw6EZI?WQQGE0+Z39%u^n3p1k#XFnoC0h&V@QnXv3 zrG+;=X;#Md6tZ|r!VMJ+H&c)>=k3g^h~cJ;MH#nJ$Y4pvJ1RN?vlR*NN_dYUZtA<7 zK`lJg_jJwB&8k*(ZDCet8M^AW^^lj{4c)CV$Q9wZOTr-S?m$~un)gkbJ$%2en-yMJ zB%MWJGbFAHQ@A%6_Q%?fj##nms%F)>>2TdH*R-mwR}8LgaoZ7=IU8ZnhW9w8^cHbj zuquSMryxwe*4Qm^ds8oY_|<|{){QOQ7T$Nb7M>EeyR0SwBDX>xnP z&>e@9(sm&luP|M1o4TQ`ghK0K^PiQA+-=l1j7C+Mqpe%vJ>*HLq&wXAptKi|XBhdH z+nU~CNR>Tg;(_4g`Xt|X$&mz~LRhZx@{ZLAf^w?p>gAnPz3x+%P>`@n(X4Ve1Q0~} z^jNyx;dB=1d7y(F=xr(;Wx*gR+&Z2Jls%UHhyWI?hF#`?>DA|ZC+~%qa&C<~?y}{$ z64n$9V_m^%oMGslw=9>!q}NxuTeB)oPXZe<-dAuNMFnR)ozBVpWPU=yChk!D{B#MS z%GmN0x4jcTP%wZ&8FwjVr}L8&`3Z)O&qZCqJm_O_yrm z+6xtSWF{pobKRbMK()efCgPa%J%%Z|UMn?(QPCkCDVKg||0rqWvJRFHO7vwG*^tZdM#G01SOc*1`*hVMzGc z%V(;W(Ic3`+_QFg*vx|fF6n+XN+?sZ7c6V1QD^wN)nTDgP*ls*(GBj52Aa?A!N&|Y zAJut;`u!Gf1Zh6o>csGf1tL@wE}xZ9VYu8zC<+_Hg=g#GB0Y%x^k&9srVc_<%2RN}q{s4cuiPw6>;X-Lw03VfA$3YN(pAeI@=9?~m{1H^M`=My9zVpJ@o|L-$2Q#JtREFz&|#J=nd8Tz9$qN zI8Wmh!UX(6Tz)0#H{$all(H`e_;la1XV)D|7Dv3d1-LCpWHT%T;M!tG<#Qd zW`02YI}&0({)D&4x_x{~pb+9?$ood*`D4bZlg4VK@kFF?-$~=M5yo*$`uJYOYyLb% mTtT@KqyH2xB85*-!l(2MOw;->`RE!UpYg}H{c*t`m;VOi!-aeR diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.class deleted file mode 100644 index 6dfdb07bde6319d7df514946e51cb882a9b4038a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18148 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin$1.class deleted file mode 100644 index 80c5cc2849d93f10cfd0d88be371ac68d8d61254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1018 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 N7Af!T30%UH{{a{U`pf_T diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/DependencyLicensesTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/DependencyLicensesTask.class deleted file mode 100644 index f8715191fb7a8e6c090d9185adbe154e15b2d998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15025 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin$1.class deleted file mode 100644 index b874998ec4f3057aeb9d806b92496f939ab009dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2686 zcmbtWTT>fV9RHo%7Q(hfTG~>vwwiJYm+i$;Efh;ru+>1(P>|N!NpeU|S#~qKCmE@u zGtM~USMb>vUv;Lm(>n42eD%q1;*<4%HVX|9>I`IN&)J;+{qp;t{qx`Fn*grjVLLi8 zrkAUFc~>v*C6U541LH{~FwsSPH##tdn;jTN*1)X}Ok*aA4{$q4+;RX^cark9`ZW39O+ss(iYY{SCw&wxaL$0S8^p`sftj%T9MX@>lI|FBphCq zzE$>ki6pWWQCywbqD&Em)|( z*)I=+iwv=>TM`VNIq8VG+FC()3%p>{NmtG-a(j_`QvVMRV>)jP<{ifoUe@NmFX-=$ zLq(pxNNJ35uT16W+M5NUksmh0`GE&}se?^Ni>@qbRSsVx|KoZi=Z>|IVrbv)N9xap zj+&CTm6N_A9Y^wt7guL_HHh0lzkwV>|NnUq7LL^CW!d4X=8+@)xw7ZF^>r(#ZPs>u zI-c0=_as?O<^zb#5F!}Py{hp>HGHUQ(@v4}NvAw3RK+bBm^Cqny9{k}!dJIlUzs?G zQzl+Rmx*IIZlW6}O!Q!$G814h2z$!&__~f=lRl=D+;m;#E00$jiv7+6K50YV!~*Ua zSTwPOPfaZ2KJf->ni|)@0~4R&a|2(P_!3{4cpGVgnnvS6k(Rzl{?!_k*f=l~cd z4r7O`*nF)};_0F%xT3!ISGDaQ8|V&)j~*t9D88lXG*;@eB)swcaMq~x&S7^TAZx&O z4>Yw-*l+=m2ks0mCc#mlzStg_78_MxQ&LW@@l}y^og!CDQdQ{9SKLvAkG@v=noQ)C zNBu?J*%c&uM-&W(#*tm8ejRAm6AFds+#y4nqP$evClKnV6RoEh7wr8aZp!XoeS+>#ZB8&<&Gw-PKx^;iu*dhe8c_-sTS7iGI4l8D1O#BEv#7 z)pLj7!g^J-U~e%pn+I*EB1>aAFO?WKAZa}B38M0B$kIZpTd|Onj6_1 zi$%xc-SO_&&*&TJj$gW#7|uLKq$lwlZNM|MM`%e#u=GQm{qo{(qDAS6#r{CYa&$QV z3}ysRaD@Fzs-uC6r-N|Tk;Ef%>>K(fdxY!w7WeR7;C2QvIzNf?ZD!&N+?56`L5G@8)=)Q=l%ZxW#{rU diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin$2.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin$2.class deleted file mode 100644 index 331ab52a4c55da566684fa70e6142de1a66af784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2904 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/JarHellPrecommitPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/JarHellPrecommitPlugin.class deleted file mode 100644 index 6f0f444bb70bd6ad716f7792c155953106169a4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3843 zcmbtXc~=ux6#qRy29mKXigjzR*;Bd2*b^!ZY+wk z7?0o_9*f{SE-1JdMGGE};u4;SpaD-RcuKyxf(ZpFhT2};)ZIRY>bCZAhMImWEf^XS zx+#Y9*$H8f@d<+{%?T^Tjd5=4a$O+SxKp~ra5!Pv8O_QG(-GWGO=%gMrwyUyY>~3E zS>4qJxji5ZV|0-)YUDGz8E1&3Y{6a9=gcr1ZSxcrqONd*}dQ_vaq$U-T}?-lGf9QSm80qXVViG=rNNZDc}Ly^7EA1;fD#;Rl)vgLXT?ki>=n z>Ozq)G-ZUltQ%0*JJ1%YofX1Kk}ju)DtnX%>h>A1Btjk9FD^=+wnWiIN!QlR3^m3g z$@dza;bmDdOBNGOHzzIacwRTsqul0MG9jWnr%YGaCO0U%$eyAyioPMZ?0QWhB7-{N zZ;x{$PnAHk;{vrua?&Vwrx?~RQ&oVvEW$pGj1!mh+#o0|rN$L3kxCm#=?OujB`wU9 zE{JpgYJN{UhPK2$H^5DrL(=V?rRtY_S3cat-W}K}2Da=0bpY>n!BC&_ zE)3o{-5kPFP$eO6lgh$2=3U*;&eDU*g91B9&2DV@{OJy9Ee>g~20axcISHB@6zt|O zl`@f(2P<%?GpwV{GkMe1v%(8)&MVh4*)>TMPLpG<-!cs9#r_2-m|bPK=n9!L@|3cJ zA#2KThf}K@6ZIR1`mfAIAMoDFbWvS~EgRc=sNfj9gw7Eqjh3nk}vr{7AhmVOcZz9HBpDQuFul%LevWY0VY%`7_q< zS5B)h7%xFvXjvtcWrAaLw=89^eA7R2b=lInP|)1Z4I`<$BCg;khTS3ml(UC!1*`L6 z2la`q^ce$GgUK5dJ-5+Hqc@}XnvUPVex*NE*iO${j~F8{K=m206T4`|(2Cu}C58V+ z4gG*iu?197(Nr&>rV6*PX6OcL=b>D~UfQXno%(r1u45CeqLMGxT)zOd3JX|UjdMi3 zOH!K~7SLFY;jUQcO*Daao2$_E3ms77f!a*4fNt8-(1ru(!$Azwciu%D^?-KxU= zm*%#2+`zhdtiOep;m)oFY@mza0`9KDJT`XL{EkiMt7FM|Y(7`?XR{}G7*QOdK=crt zcnRco4=8CSkP@g2NIMyLKS796s2(6gtLb-$=v6q3@8}&Nu5a)IzQrbt&{`TZN<5F^ H43hr=%qM;~ diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/JarHellTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/JarHellTask.class deleted file mode 100644 index 63c7a9b3e6af07d3209699c4de90215dab0ffa3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2660 zcma)8ZC4vb6n-X97Q&W<*w(hvHbq(>SW>N6X`mX?Qi`EOf>7~wvl)_s%}(6iaN2*R z=V%o^_yautCXaVEyJQn0_Csdp^||*x_nABS>z|W90X&2g$2c;>n2RHc4^(q6MGFt& z_!tW#H2fq5hDW2wVQCo4YQtkS_-quPBR`B4^(|<4qTwmSh-n$F+cdm7!&Ff^wQS8X zsus^0O_ALf)LEsbAT5iVo{)BqVQ5L%!h6gxFf+TuFj$aP&X6byo4;r^D%{yNDi+P8 ziqbT!9m5f7983;+b>TAH^G(Snw_R>HW<9jpbhs%S4dG?i4QGv8*0$julFfwEvV)mI zotuXY*S1==CmMW5xPsvGwkDmZ<6fZ?``ww@-b4MPpYGk( z#xBT4QxO#+lFz!^Wnp@z_hdfFN5<1v+$=Y_ zne%hvQm==HzMC21W!Z8}uCmOKjIcg`K&X905yWelb>7Y^B}m65T&Ap2PTaJgpa3W> z?X*|tX;a$!qSkVFHGL{L9jkbzV-3&A@QRe4>p4bqgL`#ZbrVBaPvVP&hGG&^IyUe^ z!={cBzSNPzJ4tLME})#mwvMl`qhVLaOMFd&E)?_Saw)&PrsF1V>Da?J8ot%>9lmEs zlfvgavYW4jX6FNkb^L%I8RpbY=p0u7D8Cckg71N(mCApwdxY<8p(IV5Tx6MKFD2hhB#68avJt^)NrWdeN1VvbTmL< zlbuk7eIyTgw&>SEstCruVS3V`gpD>jBMnU=zbNHli#qyq+vbj6fH}PZe@9&l@Y=Oy z&9Lc#bLq8H2Xhf7f}0na={mUmy2+#4-+r-e^8B;WR0qff!?Mc4A z^(ahwgZDK2#Bk>fd;OwixOx6Q+@@+VPX8wuVyezk?*jFyyiqY0YR51@?E?(be~~yAaFs@SdpoY-I*l0KBdAyxR3h^RgP9XDgg-E}+kuPI zMqrU(mm^S#0BVBPh6wP64@TBqj| zlhmr9AJa+Y%1~zRH)y>MJ|oZ9e6%a=U4etjJw+i)#+1?nte3=*!kU;%#VPR7W9W=L zyf}c}xzyM(5-~(5XfyhVaB{@lQpC!{sg()b!CgWh#5Cc?FoTeqSsEYEFHWmfgc5PciFN$a|_gz%jd3I!!b!bc7TBvc6z$tqHda>&iGx9(QXI;=Mc_)SQ( zKtSrDKY$;Fn6)Djr4bV1GBZ0n@6DUp{rT(c9KaJibWp|S3YKukn7hVo)o`zd`wWhV zxzyrNaK%s$j>C7MpN2B=53~|8*af%O@hc{WxN-{-N&scJCRB9r_4 z?N}%tGgO}nDfDxO>+Oqt{eGv%VDDxzk*xza$4lQJpvVUEPQ(nImX2!;xlE-H049j~w*RQf% z*Rbuv#RC^LEW22N<6;#K!_I$<$guI}ZC?+Ld88TqeQN<(C~hMd5vO8E-b$zCH?;4@X85Zfsszu*eK zVuP|?iN|F$=tN9KUsgn>bESw(Z;N_fC9blwPu^55dEZbup`dJ4Et200YPT$yQq!l! s4aykVvtaAf9QbS@_~t^eJr6!#0Jd diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LicenseAnalyzer$LicenseMatcher.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LicenseAnalyzer$LicenseMatcher.class deleted file mode 100644 index 1dd97affd6be141bb03e794a9f853942894eab28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2118 zcmbtWTUQ%Z6#h;KOc(~*29ScFSgS&S4%&-Q5V=?^8lZBi1?y#)9Fl=yCQc@bKKXBa z@j=%T=(20sSFO6154H8zh~JqB5R83r`HrdWnZi^G(>iAGmW~^kP2uenZmQ#)j(6~`jx6St=7NSr9ckRs@ScVx z9qm}wu%cmAKzDM|3!P0z1_J5qmi3usx|WwWm&3sE@?!!`rDAS3>)6sONdd7g&|UJ& zfi0J0&M8rAqZ~TEwP#`Y+8%|Pbmu6ZjK(QL!G<2m7kz;Iu! z*Y)+M-t50Ekeu;z#BwI$q~PpV`%H-wRn2fx1nFyOP9;%A8j$hpdgX zcIZ$r=JwbH<#UTSc5PWy)lhYFjhqH)U=w)*1>6y6J!#XGLg0U{ifzEb){*FR zGT5<4a8^Cm-rknEs$3~d+X55+ulxdMPf#sxY)P9HG>-hnIW_;I3${R?>i3#9A+JZ- zvWgbtF;##1UdfEYUgfm0Z5r7kIW-_WkDjzyRV~J9d$ZE6(ZFUo+-#$&sN$8t@!Rqp zPWNQ>;La4RV3{jGdbX@KJjYF-$}{$_lb{E(=vua%a$SLuYI~LS^HhkZcU0VNwR`4x z);R8$tIeN+TOD=0rYbvv;n!F`ULVO#$K$qRg*deJw(G0)*lgu;%jF_>2A2w@=c}C_ z_v)A`>XGPluTsQz?BMPPlHA!GE}qhAz9PyIizugzw2r@Cya0gPfpY2N0Qo zJtQ*Sd#KCw>>-)yOzxrnJ4zFHQR(oz0Q^KBKcf*3(Sl#lieKsPH(aFTN^A))p^tA$ zUm+3ENnuGuCxu2~=u%TpTLS&aRM42DO20nyJrdvY5Ib&&n7>C(j98)KL|_1eji&3# zq0Zz!T8AFY-$(n}-~pa_K!A+|ILvguimMnQ1%@z19C)E>npn2d9V=VAI#Ny;9lFpJl4nekmAcO1z>s?=%d x&~Q~_F@%QnAv7e9S!6_9?U0ueFp diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LicenseAnalyzer.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/LicenseAnalyzer.class deleted file mode 100644 index e738322ce984c782c328f87ba64f14f920d27dc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6928 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PomValidationPrecommitPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PomValidationPrecommitPlugin.class deleted file mode 100644 index db490cd12b4e2032a1cac88537fcd10b135d9717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4956 zcmcIo`F9i775<(iJdQMgV-o_DLLpA@nhCo>#x0nzq{cWgn51cG#?l}UmS)t^$Y8qf z8`)`_rA@jd>E1%qlE`gn`fE@Brk;LpW+aVgBm?c~@i~^}y?gKb?svDR`RBivZUNYj zf26Sm$1*sM6P*~y;3OWC51&*pk-;fUX3&At-4s2W!3@r2@Fbo}<5PIL8v^GQd{(MF z(~Sgj8RTJfBZ)Z$rd+<*jTFvjP((?AmBt#_@?SZP9(*nX2bBz5*b1r&76dv*P0Mu0 z1d@IIGXkk`J8uZAoiHt9vRaxooHP1tkt^L3c1|zO=#D9$gT<6PXI2EpCTypm*=573 z7`l_2(+ZBBFB)3eF>-dPWV+gvU7FF0W?pwq+nTB`PZg^L)5;2@bB>|Av|5=LIMnBv z3vB3RQ=4+^i$>1P_D45dDpWM7Mv({JA%V<-562)ffd`_3Ee)s3 z)!Cw1nKP||z)(~r*wm&PLXTc{$p{@LsP)U~TP)WpJQ%eTKYBDOA|1|-(ds?ZX2H_k zs>1-C{aPf;(;=JnoYh`tqaoBzs?l{XEL25zZPJw6I6BtA5 zVY|D7y;_z&2<-kZ)CIZ;jS zJeDaQsnR#$3fvdPv>pGtzs)arr?r_%UD!!MaAdw1r=Y! zmjni6V+(bny2n%TB3JNb6<@(uReTL!Cx1t5+pV~cUOr{Gb9TP6wgcbj!Z-QxtuB09 z#dq*s1>aNgeOy)WtcvIGyn+{0yoi@5^KvJysrUh264-fH%~f(BJ@_Gw{HP1B$b(*0 z@S2L(ag}R7?!r&x+8a!aHqNaSP8DzBr=9qjf}gAS1>T~g&2&9IE8Db+xABgOU*cCP zevRKK_^pcH;r9yuATWAYzC;FvfOcE;<)ejtH{xS30R%b=hAX+^_sg~2jzTdvMw zC@0JIh%r~{d*i1eMZ=C!Fe|R%2<-2hXp$3jo)wM?&9K!(*BBp!I2?yq_J(IgYlt;4 z5NUq|X?tM~5uSBq@eD_jz=L7L<3+tv;m~dR;0KuY*HXu;0lzsDq1FPSUnKrS^aYz3 z)A%E+cbf?43DO2YYzz&`)XIL&SD zw+*o4F|dtXjB(x`bLS?8klrZ>i67#!^nkW40qg70f$uTWXqi z>dnH>$^I~!Mm9yvcw|s7Z}8_qzH-{)Q0;p7ugD~UqpDs+rmaa?%It{1ZD)=i$SwYesj`j^1fJLJ z#Ddq(3{UKdoGATNa8t#5_^XOt*sb7ia`Jzm;uAQm;vlHBy_qkjwP4R1+Jtv2=iNfT zpyyoMS>$!O)O=F#cmB4UuxO$@V0oM^cG`4h40~hb_+b5Bb*xU$EB}A51Cm;%cMN31 z0|g&)^2YXCMMPlB%5vDop0$N<4uDmBSHPPs|8L`y#!n$v2i}9Y!7mAH=l>3GaTpKq zyXp&|7Z37@(*ipvC6!<0`-K!gcMsN(;Jbii4XFf9@o5#GI%-f7_z)eF!!>lWN{5zk z4^TrofuZYEOL|Ai_Y%NPzKhsJT)X-0uy^c$Z#p=ZhoBGrJbn#f3}BEDwqhNIFiblS z(}INQ?`hn7gewW`>`Keh;f{p+E+tp-Gdom6M&Ny@lLH>`;U%mFy4TdOHi?6&!HuaU zbV;Q5Ca^Izz-_*C@t!0@KI~282-t%(_F@C}5zKyq8DU+1+=IWzKgt75L1aD9lIkqA z_7Ys0uI{5&lDeCzIY@`=j`%AFkfH;u^uU2@v?<9N@nLuO)UYmr!6n=$;jNcs_e>6@ zKEVA?C5NYPV#B$io7gyf6Ps%INCM}Y@%7OkKqsyD(EetOlH5Z?GZrF$q=A0KLn_ga zQ1TGbZ|2_^eN7S}8&ZJqC=n(o)ivm&7?`eM^Rkou%-Zjrvfh{Ve5VpQKZ0>uO5!M= t5_l9#{7iG@ecYml8!^S_A)fI#WuCw^&fwGB{Y>zzV>bA90R?Yo{yzvnz`6hc diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PomValidationTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PomValidationTask.class deleted file mode 100644 index e9b7cb365e67e914df19f489301a7e9615577352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7408 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 CfV)%x diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PrecommitPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/PrecommitPlugin.class deleted file mode 100644 index aff63a7c8271996df93896dc516fd6664d097737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4041 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionRule.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionRule.class deleted file mode 100644 index cad4b25b9afcddf0cf95ef8a955756187ab66c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcmbVN?^7F96g@9LAuNedpaol{)>@K4)7l~+SS?@+8fZ%>70~J?Y?Fm0!R)4k`~m(a z`iT!ZV=dLu@sl6?qa4rMY?2q)%yi65-oAbB-t+D`_ujYv{QKLV0H#ogA&&Vd7Gels zz8e}A&G;-r`Dswo=fo4ZUj0cW*J|luU*&m912ZnaY7twhg^nC}oOOeaA8~2UVj`+21#v z%(`Ja6l0-Mer}Wl`gfs3kZd)lOB z%s8Z$woM`e!wQRbQvr=~thZ{Tr{%{q-BcXUkm*n`x7EO2&q)RxXVTiz($`3?QukL+ zulXuPQUp^-jdyVCz#w9LThlGlZ!7r+`CS&qY;sFLRNDL2+hQ*`CEXF|%{h8uZ$&@w zioUC)+ogJ&1jmxg%ucRSs}_uVrtFgu-%`IWuLTXmSQqGXuLw8VB_i<-&~Od|8qUk1 z5B*U**06yY4NtJH;R|d=v87=fUuyUYPX#9bSGz^=wT5YYBk)G+lB$!{pd&9Z;I5k$ z-b-wA%RH*LK3OuQy{)hrvOrMZ*>U@jEzgUEZ+9(=)#+a_uF~gQ5N(CaCg(kI;Of_C zBJ~RO?ggI&vx!(7?%gVIu2C4Sue-=AMv=QtmZfmb3(__8@~zxG-ij=akW4l&h_P*- z{bgL{w;~QIiXi%B?)YU1$ZT?L(47zQor!I}U!Vt7!U)GVX|Y4k0H33&mk_Dn5!if* z;0uIW({L*N0+F9xw2K^v5au|A5N;uXNg_?-ZOq`3yXRuzEw0Gls2dY&oU_Z`i5Wfx z_rj@P5c!Fd03>Y0U7T}aWQa8IU_S17DEvX^?zJkST&pvmxr4`koQV>?c#{9}x~6r~gJg^(%VP z{QrP(@HqV!v=xdT8R!25y~i}Jm(2*90w}T(N{C{YowtVz*yq7z_wdm=a5Do*e27^d zdx-@!#|{kOBl?FCjK*cI@8DxErWrP`?65@W55zZv^6=aV67poV8Eu7PBhLb#xK?-n E199&`2><{9 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionsPrecommitPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/TestingConventionsPrecommitPlugin.class deleted file mode 100644 index 65848cd17c8aab6db01d38135a57a431db3b744a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2684 zcmbtWT~`}L7=9)JHf**MQ^6J$OB>oiAPcP(YbZ)nD`@zTQ2ee=HbdC5+0EIVaOB!Q zq&M}@3y;?xf0M^|b`ug3N=v=S?#?^!$Mb&7Gx_`9=YIlN#J-L+=90+6OkhI8d=d+| zou<8ylDLPDbqt`8z)}+Tv8>^f1U}V~#7Y7W5-29{P{U^$9x)6p*{&^@8RFULU50_8 zR}~B+CEFDn&3Z-nJG|nMBwg|>?(A~kR_m5UEimYoFSsPv!2!elZ0NJ)h&OC=%lDoN zOBSYkHzXMZrZOXyL%S+`a;7yRb%raw`fW#)lk9`VaHCiMO#fr2%W>3bm*mOI&6h%z ziy;|cbUKomXIP4&y$*0ST1+zB zd+pRIan-G0yQ!ve@#21zA(d~)mXQm+>@|H$JhGL)n=c*E{8N6&4P3@s8a_9$iZw!U z@v#s4sNo9(U!ug2df<67kUnp$3%T!AgOMSur?5e<%@n2#Y~d>n+Xl+mG4L2v#z6%& z(D1c^Z}2U{-3x<=@}DBRJa2GoU*w&pC0vnjO54eo!fzF%$OB>EJABU&TiapCDT_|` z^Qs^DO*-}E@YJulQqEvdOO9q!i5vh;}~3tf_;!-L?J z7*EF!_>p0>+uvp-BFtSKZ{i7YqWDEvO-bW^wLhN~OVKi=F!{n1+Vo0C(em6qyB2cL zcpnF~T&XiZOf}r#bxMn2u0JSkiRweIPUVZho>Yl|O!okJu`)xl&W|dh7+xT%U0pS7 zRdu>c)G7?YtI&vtMeZqG+h|wAPX>NQ)j$SQ)Zb3GZ1>PR5N0W4N;~r#fV`wqV z{zeM%&}o|fLIE?-kwXfzTb9R=rCk|;O}GtZDn4NmqOtiZQ=TCdW3|t=@dOXd5Y&d`?vkfR;S8y3BF+T#$YQ0?x}S|#xT K>DbT{talp-SH z3w-bpb=1GWU)7N^)EV_RXZ)KS$8&c#VH4USZKii`?mc_XcfNbhx0}EJUHTnBFTM?9 z6JC|Wa0Hu?ma}6a9B)JmMq*@gB8=B?GJ-x#$YD|rr{wNb2&d(j*JEHfD_71n;tjm1 z;H?~~euK#Cc6<-Rff3WnrOcvc*c!Jo`Bcv0*@BiT zT3W`Oo6|*VQnLj)9Wae~%@De2*pu9zwWX6ox}l514962|_ELkaV~Qa-U}h<=rV-uH z#!7S3nl;I%3r?nHh8L!|rOWT$Vo+wnpr#E&vj)l;_pKFBd@m)op0c0PZCxDIi3VX> zml&oKE>uG|Q!_d-bb^a~U(Fg9bO6&Op{0&+Th9!UU4MDW?(3+rmfKF4lbT&B2nrm? z>J~$Djhz#Tpgnvt)wiPQkiW9h4k1gyhAbI#+OkN}^&s#A!XtFzg|9s(*a? z0-ct3CN+^B&;9uoT~&^Jb*3L5B0Qnz3@%C*Wj5dv@+k01v`TrH)}fjscPipA6-;Ep zELj=N@JCIT%!4ciq$cx5F}Yp@jUjaI3$N& zbgAe>7pdABMJ>LUvV16~Zb31$Rmb%mOqIE-z6`x#D|J+I1LI?p>9JFT4BKm*R_LwBVgqSFPUH!4q9aX7 zlFEy;k<}K)XGj(k>9kx8+ofqLPAYHWQLgzK%tKFMg;_qO<}x|ez(bmmwIvgzS<4X6 zah9QuF^2uiY(5%sSr84vbQ?BWhEP6M5^IOI^0`vR#geEARwZ+O{qP6#jObbBN@cq+ z+a2|6C+rCidsQcuYpR-#Z$4Oewe}oAoP(_`?>`jd^oc^IlBcG8^K~ zBUQoIqzfaaIa?xa`Q9JLyUA6VVQ$b1i5+(>J$3hk^s!!b)u-y?AaqERWg&Xu&6-X6pBzXNfy z+DWqkvJ23)DcN}sEZKDrb;N!5`6@JVOhe575A{1O=egUl96MZ$lcA@dm&_>n zbIRp6#LjdsVFS>0AI*PI5P!LR=VQ!YF6H1&wTwmk>AYU@g6yLZGDsxZ`6pVs7SSrJ z#P8oNN7boZ=!rSHku5lltmh*;m^W`J%Rb+2Q0B^gGuh)XB07 qj?!TdIV(reL09>^ZxdbR-)-E*9kgMT=FP4 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/UpdateShasTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/UpdateShasTask.class deleted file mode 100644 index 2f43f46c9348c4c25ff902909d51baac001c500f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4747 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 z D1c1Db diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ValidateJsonNoKeywordsTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/precommit/ValidateJsonNoKeywordsTask.class deleted file mode 100644 index 0a4ac40eed099a37542d08353c59dce1acf3fb4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11891 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar$SymbolicLinkPreservingTarCopyAction.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar$SymbolicLinkPreservingTarCopyAction.class deleted file mode 100644 index 5c628277ed349bec8f8dd98e13bacff387e05c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4118 zcmcIn*>@9F9R6;acG`518lVzTsZgX1E#tnBij=ZyTaZ?uMbz8LG#Q%A#F-XF4{QlR^zW{g~UnZ~t z``VDge)Tw@9tYcT2+wGEwjC`PZpR2lH5^W$4M)`DISoe>&@tAI493;Y^BRsN(1GI# z45*hA8YYqye=32scrk&O@NzpOrZkuuvKlObEn{=VDYsyo!?rVX#ItA95Va8!AZOw|s%ED>97*o+XP5Y+4|_{dR$BHV?aA&d7N(Td)jSvW=4G z&e~baGmcai8G*JjJLkxt?2%#LKQau|Q%qBnan#C{3z62$F3L=pZm~qSeAg2gsb{gB z!15efFhXAGnR$EGG8S0qx-l5-9WDo@au9j9Uz&mI%~AMz+pj=oDL2RMqU8s&SRzDX zQlMqPcI;r6fZtQExY7N3id!;mviF!ke8|lb$<>UkHCirCS>CvuQo%?LyQVB0lb)^K zE1U5kZ`1CH&8&>|kp7Hs9Cy8$qn2MT1jMI_APejXDP>8T z`7jlWuH#oz(x~L9=Nl>_Mwx4>#mgS+QF}LiQVQC87yJC*+P#_7kj1P_l#;NI_B`|!VzTi~b#+I&GPZKwq5) zH>?VQftw+(ZyN$@m#bibhyR1e>(l*JGMgPMm%>YvmE|R;0^ZUhCrbh!;v<2L(`?aJw(E>%2b_0ZoJ(EP-03M{Si0{Ln$q`NLj1>&I?ZP%n)!U0l#<^}Q@8^r z)*y@R+)YRP=tDo>D5;`ft(4|ixTkbCVF%YbZHuTjSFJR-dH@gdNt?u1)Yd|p^XZGU z=Fu9%$W^pW^j$$>w7>Z>+P7bYK9TOff>ralBZmIVSbYKOcgCZI zzOy+MPm%7vqzn;-u)mb^)D~zIH+>{u%24s_DEI{|R^f zK)br}1fJ&i;vn|nApbXFoZpBY#3Ij|P6w?nbIh-yuL`$^=q+HA>NGhE^sY#LhZ6GS zbI6$|eTf_nZvZaN!3!~cB-Hc(`5&gFjhMtEc$7%aF^Z4z(^p}7zKZyH%6yX8?d0wW zB(76@Tti9&lWag^z=Vd5>u5!D?JoDigVsM0V~vrZeFNxPsKt2 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymbolicLinkPreservingTar.class deleted file mode 100644 index 451c7ef2b5b7f1f1e1aa7862c7ce191ca350ffc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2046 zcmbtVT~i!I6g|BxJ1`6%5L$r#0l>FImB`}Db|Z{Pm?&tHB6a2rcD#xOOEakw@{ zaoNT@xMHJ%jFlFK0bogr8%-R@+XW^QK>lWq&oCiUmOua4RSj7TU&ArZM z*w%hS2Rmy<#memJU~65PdKm33`iTw$fy!MS=wv})pjz7yDA&W55*X(iwc71$Dzh#( z+w@E}LSMEwq|vFJJIl$o=1#X7q1p1nNCmNy#^3g~jBK@)mq_CklDH!<;Tt6rb(GGv zYAplH5oDx29VE&Gvh97PiRqKOcesKmwjXvPh8KrMVCA1zr|k4@iqcy`3B1Lg?_oEI zx=Ax3rOuM{lhEuDe6*QJe`iHTS;Q7@aKC2QHNILR8-WXj@y&iMccs9{s)~~pl`0uq zxanXLXB@nT+Ya8x2NvcX+`(N7_Z%$XLkk}XET(D}3h=xTnz|FUspFvzU!3AZ+`?E6 z^>(m``wr^(IE~~Jfg7jTNZ?Xmh>47MVsEn>wAxHjk2%V$It8+OU0}Hn`*{95Prl*| z5cuviEdGU%#bWnT@Zf%4F2p)M@21=QMkoF@Q`IG9x0gRIFOZvw>mG>f9;8Wj{Yzgy z5E$E1$uaNMlee(%gpN$-EvfZMUOZXA3QbG%I%gG!n=kaOeerSK|5itH`I#|KMvt&h zOTfdEG^6)Sm*M%lj9fVzBW& zCZD3h-^epqkM=Rtc!uFeTx!p-8QF*PBc~4_rEq~yC-50ue9jkj88cWR+f~eA4fAMb z)TT+N%K5M34Q}TB-6N%(?mS+~N8cpc2+D4y@&_!7@B?^@t`aU%9AJp{IN#>CF+uBm TX0bCdMBgYuY>o`$7D|5sio;_7 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymoblicLinkPreservingTarPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/tar/SymoblicLinkPreservingTarPlugin.class deleted file mode 100644 index 3c7ee82f44e819ba59a7b1e073e3e92b0fd453d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 757 zcmbVKT}uK%6g}hDrdgV$S=K`kVG8X-M1&%Q(36y)_&%<~I=1f0xC;KPUJ81Mp8HYJ zopp&&BIsf7oqPA5Gv^-W+FL88~7{)TJx^21B%b-eZV0 zy@6oJw4^KUXXCz5UEX)7lWTbvcY0h&U5Cw>Ka^93TFX@3D!-;ov(KDL#Z3N@Fm-Q}w7%xvk_7~*^~aTW}vazGPe`9zv+<&A{p*R-$%k=ep$ zDE>CZkT17Je9ldWySDkz|HdXe(ssE&Q?y5OePoR=P*z`ShiV$6Io0uI$`W@{TXXuy zju%=~8U{8P3figl71P*8hT-PlJ~CuiS0_JKFAEmK2|a;0$WnS4QOYEYVv;J8GNT-? zynsE?A%YaeM9@6LCY{sE0m@rcF|C`T24B$^(Y;k*H2@ZtKSQ8~X0Zd7y(NlVNO4Is dnj%@Lz9aIC=qlAu4atxyg5BWeJ>-L2_yPefv6=t? diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/DistroTestPlugin$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/DistroTestPlugin$1.class deleted file mode 100644 index 468b00989665f3f4904d8117e808f7d357d73fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmb7CO>fgc5PjRYjT;2@*4fJ0wRYDC@vpdm z#DO2ck3vkGB2~?)mh72%>v=QtX8-*C^&7xzJg>mV9Upgn+^e9B`#v7{cv!}xGU^O# zds0ca&roVKPZ+$eo(P7GfmGr!pN)k%=Hrx*aG+zJo^T`Q@j2+Zsk98ifl|VBQ*N!G zFdAr+L^>173U1aC#KnYDo(W}mZ5M{Jt^aH zfG2p$;2%<3eQjNUbyP@U0Nvx|sl@mvkn3jl3aB1+v}x3Dyc% z!qN|TpIhN-xHfmb(=RIs=o`YL+#Wpk5mnYljUAv$c(6#vb=;t66`Msyh?|AIg)Ook TYS_l@0;yqx?7V!LEIt1K=r7wb diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/DistroTestPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/DistroTestPlugin.class deleted file mode 100644 index 79e71fa3020cc8f2898367f47b78ebbe8f0e5322..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34657 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

9;L$$nVxq{&l;xUT6@8od#Y!G+PJ*$$t$ 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 Pi_|{Gb!Hb&vK{{e9eqz< diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener$EventWriter.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener$EventWriter.class deleted file mode 100644 index c466b9f7f783b8ae306ae66dad27a6e8b522a186..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3693 zcmbtX`BxNI7XBVIT}@F!+Xx0X8YPIJw3@|43=vSH1~7u+pfk>t-47^fx;jfLwWUB3IhdyD`4|Hi)o?8CKM zbYN7+c8qB_Rf~R{*0CGoDej)tQH^s-;g1^rq@xz+HT+q_UlK5N7`UJzt0AW&38|w2 zQmIbXVG7f=uy8SfnFR7`J)1y5$5Gfiig-8$0XG3pElL_LX?R3O8s~Mi;&K94l>AZU z`!NlVYj{G#lLES3@`@$zh?SQD^+OlUOJ>HhGiu!{5P!t6Jn0A|D?4X=iQ4m~Ew_EQ zz`h~dnabEjS#YK4WT!Jzj+x8Lj3-?$bJ%fgXH*t#$FmAkrzje-Tu&CHqf8vI3YOQW z;VA}kNV-|aDtb2E8OI9L7|fflD_w!dJ6Gvqb;sHlL+RZyE)W~Eb3~_M$STN@((DE4 zoH8#cyi!AU*36Haj-}S2uzJ#F$QvqvDJW0)Adh*DG-sK&;Mt~%!m$&FFK1=Zv+M%* zVhUD)y2F=b!3)3^7+hr{5hFCM=OPdftkPrz8-X=ro|&B)Hj94l8lD!Y@hKy)C#YG- z1+!>nJky_s zJDD%J(*o6P$)%KD6=*E)N4O=hsVqHR$WF`bjLa?B-hR5EXq@)!be5QS zd}Huwx5O5Z4%$R|l4MpsUW@p6i1n#3wc?|U;LXv!ZlD`GHN0WqO}wq)9Ru&;Jp!Cg z@99hX&%J$V1Me$9gl^yie5m0g0|WRtflm|^p9-`s#_IEJd8h`CDXg2zIhW%JDoTo# zH&iJDp-SvCf!h~t6NcP!(;*5YIBwu`d?C=kss`8|xt*-NACJ%Y6BjPZEQ!9h9O9tj zUeIz5uFlostrfUyRVJ217~Dy=#DEruEQbNx&J}WdN_u|Z9x-QmUDlQFRP-wA_!56* zr9}^q3#^|tXXKz=$eP|6%bVt#>zM_QSF@vYc^?SxXw;s-wotJ=xmGyFYrpm;E!7IT zR&Y`20+H+C_otRc15sN0dpi}Xx7w6AYKaqz!l7uY#?OYoWOabJ{T732WR-2PTivtT zvuuZBUXIBL?EgIh=uB@|x~@4z62#@hB{R=@Hbub>Sl+wiEWs!fy*%%hD24+-RjWz} zCKt65Zmv-9rTG? z7ja)Q+SPp>qH7*iT??q5=>8tDopY$U!EMY#yN<*HYA3qBM`9lO$Th6pA6tMiky_Id zn@9Z*Jk&6;faJukd90mB>N*;~qlY&7+>JU$a~FMWMFJF}mQ-mIHP|H**e&AND>U>8 z9VbN{?xxAD}WM&q}<;Gh}|)BYdLDTCwP|H3+ff1>FsYE#X_*AP#wAExj&&Y_k$Z1@C? zOu8|U%wgj-G^_Q_KyU+_0AJcL;={3-`PcuTQg6Z$&be~xUC^0&0}PQwN~F*vnz2o+ z#~q>tN5p0v6B{`bH{rC{Qh}g>$sfXDCV8B86a>{O;tB-g^zeZ1sXx?H5G0wwkEqgc zbaQHe$=6YX^Ojarx$owR6+l8IF^4VR@x96~j?O1U8#J-ikH84@LT?XJFGh*7HiTjR zDr+_i#ZzcqKr5@C4*AhGkFDPh`FL#WR(SZPQfREeQLj=F9cUEW34f>Wu$iXTg^8*V zTSM0e`5uShe{0G)M?3YD^8v1uUNT6fosYyEZa=e_QsAYBDeXan*c(YJxh$<1PS92r y9>Pig*-zdn#>U8@e(WKAI`}+54U7NYy>+k!f5+GO2U>83di9k5fzeF(zs}G1tl+%> diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/ErrorReportingTestListener.class deleted file mode 100644 index 1d6289cfced6c54450feb9cf06425854d7fd059c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9157 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 IKk@Pp0m0oQCjbBd diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/Fixture.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/Fixture.class deleted file mode 100644 index 545ce451a1140e3d543d8932b4293ec7b75b52da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167 zcmZ9GI}XAy6a@E$5c4Z2I6*3Ca7jU*3W*|Iz?dhKV8xN`AkId?0XP&Qk*H`!TZ~ro z{ybj*c9;qXfeB%5IF`}1Clzjl)p~QN)m=%e8Y7SAnswY0W~J-A=AyDpSQOPGcAmF` sNXVTx(zVt<8 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/GradleDistroTestTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/GradleDistroTestTask.class deleted file mode 100644 index c6f936454c3af5b3b03da07b63c577c9dab9c5cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4604 zcmcIo`*##q9skT`v$NR@WLXMG>0?U+34zUmN?Q#?Ab}Q}1Y~1U0@Y4-Cz~O&GuxTj zK(tz4ty;sPe;K@02U*G$=pYQYD&8z=j zxdGsQ{4<3em{KvFLJU(~=*1)Ab6R|6x^V_)Q|vt|KJV(ryYX0t+e#{o6f{gFF_%PH zbmx;WQ#gkO@v)MqBw-7AryEr~o`MT60|m7t76t1043B%F8}GyWQ+N^|$e;rs5yPhh z*wZO|6d%hVj%QSSLd7Q)Bz@gmn9wVRg3Q=CeNoR_x?Ro}eAl$gLkhZl!}CWh-SgNt zF8Ho~*e$c44uosIY30XE&ljQvvux{r%_UZE)AE5<>|t(6958LuA6C%OziUcCe8een zbI+J*8xyt4tl>`TvzDah6m@G#cTF)4C*%ISNhbTo9Jiczs)p?ux?7yjmtDPN8F@iG z|Df!TlA!BMa$=I&^4xCEkljG>P5rIx1fA}3RO+_=U9DmYww|ilzF9G*OwS~@!?x}C zx^Fr*sof!|g?#j?nHR?P^2hCJO&ClQEY{4sqrJ3Km1y}BvK2-PW)yS^6?sf|$?%G< zDc2PoDj2?(6-(Ko@LSe#vlYXicS>2Ce$M(%cGk$6cG0SpjMAQL-#}m1^s-*9T6J9C zC=HSr6+gP>>r7qqsJC~vOy0!D$$He#%eq@;=n#F{v`fx;uOMkFSkEasy>_8K(Zz{+ ze`EhlX!+>*U8Wa;C{Sh?$VI(4Z;YBQ!^mR%&@(OWI#M&OlHt;Z>k7VJTo~7@GL}?) zNNLUc`=Fl9NsiUVZCi|R*Q^+4We@Ry6c~0MzA&;ELwLqqBkxRc54K-aWQcAm{T4z z77a_my^ToX-m#o=nfH0VE=0V$v$@eeVh#pzH5iHvS^}i+prT-Zi#=Ol+L|%JT4U%H z1>5RTCrei_D_#~{WB~pSzi+CV^$du(E1VL~q(AV&V|ZCh0SF?-K1;@e;wF`<` z>$%Llie6RlKp3A=q7@+2t93u2H>~Ayz>dkW-ZdVtnXWP6*b_C2K4_cSd{QLzV$rCw z0MrRYUR(8Sh#tO5O=M!NBJVDB&T)@26Buf3wOADuZ807dXG7~yl0#F#9{ z^rG*$ODg_ObBsC8LXG~=j@!23%6FzgO3y|qgc!l)^^k7!ap(008;2sH5~vxSY1lZq zR5hZDq4=2yLZhzIGa6hxj;20B$Ik=^xFSln_H^duoxIH zYKewrX{KmeH(Nl(KNRd}F+w}TyPFk7L3B$a3;b%>-6--MJfAIl5(rr8b=<$#BS820csjt_BP zM+?<>Gu5MQs0N-mBB6ys0p*cZJC25wHR>MUeGO_1)6K+>qZ@CJ5Z6|%sbN$SkK-sQ z21eM+R#-DJ5MM^Jnd3x+V~#KdDd;G$fl+2Z7KV_+Fw*N{@M zLR~O^9U5bA-9&ENb4X^^UqWZ5XBp|~oQMF~$!w4f*Vl`^d#)mL3Eg3LV<2){&}@=T zaKdJVuh=aLmhpxaYz5o&G%*veU}G+GdmzYRI32%+ZGzGr;I2Dk$eq55yQWugw-{$R zUdBCFv0d1(Lx$uLh6gZ>9z23AI8EEnaQ+M<`7AyBC{C~~@c#@mcnmuKp1>?Vj3S;v z2^TR(I%R3Ofxs%Oe!PL>^e}(J^PT=MQDa2EgfWcs+zFoeFgjmn+Q(J&Dk@H>A~E@S zom--FG0t(hD3{cBOaH=1SR78KQ{vtsf+!99*ovT02Uc(|&>S^$5r3=HP}G_ZO!6DU tJMm|>qSCyAzu`}`y3TPwlWmrBMfvq{f$~du58f+#AH;`f7qR~F{{SV3tq%YI diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/InternalClusterTestPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/InternalClusterTestPlugin.class deleted file mode 100644 index 507bb17d9189ac94ccc220d412c32ee58c6e8d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2206 zcmbVNZBrXn6n<_9Y)FUblAG2BeylMHTQAy49;XHdqHhA+}cU|GZ648FvQhIxow7I#ck1RwrV+IqkGU4 zUV}GnddXK^liS!y|&?YgyReDnR`at<1JelQuxwXbENPbZddHC zPp1aGZQ9+o<&ZPOywkB?FkC7G79us?v5Za6eI`sL1iZHLRQM|@NU;rg}0Fqa0NqtKR# zfOOsMdZxHf2UF)aKat{En*!8~ZF==ch&1g(t5=$Ax^Z-ma(g`~Pr zxzuqV4|F`l8r6+us#I$DTE{o2GUV>LuJonHJL^L3xh+3Cg7qA((6*7ow2m4!HGHe% z5$X(6eSlHEb-ai7$yTp$!&GW$=-2`k!(_i=P)iK6C)3iEmTf!;%5jU1l-wL|wUp(Kzq9Q1A)IJHOBb@#g+27S$;R8(y4 z`+_p}Pn_V$Uf3@WxkEG4p9vMqF>j+h#9scT*m%(qaq<8DX9#(=?%W`3h1+)Bl7g6O zGF%(r=cIUO#GEZhWGCoD$S_X73&>-F_IK!$m%tE`bf)1)>$~(~(9UQdF8&7gOCWNd z){)?`K+1p~3g99x(T%C8LaS14leq-#*Gu`K-;vxY&Br!%gyY0kgOrKuv|_A}BJ9%lH5+w?d#-BG6kTqd-TCrN1!tE6(-I4thNr zn#!eB{Y3`K7^V|2UQGUh?Bk*QQ2hwG1a|rjEyThf$A_39r6jJ=njnv_2YUfO(VixQ WKj3HlNE)~4t|+@hhU0~b=5iS-nFKH5YT(@l zBN3)Jpz)YAHikyVOp!sGgb`Ar%p=dp7g`grx9PD<)|`S(EK%&vE?^lel-a2M6>k$& owo0Ec9w*4XBcD-F_sPyETF7CQG6QQ^pLzoo^4a?ZLd$6U0^k{pIsgCw diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/JNAKernel32Library.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/JNAKernel32Library.class deleted file mode 100644 index 764dab322c7a7d361a300dd992009d71b1142846..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 890 zcmb7C-A+?M5dN0do#?wUfd|UEZ;x z9ZT+|^L(fN{FSs?#+w^8)w04KZ!x4RrcKZbHKk>JG-yftMzmt`WS%Om{4<7BvD9S9 z*Gwehrm!jrk8{$#tEdY;@vE~9FQWdg7>*0gy^y}qHP*itzFQXqxzDgztVL$P-AMDE z7JR?qtAA2Sq+wLdS6i7Oq@FaFJFU3hg!?1ff# zl=I1Y{TJ87GD6zXYO diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/RestIntegTestTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/RestIntegTestTask.class deleted file mode 100644 index 0c11f7e87f89a6f8ac0ad6af8e50217f90d6fd88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmb7AO-lnY5Pj*VuGMM}f=9uFN@B1P}fIf0Q`8 z_EtQYz{|{=$Gk_rzCS(z+@P1Bj&2*rZJa2y?u<2Ys8GMWnkzI$E@Or6*jRol)(iGC zTI9m?#xA9NPTrLLmTbh82?~R;^GoeEYy*=|S9<9w%UMSbQBMROZRF)liW!BMTZLrm z3ZL?WDL0?)C^xd}!*@2z!_qH$I%FDlEe4{eN&vN`Axr7QjoC`KJL z&{XLEC!NCZZ+V&*A+is88p&pqJIg!aagLgNaCwwmNg&vgPFFq9yncsz6QYK;U`uGA Yk3GRoRX4GZq?#X8*ukN^rS1s$0pC@6D*ylh diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/RestTestBasePlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/RestTestBasePlugin.class deleted file mode 100644 index 14acf2c6de4fdbfff252d2a88d2c2cb8f1ce5b68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5078 zcmbVQ`F|AU8UMZ^$t=4A2^&B_F%g2zy%JE-P%x}Pf=QrkAWdycC!1k2WOrtrnFZ3z z-n7-;_CD=p@1nMWU{QLZReQJg{`9x1K5LlJ8Ovlws_n4L~=!AXB5>Xj^ zd~9%ZNT6}IVH)lpffXH{#{}w=)-*|*MhsIQE99nhdt95!@=JWgN^99;nr%op_*n1G z7>+<<#IiF9E3cc5uG#6CM8?*pvwFhS9XD}=k8%F?X^wt4TgVtDRc+An`Rts)jU66o zfUo6^#9`Yysi)lmsf?2M0f7xmp$V+(2>IgBRFQafR?AIIYwez-_I`okC1qVp{bAG9 zGt!1}&6)Ky+h7+=Q@6(~bJ)xmTq>Q{ZP(E0jKL+irRE%0&jpxsNh_Dr%xUT7K|52( z>850I%9z$|x@V0|VP#SU`j+5ZbaEL!nW%CnnJrMPO})A+T{x!Y^yz!8oMxE5+n7Es z0Z#)Z?Gp;zv5edR$w?ey>{DLs1A&ykzC2^*@{3uMzJ5)1zcS%_D1KGS)zY)0T0Y3t z@_g7XaL~_(+G)FtWu2jXE7o2)_uB+kri_fKxdofGlMGP=8CvNAzcPGtYgB_YD4Mbg zc3R(W$a1`)x~%$SOHi>3cd7U^J|l4Z(p6bBPiA!xGRN0J!Dm(M#pjrDwdqT-mc*s9 zR`Gd!L7=BLRqZrY@I@70!j}b__gR+fxVDxb)!i9u+G%RUSDKOJ>#=5hRmIovbp_v0 z@l8C=+>%17{UjB?N5!}BZ3W*^@m+jRptAyX>9kkzef&Vh4<*&krL8FXuH=ZogDTG9 z37S&bn^}upU5T#Y@xF9ca~u^<;wknt=@O?;mU>^-(x#8+nXg(#pH}cA6+gzjit|#R z3s?~7U0R3>bc2fqM>0N=6K4vwB9$F7~ORGig2V z8kWhPvd!sflRvgHzT0waHf>rq+cu@QnFYQryUn!BUb!ywi(dsQF5wxOvCmRr;#Kw1 zy|t~r?pE52%gmpjHcL1D3_q8?`~^S!Qo$7!&*Ax|2K-7u^r(0NFRFM6zgF=ZyvReP zB5C~6pa~h>_1B}C$ynI}9UYyO#hmw!IVVwu$qH_-;93(;U~TwBOUjJ#&YTEk%L9nL z{MKrjuG~q;{cs!KQX#PhmO$jR;m(Y+KMU-tA-dAKFb`%%TBgE46u-sqgwVisPglmFI!;iGG;ES$h1#e<_ROimOP}TX9PA?4Fmy0 zsn9BVd+3bIk%s2c<-OG|UkqOnE$sQqwzD)c&kD-gHzymD3~lJJ2#%NVi4&Y39F9oj zldPp`rD`o6NwJ(ZH>D?SU6XE&792fjQv!D_7ongn)H>9?NEs$EMZ~py%LG!p++gBM_sf7w5KX2dL=(#uJvE(_GKnRqBO3SJbZxt75thSj#As$2{O5>+cVo zil(+8&pCjm4ra6Cwq`nc%XSa*cl5|GkCVlk@WhQ6Ue?v0vE4!W7v2SQ0R%&A%4bl7!jgr&uod%$(`DJwmzOQ8z>q~g!`n~Hleq#}hQ zDqaI#)-tNSuy z^H57{t1VdRvucjYto0d)bNsiWf#R=rEnpS(T)lv%I$TEcXixV%)+`_{p_Z}k-g&I; zuD^tJlPluuQ}eiCqC39fNo<_Qrg_{r5#M|PH$MkE-s-($@ixA%VC&PkWiq~{@e;O@ zZgXm~KHi#|Y>2m|E};E9wmnNBx5i%;2<^DLeq()nbMHlT0`ur1&`O|t5oqh3ynvpG zi|F;fJdPcnxGV6*J$G$!(mnN%0Y1jRUcgKd%#H~2VGT2)l|gOiZa@9Mm(IG60iWP1 z&w!t%&(F|tXX&~}u^*3d_bD8pn!~t)gZMY@$A56hi`-7S^elRab)Og8t6tIniluwm8Yu)PL{p=u5^YTT1^lx~#rCh%9O1$n-V izvD01h$+Hd#7on#Y3MlNtv-Mc;^AQR;o|CJc=-R$(Z_rM diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/CopyRestApiTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/CopyRestApiTask.class deleted file mode 100644 index 7ede2b4981e3b79f1066032267b8134869a334ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12962 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/CopyRestTestsTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/CopyRestTestsTask.class deleted file mode 100644 index d02f037fc62cc30a705749643d2ad8046716c28a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9048 zcmcIqd3+S-d4AqS(umywgbcz4Y%d@{2*Vn%V;d1-5MT?7Ba#fp*oM(+Bn_-~mf2Yh z#!h@EZki@>Qa5(e+D+SFr)lF{7~v*yFS||M^uF8lKGQ3`4>!*9&dl!49>S#k^$*R? zeDmJ-_l>^#tqWfUaD%)ziT!vci5`3`g(vWF1K*#*58&C^TzO8He=vnl;D-$Su&(@w zflnrp!ZZ4CHihT$f`Lz^Fb_YP#HaCNN&GlIqmM6klKQz6Uc&h#rg1^`qfSdzM8~$;TH_Np2AA}VhUfwFB$md zcKk{b%kZlT_G?M}I(|d%ezP6FmBMf1cl6bpPd#4LQh z6D|7g3H+sjze?e+@i)rm8%pVK75VQ{_7Msqf4wrz3pj=xnft7pvtK})|oMhWK)I(d6E= zMifvD?Pjgq0n2mrIa+M-C!L~TQ^1pU%NK3S%TAV!>)S;?7=%0A!} z9cr~LpLhMh*i>p^;LB4PCx6V&`k8^?hd7HUHZ5ompDz0L)IJ7F8RME-xs>%d0W-~@ zBmKA0TFyy3PG!vuR2o1@VlHJFh{twMBl1kqz2y=?XNc*g&8<9;FO+;r)5o>D5t4;M;a8I4P`52Rzae6%pU@_WSML%dUU)-E>mn$FoO)5irWISL^4!-Cg>{5 z5Y&!+g|P4t&WI=rF0a>&)l+%)8PaYD3;B&rY0QwJ72ZK^&dFI*qhnULYSVo^HE1Z5 zfupsu3>WNdpH?r)&J+(7F#0l1_`161O*C{*W0*FL+_r*ek2|O8C~Rcuh&aT3+Py(3 z$LS0(A}6feHgBRdW#|2!r?PfnV_JAYl|T?BOpWeq**8K9Y0S_)s!~l&U9Z_?;vO6^ zB`GOWOqs(>tj{?^=9)53I!uh>#!?V8dhiwwEklq+PhAxlhIDvM0HQm&!~ z+g;Z$`kqzTWBZftSaDvPT-_mQ{w(Xjlcp?}6^3-1vQkzVvf7j$Sz}7CtYz1#3O7&| zTdt9HCJy0FL)M#;LCKVBWrK;sxU;Aov9#}|{Yg6jPLoAY zyNl}$*=|a|>@aZ*$2(*vRo>Ns_nUHy+-k^xiHBvkVDkUUCq3@DQvv@%X*A~)Cn?Y| z%S-p1w7nvW_U1t3H5BJIQwC8~nf6eYz5Lr}%6@rgW9$}kr3oir%<{i);!iTu zNY9WVQ-)>4l-u#RDF@`B2~W*;hbf2TPE!ucU54Ck$~|(##JlmJDMy95mBW-Nqj=De ztSMt+8!~RnL=cLTrZ{qpF?qaQa;8kF6Y}B;md9dnhLmrYg8J}8yRZc=t_z_Z_PABb z`C6(4OY2?+HBbve*bLV1!6I)S#xYwFog^gs2JA0 zI>;%GnYl~|QJw6Tzcmz7k?~O((*-xh%XNRwDi-@1*ntZ5EnUirkp`PJZ0YY%e*vvHg~3P0@Hsr#KMJ z!0aqF9fWl;XIr{6m|u;tXpwdr4PQr_pf*-e+nN$ADbom?8?Nf!i7)$-QWOeX(*h%X zx_g$VHQTAV)xWyp#_Hi_EU*hGH(NzOLa*qfA)^9T&pZI|G48geG!R zs|M210Oxu%Vw>-3mtlQwrhEmGA{yCnQskHz7bX(73faUQoVkjXd7Mo9~vA44f#`3WhhgtE>OdrJ%?kn zQYBF8@*=>Vxd`=X7@ZUhg+eyw#KpFe@sOxQ+%Tt*oMU^GH063bb47b((sS=+zm2=J z5xl8SXKN)3CUfr98%thj$V!6`A<4MDI5dUhMw`^xJi~4q?0{B8GL|R*n1Pw3dcdKR zu0gzTvY(-l1W9sBaL92x_x^NNm!een1iRRAM}nTB8V6E>UAvPKPad_}gI5QM5- zS?Awc07l1{Jz8Sat&YckBzsJoa=1{Ng>lHry2b^aX4t3fY)R|z;QuZ{>cp+=cY5kx zRHD3bYrnZ6fg&mmsS^76pz9r{TiLd0uhq(@F{}@SqYYi62TqRWlcw-K9-|Bg$0&8Z zZAJ?=v#HwdlwMeum1=eL5v*+Vad}p%f>G{eb@pilVs{#M@?+t2rG#Umlv{DNGewSN zfY`b-X4j%%yE&azvL`H>b!?-UovCnEkSV)w@z_e!J}`N#Xx3$41vFA%`|0ptuBPvm zvn{4mMT4X}zPFUig-2sOakb0Q8)5}n7~48G9pB1(Q*PaL4CZ;-cT!fP?Jtoz!EoH% z*i@Q2n?@zMf~z4i%p?zwKIqA2@C_$W%+33pLO6L|I@?{*v`ROHV@qhHV7J8pnCsam zN{(mmb@OUsjp6&qC_2IwTo>1G=B`?+VN%Y>{XDPW#-?uXl#$*{Z!braDeE}TeDYb# zKj`?AybDf{DNuMo6&xV*X@1QBp$Ca9h*`Ik8%y)>Fs4F^xzx04DqYbFrN}wgAP6W;q!su`5>=6 zoZ%IEE)x9mG=#sMdd9=w4#M(WiPxiiI>Jvu!rwK$FF|^H&ml35S==(VOrte{FQQG? zjA^tBUcu}yBKcVYCt&faACQ2(yzau~*cS*m$`vyth%CnV)S{!}AF4HhNx~|W!`~J?!64>Q-oF*iLrrMb(&9nDCDOX*Eocey za3ftalvQQ7EOd~C%&?0J)SwUR(BFXzawRO>j0J&#p{JWV?Hk=_+B-hgf3%g1w7>qNhxuv6*Qtdkr5u_uNomk(Gr7H??zhsrfFxod5`Nln_TqQ$<^`Hq3>1%->9_ucb`erm>y3YR9m6%nc&-c`U*USdLG{#8?rD zL4vgJ2Owm|nImGx{0W%l%FNE8pA4C;J2d`wCcsQ9b6tK8yJ}+dJZ=dESzDWkK{dFw zSv44_k$N$?10P44|5ULR&!QjCF&Cd@1^+}$gIq;}T%4CmuL!*uS$k920Oe8@(>t=ZD#_|~n;NE8kFei;h}M6S*8ea& z&qreNZ>q?@sp0|7e~|!v^qk5+|78pwB8NE_um}8ykiGSqJRH+xen_$-sncXcC~k;- zjfOZ8LyrtW&L0iT^|WY_NJ8Y@@|ZlxqN0(tpZ|{XIl_D%Utqh}yVvk@`1#=O_wf7p dgXr$hD|dep-F+VaO^pAcVBgZKB!X+pw*i%f+#&z~ diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/JavaRestTestPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/JavaRestTestPlugin.class deleted file mode 100644 index 1fb524df06b8b006bc94c7b4cf1645ff486aa6d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3577 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesPlugin$2.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesPlugin$2.class deleted file mode 100644 index 1bf2deb2f9ab2738d222adb613cd40d9274a3430..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1123 zcmbVLT~8B16g|@xx~&V8^$Qdgb=9^6S1|;&gv2x$ObQZ9@Wq$ucGwOsyPMfrgrDVu zn)u)k@WG#CytC~CNsWo!WbW78Ju~;*J3oJa{{dhFD-~E+s-l8h7H(U(Qzd`d!d(mZ z%D7*K%P_46GIgIYtaoA+cyS`4RB+`Fyg>1OC_F7v?I|PPk)Rc4$`|Q=m<2Lw5x}O5 zq~2n9UY`h|amY|=$9=&t*O8If%T9Vi9q?XA5vLRTJUrw|8h;clnJY8cZ=y)3cF5CI zkh?L->Fyd;Q0dAb;yP1w;ET>NKjmJgW$5kjbg;{l&0#3yQQ&p8l2Onak8BZ6wVPA( zTAG_L{DrN@2Aj&T8DxrU8Anu$N$S!*F|s~EL)|ro`7sI@o=t#7cMkbUug_hc zB;mRHl;PKZ&dBzerg@~wT6uRzBS{>1iHc8UUnp;XWQ=8SrR5R#b?UV*ax|7l0LQ}D z!}!1Eza1y%rmL?KdBD?;Ei<{rdM=Yp=MNxfE}xXQy&>pWq;X+*MoCzvcUhq)%W5^# zcw^DBF++NmtPd!nKzgaU@&&B<4TYvtbV^?_^}gv$J7r^hru_ouNIEEy)P#6S_9xuL w8EO={HpIX@E|W)S`B@B8xI$h5S1H5j>sTON!Xj?azb3LsIG}8rP}21M0q}A|00000 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/RestResourcesPlugin.class deleted file mode 100644 index ef4c899a338ae8b94145ac8c4400cb64b537e849..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7906 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/YamlRestTestPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/test/rest/YamlRestTestPlugin.class deleted file mode 100644 index 542227f961aee04962de620da2e9c2e6040ee5dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5064 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/DefaultTestClustersTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/DefaultTestClustersTask.class deleted file mode 100644 index 9d03246ab4dbc8e4294668b8ed9780dc01b7e279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 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 Jn~z$_{{xB8#-acK diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$1.class deleted file mode 100644 index d92ae1862266077372749ca8f71ab597279ed197..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1059 zcmbVL+invv5Is)P=E62jQ*NbPN*f^A29^jRK&|=`K&g}qQc!tzHtxpN#v6IPmC6So z;BSy9NIdWXd=z3F@(`4#va9vjXYARTbH=}Z|M&^u86M`5!)-gZBsN0FUXR@Usk<8ug+0D6l{5zot?GZAUreZW#E@xHY=+ggRHB=V2SUH) zgOHGNJMwvW#I>~R8JMvJFgS-w3Ed2N91B`Ly?8d22Gx`A%Rq6HX!_lYzv(4LhF*)u zqYj_!FJ`=m98jD>KT5POUQ3(z`oFY2vNBM8uaqA~G0D&oW)uyxc;KLl8fn%g&RbDz z95`5UP{1VzMYu$bRnoyO>I^G>q>g2fXl`Vr7}D?Mgk-$1ij@Y#+O#v~D`jY0I1)oW zmx4NID3pI@d#+nuWN#6vO|_i0BcDi*Ya@@j zZ(^@GPXW=MuG$7lPZGoMd_H(@a3XxOHy3<{)D|IZ(KX7`9ZQu;mV1CK2|);>uZUH$ zC7St2(+ljlyXRnT{TwOxJJN1B<9hkLPQK8#6xL`gBSUdMpvXRAgMGp_ x`%D;cmHZS6>$pPJ&g?H4mdInzUc>dN-M|g98EoPvZcUL*Tqawfy*aY<`~h?mB1HfI diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$CliEntry.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode$CliEntry.class deleted file mode 100644 index df1dabecfcebdca3951580ecfc4608ef0d2898aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 951 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/OpenSearchNode.class deleted file mode 100644 index 5aaa06f5ab250ca6487c0e5d8e370b2e818ceba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68092 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 J*%OJY{ss8OWWfLc diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/RunTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/RunTask.class deleted file mode 100644 index 88401734c11910aea33e906ba2ed87c1c0b967bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12002 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.class deleted file mode 100644 index e3db4080b838712af9eb1fcbfec36dc1b676d919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8617 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersAware.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersAware.class deleted file mode 100644 index 024edb8ce08e040004929cc62b55adf76a78241a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4540 zcmcIn`F9)D75<*>cpPbn2bnm;l%S-hc!4M(Aq1SJO`JF^j*>>kX@EkXM`L;7(TtcG zW$6xGpgY|trTf0o7PGx*F*2t1LrswnrY2Lhh-@V_x_uXY)`_IZN z0B*Er!9!~G za1Ook-a-z2cqqpcB%Hy+N=hY*CDhkn%5_9HoHsAUkMp1}oN%;FMC8ZK*i zpFp-^h0{(w2rWMlxOQxO_Po3x3-!=;3e%qBSY~K@?v%jhl3j6SSobY~(_PpO&3b;N z;MFWQu%vG;6)L_gJ60jIg3wHq6i$&`ipYuHslyb%{Y>2r?W#3z2lj$v9dTVRlu9*G zT_1@}WXYOc2xYJw6pEB;m3cN(53EF%z#U`%8;J3Ffxc<4O!Ee3ZPzN+s|%JtCkaL% zH|v?wnU}t;-jmI~aLFdR0~^sdN35%EK5|j|7GZ0NOExH?-ERU{l|pGQpOm!(Qg*>w z^n8oEekjm8ri>bLWObn|N1IL>-A|Qo(oIErW-9WL8~JG8Myzf^j*fT4vQOaN4Pj|_ zVSH5`=~fD-7S8jg#sGcG92MAf>4F^Hqe2&5=rmVH9JdP0Z3xFYqtXdudahabeaj6C z)6#L&U16L%1Yobg-fqg8@{id;=-Ug-MP{J#eScZ)cmlh-c)!cpju_~hVmAz35;ndB zsR}_fmaG;^(L-fo$*cROHDjx!8E%W%ZWRg*@7M7Gd{D=S@L>%f(eS8_$M8{sgBz$G zX_?0_nO03XN5DAhc_Gor+DR*1^2)(rKRz~qkL&mZ9@p^%KB?nV__T)4==dx?N9yMd zJjurw3>?+*MSMxamvwvvPZ{{?poXUn9M*S(ofc z95WDn#i{;b1|y_r`i8?;}Vs%Qw@x1rjXE;n)C zPHSGnrS4I^8U;gR13oTIW=+1M32Ut55u_Ei>8gz8w3h^SrH_~$x=DQK_e{yA51V5e zWyx|`;OZtZ4jV7k7N2=#`&Q9&i*?6YpVUcs)qwai2O&;7WZ7J{IINX}Q>?HPV-K{4 zzAfcdR!%7)uW)QjuCdoP58hK=W}I$T*S4M5tVHSlC!jMyj$dMlH#zkwJZ;K3^w^6e z2b^5pMY~e>qY09#_I6g)C6QGcvNTa&8UcNnYq{F9Y{rzmrRi+7qv2K6bpEX2FFO8; zzv(!lI?UTuKbcaM{{U{+ajR+_e^=e$A9z+^G?Ecj4BNfnEn6xRS!8JkE7c5b@_f$g zukrrQdfsxK38LTaGW(|;83d|kJe|(fL`K{S?~*QO@L)7PIF$-wtRubCa&Yc)%}Ns! z_Kw$}4ZoUyN_ME`pIvRl*=QmqJgLG()A$`yO~1YV|F`B1O>H5@4orKZg&eslUGo!a z$^&`TD4lx6c8|E_lU}**s2VvK+l=GBY&%OW?*fpLGhRz>YWO>n8_>`5k!! zzb^;+Sd*}m-;%rd)`PcVl+S)rZ{(BZ9yjrSjO%~%+p>qx$0n~pOf=9V&_J(XSLk~N z+g`$^bKIot$rXNC;sp%6O2*9%WCT`_1)238OswE4wcOH!6m?K-84>mB6qU^U1a4r6 zlm@P$=mxg-;Oz56(Tj2Z?@+3+2V1e1@3-Lu4#L8n{HmS8qd0^KQio&In8eL|BYxb1 z-L$E|buYv?mwR|THgb}iLj9DEo=AuC1#mc$rN_ir76CJ3lY>S2OnGNyqVHu4pX;4G z_ae5PUBR_Lse$bY>a@f=Q|Lz4(2Za}?GQ#rm4rn0F@Df1*~Y5uE)ox>BpUQYY_EYk z=n*B6l_rsRfbx`8`a}YA1bB|`X?(G?*kV0Gr9#A#mB=`epc-05bp_XT0d`vo*wC7( zLwEALem3T0MXV@t$Pwy^zVCiE^^Cuo$hXaN#8@AHjbCq4*Ly diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersException.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersException.class deleted file mode 100644 index 2abe2ba2e9f7d92cac99a7064b311c430c5bbc72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 719 zcmbV}O;5r=5Qg97!z!XE3L+;Cn((DPYQ%6MnwT^mgm7QVrmQI~*|zH6@cT|Rq~c^bGOfx)cL%a3P& znU3N^SD2v)LfegkP^iG{QPPhAx%ce3=RD^*FZc034}Sr$j4y{Vj0;(0 z@wSH95u`9DAM;rhuyC4G-W|bvSk$nj;fjW327RB~c~7(~KkyD1u9jV|Ww;&T_=0=p zuF>-NjxCHp_AXpa>!Qn6-Ow||x+O_Hn+z+8^wK@P&nW?Gj%mBT<+L_M zu#IIt8q`50YgFhNaRX< zE6h-)TBSAOwM-o(sLUAp&Dybu7^Y0uXi2+jz3T8NNDHXqK~2U82Cn?n#}C`WBR(d2eDru?&}inYadVepI*v|JdDy~SUBkAH z&r#Fxg^oJb8P500T$aq9Fv`5$*x}T3yvfbLmDj;YySLMDhh}`4$}a3M{FdZ1HW0Pz z26yPj@bi&oF_ENd;L$KiN}f4bJLrg$y^LHQe>PbfvD*^2?Wz^XiMiZong5qMs?|0> zXgt%J8tyX89HRFqb{NhbuZL;6(6gXSfaP*>+R`PSqTd+CNt&b8A_nLSWakS%g3bSg zf%~)@z$toWNC$WfdG+gRoyAKyOFQa6yb@dZjx0)>7Yn~4^*z$}3y+Z6TzG&q13d>B z=6?XY`!h1PA3_5jU}yl+NlH1HA~(SA^yUeM@RT6_K~Da}0{&8trz7LBV{(Hjyh^S| zDY)10Izc_BY_TB{zR^XsL_!%Cdp?}MmDS1UW!EYVN@aDBtjdFL;ynGQF@d*`SCSb_ j(*G2pnZOLr5Y}PZ%g-&`MwJ|2q_w2!66qLt2bcc^IbXx` diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersPlugin$TestClustersHookPlugin$2.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersPlugin$TestClustersHookPlugin$2.class deleted file mode 100644 index e22837a5d2420054146f3f3ad0cf0e606912dcff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2933 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 A<^TWy diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersRegistry.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersRegistry.class deleted file mode 100644 index dd095c527132ca11ead08bac58f39790393dadaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3536 zcmbVO`+F4C8Ga|b$!s5?r+xg{pZiDjZ_qx~_sq`jPBwXzhdfWtp7WjWd%w&1F7x^S z|M71CyYXQfy*R4kSPF#{ifJ6ji8M~)$!>Jul#0`7q;OOo&Zu}Qjh_19=`_ybTpAm3 zz6Spx?Uw;@r;r!@Q@nho(GLsjK1tV`8lqm!rMJcmx%ys<0aDo$tT@woKFl^hsG-lWQ zKzK#BQ1ce71=2Uggb%o`Eewa!8%*1<=KTq0K{$cyEs|2_s|A*wf5NDer@LTP93!ZC zL^-|kc3-(+X1iOgnr|6)*BFr(A~$vKgS1n@ z*0u6rSXQ)#hw!k1-LgG=OD(O1!M+i%w_(fit8{L-%=m;w+gUbjU#R$@h9BX_Dt@Bj zr}&wMK@9QX!=4hB`(eYM<7;c!h2d2fEH(}I;{g>v*YFY^mKeWK@kM@BjfUUiWfiYzconZ{_?=u{m%?x0O%3;@p}z#;cW%wDOaC&J)uk2n^L+h%7GrZIy=dbUU4NNPrfZgRi726QS*iV z{EPY}!`FQg4CxlzPndUl?(A59$V*F_cnrgBt)5#?8V&E@T@{x#yoWz1=xg0e$J>)w z!yoa!h7Y9Af5M+N`~|P6_^XD$;fjKtZ4+V5{8RCF1rOc~XIl=gFut(JfiSP2ry_!x zD4Yr&&Bcl$nklO({i{hUUObv7Y(xuk2u+t2+`9&F9Hupb9=eINU)A>5zRR8v&#|sH z=O*I7je)|Z(aLOQHQNC_pY|RTWus;XZLT-^LF+LiN*p>OvD+|hqH)XN!Tyw})`%EW z$Z8>*={kYIa^zHwhob?_zLhXa>|mW7;2s6E+4^8^VUs1>_VO#g8rbYCr|hS{VxV}9Xk5!$@7T(<~ zF-poZmjK}m=<>w8D?d&8zQIFQFfsUY^^YV455#>4d;3U#dmCRFA{sH=reV!GYgJEj z2fz4wq2O+GVw-GJ{NCJ#9QsKc;JyP1WMu#3J|o*D>G_a;AJ6QP&GUmqP-K7S`UpAB zQBvV=|G=kE1~Q3Eav7b==(-Md;GamH`V`&Qk><9CTkSg5T?=7%bIl;hb%<-8`}>fk zqDM*5>VVjTy*w!x!M;eDpz;pV`UjV=e&7?N2g4J1a~&*FL|A+eqg18f`%RS>$s<+vQPaA?8@Rm#myx^{o$lzsN!qem z>PhemUSf7~-Gg;BemzmP5;IHGmcG8GzP?D`4?<~WJr(cAfx55C9J)fNE4`O-hU(NM z+<6(JA7M*o>kVw{Kr-ClmHZcaPbD&m!VP2-*qHclcJ8HR^j(FvmrtQDVaK&>_WbD8 zul_TbT*7xE!@oB08!l}1Bywi(6j`_Ln~(EUw=iIqs#X!9-xbq}^jVVJ@u zI<=qSevDxl#}*u7!W|~p6XZKe&MCg@G&yGI@gYp0NXl_Mg(uFn_Mq~sk#)z3DTAsKEsn2Kb913^9m1c0SM8TD`!^H1^408ru|HC%rtcvZaFVL0w zl5!~=X{PfIdLsY2Gabv=`7yT0m*uAn*RJqt7ZuhkV~Xa>%9)`{K$^FY;{{A&>(^tn Byfpv- diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersThrottle.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestClustersThrottle.class deleted file mode 100644 index f4a06a16e881fae79e8693364296baab9e2fa5be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmbVKO-n*S6g}hDOS3flv|V6OEu2LQ3B^T15Qqhe`|)|vk>`6dGtd9kDrnIU=to8O znJWph7`S)NoilUpVeZH0+dF^;&I?H6(8H03V-F_+xt0#KYYU{Wu7?7dPBbQgQdfu6 zi{~RU12qb`Qt3v%3Wmz)1h0!3H`P|)t{a(&j20AHQpTUkiBaQ#q$BJ6AhwQ-l>-Ky zH5g1yAS zEwr>`mf9yP?_(W|``@Uw73*0UHK(M>TB6=;b6bUe6dRu&bmG1GQ}6Ypr6RJ(2{iuc zU!c5cOrVxL_M0;gRe{@Wm>cc{>VLbHxj>3%hQEdfNbq9E96d&Ig@NqNE5r*IQrO{` j90Qlgb1bg*Sro9#D9t!wm2t4j6_hv^n6rmd?4$YxGN!}a diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestDistribution.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testclusters/TestDistribution.class deleted file mode 100644 index cea376b89e451732b1fe4fa16f191fce3434be22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1136 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/TestFixturesPlugin$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/TestFixturesPlugin$1.class deleted file mode 100644 index 7cd7b87402883f9d4881875c541b9f653b037d53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5572 zcmcIod3Y3O8UIaolSy`mvQ3*nQfNcn&}0*`PnYF$P1$cpOW`AXv7;;yh+8IRotea`JkRlj+=+Pf@2Ih_5mZ~ zDOfsaJK1#B(Z_N|TF;y5V5MI{Lhu`wzCUMdGjpEdC{RWfXo8%vEw?ZwNS6#A&=2bA zf@kK^;{_|@nYNYQVh#ihl+)l%m~L{lf~%!2J8xL7p*xw0qFT>zy}&LvJ;H}=zLD-w zu8=h?A!37RnchYPPS>N9F_)X83z*-%M?rMJ9y1gy9yBducVTM3;f#o&FrtHYM$hfh z9aB69#HetWVcKC?hBJ`UUDx2_x<_Ysat*y#jYCGJ;8EdH-~CX!Ms#kVH+OHF1*#x^Y{Dr91Ve zHEuIQy@MHhDorfAUJ;mMc4pFWNY2}?kskKN>>xY0ReO860y`X-Kz_|!gbb}!GXAo( za);#^S;OhCK@v%CViY``uw)@#P=klqov>Y&dDPOU7=UV{*UTodP7idAo+Dbz@Tm5; z*iJ$&hY~5;No9vQuew1k8us+eB=-d6)ii8oEnW051)D-H2SBXWzgae<4b@~>5*wMu z*sxu2GNQpz-jdnPr%xb;wZGNM}uzDystIqmhA=tn$n(RfB>n z&kY%YY6Tau3yhmtmP9CU+iadv;y4(Zqw!XmRxH%BIS?aVqWQ$Kh8OHo(B9QuU1LRw z3R-LHQm}|3N-$*)UNu`vUd{k+y2QrG!f$!3-tH>Fb2GD7QrDKlBZu=W^v-anmS=Q- z_v~K6lyXlHQ&;qTns`11$3 zaIrszAK}My9KNGsa{P%L4=OAvo|kO1Q88qR`RTE5?csQojg6dnQqYJt}|{dn5^6?ycI!F##=z?9#wI_hF{?~8lHmdG&})YGz?*< zh9_gEiU-B1{16jg-f3C~?MWj&DBl%0c=c$4r}?_z&*hI zxPrf}q;VIn9@$CU`z_V!GpLE)IF@@>Cy8clVaM;mvgPN2@G z#R6LF6ynp+1nVLWxF-}R zb$FO=K7uFW42JPLJQe?urg!*8l}z7@_2{R`tr)-tT!XsAW;(GkaAGYT6|Od=dhSN^ zDO^xi8jgoXb~5=w6ERW4fq>f?1rg!(z0 zbr6(`BxPAZDQj$%l77z*VShji{>Xg)jnV$Mbn6OVi*$zScpYHgg;nbrf~|BS#=LLC zljwd6@vF@dGG($WU$6l0?^TZ3~fEDib-aUAE)3HlE%a(MEP~V_^B2MOyl+6HJ+g^y9eemxhZ_iMaovkiUZdED zr{U?6vJY4B+D@IFyo$d~{PwxIp$WfcaXdi0*`!@XNqO?z2nVjbdo~W?u)KRQUV@hf QcQ51J%c0;E^7r-s1H(Z;f&c&j diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/TestFixturesPlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/testfixtures/TestFixturesPlugin.class deleted file mode 100644 index f1801080835ea577d6e5f823952514b2938a1a5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19769 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/SymbolicLinkPreservingUntarTransform.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/SymbolicLinkPreservingUntarTransform.class deleted file mode 100644 index 6cde713ee8630031155612ad4dd20813696bc410..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 zcmb_gdwdjE75;9ryR(^09)#yWX{jZJ5MUK7LITAQ0)z&V<^cw1)5&Hw8M4{g&dl;C z;-gxv;tN|9T19MCe79H)uNLryTCMN*vp)XOfBi@K+2VI+W|LhKu<|p%?45J(oX2<1 zJ?GrB`~1si&jWZJ{;Fa*k_rY?m`JJEfk72Ruxj{rq#PO8DoT)5aKDN&I0{@9jo zq~0NicPe;T#k=rsxqL_t?@{nxDg8bbwQ!`h_e<&nayYEugDUFrh!lNP#fR`=$#7Vr zbZFbT~Z!;WA&cnrsH)Od28`^AV zFkxrSjB6TBawswA7y~rnIY!1!+0IC!YyU{UowkxxJKW)zuIcQtGJ`!C&v3f)OcG2k zlQojV0=Fy-&=Twhf^96GNuaU*Tqvoc(!31At+n&n=%Wg5fA$!2Bis4gnd|JZ^d`7`%HGB@A*YE{= zQDCN@_+cs)9H)f&C1$ULd97%E<>4c>JteUAdfKj)8%3a=#z_rd#xokeg0HghOe|X( zMkUW3SfSw*PHQ-Wvl`Cfq`<6VZdq^I{j*i@tcK@sUZA#^#qbz9{W;I{D@{{=rr`oE zYWNzyuHhS!`lh75<@?@OP!M(sE@}8SzN6v0cwWQza4`=gbb4U{((rw}py3Djp@tvf z#~OYjV`b{N&h8<{-Ybi&hM(eR8h(ynDEOs@U*Xp*aZ7pjwBfpqb$-#ih62-J$}3c`)fi!=nzpcRVx?e#A9tg#lU0HuUDil8 zZAw8Ezrk-Q9k`C*=81VZ*MIU5W{w!cX0x418s2ux8zSX;M#f|LTv>>=s4f+R3^y=t zK4fB@ypC6-BO+ENWeZH7#DcsN{i@q(x^|lPkGw=fBa)F9gI3usQxYE+6(&^?tkJny!{AI%2c_Z{P zn?M?`DmKpbO3N+0{Q@sb$bpxy@_OlQP$UG^|N?6K(k zXmV)8F3?}>S3*+oJJ~C|C@_D#5LuZ$_OKZ?Q$catV95B}ui(!N={DOQ&avgxS~D5b z@vEi`%p-+I9O?+#l1)a2Uj*FwfneC46&`y*6)Y0$W)CM;sG=& z_)Gr2_l*{rD8|MsX@Vb$_7J(1-}072;I;hBmdyvhIF^!Tug7r}X9+$9pV399AWo7f zK?BE_zqlNYq_uzntFeYNfjhC5TojI^5J44}o~|i5jnev2L~2S#5j{(B_BToi7L6jl z^&HB2>rX*#h@3-tuO2xCts#026}@`&6e=5Hi$_t_py;ttR5!%+_$5)cM30YR${Ey@ z;3B3rl<8%cFkLS@gK2_Y*7P%&QG%nW2t`g@c|lj?+nL0!>gpNH5@;yb%S)ewej2kM zBd4V2oW@PtrRKRuQLU@N%FWwP;GkT*Vt-JQboG)x^|{O6p!q zR4t6}KKz5YR`3UjL$tn;luBghv58bUnnev-Nh#P&>CHqPr?*xR`4;Ybndrk-qL0!; z4|4~1(=*J7Fk2+mi7uHzq`FC!V6J$CyW7S@+#Y6Eu<{13^pdX{v#-!hnSv4pJN*Bh ziky}!s8BFf;g2c!H|j~2y@Wb{W$LtfFJYd7S_Su9hQ3ij{S|Jf@;W*KIe(;7Jp_mN zzfdwo3M!Kd0(r&pN#7T$$#YJsY1~?#EjB^nI1lcnpCa^OA3cBHSm~;zFXdlF&9X3K qpTTrl!kGOWgA#TJooaAaf`0swPnB!A=4(5Qe9SEUbvA5MpBD#RFXIO%pvC6C(+cjUe}78P>vXcheT*vw83Vd?@3r z2|`d09-7HNGynAK^!?-Y4FE2n>A{`{2Ob;>Xhr0PMkNVN0z*^v5}=4R={yDHIa-APGXXnDe2J8t?cS-;n;fe zd%2(Gc8s~BW&fgSwtvEOMgsgnx-cQ#s+bu0QD+#=hX%EsrY1Sd`302k$-2ALIu9BG zE_22-BW(#y__V}zOOxCfavGq)gm@|ZLVsOUyIPaEiP2i(T79*x{&+^A6L7w<4>V3q zF?3e0uKT84A1(h0SrQOgl$$ORzBxFj%5JOS6Bmg?c{w>h25`MgME%Z LI|S6AUaEWo97Uv6 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/UnpackTransform.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/UnpackTransform.class deleted file mode 100644 index 55bb62bc82768910d216838ea9124c1e95d78e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3945 zcmbVPYj+#f72Q{sHMTT~jpHPwkQjmk@&kq>ghG^t8YdwN@`Kof0&QU|UCR@XX2i_M z*tC>K!=t4S-feipmwbgUtSD>o_|Vn0=;~kSKWR(%of*lJt)vNA&dj}Y&)MhfbI&>V z>L35T^fiDVeKjk|FsgF|>kt^G{HqiH;b$JONL8h(*M2EQDj za%lhpiyF#lEWyg)B+jbGvU=EQ^r50gj?!~AR5d)M!4pW&nx0vaf%JRIjiiLLCvGe z^i`-F*$BEwYlbp8x8?`3QgDlAV7X52D8YA~t~r5Kk!LL5TCnAW>IOYurwzf-wMct5Zx=LU88Te{(o^RSW|?iC#H@+F*99wRN%lyCDRM6MY9QlCF%8Q#@-xR*i?SNVkx0Rk#enS(U2&@njx@Q`jh$_}Ydq{! z&Ej&?8*e)~*CE!`xpQoPD!I4ynGUXcVJVtR%Vss)y9EY_T&3XpLk9?+Y?z_Th9 zS(^3aqP5CYVyQSP;-Q*tI%Q*yB2GD{p(gOal>v`zR*Swk+@dh;RkDVOzC#&~%kOv; z5w#|8IA+{xdoygzs~wj$&C+x|(rFOUJ!!LkR%8U;E1kewn`TQO^-iv_d@QFVR|P~~ z!wOT(HY*DybGX_P*x~&G*$!@A#wlT42IfwIb1l?n7S76Ikh`X|n+SI_YBAT4=)>!M zG2D&xoLlpXaUUGqP!)HmTwq>LOFx*BsxEyUH)6Mjr**7ijjd)w+q_JN)A0;`rQ_Fl zR>yDfoX#WR9)WEgYFNYbI$pqwI)00D%n616!|3UF3C{}j-|xDC&%&!t$zaJX`F$z8 z+>clIdbJ;?bo>s#=lC@>U|IBUOn(i3P+b40<4^drqVT$oHx!RI@s^Ia@s5t4VnV>U zMo-&JMG3$rydj*OdT_I6MHwJ)@LH7Ow#$am2)^o00yl)y&fS7tAzW>%If0ut*xhtw z3Uu+LWxX|eM_Ac$vh(mz$FLun?{A2(U8parA9Fdb*T!ONXCQbYcI-P0r2q-Se;<79?`zTN0V99fzp71-Z9c;BUujJIBl#7jpzQt#F6Oc5vkj8q= zsV=wau5ra(Ue_hqPJ+#M=-X+$i@&fMTRm)#MQiBQUFomvcV@L}vxfJ#YQ;T2Ce=9~ zath#lqkh}6f+ta~1Ki^+&92=-n>HEh@vcw0ybf`Xvm<%Z&gL)EVS55M!ehQv%zzt8 z54LykVB|4M__YPq%>}N{<~t*5cu&Xs_((?q6FTxZ#SB|-36`_sE=!{jo($|Krn(@x z9)p1(J7xPX+dE3P>kD0(-73m*U3adfx7L@tUtCg*sV~z#h&L7{X0_ zU&qnSl-MhA3x=_epP1#ijn6E{f8!5{ZoUtW)*%GyNC-vqK6MLVAf9YjmG0J7e(x$5p?!!|d6^2l`g8TVZ{hPsLNTrv%c8t51Ai^<@ zABf|wBl#a>G@KMe-CO$8s-k0B2PrFv&^sE_Qt?ZKsgMd6qS)z?5R-uh3BbM(101Hb z+L_eo*hTE#QOdW;8-Wx}H3e%z08O-vnc0Yp~I2s_b>assd_2L73j1QSW TPw>0Kdy>>lET9;VB#Qq7uaQY2 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/UnzipTransform.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/transform/UnzipTransform.class deleted file mode 100644 index 90dc5c0f21e8b83f11875d85246f6fa4ad7b370b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3482 zcmb7H{c{{;9slg*k|(#fN!zrPZcE>!(4;R}K&j;}RA`#eluJ@c($a#;_HL8gW^eb{ z-3x6+5mXd>LGg_$_=Xbn2SS23Q3bRuMyT8;Z*2bCJo-&LNS@bQEWHWjJTnHk%A+mOlqmp z63=r2gGl3SLO|lqa@BS!3O2Xh6u;sTsvb$P-eB5LjC4$Q&R}kAcP`0YYaFGV zo~e+z9yjYz*$B7-o&dd4M=q4Dy7V{@c%1N**YL|$9K?;SMKdVNM8mDvqhRp=t2Y5( zLx5020}BFAXt;m{1?!J`UKp@Q>*H2f^(w)-E?n%!B@Lg&lLDX9@OeC?;R|?L!7Wl_ zyJC{IN~@mH@I`z{!L0kV ztT_%>LlntmNt0#DuGJk&GOG9~en#$@XsFS+UCORT5Uqop7&UX=8ur|>8J@PoDtAF> zx*=!D;k30aO_Xk{wkAc@wWd=XCbjgJOt>F=u3%pxw3Q+e+j>ZI?SK=U9pcFghHBzLwSGlS zQpi-$RhzHaKK;xyL^G~^f%Bf_MX$%Gvwe3(p+9N)H9H765odV8PyjEfn#W6OOIt(7 zWEy&@W6Vumk%#&}WVk2($xd74quJ?^RrYE%R;s+1$0ieFa%Hc6u_UiD&fwL8NDGPE zhfL{-R2(=VJ#oB%j6G(hGS#TpnS;PedDc3diUX$velADxYYO(P_Mh!8c=J|r;&8wx(cmt}@4FH3%JBV=$@ zxOVQl0_BYeeLKHh(czug%e@v8pdSN-Sf$xVjFG4S<$xbWebyd$du~S#yPRn^rTDofyJq0b=>Dt?GAWMs1!*BRf z{w;oot6cZuuXvaKzl(oFYZfwg=dqRFk1+^$V+#&pJD>V{aSsMjz+n_|3`3a4y*Ps- zc$ANKo3HuD`A~ln!+4h1=P*i54^Y=}Y8%C$`0L;=I6++{{2k-eRKh>G{tFXPerBPP zem@T2ARq9@@H{mc)IN<%xC3`WP=kfLxa%h7ReY4Tb;_(I8I`-cX{RiM_h{=OW_LT@ zp{@5YzkBg}+FhjgL&R?;E|zgGWyDlRNc9QgUV!>O1_kaD$O+v4UmO(Z71;0}9N>4E zC8r8x1dc|32~|u&yx=bpMPSD=eaL?>9jPMH?tde*%<}BKjvVqw)s7s)37V}iBpn#x aKEq)ClB>$ISFwm+P~`;SZo-rNKlwirF}yhd diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/FileUtils.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/FileUtils.class deleted file mode 100644 index 84c739d9c0627d2afb4b49784741a52bdaebbda7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1937 zcmb7FNmCm~6#iO_G_n|M%w`kEW`d0Y0hSjM+X&-eVQgZtIAV!RlBz~(!x%B6ni(9Z zRORMF4*3CaPjSh`mtf*-mt1nmEmgUvDwkC5NkPc#9?3|MLn2l6@|J$@`(D4EAOHU9 zTL9PbVGKGFF*M+^9InXWs*Y<>^y_#thPQA%hA?jExEVt%upFpG50Wtq;+9+u)uI=- zvMqmzp{A>QmO)E7dBJcZZP{XCb!9=g(|n;ol7_UC zgI$*O9{UMeM!PJ za2l-!#_*1T2S^(jN1EZhB(200FItHiJGUfq%OXEEd3P-*ioWI83}Y#7+m3JM6eA{q z6gl5<*UiojuhZn7Y568EkTSn+iZz1i^_mN-zG-=;bmIpe#E9a&!0pAvZe;RVkrtoo&UQs32GeZLrLEsr`NsIh9wM|5q2!d4Y9Li?3|SI?8xTHDPeCYj{3?$U3-4$!rr1cmf{@rq>K`^UQyIiCPZ13siUUTm$)|})(EF&tEs7MSqY9I ztX>#g!6|w=+6LO>b`z&xBAjiAXx~83*2FU}5Z%VH?_MI7-9~MiY>e?< zvfo5wPwx)uLYSkiF}}6`d(R6T@7ci#hKar%)H7_rr^QKz@6j-zwQ4F{WNZIdxikjC ztzi|hT}5n+sEDmvCac9WSyGl`OY5dhbf^P1aaNf(hbzrXS#IrrN(qu}6_%DmSR`p0 zBx#R{Rp2UpfUXf~{ivfa)*0NuWh7~&?+^V)FoZO2V;aNsXxxE^6h0>DCm6*u+{0(M zkI(60`~na0H9a&x(L3`qy)nOF4!@DdF1<3cDE$=W8QHvnc3OGJ;XJK0((K^^tw0ff zKnE^TscsQtog@pPi{!GLfv%fYaguZ*R@c4dN8_L9{tKaY LGVdev5H9@#rQ7kR diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/GradleUtils$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/GradleUtils$1.class deleted file mode 100644 index 110aabb56b570ce3791ed558788b9c82c2c0fdae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1133 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/PermissionUtils.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/PermissionUtils.class deleted file mode 100644 index 05d38afffec1a2e04c4db8ed988ba59fb1db11e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2573 zcmb7GT~iZR7=8|fEUW<{B1oVXR9XZvR$HtMqL@mJ2GK@EYi+xPC0R*!GrK2#^n%~f zkDFd}rnl{lGCKXZ>P7!Z|Af=&b552dkc_r4b3Welp67kuue1540cxE$v49H(E)GE8k_i)O10S2{#bq@tso@g?R}5qXqVtaH z$OVDUspEG9B57~k7U<79u6?~)UbFpM)>?^@fvlIeN_Q;ZQTtFBkwqsEIFa@ILei_) zZeUw}zL+fd)_TcKR;5!)-mv|$69kUu-sUz)33TO)Wp7>J&{X!J^~g%Pj+fkUsDHzf z#Z*So*jK6FB7T2OPs8PGNr*^=sse-U0C-AxQWkVC^2o6t3!K`cXi4ciYgI{`Uf?`g zqV>fc(H-8PiJ{#NKdtOIy|A0j{F|X0AxJF{xi=@R{N}P%38QFUev-EkVuPGyeoHcX_RoKtWuS@r4dVvEB6XLhiTQL@}ZGRGjf1={Hd)&xds=9^9~ zRh`nh?NhdfmwQoASUS*mC3lIO`l`c`GxmPKzp=#Sz?H*Uu8DRKsG#c&%eu_GE-dy^@Z?1EKV z^b6Ip?aF#Oy0NM*%_{D91%?|pYLN;3SI75a_zd@B_#6)ervH08kZuEYW$mGzXRZ%u z5xXL@Qs=TGtv8E`HG5;QV9S>B6)3mut)>j7OI8r1?(ZqyMtD57B{1;?zU0Fs_=n-LwP~k4H*d*RM;5sXq~%H)xEdO0D$G=q zqhS%ZN*Z7p_(6@2Ay>sRU`?F?2;Ak5ntvx%|)ZOFv#e;FLD#yKzai1N><~i67 zL_N%GO-@m(!e^F`=h#%b)qzGsc1v%E*5FjDV#>f*s7-WAK`cOW=cyZHL7?7Dc1&uts^uv~S@ zYR$4!rdkw2q^(jZ=SZ7Q76c|+{A1fSTD@v4>qlZklr>$tJC4I@!sbcT`_ zguym?ekMdM9DSP391Q-3nZR6ASSB?wU`FenpfSGUG^@h%H*a-tb`#&DClNP(#Qv8s z?{K;rNf&IsQ@t=E>M(`2$eLP7~Hm}FUe*sw1 Bryl?S diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/Util$1.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/Util$1.class deleted file mode 100644 index 91ce9111c99d49d6ce08167d598cd54701ac0acd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 782 zcmah{-%k@k5dO9tJ$hWF0^$!uic~En@j_z4gT@!4(WK%-mG|v+y)IdIo4q~$E=(jw z5{=LPQO4Q3l2jk)CAYIP`DW&uZ|C=)%bx%a@uY!8+>KDjy=83Teu%9Q4?=7+L}y%e zGU1%C3|swEe#Vo+NtJvmbn2wh$)K1_loa+kL;Z!+(!FG8cdte6oiGGPW+WI^`cjMI z;`3104}7R7vf4K(S0~&`?@xn)8_S#_eyg>xM~dgUAa}QKY?hdb(7E6?9VeOPBPA+= zABkn>fLJX#GjLYwjA6aIR}oWOXGs+$L^LpkO~q^J`!{^zQ$HxNd!{)t+}Mml zv}5exAr(CqxqD-B7bC<{j0Sc?bYeWhV}@2K(@YPBow-c^Nqav$6{%y`o|8tBTuoQ0 zcQ8l!nenS0H2y-@Kgi}aZ%Y{3f&cZJ7C@V}r%sE+S}iXI-D>nV5P@NtZqLZ~k*K$S z0oMD5+Lsa&(^)4BaET_Jae0q$11<6xZen#>;gGDyHG5ydzGH#m7lLyN)F|ny$d8#K e&1sPUYb9zOx5x(Az-`nSdhrSC7)wz=B? diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/Util.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/util/Util.class deleted file mode 100644 index f59dcd65f1787f78fb3e24bf9cbf28341e9e7fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9498 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantBasePlugin.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantBasePlugin.class deleted file mode 100644 index d165dc635c33a2785a3f0e8fbc49aaf7d49c55a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4170 zcmb_f`EwIx7=FGq?Y7Ofgm7s^El{)vC7_5v5otrYOaTcZhl<;Dn=DN?akD9)c;DiM z_lXAx9(bUmPMOicUmgD@$LHJKHpeElI8LX@cf9BGUSIzF`||GqZpTl}Xu-A+7GS&l z*r8x&2zMc_U`W9(d9+)>o)GTF-bN%8>{D=$-0g3~y$TLUf`cI(!r=(TX(0?FsbHiT z?a<|BG=vn=5eQ^L7>5}_06DpOs0m?MA>?5zC@7dva75o=5@_VrlYiJB%?yrcxwo1RDaY5B3isoge9%cUK}>luk$ zTA=r;I0ec*SWRGS2DVbNw4|@=kbtm>P}N(3mV~V($A+|=mwM&;Rxv?*`ljVJC5)7* z*#(Pv9Pn-kfBmDINyvNRU@@_VHWvOs8;p0|f|Sw(pj%W;#6 z<2a$>VLT$R<0@;W!_(p~Vg)BvtiYoJTmGZWiuSRzx)`^NTy#`ChQ|e#%|z)HoPsA* zJc*}RI9^e)aH{jwDmsC1W!b2B8qYB8JQh!vz=~N(_R2=Zvv^Ly^D17zi&Qd@&DwdJ z1u&%B>Fh{;P6J*FV=ccw43FBQ# zcrT2874PE%1s|&T2p{w8j6C>6#i#g8#pgJy;GBvtz_vI$fD&mvlaXmI5S^9Z#TLv; ztF+%69<3?e-b*07J}l7I*;T6+h#9Hfl<<;BpwmyEb7beEWt6O=jtU#9(s9g{woPZO zIlZcdx~Cg6=TL8L#nWW5tZ8d(#ul}A)zI!I=FFh3ffM^qhgN{2m+T1ShrA;$12_+Fs$PkA_bM`X@7q zJhJ^q{eov49nCn83-T57Wwp*fBdas#T?%@1MBBN zTPdyiT40?IqUq;c2_97>^F^4<7EF4=hv-haW$B~DQE)l0B4BRAYbM^FYz5z_xQOpn zzR%aG*en}uA2tdsElv%Y@?&~5?!2?u-nCIJX=g1)H8ft_DY!&5;@Rw2At&%xY1w)L z+{v(AGg*K64wtgDmKn5)>MmoH4WyKO_Lr{8nR&hNIIl}ja!ku)5(eY1;74{YA0XBI z5x8MyIxJzdTlgbo34g>i@SATNe%{Pol;48i_1(WhT;d{tPLBv!gD$RBmjK=9;f^C4 zz5FDzXoG@!o}KHNL_lB?b*!Y|BrqPrylvt|MJ{_lij@ zlI~q2aGAQeY9rW}ahdz^5>}^Y$!^b;Fmb*?p!+y zu1BDCv!HO+zbCwyjDO%pDX}ye2OWu1$tdMW83PVgjJ`?gLHZ^$Jiz}TmT}!is~VX7 nOVP-ab_To=-{J>+NAT|Bz4ZQm{y%^tc+goHIEpcEmBrXUI`5TQ diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantExtension.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantExtension.class deleted file mode 100644 index cbeaf26f5b03600aa5df74c3e99ca8e575ad0e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3482 zcma)8Yje{^6g_Llb`mK8452*R5FT+7if9W28k&|z0s$w`ggPy>1;rMQz?O_G8|eG} z?my{=cBV|n{m^N@_D6MkR+1e>awhq*^6uU}_uPBW-u1u#{rMMwN&MW8H1Z1Ov5>(H z1vl|#9}ZwKgC#k+B`0smp&+Nr^4Hta`W-pkR&WRJ_ToJS@8hn5d(fr9ih?3aaxfI! zM=67{{H{s^PD}-R@jy-67GuGmimM)I~(*2<1vsu-GHGqsvyH_ejaXg3|ZW;pKC zDS^Hvvux>Z!!ZQTYO(GTi$=Lo(VbcT4)IaU`m$-2?8o)O zynwhZkUno(raLXLKNrQ}InVW2L7?Z7U81jTdDAi$8r2oUxuvg2@7cUv)GGzuG37j1 z>~UAky1+>fku|XDhVB$s+eHfKYXv`ynI|qSOxuzvuK7*{_H0CloXduLQI>vJZY-3k zpi%;R7aNvqR*iyLH%aP(W!bLo(g8Ugh{C#h{b603vuX{O{?qjUdMFo1mWjy5mj(Js z=xSRVJKCfgu36Ej2f|K9*S1{q(Jnkf6asa4C9?D?3zBN;m4;WCH4O(=0=*M9Q6`E~n#yeeEYR2;&HiX(Dp;<1XO zIHuwWo~rl&A7=28ijVP$fD(!%gHKgl#b+6OuHp-PsbUnl48BtFHNH{tExya(dw~Iu zP`k=1e!!0cFGQM=3_pAsRs4h*iE%~XgtXoI^0ySyrtUD39h20N~8 z3FKqXNDO;Z?@UDd-5!pxs6~avOTpAdpMp-qOR`6?zl6mW?8%#Scq8jsF2LKG8ygFH^FGo&=sD)mg}=p5rn#u)atFeDl7jxwC< z!qBhx6cgpg;WIsi^K>AYF3>@eUzJRICyux9Trx&=p4DIQu!nuy4pkMec~p5G)67tU zsBd&7-M10x#VwOQ(v@`I2BZrly}V`8qqsowG9j9md0rVNB>M{&!Wy^}BAe=}fs3rY zpV?`ilp08n?_Vcezx;Q3C+~S^zChERoTlY#?~%Anf%v3kwWJ2KB&D>lN0xtY3;P73 p8YqPrX1g++#g%|zSf%pr?T@Q;l`1tuG{Y*riaC$gH7`lm{|Bc?Hq8J4 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantMachine$ProgressOutputStream.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantMachine$ProgressOutputStream.class deleted file mode 100644 index 0b5278cac47216a09442386114f212c6efefdd8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2684 zcmbVOTT>iG6#jY_nB8T#WRoCjh!{zPh3sNt0JDgOH3(*b=n_!z)(oB9fnjE9rWeC6 z(Z69;h(#VOpR6+KgIYf5Z?P;-&&-k~OohwCO!u5Vm+yRi`bDCh(S$+)R_Cn8768&XUEg6sFrz!h7wwjTsH^tB+arn$z%shC2+M zuIE%e;rnH$S`{9{jk4oa3ssM=TcTjvQg}AE3Kp%JcD2yZF5Ep}R%GaEEX{J8Ov%%w z@&@1Lg}OAY!u`5!NYk+k_iXO%EV{zu((%YFT`{XRmvv7tj2&q(8EROZpj4zsh>BC> zq)paLe_)g$AAomUVf%u6My-*@Hm8JaSy&Fod2ZB9TPVv((>CQ4gBU!S>0uy8f-ep& zGqjYPbxO6XOz{`$TWi8w;%gR3vSr8M)-v}@^&JUYRALP08f-7trCXPjx!_w2`kZYG zuViuG7o=4>Q3eBXK8X>{aJIH+3l*YZ|C-5W=s5^;$8A8pGk942NJ?V&Q_-YR!6}Lu z&d2x-h_r&`RHN(|Ix3PIoAca_$ZIt$$0rZTL8YImICakuGo~W@?7>3Ft3(-63&NMP zjxRNob-aj|bi9nbj`QfzF^>g;6%~?(MICqXp^mdSr{g13G%V@32MW|Z?Kskx9(U)3 ztU2p`R~uGR_*lm$_>`fwCM?U*u&U!Te6HaO9be)rGJBS69m5#X!I5XUrOxDW%Q|*v z8HVD0sB=%}=wM}y#OuZ%BZl6pkd1N*`^XG8=zQ-mObreNWqHDe64_Hd-aJJ++K;Z= z;_I;4Q14-wi>sy6z$08~@jz0W3H**8@8sQXSde-CSPbu5P^Th}r=17X42aQZYlT|= z8Vu?#Y^t9zys*VLMai)ZE>}!hqnR(M{ZWsYh+*Kcx0nD7*H5t#RPGenlMJiJ419_p z#Abg$$aDTQ1cbY;MFn}K8OY+=hA?EYIp0V`8%&MRwS*Mw8rId}tuhQeCEm2RolOz_ zg+i{QveRJFc9k7xv+go{+Z-=43L8WCqx1(t&Eny0Xp$T-T%xWUqrTdtACp+*qQot$ zVoFieu)%QoP(pFo7%o0v5B+rcP&bYw5~?NAETP&as1}2HZ+Ew9sDTEkt6re>KKlBG zELvzB&kgT_<-SKEcXb!Z-0&l`WLx*pmcTBw+(T%?50QF=^vGjmfNc97^dwfk3mjgg zcMn?W{WH>df=>KG&VR)ie#0vy?WZ8>`qYotXjHQSTqXc&ra&ffh2}be4JExK31PoZ z;07^7D++9#Y?P-y!jl}{Lq`HXqH})aCv+%;BYWsd;3=eRklF79=MUoMPs;hPCOCcj zaQcuVICK?57qxr^Y=nZO!2ZPrjid}$k&hru(5PT$RKPuSvmjmqih@j#(%(eEKS7)@ rp-dE~1qIScU=(iz<278OF-wv&bZ2~(Mu8gc(=JVsoTB3$dfxpX2U7-h diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantMachine$VagrantExecSpec.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantMachine$VagrantExecSpec.class deleted file mode 100644 index 3d541ff918dd207b5118e1cd54a61dee61e8de1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1318 zcmbu9T~8B16o%jF*V4M!+DiQvLBLXwz0(+*CZ^F~Qh}t}8?UCzxLwlDHnUSAm;N3T zjT$BK!sx9(%6MkCfRrLJ-ptuKea|!JygS>UzrKD0a34+%7Vcz`LB%Y~W~rKG#lotE zy9|~a^!r?HGZdRUe3v^tEVYp7To=^<) zv23XQp7UxbUF`?bc_F#l+Z+hRb)e{gY|Hl~*Fz;3?wwgsJ9%=QAeovkeO+frR+ifg zsYb9(xO~%>Vq@6v2=$zIdXyXL7?kO(yjJsVrcVP?{c`0<`!0nmJ$x%%2)1lC< zKRmZ+|0uG(T$$jzDJha&ks&CZT+HN)z^5HUyJ zibbDN3JKF6Jta(wQKT-TNR5K-PxM?sniMn+WlEHBC^Cxa>OR^nN@eMBh7su97^O{?bM>yuf@an?s-eL96@ z#$|Ye8@M^Cuhcl}3$gZ3VHwLzU$eMHJ)0S~C?3w3HmoF!L-CB?iS^?YR&4tmX=4X7 gbYlv{j$gz)acgK7{yW) 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 diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantProgressLogger.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantProgressLogger.class deleted file mode 100644 index 2b861b0403c202b47103f7da4181b0cec4161dcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1947 zcmbVM+fo}x5Iv*2loepv-~hpv6L3JXkrRBu7RZ3O$q|52-xomr~_Q&uSqeQv8sYo|&G$oIcY%f4+PBJAixmCWec+8Np-} zab%RZrNn1Sd>+A63>R=)i8~S8RqH(^ro*@&!Gi>a$R)rq7sh;yJQl*phq1`ev${0D zSXf{Ac5`cKx$u-BQGCJodB)&oEmM-VZq~94@w{a^lAE&3jiw+k=ldpi>Y}=7i|6_e z3=xAnvZ$MM7p@ClB{zmX-Q2XTnk^h>OEfH7GO%Y1p&8xOWsaeLyffECnIVw3suZYK z#anN_+!gjV-!({+C|VV6l)0^|v!@Kmy6!OCDOz?dV>N{72yR#EnVQY3hRE!5+L$s^ zZmp+)idL;AY$`3t8x7-t;d(bPo%jfy;g%UMNnY7o;|&kSIsc8_7osAw6K(#UiXmFk zYbKXXn+jU(G-zp>Qa3Wsn`TAomYI2Ma{FMTA#5%!d#26Dd!QWE5i40uyCRl#MbuE& zYA4mpY8b&112ha`K*Nv{!}v(UhZtb+#fLR4V@1O%3Uu80Lc=4FC}NFa>VHs7gw4+8 zlGF_gmL(l&^TwKxb*t+1hOi#NhK5ayMewCsx5(_@?WbWBW9RfODjAZl>3gVR@Q3gfY&?kk4Tf2h;VeQQs61Kdiw z%q!GA2Vv|G%%WxOH5&|C!8C=Pr|ESBA^D{pgcqarTC3coX>vwej@eFRZJKkA+XoHN z#eApD{*=Eql@}t<4Wpz>kqzT(hOv(Nx?y9u@_sv9qYv;ReTJ71r2g;60PQc+59vb> z5^4_IJ&lLE(uBAx4GFD&vK_${l2_?eAs-*D!>QlEQVHKN{H_e7{Kp8U(#Ht>>N+P$ z4k1Kx5&@(TLmGX!LCG_uzeSKhY1~lw7@yFIg1S)X&r}1@O2{sG2@lhW@ChPE7)%FG z5G^KR=@Wc#gh(ntiP`IP>J37!!HT!ll-U_9e>&0QUJtpO)@AxFdVymEUg0MB2k6`f z6kp*goq|UgXt}?E|LjJkdQDjUNRoU+^Z~aK#WY2_Pxv1YSu;dcj%t30yO={3^CTBg zK%T~95#P~wW72QaB+ZW$;V1fPe#UwmBZp^<9O62$#PBI)i6Jz?{=!^*koC_$fk^EctT%gmd-tN LGef#rS3dk3Gi21w diff --git a/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantShellTask.class b/buildSrc/build-bootstrap/classes/java/main/org/opensearch/gradle/vagrant/VagrantShellTask.class deleted file mode 100644 index af2cd0920ee907121e700d149bbf77017da26ce6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6576 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 diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/ArchitectureTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/ArchitectureTests.class deleted file mode 100644 index 4294a56914d208530ca92d32426f965a54efa419..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2326 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 diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/BwcVersionsTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/BwcVersionsTests.class deleted file mode 100644 index 2787d45bf54b44501eae86e0f0c5ed32f3b11465..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14355 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 diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/DistributionDownloadPluginTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/DistributionDownloadPluginTests.class deleted file mode 100644 index d7a258c2faf0f642351e01730f79b62ea63212ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14563 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 X*Tl>5zudL(g}mCj>*Nh;%)q|^&Nlyo diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/EmptyDirTaskTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/EmptyDirTaskTests.class deleted file mode 100644 index 5ddf8ff4d2dbe5968e89a6b2bd8bac9d639a6d4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2395 zcma)8SyvQC6#g29>2YWgP*I5sD$!xHUE+$-#E~(OVG$4_YP9GnptPrZ?CudTi&;+o zPx6A8oRgF1yyr1LA%7t!Uv&>SL_9j@aI3oNF5h?Wtt$Tf_t)P6T*QxA9K+=-u3%7$ ztIhZr*D@F|alILz;L|2*@n`&#MH)AKC52T3X#tl&Ygko_XtX> z7Edn6feOA`k^vWrkHs@#E8i|CS5hN8wBpE0q5*Y2+yVGxC!NMYzEGRs-@C2@fk8s{X8J^zgw&0^;;VA+Op`JxrRJC}f z#WE@e4i~DPqcbI36|Huuu)&` zPQIIb+U+cA(~!|HZo(oekUK$j=9 z^?u&>BEgd%Fk;+Pbq8@9E#4kZe3A`Z$t8UqXKN}7cqRtxR`RY0!@(_lH9#FxpFqOn zH8C1rJ-mm8S$gWrAR2mF6)sUXz-c+>d7Dm5Iz6D*x-L=BT4lTwtJEzV{Gr5DpB=}JAxsIVZ)%B9ubZK&#a zXB@w5J0b}DsCEqog8f}q&t*xs1XE&9Zm#GyBOYR`mSuq?8Kh$y&oS(5LOV%NDmNTc zN$Ax~o0-D6$4JjWD~nuzc9`Si|4Ue1acbr2nc+Kel<$=Or9cyOQ+~)Vo1?+8srMy} zUpQ&N3CeW5*oTvxTZsa4=;0S{0vb2O#(&XSifa$n(XfWbV&5yI_zpC+r(eNr#2-kH z?m?!14cVX8(cIg&25YQ;U=2ID)WUJsI$AljB}02M>`sO~$*_0!HK+^N$zZ2o5_Km| z6T&(4;XG#-c;j8dATHwu-{4`+CU6zAxQ_dLgEfiX1Za%}pG;czlT0V_7@*GvexIe^ z(`dvQ>gz0><=?qYvVU_&lNIe9?fchpU>%)rr`_MUh7aC@@IlfiVLgzr9_k5SK??)s zk;M?&P#~0BticFj7D;%Nl*dVNf;+eQHHm3V;U1|yBK6m#MU8YDH51a^{C6QCZEr)m zK|de03O^*}Mq)Vd8xGxNc@ML^M_!_9loe$44)*`d&7@^oV#PVM62d;_T?6P!jB5bs WrUsxDJK|h7Z07m`bA2)Pb?HA3Z%sP@ diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/JdkDownloadPluginTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/JdkDownloadPluginTests.class deleted file mode 100644 index 8f3ba576309c5d72bc301d4f80499eabfba280c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6089 zcmc&&`F|W`9eyU)%xxtsKewX~(0q$i{$v}q`|RVTZXWSZTX?d)um zA|j|z1wjxL@V*gG4h?NltQRWceg5Fz;>YKmnVp%<)gt=whn;!no%emd&-Z-4v#b=83ne2k^)CT zS;1Kuvq^&9EtbANj#k_g#|Ln)c)YI>AH;_g+}?-}<9-^%`&G?(?&@`p9^mlb+e>vc6PcV>6YBg9&6UjTUu^3U!F3|F}>uJC^S~mopSLADN1NN zQZ^lSSEqjxxlB(WY|BXPg=Gkk_|~KHs&RUq()AXSM#kW={1Vb!_Um^M5xZ+%6X@p;BjR z1=rn+7%*1O`j(c@dX|%*6az!4!u6pYc{OaA4j*)z#9OP= z<6NW|zBk$u!!zn=)2;#tE|eny&7J;9*`T^IBmdr?m$LZQm?mvMb_-Hy2o< zpe#*Q*szv1l(1n1g{aO^N6XF}(u#gDS?4pZ&XV>`65>IKlw^FG&quAYoz?dlqA+b> zuq;t!`b7My*o-YQKBMBZ_?(K*V_Zc)HmNuU5%eO5U81qgoBKBPZRy>*RYHBXlsgh;rnGd*ADp5fe<-2TPsJ-Sq}3+0T#&b$3R+&& zH!4#BI1#>If~AD6N~&L3RJNjhu;mTupVRDF!%U|pZC#%z<4O{e%KXU&#q zgmkpvT$$AI3aP4XZ-|&Cwr(3prx+XQRI!-dHjvlJWMfz?mn&`(numDal^k0u9@3p@ zD_3f2z!#darAfvYReT9wQ}J~?qv9KQR>n6~d<)-J@g00u#`jb_hv#LypyEY*UqbhS z(|q~L)Qlfc%6v0kQgHznRb0Z$JaU&!UKKyY78O6jD=L1B%RJ4(9PeWcW@vi%JeTnk z6+gw#RQw#jQ1Pm`{8C(gB`&vNl$NEz5z~mRlg6AlmP?h6XQ*uCb2`snd7?7vsV<`{>|zbBcelmyYrH13Ut z*kx13Z|Pr`2G43XG^WQ!J!tZHaC;V=N6J6F6D>696&j`Gs{4Pfh=(Th4+HN&SxnIN z!Vv9Vv48tQWoa8#pJRn|+&9#AB6`?(ecLkU!BwDlM|2L{O_}j2-8ocgG+OA%MJoB> zKCKma6f%~E*+m}Goa{7P7>0pdWY25wCEdqm)PlQ zx@e;~8e1a~8fnFO9#WOPa}JwmuldbX$E8?Xbi3$Mf3Pgtf-I~G%P(f1MOj1VMBU&K z7o{J>L1;(c782G*7gj7ZF4Ew460Tbzws*QMraq@<%MJx$yQ0ApD4m!zOf7HRrH^a*vPk0itl>yMXM#UXCUUlvo=2>e-?;mlyULLU8q?UCo zn>sfZ!Y3Jj<7do>WzCd}5?+tSh7aJK%?C7-pUS0nZ{^A#UsW5&*!f47U;Rr@W0>Go9IG{FUa!0kH!%JC_}2y_LA2H!HF3gQeJy}suqNY8Ung8^O}+{s?NjbqhYfNlKK1&CogH`lnEJKQ%w`~qs`QTrn51cKxu z#JL6(7^AS8I1-3E+_yUe;X_bdgqEJ3dDJHxq@;B~>4ARTW?obtJN#1aHD>-divj0bUyb-y8rhB$`Y}F43kcT#x7;65SiY z3yJOy@D>qGB%58p)m4BV(E}uUkVFrV=C@E?`3#wh7d7+udlxz39Mwu9%Y^lpkRPWu$C!Q=k+3u%EQV+yRcn z-cGuGzZ8r;zcM>6pfIE2HbStA;IpZ3dKqi|KG_affHzXz|qi0f)_ z8Q1TS+vHG<6mStY)bho~dAwDSuXVH6v(x=Z;sJEyaisBttH2QtG*BQDD3A#h$OH;x z0tGUG0vUJ;B(Z_fe1r-drBqR4yqPi1)QCR-d`0f$lQ7G*tT8X3ZXWHdG$YjNM(*gi zh|U_^(fb@1c!kTe`jc3NrzqfQmvpNK;FDg3W{-4pT%1zAm}j^~*tfgqRm9rrSdY4T z-BIs6y3_6`J&&G@JIc(XH?&oU>(ujf)JIrkAEY}TVq86p^>_r=;Zgqg`xv@tLs7d1 zJRz=y_(0QJZAV#^7&e{ diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/VersionTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/VersionTests.class deleted file mode 100644 index 3ea2cc9687c424b714dabf35537c1c7f3f1c8316..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5033 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 diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests$1.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests$1.class deleted file mode 100644 index 21df36ec68b9155829de23fc7000e1157f0eb8ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 907 zcmbVKU2oGc6g_UUrVW90EigXDR-mA+NQAxc)oBtMLqlpiiB{Va0yni1kIar7r{Zt% z07yLW1Nc#hn{E%2Dqb4NxxPpD9v`3UKYxGy2JixpYpCFk2N!p%*r?*3NBO3UEf+0@ zij8H~e#Y>!uT2!_RH#gF6UISg_%sp0REJ-L3Es}bC{I&u>`0iI48>SvHtP|`u2j>=k>WNtbmpu6DWCBmw=xM1c@__Nx_b^KTt&gi8mXe*BCc|raUBL%AI29 zxpT?MqsgfV?PYH-knP1HwCFLr^v+qmUYJzuXnD9o(Wl)J$|zB6cAtC)>;6Qk z+bB1jA6Pm0MsNvN>3@xifREJv2@QOv9JqPjhE=RlMg((uh83zP`kJ^tk2k0iaIlVB RxIIVKQK#sUfC@$W{sEn2_(1>w diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests$2.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests$2.class deleted file mode 100644 index 4c2a1f0b28bac945c521a26b13c7556b333f668b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 897 zcmbVKU2oGc6g_UUrVW90EigW}!aCFyiJ(33)oBtcLqlpiiA>|!O|8@;wS(hS{4E{; zi3ffFKMHZv?O{^IOCveg_vqf^<9qz)@2}qgUgAj&72NaS;(iqms(9#8zU5-uMT?QnJ6lN|XaVj#K^@!s@DrpZH zdYx5C_RbibzMcq%^?_7kl+VV(obqu(NMoQQo}6(bi~JIF3gHa?2c?ARCp^mprEgXg z(B7we)Iu36ZgWFtz8;+OIS+Cxli-+V(;-g}E}(>~I0&tgD()>Khs5KBIyaGcFAMQo z|DD{k;smKCTh*lz1 z{2 zH-byJPX8NJ1So1x(ZCnVf!h~tSjPrsM6jS|Sfh%fuZf$Bc#A3l2b;Kqy9;C!b&4Jd Is8FQuAAimCYXATM diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/docker/DockerSupportServiceTests.class deleted file mode 100644 index 8bbee736af85da1017c8f0e03c664107a476e8ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3493 zcmbVPSx{S582&C>4k5Jkv_ki$Kr2fj&;=`$Dh(;54TL5EOc&!NxsuRJZhCWrw6<#1 zx-WIF)(6KK_05?+71vj1eDvLS-+k0^{LfvIK!eTzGw1&Iod5jiJKw+E{QA%LKLdCK zpSy7!=Uj*|L>XcX(+o2VvkXr##2L;rTwu7!aEakbh6KY?ZpfH(BZ-s?iW^&Tj^SyB z`39tsVOU_e%%CzXGGrMvh8)8c2Av_#U@#OImKdI4SZ27&aE;+vhU*MB7@l+EdA#5z zTsIkBbm1j8`tUNtEf-#Kilg$_>B~*8G z&Pb^7Ybiy-=1?Z9OcoaB6g?)-sWihwT2fYLWIZF^?a3M=ogo{?Lz+JC({f5SugH2b z?VH!-l&bhrTJo}@`$o-2w2;ebx)D|MrA$(ZDS0D5Bw?pP!j!D%m2f_ysESNNHmu7@ zab~SbD9C$x%hmEGfZMiG+I1Ax45bsulF4aylc}*}E>Uy@D~P zdoT#PPm@Vx*)7QflOq#>;Z}=tFZsQ&>=jN@^i~O*W&)9DFg!WjI?&tSM-#5#=y0p1 zlC;HMN{AVI_25(_5R1hV>zef1id#k|qrrqf912H4gek-$_q z5?if2SD3$+QB`@3J|uL6BP0G$AVE9N2ScHe#8f0aI_;0Gp=f}tx38m`a99(!m2kjT zi%w6OKq?v}b8VINR#|i5O%L9}+b+E0!MnIkekkR}xSUT@lv13O=%thv{JQX-2k+wp za_MSHB9Id=jltAB@**$_;L!mxmWVCFIX8qI|ocd)pf)QPpuTt5plk=j0Q<`;L zC@aR{xdrM0L!D&>+-@EHm5=_9W<~LqTh*c@?C)4>xcnrm4>guD)6B~1TtSd;?=*|B zjdESwAXP3d1zknUg&@NwUXMz+-rv-Xx4To2742L;t|vO`Co~RlJ&4N8>fT zCK|8hwb6JTuZzZA+!c*8&Z6kX_!?($4`=ZsLihy}_zjcz9bx=|Dg22D{zBB`z02a(=6x1l;S^bw$o3axIY6FD z;SSjj(D`F@vX`Eg)_74XSkwyAszfI{j{nm3U3-n?I$t^CeQ^qh{>h#P?$}J>1H{pY z3v}B{*hQblZG=O_iG{b_#@mP%8!snK3-2z}ufc0+3A~n;z-wt)c+VE`eq-b9thMkS z7NJ&M4*G}yeRN&W3v`4^pt3}ifesYPKzG`pc@cC=5w!OK(3X|}ZD|S6mX-xNR0MsK zNUtJly6qqib@O6icJpE^@naO}18d{S;(8hMn}vSzT*F>mCysBJu$wKjHf%;dn4mb2 m%s3GFYRv>ms;1}?SskY65_w%kKWh5$D9PNENua+z>+vs3B4@w= diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/http/WaitForHttpResourceTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/http/WaitForHttpResourceTests.class deleted file mode 100644 index 7299e089e7b841147e0eb603c0fda6926b22de7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2360 zcmbVNYg5}s6g_K9zqAz_s@TR{T;wGj#b>nl!Au}rek=dq60H3 zBA8V%hxr&5R6NEL6;H9K;!`XsNJ*b%6y%b4SurZZ8OAS}obpCYgW+oW$arh$WiIrc?KD|C zJ(-{3R`9{&X4SRCvHpx7`<2P1%jB-G4lUCVU290-9>dt>Xl2mCkZI2(gWjyJ+j8%Ujwf`P`GtJ!EBH>s zOT1!Gbki8C+<&0pdksI}M+HA=FmRy3M81*Ka&+0b2984w1r!-#6~pu1Ic{EqC6gZE zwE|m131x=Q{8pMI``o>l8lMUAr@=u*!yC8?JPiVe3?r$`!isHp!ZH&f*F?^7?8IVK zI0atjE^SXfky_MH#oI>zyrkhB-jkwbteXWUi~0Xqco{iLM<94)0N;-G#wj;FpJ!!vRc^@nW{|_Z&&5e zP#109bx%11)Fv^WD;m`JaJX)OX72nziCm$cw+umAy55GeP8iYUaS=Kj{Bxl}VO^0v zt$l5NTXkI$O$Y6#3&ZV3p{6uL^M9jVw2d!xn8^KTO+Le97-wUD1Ad!{r4BzlFRZdB zjIzl$N$W%59Kpt3NU}x^WUIb9mNRs6{s+YtNzAk=hD|$ivmHkB6X{AgL9@g?e^WK= zoWqa|_fg-o3mfStrbA57NERJBMlDX7i4VREC}?dB?$O0{mu@@I#YIOdtx24;(&?Yk ze`oRp>}Pt3;B$Ij@r^pZpm!~Bz?b-nRt#TLaKsP(8=dq6>@!66&(N_SkDj3O1Xt3@ z8kBgfhL1KzPNANnYxoS>{zwfUpWtc@-NW%~HS`SE5YLRpduzBp8|{wwb^wn_l7u+IH{inE1##WDG=%U&W(1QsKV3InT!hJlX3w;{%c!XulAdOk<(k=d) zEE3CP&~F_}4;{RN7$Qsqc#b573D-QvF@jNfztgudA}C50(34SiM)ex#|AOLYE1i#i zAdEix8^P}gageRylREr6{||l=Dz){5;6J7I7YY6nflgt88egH`23E0$HP~1WK`%9- WziL9?u0vmFLSH!-`UKUBVDevsmS;o& diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/plugin/PluginBuildPluginTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/plugin/PluginBuildPluginTests.class deleted file mode 100644 index f99a3122891049f56abca04cf88aefb1849b5094..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4583 zcmcIo`Fk5z6+O>OMwZ5Lsw8fc(pE94>)45>Nt&f`y2NhMx;U;AF9Aw{u{4&(mS)tM zQ4&+2tS$RaDf?0=ls(Y8RthETP|CjV>)*l0dGkinc!>!=@a2o%%zbw~_r81I_?ds7 ze;U96{40q)xHF08VI+y;7)|0XjLFv%^5gi;YGMd z?z~vTOHz0#%mk(r$V$Fkl44c@GaB;py^w${S!WZNOQERtOLE6az?D1YBsy_#0-jv` z1OmBMfH}amDD_VwGwv92hGa#_;uvCmJEjC$hTNPb&@o~=)@Y?PZFv*s zbdi+wh?_NwQ>JIj_lVdM6l`B$U#Q+KTaIs;UbaxPR4!KXwquNi%V5PW=G5bahNDVK}$0$c0Pr|h6`WG1k@qo>Vc#S9oln{_szm$W2s@KU@cP-V*tY|B4dlcYU@ zQFmfE?1O zysUN1mT+IWI%xf~=4n&MKJ3@M`|$xCdvSw? z59;_3KCIy*IzEbz38bdaWTz}oV!+gGlYy+v++c%8!^d@e0*`3;q>fMFQ5~PgX9W6J z7ra=?H9V%{v-q6APQ{X`XCjmJEG8$HIYYcMLBYy+cD@i~9J53qHZ+`5f;v8rFX;Fp z9u?TWT$i6In0`!0FkhyQ{g>eDDv8$dB|IX~7a8#jZl##ZuofeaLp!z;Sb15{nZWet zbbJ}-SY~yqhOg-OszmK^sVgOmv!5#Ltfk`#Ea-R=ivoH`FOte5q@yZnso4s(ni;vJ z<2;_y@ijapV9012_?f`^yyaLPlQ|kjD6sbukYC;y1a_@1C4n$*51ZH|kN*T;hfJUO-PrJ|-bnn6C8T)Kd@p#^%<`>$vJod?H*_z~2Z_kc+r(8pdO(2HFUDK-1Ch}G=#G}rGwUMeC zZiPh3bSxv$I7LRoO5e0ZLcvRsggh3C<8V(*WyJ75INTb>$quzz~m(H7{`ufiZ9O0{;F(wX5&<{mew>F=dIhP*^Sa{$<5B$ zfomLBE61Fq2wWQnROKk1HI-H>S$^bVzOQPR)0Cr4;JUc}C}FV_M*8L4O)}!Ka8451 zWo0PSP_w9b;<(1kd<{-cTT>0l-ndh>pqC{_nPKF~8QaMX&a3+Cj!V|-uTj!&Y{sdbMJbgxf4X>)GKgMqqQ?R1GOg z>SPQdSHmq~)o&*2{D5Py#K})gLP#rtT{IL`Hd}5EB=K|nLc+F65v?Sp@JsxP2d^jI z(`1QAbO+*v9(gEm%@X4?6(=jNUBDdaM;~*5ysr$#a~?!yhV`-neyd#d5M%Ev7hfbrtko%PM^W*T=n#Fm7K=Yh@}?)h75LP`XMSAp_W<7vu7Yc8?~@Sc_|Sxd{9P9k z`*9yg8XkEa%C!jTyC8-p&y@_@k3O7dz zZ{nWx>1N!*Cu#Urt^!BuKAwxr%=JDFt%`);<++VFh-5mo2)&B-W~iO@Bz9D>p$Vtb zm(`im=_)ohVG*0sn;XQ=DlS*VD->}Hg|}95r6fM5;d~bobmvBFrMrEMeK#GwiR-QW zH;F;aVkj2WTpguBy5A&G5?9fE2|%@O{J*|7bpSytVef2C{E4eSAyNc@sPAPp1v5FqS4~-pk2fa;5_bp;)6}zN`{`0Jc2uTUX z^${4G8er^4I|I3$VBA44hMBQDG0MN7+=CHh`G*yUe^*oZ~oD2c# zR3JnE-GY}9xZ9X#ne`Ocqx^r&r}AbhmvuOdKXOfy{CoTzf4~-s0BP>rN1m7C6?i2c Ij6?<{S7|BR-N`FBA zPx~d1cBVg|KdRGnCB;<;>6DCTcJHq5GM3U7w`pc$Z}JbTSZ#mk>##|FNSH|DYd+g-QTc%N6yLRSh(c`3X3hz?^)hJyMea-&X(2l?QUON zgZ{ARxYla4t@>2(Lq`Y8uS04&p1ZDtFlZ>;4k9b6K=KbmwL(VZfIZZ z6^aAjd!aj_+zZAR_O@;HZMSEwg+86p`LRT0WOF8l^&UJ5caE3|<1{`f2}#Bqh9giD z9Z6pkl%%6@uY53IQtR16YYu7CYVg|F~?<*7cv1H-_nkK%+66-s3gMsci&mG-0ux#QX z9+`NIZ%jPFw+31!R?s%_6srmsC47pExXyv~gmB}G418zed#tfqM}r#WuTX!#wRC{> zDC+$mI8>tCv;z|QN%=75W#){YP8xWsJa@3j3Z@+d9G&G?L%Yv$yPEEer<>9+jg(n( zBc2QNJZiBkDS8CybLVw9^mVY;G!KSOzpH)X+1!&V#Pk2G*m3!vk^xm%NFz)p@dG^N zA^-|!_lMu#;L|B!sehPskV^Vg8p%7%#63Ym-$_%v?e$Kq)AZcX=8Nbv%`}bwp{bCw z2ZR34;yqQIW}mfe?BgN=A3c!`T;v;ml5aiuj4PQiuG2hO+!gm+v(io z#%aoCtbj8(%M*KUWc&+qbO&56Wm=`|${!f}u~Mz=Aom92?P`4o##`iT+&|*}uk-UT zXjDZOH3pi;1W`=kI?nNfatSx0pq1Eh5;V&}K8H^kd>o(QJf#dRCMjQ_7Y^tM(knvB z()%nS#duVVXGMSso>GCren8VSlFwikcj>gjpbHGR7y*$0bTq zA#`r@B#g|wMX|aAa|aXcdTkfSGN|w3IKLz(b}^a3v-+>pin%UD7WYxa5`8x5b2&x9 aOcI$slgJ`niYO?uR+n)lqTp)eulx@ciw}$d diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/DependencyLicensesTaskTests$1.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/DependencyLicensesTaskTests$1.class deleted file mode 100644 index 731121e0ac2ad6cdf49f431b5ad71c32261d1c22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1593 zcmbtVT~8B16g^W)OUvr6D2R#*TBRSziYS^COGwpVQqcrLd|kF<8C-Uo-7V3dWdfM^ zV0`vR8PBu`q*NnilkUvkx%bSu_nw*l{PpcSfTviitGmurT>wsd2G@mdfz>_+I+J!v~lWxwmJlm$}pmWpx@1)jHkf~NE% z>4fgqANOV`-C$=&#r6xy#k%y}&o$+0w`kpoKCa6sjx^As@>N_Bc%MHP(%+~SHUyH@ zpe_Z>n)2mpYiCo2>&~V}%SbJ79dE-4mHs|7CUt58#%te~VbyaYG8R}m54+qPGfm4+ z(rv}uw%l*3Wu47fy=OrMp7lwQ+(z@YZD-f9J;!g@Z#Q-O+k0i!RKs`TR!G+FX_xMz zFT1e{{KbBGRLCT|7PLZFzEZkBlmF1ptR~E+zVux$h?L)WBjc^0p2n;J8&u}dDkZiO zM6rPjxM*M)h5-|E1|DJFz+*fSSkMALyLb&;#W=O!Uvyjgxj6x=yXI^}*NN*?l#)5e zRss`lD4kgLt|s&7=&{E^FLZY}=FyF8eSmov?5es9*|UMX)}`5y@zD-SpP9=4<9=Yj zZQb;0;CWOZWkg^z>V}*?1=%aIuz^Y5Y#C5bNLZHcJ;0Gd;H5agp9zbrmpH2;(XkXu z`w+#MeI$xsG4O>;35@Waq9a5ZmpLD!O$T4$Oh0BDQqY5nI0RfFoc6Lx#XSP$}KmVO|0fb=okNrHwZ%gj3j2Qk5~ e1a9J1d%VrM07?D@+`-+pWeTGlvy2+z$mcgraJ%#X diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/DependencyLicensesTaskTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/DependencyLicensesTaskTests.class deleted file mode 100644 index bd0937810de0567b24cd88b46be2e445bcf771e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12632 zcmcIq3wRt?bv{Ruy`$Awme-MO*@?Y&{FEiH9mh^=IZh;bZOhTiTFHv-B+htuB(1fY zQFdl!3kcu<2_fVGfsjBF2x*(rLPOGc6Xn&=7D_`3Z9^%~wonSC6xz~Kpgh|D&Yhi| zeMoC3U;TZaoyVPX{{Ou0xp(x+Z=QRJh_2wrf~3(*ke;LGYw2QoA&A3^;_M}H_DACE zWpVZyarVb`^e6PEb@W;KoVfh60DWG(`R59~5~MHCtK#A>#ON;u=}YvNb@W&C*8zGh zNR9Mmh5kmNuZVa5R-vyd^tAweU7>G?(ce_)TMGT1LVq8mA^Hb}zOB%A6#7SnzN^qb zi4osZ==%!&vqC>m=wB52p+f(v(2sbRO~6rKlcJYO6F3M=BbHpoG)69*M+c|m~d>v$nIgot@@ zh^lz8!i~VhOT^=)b+nV0i9-|6@bX$-!50Vl5?(2uu2N_`z~MSx&1*o7FI9MLfY$}- zD6bbcH;6$S>v$74i?=r`+#=p>4e%BwwaYN{bZ1JlEZt&S+8-V0>59d=jzmv%cXdX4 zW6=|X(d!18LfxmdDJ_!HjL}HUPA84gHl_ugreWEdVIR>_8J%fyY;d5fbFk>uMf#aZ zJ#OoX=$W`aX(vsC>C$d9JsLTcF_Ly9ok{6dBw9QO@|y-ShMk4C>V~Cj>G)V=G_564dSo)K$IXce=pFJ#4{Fvp z-mkIoo5SV~*Cvw@aodWBLH%iSDw)vJ7+f1mjvAVsNrU$dj;=Z1*i#YCJ{?#Sx)Go5 zPR0dl%Yn5Qx&o7F^At?Tw5(VY5Q!&(eZmvKw61uZmbQ~4THLlGc|CY({+=XUu$QTN zC=mN;h1d!%2HAXP$k@bVtVSH9bN}m~2cpVq<0|l^7gLo2Pvd z7xd1p07nYrM<9Wwu3}AQ#x7JQ)SsWa=-je;&2)J=13E&=h$U0HVW*~6SE>sAF>-Nk^4WwjfL=#-wGMhqLHT}EFTX@D}FFg;bIG{@)wM!#ku%MC%Xh%?8u#}QOZO@Ys#D>$RF$%%66RI6eo95Is#xPwZ z!_+{Wjv!7W{hB?7VBK9}y}XhhZE_N>%*!uMC1pa6K*?Gt#b@kfDuVYQc}Zb`o1V-S zxgCW=_sC2CJXm^1)a+|ZpmvQKsA!;vS#u;gnn^oT8N#R6#LaT?oR7Z}X@#X}7-g^B z8VCLTX4(}tM=e|sPwSW{-I~g@eB-9#`655BtdfJlIWh?YtD@=;)hH80&LO^_=p zr3MjmOMSwdpL(?kJ-}N7ybZTUb$^j%+PHBxESn0|U|z(#0s{hL)|bkFDHfxM5EGct z4@t5@XcyX)9Tl0C5f85O#e8O9zOFGGv4Oa0*z$(Zh4_|w3R@7SiP>q0nQ_hzqfPqo zf;yfhd7tDaI?;46J^luOyn$Bdbx^oiS~6b;3W;1bE0L0rFWcswek1R{0ZX7pA-FwO zXl579HDCLK&^6DJee+LF@b>6t#CQoVL7Rtj!r6jta>$Iyqy zoC#W_5K}lW+3y#p_1hv=6zETS(S7ykqS>@m%FtARFH?CtU#`+9jj8k?eORTNDXr2I z^l6nQ$WZC`>60prQ!2naRCzM8L5>0|V0fZJ8>;LZT=Q#s1}nRW_& zb0uDRE2w;crkI)&rfxy49d-Z}R@usw{1IgFW1 zPNS__D%I+);kMXkV3oGlhtlyCY#NQHl9QGm?$4Y|CF5b&o#EE-RQR$jTUGjP`W>c5 zpYqclqf$)K7 zZ*-u&JKR6i0kPqn=p%?FgnW2=p*dVR5>hY^Ri%&6L&&%xBV*}_FzAW(7i_uAFpbuP z9#0`K5{1^RcL&377>=<^3%H@QQtF)b_-(*lund*S{L)3hx+txfjm=p7T*!uj0S!2S3++(7449^hDj z2UQ;8BPtK`bpbw#WtOv)FUVX_Exg%>#b}?iSP$?qm5=lFD&N32Vrr9S19ImDr-eGG zSz~CUFx`!$&4~b?Q28cCYFF8&$|pIla)MC|mL@G@gB{kwQ(7vS2q%(QirZ#-TICTQ z4e*%CNj|0WI1-*yJi)ZOD32#onbD+SMGm2G^gHJPHdHow5`=G7IIXh9w!#@E#dRV| z%E#$3m8bZ$%4Zn5-XzZ6EYkNaD&N9y4e;AkemkF4`Br`h)0RqEQaEP^_?;@hi*Hl; zc78WZ>t(CAipK)ElF0Jq!AZQe+fWnv4x!^cD&NWP4e(tm-_7@^d@sKb>vn{U%J1j< zm|DxLu~A+lvH}iatuLf@Y8KqF*m0oK$$F(RcNeW(SD)|hdS|Sq$1~}qJsm;Enu(9K zr$$X&j!pOmIxd@YUq>`WrUCuy+^%!Z(V{gkiUO}~y{xot&2Mugtdwu7^GEF4 zIR5oDQWf41>u0g`all!dFm0GiXWoxcG+%Ceq42p=rDJJltF2A+!%c$Lm^Oj_1rF-O z(x6APNMLzXhLEq9 zb|sYbXnAjWLZ^kTZBwie5i2C-PGR z5Oxkk+XtgeYoxK}7z{1*PNQ5PAP)FC5cazT#}TT~DLF>sW$}!lM z5H-iCl7579jD#xesfc~bf&%3hIX_?_M5;mde25=FmEyvNYUzYFt^)(ILM%dX=6qTJ z^7Vdq<_zugr+W*UTCw1ZcWg!g*p3 zP6{gQ0lcJC;%+a)w8F1SM0-rXIfE}=dfTRB0e(>B5A(w+Jx%8V{D^4fKZcDfxuiE?!ar3iOb&jf^bVi@S zF+?>u?!mF0=3#6dey7D~`3}8_-i#}zw?JN%BkyL674oiVZq8E8Ihxnp-261n%hLRF z6p-h*4rEC=N43tQ8N#l?4An86BQ>vj2^13bl0toS5%tqrI!rrhz^DESSAEV1w>VJV z3MkbMlyR5ZHYltPEyz;6bF%PRYRJ+e7gi`si-!fG8M=t+WopdQl41}?sFsHD*BD3P zp<}d_j{87tb3wcf$_4Ycdp5LWJafv%3PWcX+t=0+qnkFsl`UFeD+~7J^$|Lqi1(@ANc00m}#pCkmM_ zFLXqA^XAZs&?Q+~iIY{KusA6&inNatDHY7K22n%USgl1OG}0ukL<(#`5^O~R^db0f z1T;ZpiG<}6S&86&7u^P9%;wD7JxUL{&J-^4#n$R_&Md_(cx5RUdbL?vgFEFTa3!h% z0bngMt&wh_%K`2hMA-p4OGoHdpFf5x_~YFk`1{-(JzNO>(sJN)k(f)DoQs~O^MHLD zVBZedcOXFTq}_BEEPOX|`5qta!xdoP;lX~~g{>9BUVEOf*NK4gXm|lOCk+`$_kqR- zK;wSUcmOmWq(j(WJxmWF`yTdD(JD}Rk4NPZm&)}b5=ztFL%AYU7Pa?$eJ)MrWFced zQ80Ln*3oa#4s2~l>2d0&-$gC^gpa}X6&T#fqQi>374mIbDTOPWM zjb{)W&jS8)h>aI$JH3ebc!@eOlMK*jd^BP%jqMb!K;y1TG&Wxtjh6GF@mbLL9B6zV zG+qIXFM!6Ypz%e}_|og5ad#yetrtdP%lXiF4K%(C8eaj8uY$(cK;!G6@lDY9*6X5i zk4NJh=(MU4RJRlcRpbI_Y|hfwXKCAWbQz)J*SP!a1-^TGfApBhr{vHT_AB2B^X61*N{eFbD?8gr2umtXf;2}2z zhiN_COYcLj%r@h_-=qH;WC;54iV43P3I9B`9esxO^t6Po3T>F7y=Z1yLRW`&%Ts?j zXvxww{%g1YswUBYN|HYT!T&;e_$kW6�AtPFK<|;MHGJjDCgg=hr@xaj#rNU6QS6 z8}CE?uA&b@qUc=Zo%`pY{UML`!)_@Nb7i?oov#|Dy^B{jL=9{&L$b;t>6B;2_8V8z zO0J;|Jdd_=fZAE1ey;U}ZEmhy2~W@6sXPDzvLU}7zoNZc5BH7Ja=uDy7Roms*HGzkB{QXS3ExWlIJs+;L`|8^@y6VwPl8SMTO{NDi*um z2fNV|+vtjg5KQs{c9r;sjiWHwy?`oKR9jGl77vR`Bo*wgX{vFQWT}6+siyTQI-I3} zY7`++e)7h1W@>JxdE7#axE0?7BGk%T9VC}a$sUp|Xf8w_4Q*&K1QK!f37l2aA}nWr z4>hO8t2vM0IsX2^#d#KE#G-Q*3=u=f42Fhg=twmT;jGVwdRtL3hFgV6WQ~v!w4Ijm z4!VSQI)Iv`2oKOI&ory(Q&<#K(K7Va6NsW}uPQ(#o{9CcTsi*%&hQ5sE-VY}pu?!ac T3I6{ls`*b*PMAZ^@uL3&cbPzO diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/FilePermissionsTaskTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/FilePermissionsTaskTests.class deleted file mode 100644 index 97ebce65b1b6857cea592c8f6679297a2dad8aa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3953 zcmbVPX?N7t8Gi0~Y)!_pO~+s$%`y-|>;a=B(1zF)aE$FhZR22r!A;W0nrn}2jWm%o zVA3URx};0mr2D=v>E6)A*vUCP{n9V}QEi_qX$E1&oKwEsk*?n5d7pQ=cmDmKcmDz4 zDZH1*AkOD7qv5$6F67aM**xZOF^|Kzq?UONmpgF^S8`a$<34;uEzhgv1+~1WmXGF9 z!b>@rc`U-xP|jl~WDZMtETf{V*h*|g*;&oOQ7_dT+&nzg@^~434nZeE)RpYjJg#9) zE!UO8D;hr5iI3wG>gAI;3~6|^6Q9DTHN2+bGXfnaY}XD?3bgePToTBRdSxllGikeW zx?WwB{+zk!aHlZoS*CNz^lkN?Y-YoX9S96fdj7KE)ubCp)3++dvTv3hY1DjadDW^N z8soMjXQW@XgTVIOV9pFy=VTBD!vaS_K8#kRwVD!`uSj>q9b1!DJyiab{@9vL4FN$k z#mHmg#;n=KMC5U7&62f{9%xsq`QD1OLV-P7g=gX~6zW~N6PUmU?j;^t%PMOE-IFWk zRnxG&C~WR`&4#A6I%U=(+BAGtAm4-J<+){B=^N)+ zquMpwEqm7j9iPYR8or?8i};d`vpA>Y!w_)wEqB`lvdwiSR2r zzKS<=yotATd`&H1$2W9*Q$ZgOE3!yf)@m`Rcy*^-te972ami%Z<>I2W%z7Y;-cnJ? z$!1R#Rkapt&92n&Egj#+cgTebb^GSh@m+jRG3M3Xa?y6LlCttvYb@*U>-Yg)*YQLA zNXL&A=AT4iR-@_-4COzS79Bsu&ji{p&W#Tq*YI;4zrZgw{7T2K@iv>Q?733IZ*=?? zzti!1{6WJXb^Hl`*71(w^#=YTux|_Wnp0o4-M~1@Xfz3?Z30)ACyU zxhs(2t?9&~>0eM{yQA(n8&_(o6_8#z+uIpCM*d<7~qk5#<@$lnerMnQ(SC z;!00XTD_H$c%o7*2u(i>=IyY;7qUoSbAFvR6h_+ZC`(6%eD9=#XX>_7j+pBRy%|&K z^fg?$WK6Y=q4r7Sp2(TnwJN4h0*ul4mt$zj^QX-!jUH){sU#&WG-)-is-`bRFIm?) z;>#nBqpk;hJ)Kx>ibas(OtvzccuXHt-4Xic4in4p75irs;fUGui|QyREInp!?BzNu zP~fq2Scy=okdhrm@4;02sN!C-*TOoFPa`SQh;enMYKw|{^;Ek30K1D8fwf0!ae2gp zhVZsnP#2ZPK#FBXJvZdQmp(0|5#B|TuFP6Z^>ry7{HQ}_hVMLaqnStRInt^QKB78! zdtAzwI>rJ+eNQ9WpW*IV= zzkjR9i4Z98B%k$I07r3*Z@j!wDWjA{2eN4A-jzb8kljH020BXX&?ZZV z){&cf5BFU;w23^gww*VjPYuKtYQfma` zcm}h4x{R?Xm}3MyjxKzVx>*H139AR^sQWbi?V|J$tz~HU7;Sxso=;M8FEan-r>us< z8ct~_Y5bcYH0%z(H{yFdiEjW8 zkR=u0Q)KlFWwYcaPI$aC!JX6GX$1FdBRJ8}+ZlU%Gxnqu z8U#GaiUcl^fXgIcfdo9yRK36wc#(m>#6TA@0gDo4u1l!!U!JPtlQG~XAq!1H=9&pV zlO%is`y*L~}kwA@e21BKEi4z=N* ZDBUuy+8n5*jP@o*shAiQn2Nwm{|~sJ65Rj* diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/ForbiddenPatternsTaskTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/ForbiddenPatternsTaskTests.class deleted file mode 100644 index e31ea49f4271c210a70f92fdae4b64c064a3e06f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6472 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 D*wwSO diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/UpdateShasTaskTests$1.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/UpdateShasTaskTests$1.class deleted file mode 100644 index ab6bc294750274684e846e89923c30a315d229d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1545 zcmbVMT~8B16g^W)mzLG8D2R$5XqA2-D;EdpZ!tBJKGAREY@_Bo!Px}@0m0Ao;$yOfByks5er!ip`eHRIb`u5he=H3kU`Nv zDM#kAfr^1?0}mO7_qkVShQY3I6vKEe23MbgxlgfVEbh#3n4IXXr=>3+6RHOlxr7zVA!$z?$g!8DCwi(jZz!ePn zn)JnbYi~z{TYSeO%SbJ7xVOzissB61v_1-h`O5c2SoL@m3Hn{^hgD&gPG*P?!f7em zZmIXto(syHD}3i;O*%Sshxw$Fj}nb@_lZ5+^^ejc66EJy|SCK z?sL@&iM4aqr90WHj*@}D+%Jz6%2IAKXoZe=DRo`O6ErfTiBb_?_>LDu(yzZ3su8#b zW=z;1drAGzN?ek8DyC2V+)1}Clu6E$>bTHwRM-!xTWq&Dr(8d){RNMy)Ru6Qf&r`T7UVv zP{%t+-4iSSkNb}5YU|=w1J5Iskz5EkA9X`coqEN$Zs-BekSZjiDpU2A}5Dm-0s z1N7!$(ds4osv_04lq-i|<>^DD%HJ^Xm6lQ%p)o^_z$aX$ag1y__zHdLCm%yH@*o9t z0M`gkds&t80RbK$b%gX022T))6s>=z=r5;Gtz%RR*Ki%oS|!vQ9n?9B(NWoQh7 diff --git a/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/UpdateShasTaskTests.class b/buildSrc/build-bootstrap/classes/java/test/org/opensearch/gradle/precommit/UpdateShasTaskTests.class deleted file mode 100644 index 963a6327b5ac2b4ea80623398eab039705ccba07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8308 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 S{)0sEhwuS>5TBsfPyR3Zrx;!U diff --git a/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/BaseTestCase$ThrowingRunnable.class b/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/BaseTestCase$ThrowingRunnable.class deleted file mode 100644 index 724772363370c3f9ff351651f030c8d2c8f36fe2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405 zcma)2u};HK3_O>Tw4p#tCngpoU?C$&Or@ft5&{XT?yte5se)hi-V5+;4153|g>b`A zBo-E*?{xNA{``9X0C0wWjO`d*!iK9v>+#8ykX*fGybOgEAET%I!B#HgQBg9XcWFFN z*oUFw>B77i!v1|Fp?KzL;fqw}GPwkS$vvJux&7FBHISuMbe@7oq=FYwrl54gYO(k^yN}aI?yJ2a(XRnU+ zEqAj8XMxaPOZE8As-u5i5fKOteI-Cm{U4gjHsAw26#fo@1Y!gM(P~>8D=Jq7}FIV8mP3{VSM$qTmy|y6h zO~#I*Q*otk_(bYXl_q0y+d-P%a}SZaw}(DRI0EUS*YIsM$H+2H@m#oI?p@#nGgCV? zwd@2AZ|kP(dRm&RVse}etw;A|!l`_V+z%YRO3iKSvf7~1v4ZW@EL-y0bTj>Y>6X2k z^PMW23}p6OOIs8wpdQNKI*6RyhGUr|UQl|~E8p|Ib*HTSfNCZVqUO$hrredC!j!%A zrs#$;m-op0f7q+OlI4PuYpm&t@;T6SvKnp@K=1bghZaNMOt}XcbfYJOPtYUKyIq@G zsglC&4CZksgHKTq=s!p~Ww3xncB2`Occgt;kK78nlDONBdl`I&C1bakK?(QUv1}+0 z1kN9@uTZt&jG#pIEHHjR;XQqXy^z_)Cb;c=Sk=sCCzy8wEnS<5*B39DyDLxF)pCQ6 z*g|a?Xf~Stj$^gglwiG9lrB28dQ~m5B?%lIi1)Fg4sR@t&+$;ey6;B)QlE>|@nv5@5od0% z-56zupm{d-VSgOs-%O|&si`6_tJR{TRW5~Z1kUbpXg_QMr{2uhdKwviX_&tjenYSY zaO~yI;w(6~4ZVbT9v&a%m<)-d=;JyQG2j@EbJu})aDqyV@SkYq511SN1uX(U!CDv^ zd4bj+kuh`I?@0XoE0Pa~ULZB{3hls4bS#eYDE(mc_2$Vd910I!hjx;*kf2tBVhCxD zSIw6XspH&D5cnkC#T2r*hEZI{W!%6RWKGePSg-oWcj3%_@u2 zwDcj@k!R-Y40rwf??Pfeg~Z?J=J*#KJxgK>&Y=zG!_@!=IiI2WAu1WRF+z)6JVuL+ w3pV3DS0L9gZ{q0-7Q6Gynhq diff --git a/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/GradleIntegrationTestCase.class b/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/GradleIntegrationTestCase.class deleted file mode 100644 index 93209490176376cfd5be7f56cd99695892625516..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11634 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 diff --git a/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/GradleUnitTestCase.class b/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/GradleUnitTestCase.class deleted file mode 100644 index 4dbd6c799c2fcf0ac72979833f2b90c6a6bfc8ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 861 zcmb7CT~8D-6g}NfT~|;<5%h&8L8HYWF$QBI7){J*46I86Po;C&Da^K{)7c0Al}{!< z_yhb=#yj0rLr6C3G`Zbqa>ZVsT-OvlvehP9mu`E2oo?5_rIB?PyMqa ztAG1IA#>>`??xsiUog#!S!mu@ck}FGGxt87cB!#v^HR^wEP5AgXP#7=kUHb12xHT8 zDV?Y?4-=%$Ln8#*C*uNvjcLZlPuYvK#h78ciw2qkkN;~(1RhMO-{CR(Gfs_F)Oez+ zPw-+bjxEk)%z@^^ZxCM@sG-fV#W3&)S2%X#zKN^o#Pe%0c5yvc)G^2B^BOmBv)UY? Vrm>)L3yaKk`w(}qbOfPs_cybw18M*O diff --git a/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/JUnit3MethodProvider.class b/buildSrc/build-bootstrap/classes/java/testFixtures/org/opensearch/gradle/test/JUnit3MethodProvider.class deleted file mode 100644 index 2fe12d970266c57517700893ff1aa40dfd2196b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2523 zcmbVOT~iZR7=8{USrS$dL`tx&w52UjaT^s|!-qwbiVaB1r_v9Xa}8f;SP+PeSq00R5NIA4TowpTITz>RgY^!QHOVak} zU>Ts~S++6d*tSf2mQ&zaA}`PzKzHSaS~SXM)1WC&i`Mec#}d$I3I*xpD6X*yqDf>x-v~sv|w9%m70$Sb=FL|~HVlZoN@$85zizV9=I38GIf#`yjEtp=(Wg_qVEzgu&jZyuFRQnHZu?45(rscGy>M8!Rx;U*WKt~Va z8kTjeU{&ClUlo2*9|S?i4cyeQrsGR|rQ>USqvIA#feQ^)Ofcd))**FlAS=*QE5!O6 z)scfmkx<2_VN=I#*gEnkXmE6F;aeT9`V`^mC}CT`Xiymhj@AypzP`ya6&QI1uWDLS z6&WT&Ep*HXYFKSN<4M=_99LlY6~O&6tyE`>!d0$rmRrX_P;@EXN&ZfVH*{@{KEE~`*4S6B7>sBoAw^Gy1Bk_(f>?#re{@ZKWBvff+$>hvws7wLsXa8!{fg!rj}c0ShW8N` z*hhq>oOTLd+!DkNly@j{gOYoiZ4&GxF=v&2a)q5WUek|@|5JU7m zjPLLPPVw>6M#N#9CJTdm`Z!az|B&`&tHgoT8Csp?dM`rHaYDm64b2)x{zRXK=rfEz gBl3B!H}S#NMEIGFqwCLKm8bHW(lhmeN}BW-^2!!%Vz$Q^7yv z=lUV#)T2MZKjbGpzIP@Y!FrB4CwDUM^1SUBxO(>R_XqhlFgYshL?(Xgr` ziM2lDbbNz#4S9y%1;=yb1BULY=`Ds>$}idsgIUM3SF48wTWs)xOO)ZPZ*g~v3rD@z zi7~nF1Po@@7bVlL*j`|BVeOkG!HceKN;{C|1|2Dv2SJ6){Y~k(!92rgV9RP{nTzFO zxyfWWKb1Y;ues^?=91&u^U9+EUpOVlQ|6`Pdqjw2JX@NZ>sbQRB^M=IDvc($fxuuy z`rOTteX?BFCV@RtFcp2${r8rq2X96jBB}plyL_V`! zH??nDWev{_?BIogm-tr0D+AwQSHt%PI0}@G_5?G$3ix5gwRaD=2+Ts&af@NqgkAB? z4o_RgXDwgYrd1Wf_GDY#L;7r;PC*M5vt^(N+rS=58ukr1IM7fw;NsAL2cO|m=#tl{ zNXoAquZ6kSP%-cWgoeO?M3o^CiiQ;m+h*05OMcZWHp|6uB|;0kBa=V&BtL57jx@s0 ztTm|yUaQJXrnu+%G7+|B;-FY2VC<47EI2E2!>Zh_Fw$4~hTg++(Gj%3X!pHnj7HrKLyz<~ z*E3Y<(;j40BExJnJ67!wg+dk?uGhVba59ZToDwF8Ug<{*=|U5}F#z?I6!m&jkJgS? z|%Eo`Fo%LTOi2RRPG88U{`*Sz=!t zzI1}iZ_rJskCDb`{W(^DULcP0?;Zx|ybX=6cpY=-#~lpOoj*!{1}5mT{{#yZ+I_-U zB$NkO!b7^zA7PCsDyBK~kZcmyaf4!+pol&uoi5TD!4#&+$`VC7gPUROIou*HFiYP! Ry8c93Lo!Y*lL%e-^dA6lRDb{g diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle deleted file mode 100644 index 39ee079b5b6e6..0000000000000 --- a/buildSrc/build.gradle +++ /dev/null @@ -1,353 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.gradle.internal.jvm.Jvm -import org.gradle.util.GradleVersion - -plugins { - id 'java-gradle-plugin' - id 'groovy' - id 'java-test-fixtures' -} - -group = 'org.opensearch.gradle' - -String minimumGradleVersion = file('src/main/resources/minimumGradleVersion').text.trim() -if (GradleVersion.current() < GradleVersion.version(minimumGradleVersion)) { - throw new GradleException("Gradle ${minimumGradleVersion}+ is required to build opensearch") -} - -if (project == rootProject) { - // change the build dir used during build init, so that doing a clean - // won't wipe out the buildscript jar - buildDir = 'build-bootstrap' -} - -/***************************************************************************** - * Propagating version.properties to the rest of the build * - *****************************************************************************/ - -// we update the version property to reflect if we are building a snapshot or a release build -// we write this back out below to load it in the Build.java which will be shown in rest main action -// to indicate this being a snapshot build or a release build. -Properties props = VersionPropertiesLoader.loadBuildSrcVersion(project.file('version.properties')) -version = props.getProperty("opensearch") - -def generateVersionProperties = tasks.register("generateVersionProperties", WriteProperties) { - outputFile = "${buildDir}/version.properties" - comment = 'Generated version properties' - properties(props) -} - -processResources { - from(generateVersionProperties) -} - -/***************************************************************************** - * Java version * - *****************************************************************************/ - -if (JavaVersion.current() < JavaVersion.VERSION_11) { - throw new GradleException('At least Java 11 is required to build opensearch gradle tools') -} - -sourceSets { - integTest { - compileClasspath += sourceSets["main"].output + configurations["testRuntimeClasspath"] - runtimeClasspath += output + compileClasspath - } -} - -tasks.withType(JavaCompile).configureEach { - options.encoding = 'UTF-8' -} - -/***************************************************************************** - * Dependencies used by the entire build * - *****************************************************************************/ - -repositories { - mavenCentral() - gradlePluginPortal() -} - -dependencies { - - modules { - module("org.bouncycastle:bcprov-jdk15on") { - replacedBy("org.bouncycastle:bcprov-jdk15to18", "the jdk15on artifacts are not supported anymore") - } - module("org.bouncycastle:bcpkix-jdk15on") { - replacedBy("org.bouncycastle:bcpkix-jdk15to18", "the jdk15on artifacts are not supported anymore") - } - module("org.bouncycastle:bcpg-jdk15on") { - replacedBy("org.bouncycastle:bcpg-jdk15to18", "the jdk15on artifacts are not supported anymore") - } - module("org.bouncycastle:bcutil-jdk15on") { - replacedBy("org.bouncycastle:bcutil-jdk15to18", "the jdk15on artifacts are not supported anymore") - } - } - api localGroovy() - - api 'commons-codec:commons-codec:1.15' - api 'org.apache.commons:commons-compress:1.21' - api 'org.apache.ant:ant:1.10.12' - api 'com.netflix.nebula:gradle-extra-configurations-plugin:3.0.3' - api 'com.netflix.nebula:nebula-publishing-plugin:4.7.0' - api("com.netflix.nebula:gradle-info-plugin:8.2.0") { - exclude module: 'jgit' - } - api 'org.eclipse.jgit:org.eclipse.jgit:6.8.0.202311291450-r' - api 'org.apache.rat:apache-rat:0.13' - api 'commons-io:commons-io:2.16.0' - api "net.java.dev.jna:jna:5.5.0" - api 'com.github.jengelman.gradle.plugins:shadow:6.0.0' - api 'de.thetaphi:forbiddenapis:3.2' - api 'com.avast.gradle:gradle-docker-compose-plugin:0.14.12' - api "org.yaml:snakeyaml:${props.getProperty('snakeyaml')}" - api 'org.apache.maven:maven-model:3.6.2' - api 'com.networknt:json-schema-validator:1.0.36' - api "com.fasterxml.jackson.core:jackson-databind:${props.getProperty('jackson_databind')}" - api "org.bouncycastle:bcprov-jdk15to18:${props.getProperty('bouncycastle')}" - api "org.bouncycastle:bcpkix-jdk15to18:${props.getProperty('bouncycastle')}" - api "org.bouncycastle:bcpg-jdk15to18:${props.getProperty('bouncycastle')}" - api "org.bouncycastle:bcutil-jdk15to18:${props.getProperty('bouncycastle')}" - - testFixturesApi "junit:junit:${props.getProperty('junit')}" - testFixturesApi "com.carrotsearch.randomizedtesting:randomizedtesting-runner:${props.getProperty('randomizedrunner')}" - testFixturesApi gradleApi() - testFixturesApi gradleTestKit() - testImplementation 'com.github.tomakehurst:wiremock-jre8-standalone:2.35.1' - testImplementation "org.mockito:mockito-core:${props.getProperty('mockito')}" - integTestImplementation('org.spockframework:spock-core:2.3-groovy-2.5') { - exclude module: "groovy" - } - constraints { - runtimeOnly("org.apache.logging.log4j:log4j-core:${props.getProperty('log4j')}") { - because 'log4j CVE' - } - runtimeOnly("org.jdom:jdom2:${props.getProperty('jdom2')}") { - because 'CVE-2021-33813 violation' - } - } -} - -configurations.all { - resolutionStrategy { - force "com.google.guava:guava:${props.getProperty('guava')}" - } -} - -/***************************************************************************** - * Bootstrap repositories * - *****************************************************************************/ -// this will only happen when buildSrc is built on its own during build init -if (project == rootProject) { - repositories { - if (System.getProperty("repos.mavenLocal") != null) { - mavenLocal() - } - } - dependencies { - // add this so the runtime classpath so Gradle will properly track it as a build runtime classpath input - runtimeOnly project('reaper') - } - // only run tests as build-tools - test.enabled = false -} - -/***************************************************************************** - * Normal project checks * - *****************************************************************************/ - -// this happens when included as a normal project in the build, which we do -// to enforce precommit checks like forbidden apis, as well as setup publishing -if (project != rootProject) { - apply plugin: 'opensearch.build' - apply plugin: 'opensearch.publish' - - allprojects { - targetCompatibility = 8 - sourceCompatibility = 8 - } - - // groovydoc succeeds, but has some weird internal exception... - groovydoc.enabled = false - - // build-tools is not ready for primetime with these... - tasks.named("dependencyLicenses").configure { it.enabled = false } - dependenciesInfo.enabled = false - disableTasks('forbiddenApisMain', 'forbiddenApisTest', 'forbiddenApisIntegTest', 'forbiddenApisTestFixtures') - jarHell.enabled = false - thirdPartyAudit.enabled = false - if (org.opensearch.gradle.info.BuildParams.inFipsJvm) { - // We don't support running gradle with a JVM that is in FIPS 140 mode, so we don't test it. - // WaitForHttpResourceTests tests would fail as they use JKS/PKCS12 keystores - test.enabled = false - testingConventions.enabled = false - } - - configurations.register("distribution") - configurations.register("reaper") - - dependencies { - reaper project('reaper') - distribution project(':distribution:archives:darwin-tar') - distribution project(':distribution:archives:linux-arm64-tar') - distribution project(':distribution:archives:linux-tar') - distribution project(':distribution:archives:windows-zip') - - integTestRuntimeOnly(project(":libs:opensearch-core")) - } - - // for external projects we want to remove the marker file indicating we are running the OpenSearch project - processResources { - exclude 'buildSrc.marker' - into('META-INF') { - from configurations.reaper - } - } - - // Track reaper jar as a test input using runtime classpath normalization strategy - tasks.withType(Test).configureEach { - inputs.files(configurations.reaper).withNormalizer(ClasspathNormalizer) - } - - normalization { - runtimeClasspath { - // We already include the reaper jar as part of our runtime classpath. Ignore the copy in META-INF. - ignore('META-INF/reaper.jar') - } - } - - forbiddenPatterns { - exclude '**/*.wav' - exclude '**/*.p12' - exclude '**/*.jks' - exclude '**/*.crt' - // the file that actually defines nocommit - exclude '**/ForbiddenPatternsTask.java' - exclude '**/*.bcfks' - } - - testingConventions { - naming.clear() - naming { - Tests { - baseClass 'org.opensearch.gradle.test.GradleUnitTestCase' - } - IT { - baseClass 'org.opensearch.gradle.test.GradleIntegrationTestCase' - } - } - } - - // disable fail-on-warnings for this specific task which trips Java 11 bug - // https://bugs.openjdk.java.net/browse/JDK-8209058 - tasks.named("compileTestFixturesJava").configure { - options.compilerArgs -= '-Werror' - } - - tasks.register("integTest", Test) { - inputs.dir(file("src/testKit")).withPropertyName("testkit dir").withPathSensitivity(PathSensitivity.RELATIVE) - systemProperty 'test.version_under_test', version - onlyIf { org.opensearch.gradle.info.BuildParams.inFipsJvm == false } - maxParallelForks = System.getProperty('tests.jvms', org.opensearch.gradle.info.BuildParams.defaultParallel.toString()) as Integer - testClassesDirs = sourceSets.integTest.output.classesDirs - classpath = sourceSets.integTest.runtimeClasspath - } - check.dependsOn("integTest") - - // for now we hardcode the tests for our build to use the gradle jvm. - tasks.withType(Test).configureEach { - it.executable = Jvm.current().getJavaExecutable() - } - - /* - * We already configure publication and we don't need or want this one that - * comes from the java-gradle-plugin. - */ - afterEvaluate { - generatePomFileForPluginMavenPublication.enabled = false - } - - publishing.publications.named("nebula").configure { - suppressPomMetadataWarningsFor("testFixturesApiElements") - suppressPomMetadataWarningsFor("testFixturesRuntimeElements") - } -} - -// Define this here because we need it early. -class VersionPropertiesLoader { - static Properties loadBuildSrcVersion(File input) throws IOException { - Properties props = new Properties(); - InputStream is = new FileInputStream(input) - try { - props.load(is) - } finally { - is.close() - } - loadBuildSrcVersion(props, System.getProperties()) - return props - } - - protected static void loadBuildSrcVersion(Properties loadedProps, Properties systemProperties) { - String opensearch = loadedProps.getProperty("opensearch") - if (opensearch == null) { - throw new IllegalStateException("OpenSearch version is missing from properties.") - } - if (opensearch.matches("[0-9]+\\.[0-9]+\\.[0-9]+") == false) { - throw new IllegalStateException( - "Expected opensearch version to be numbers only of the form X.Y.Z but it was: " + - opensearch - ) - } - String qualifier = systemProperties.getProperty("build.version_qualifier", ""); - if (qualifier.isEmpty() == false) { - if (qualifier.matches("(alpha|beta|rc)\\d+") == false) { - throw new IllegalStateException("Invalid qualifier: " + qualifier) - } - opensearch += "-" + qualifier - } - final String buildSnapshotSystemProperty = systemProperties.getProperty("build.snapshot", "true"); - switch (buildSnapshotSystemProperty) { - case "true": - opensearch += "-SNAPSHOT" - break; - case "false": - // do nothing - break; - default: - throw new IllegalArgumentException( - "build.snapshot was set to [" + buildSnapshotSystemProperty + "] but can only be unset or [true|false]"); - } - loadedProps.put("opensearch", opensearch) - } -} diff --git a/buildSrc/formatterConfig.xml b/buildSrc/formatterConfig.xml deleted file mode 100644 index 713e55274d93e..0000000000000 --- a/buildSrc/formatterConfig.xml +++ /dev/null @@ -1,362 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/buildSrc/reaper/build.gradle b/buildSrc/reaper/build.gradle deleted file mode 100644 index d5e8d6ebc7099..0000000000000 --- a/buildSrc/reaper/build.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -apply plugin: 'java' - -jar { - archiveFileName = "${project.name}.jar" - manifest { - attributes 'Main-Class': 'org.opensearch.gradle.reaper.Reaper' - } -} diff --git a/buildSrc/reaper/src/main/java/org/opensearch/gradle/reaper/Reaper.java b/buildSrc/reaper/src/main/java/org/opensearch/gradle/reaper/Reaper.java deleted file mode 100644 index c5b4de157c75c..0000000000000 --- a/buildSrc/reaper/src/main/java/org/opensearch/gradle/reaper/Reaper.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.reaper; - -import java.io.Closeable; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -/** - * A standalone process that will reap external services after a build dies. - * - *

Input

- * Since how to reap a given service is platform and service dependent, this tool - * operates on system commands to execute. It takes a single argument, a directory - * that will contain files with reaping commands. Each line in each file will be - * executed with {@link Runtime#exec(String)}. - * - * The main method will wait indefinitely on the parent process (Gradle) by - * reading from stdin. When Gradle shuts down, whether normally or abruptly, the - * pipe will be broken and read will return. - * - * The reaper will then iterate over the files in the configured directory, - * and execute the given commands. If any commands fail, a failure message is - * written to stderr. Otherwise, the input file will be deleted. If no inputs - * produced errors, the entire input directory is deleted upon completion of reaping. - */ -public class Reaper implements Closeable { - - private Path inputDir; - private boolean failed; - - private Reaper(Path inputDir) { - this.inputDir = inputDir; - this.failed = false; - } - - public static void main(String[] args) throws Exception { - if (args.length != 1) { - System.err.println("Expected one argument.\nUsage: java -jar reaper.jar "); - System.exit(1); - } - Path inputDir = Paths.get(args[0]); - - try (Reaper reaper = new Reaper(inputDir)) { - System.in.read(); - reaper.reap(); - } - } - - private void reap() { - try (Stream stream = Files.list(inputDir)) { - final List inputFiles = stream.filter(p -> p.getFileName().toString().endsWith(".cmd")).collect(Collectors.toList()); - - for (Path inputFile : inputFiles) { - System.out.println("Process file: " + inputFile); - String line = Files.readString(inputFile); - System.out.println("Running command: " + line); - String[] command = line.split(" "); - Process process = Runtime.getRuntime().exec(command); - int ret = process.waitFor(); - - System.out.print("Stdout: "); - process.getInputStream().transferTo(System.out); - System.out.print("\nStderr: "); - process.getErrorStream().transferTo(System.out); - System.out.println(); // end the stream - if (ret != 0) { - logFailure("Command [" + line + "] failed with exit code " + ret, null); - } else { - delete(inputFile); - } - } - } catch (Exception e) { - logFailure("Failed to reap inputs", e); - } - } - - private void logFailure(String message, Exception e) { - System.err.println(message); - if (e != null) { - e.printStackTrace(System.err); - } - failed = true; - } - - private void delete(Path toDelete) { - try { - Files.delete(toDelete); - } catch (IOException e) { - logFailure("Failed to delete [" + toDelete + "]", e); - } - } - - @Override - public void close() { - if (failed == false) { - try (Stream stream = Files.walk(inputDir)) { - stream.sorted(Comparator.reverseOrder()).forEach(this::delete); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - } -} diff --git a/buildSrc/settings.gradle b/buildSrc/settings.gradle deleted file mode 100644 index 963177afaa2de..0000000000000 --- a/buildSrc/settings.gradle +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -include 'reaper' diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/DistributionDownloadPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/DistributionDownloadPluginFuncTest.groovy deleted file mode 100644 index d49c85f0f0e17..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/DistributionDownloadPluginFuncTest.groovy +++ /dev/null @@ -1,169 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - - -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.opensearch.gradle.transform.SymbolicLinkPreservingUntarTransform -import org.gradle.testkit.runner.TaskOutcome -import spock.lang.Unroll - -import static org.opensearch.gradle.fixtures.DistributionDownloadFixture.withMockedDistributionDownload - -class DistributionDownloadPluginFuncTest extends AbstractGradleFuncTest { - - @Unroll - def "#distType version can be resolved"() { - given: - buildFile << applyPluginAndSetupDistro(version, platform) - - when: - def result = withMockedDistributionDownload(version, platform, gradleRunner('setupDistro', '-i')) { - build() - } - - then: - result.task(":setupDistro").outcome == TaskOutcome.SUCCESS - assertExtractedDistroCreated("build/distro") - - where: - version | platform | distType - VersionProperties.getOpenSearch() | OpenSearchDistribution.Platform.LINUX | "current" - "8.1.0-SNAPSHOT" | OpenSearchDistribution.Platform.LINUX | "bwc" - "7.0.0" | OpenSearchDistribution.Platform.WINDOWS | "released" - } - - - def "transformed versions are kept across builds"() { - given: - def version = VersionProperties.getOpenSearch() - def platform = OpenSearchDistribution.Platform.LINUX - - buildFile << applyPluginAndSetupDistro(version, platform) - buildFile << """ - apply plugin:'base' - """ - - when: - def runner = gradleRunner('clean', 'setupDistro', '-i') - def result = withMockedDistributionDownload(version, platform, runner) { - // initial run - build() - // 2nd invocation - build() - } - - then: - result.task(":setupDistro").outcome == TaskOutcome.SUCCESS - assertOutputContains(result.output, "Skipping ${SymbolicLinkPreservingUntarTransform.class.simpleName}") - } - - def "transforms are reused across projects"() { - given: - def version = VersionProperties.getOpenSearch() - def platform = OpenSearchDistribution.Platform.LINUX - - 3.times { - settingsFile << """ - include ':sub-$it' - """ - } - buildFile.text = """ - import org.opensearch.gradle.Architecture - - plugins { - id 'opensearch.distribution-download' - } - - subprojects { - apply plugin: 'opensearch.distribution-download' - - ${setupTestDistro(version, platform)} - ${setupDistroTask()} - } - """ - - when: - def customGradleUserHome = testProjectDir.newFolder().absolutePath; - def runner = gradleRunner('setupDistro', '-i', '-g', customGradleUserHome) - def result = withMockedDistributionDownload(version, platform, runner) { - build() - } - - then: - result.tasks.size() == 3 - result.output.count("Unpacking opensearch-${version}-linux-x64.tar.gz " + - "using SymbolicLinkPreservingUntarTransform.") == 1 - } - - private boolean assertExtractedDistroCreated(String relativePath) { - File distroExtracted = new File(testProjectDir.root, relativePath) - assert distroExtracted.exists() - assert distroExtracted.isDirectory() - assert new File(distroExtracted, "opensearch-1.2.3/bin/opensearch").exists() - true - } - - private static String applyPluginAndSetupDistro(String version, OpenSearchDistribution.Platform platform) { - """ - import org.opensearch.gradle.Architecture - - plugins { - id 'opensearch.distribution-download' - } - - ${setupTestDistro(version, platform)} - ${setupDistroTask()} - - """ - } - - private static String setupTestDistro(String version, OpenSearchDistribution.Platform platform) { - return """ - opensearch_distributions { - test_distro { - version = "$version" - type = "archive" - platform = "$platform" - architecture = Architecture.current(); - } - } - """ - } - - private static String setupDistroTask() { - return """ - tasks.register("setupDistro", Sync) { - from(opensearch_distributions.test_distro.extracted) - into("build/distro") - } - """ - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/JdkDownloadPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/JdkDownloadPluginFuncTest.groovy deleted file mode 100644 index 160e7805b3648..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/JdkDownloadPluginFuncTest.groovy +++ /dev/null @@ -1,253 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import com.github.tomakehurst.wiremock.WireMockServer -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.opensearch.gradle.transform.SymbolicLinkPreservingUntarTransform -import org.opensearch.gradle.transform.UnzipTransform -import org.opensearch.gradle.fixtures.WiremockFixture -import spock.lang.Unroll - -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.Paths -import java.util.regex.Matcher -import java.util.regex.Pattern - -import static JdkDownloadPlugin.VENDOR_ADOPTOPENJDK -import static JdkDownloadPlugin.VENDOR_OPENJDK - -class JdkDownloadPluginFuncTest extends AbstractGradleFuncTest { - - private static final String OPENJDK_VERSION_OLD = "1+99" - private static final String ADOPT_JDK_VERSION = "12.0.2+10" - private static final String OPEN_JDK_VERSION = "12.0.1+99@123456789123456789123456789abcde" - private static final Pattern JDK_HOME_LOGLINE = Pattern.compile("JDK HOME: (.*)"); - - @Unroll - def "jdk #jdkVendor for #platform#suffix are downloaded and extracted"() { - given: - def mockRepoUrl = urlPath(jdkVendor, jdkVersion, platform); - def mockedContent = filebytes(jdkVendor, platform) - buildFile.text = """ - plugins { - id 'opensearch.jdk-download' - } - - jdks { - myJdk { - vendor = '$jdkVendor' - version = '$jdkVersion' - platform = "$platform" - architecture = "x64" - } - } - - tasks.register("getJdk") { - dependsOn jdks.myJdk - doLast { - println "JDK HOME: " + jdks.myJdk - } - } - """ - - when: - def result = WiremockFixture.withWireMock(mockRepoUrl, mockedContent) { server -> - buildFile << repositoryMockSetup(server, jdkVendor, jdkVersion) - gradleRunner("getJdk").build() - } - - then: - assertExtraction(result.output, expectedJavaBin); - - where: - platform | jdkVendor | jdkVersion | expectedJavaBin | suffix - "linux" | VENDOR_ADOPTOPENJDK | ADOPT_JDK_VERSION | "bin/java" | "" - "linux" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "bin/java" | "" - "linux" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "bin/java" | "(old version)" - "windows" | VENDOR_ADOPTOPENJDK | ADOPT_JDK_VERSION | "bin/java" | "" - "windows" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "bin/java" | "" - "windows" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "bin/java" | "(old version)" - "darwin" | VENDOR_ADOPTOPENJDK | ADOPT_JDK_VERSION | "Contents/Home/bin/java" | "" - "darwin" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "Contents/Home/bin/java" | "" - "darwin" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "Contents/Home/bin/java" | "(old version)" - "mac" | VENDOR_OPENJDK | OPEN_JDK_VERSION | "Contents/Home/bin/java" | "" - "mac" | VENDOR_OPENJDK | OPENJDK_VERSION_OLD | "Contents/Home/bin/java" | "(old version)" - } - - def "transforms are reused across projects"() { - given: - def mockRepoUrl = urlPath(jdkVendor, jdkVersion, platform) - def mockedContent = filebytes(jdkVendor, platform) - 3.times { - settingsFile << """ - include ':sub-$it' - """ - } - buildFile.text = """ - plugins { - id 'opensearch.jdk-download' apply false - } - - subprojects { - apply plugin: 'opensearch.jdk-download' - - jdks { - myJdk { - vendor = '$jdkVendor' - version = '$jdkVersion' - platform = "$platform" - architecture = "x64" - } - } - tasks.register("getJdk") { - dependsOn jdks.myJdk - doLast { - println "JDK HOME: " + jdks.myJdk - } - } - } - """ - - when: - def result = WiremockFixture.withWireMock(mockRepoUrl, mockedContent) { server -> - buildFile << repositoryMockSetup(server, jdkVendor, jdkVersion) - gradleRunner('getJdk', '-i', '-g', testProjectDir.newFolder().toString()).build() - } - - then: - result.tasks.size() == 3 - result.output.count("Unpacking linux-12.0.2-x64.tar.gz using ${SymbolicLinkPreservingUntarTransform.simpleName}.") == 1 - - where: - platform | jdkVendor | jdkVersion | expectedJavaBin - "linux" | VENDOR_ADOPTOPENJDK | ADOPT_JDK_VERSION | "bin/java" - } - - @Unroll - def "transforms of type #transformType are kept across builds"() { - given: - def mockRepoUrl = urlPath(VENDOR_ADOPTOPENJDK, ADOPT_JDK_VERSION, platform) - def mockedContent = filebytes(VENDOR_ADOPTOPENJDK, platform) - buildFile.text = """ - plugins { - id 'opensearch.jdk-download' - } - apply plugin: 'base' - apply plugin: 'opensearch.jdk-download' - - jdks { - myJdk { - vendor = '$VENDOR_ADOPTOPENJDK' - version = '$ADOPT_JDK_VERSION' - platform = "$platform" - architecture = "x64" - } - } - - tasks.register("getJdk") { - dependsOn jdks.myJdk - doLast { - println "JDK HOME: " + jdks.myJdk - } - } - """ - - when: - def result = WiremockFixture.withWireMock(mockRepoUrl, mockedContent) { server -> - buildFile << repositoryMockSetup(server, VENDOR_ADOPTOPENJDK, ADOPT_JDK_VERSION) - - def commonGradleUserHome = testProjectDir.newFolder().toString() - // initial run - gradleRunner('clean', 'getJdk', '-g', commonGradleUserHome).build() - // run against up-to-date transformations - gradleRunner('clean', 'getJdk', '-i', '-g', commonGradleUserHome).build() - } - - then: - assertOutputContains(result.output, "Skipping $transformType") - - where: - platform | transformType - "linux" | SymbolicLinkPreservingUntarTransform.class.simpleName - "windows" | UnzipTransform.class.simpleName - } - - static boolean assertExtraction(String output, String javaBin) { - Matcher matcher = JDK_HOME_LOGLINE.matcher(output); - assert matcher.find() == true; - String jdkHome = matcher.group(1); - Path javaPath = Paths.get(jdkHome, javaBin); - assert Files.exists(javaPath) == true; - true - } - - private static String urlPath(final String vendor, final String version, final String platform) { - if (vendor.equals(VENDOR_ADOPTOPENJDK)) { - final String module = isMac(platform) ? "mac" : platform; - return "/jdk-12.0.2+10/" + module + "/x64/jdk/hotspot/normal/adoptopenjdk"; - } else if (vendor.equals(VENDOR_OPENJDK)) { - final String effectivePlatform = isMac(platform) ? "osx" : platform; - final boolean isOld = version.equals(OPENJDK_VERSION_OLD); - final String versionPath = isOld ? "jdk1/99" : "jdk12.0.1/123456789123456789123456789abcde/99"; - final String filename = "openjdk-" + (isOld ? "1" : "12.0.1") + "_" + effectivePlatform + "-x64_bin." + extension(platform); - return "/java/GA/" + versionPath + "/GPL/" + filename; - } - } - - private static byte[] filebytes(final String vendor, final String platform) throws IOException { - final String effectivePlatform = isMac(platform) ? "osx" : platform; - if (vendor.equals(VENDOR_ADOPTOPENJDK)) { - return JdkDownloadPluginFuncTest.class.getResourceAsStream("fake_adoptopenjdk_" + effectivePlatform + "." + extension(platform)).getBytes() - } else if (vendor.equals(VENDOR_OPENJDK)) { - JdkDownloadPluginFuncTest.class.getResourceAsStream("fake_openjdk_" + effectivePlatform + "." + extension(platform)).getBytes() - } - } - - private static boolean isMac(String platform) { - platform.equals("darwin") || platform.equals("mac") - } - - private static String extension(String platform) { - platform.equals("windows") ? "zip" : "tar.gz"; - } - - private static String repositoryMockSetup(WireMockServer server, String jdkVendor, String jdkVersion) { - """allprojects{ p -> - // wire the jdk repo to wiremock - p.repositories.all { repo -> - if(repo.name == "jdk_repo_${jdkVendor}_${jdkVersion}") { - repo.setUrl('${server.baseUrl()}') - } - } - }""" - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchJavaPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchJavaPluginFuncTest.groovy deleted file mode 100644 index cd2a9523699fc..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchJavaPluginFuncTest.groovy +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest - -class OpenSearchJavaPluginFuncTest extends AbstractGradleFuncTest { - - def "compatibility options are resolved from from build params minimum runtime version"() { - when: - buildFile.text = """ - plugins { - id 'opensearch.global-build-info' - } - import org.opensearch.gradle.Architecture - import org.opensearch.gradle.info.BuildParams - BuildParams.init { it.setMinimumRuntimeVersion(JavaVersion.VERSION_1_10) } - - apply plugin:'opensearch.java' - - assert compileJava.sourceCompatibility == JavaVersion.VERSION_1_10.toString() - assert compileJava.targetCompatibility == JavaVersion.VERSION_1_10.toString() - """ - - then: - gradleRunner("help").build() - } - - def "compile option --release is configured from targetCompatibility"() { - when: - buildFile.text = """ - plugins { - id 'opensearch.java' - } - - compileJava.targetCompatibility = "1.10" - afterEvaluate { - assert compileJava.options.release.get() == 10 - } - """ - then: - gradleRunner("help").build() - } - - private File someJavaSource() { - file("src/main/java/org/acme/SomeClass.java") << """ - package org.acme; - public class SomeClass {} - """ - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchTestBasePluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchTestBasePluginFuncTest.groovy deleted file mode 100644 index fb61bbded5e09..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/OpenSearchTestBasePluginFuncTest.groovy +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.TaskOutcome - -class OpenSearchTestBasePluginFuncTest extends AbstractGradleFuncTest { - - def "can configure nonInputProperties for test tasks"() { - given: - file("src/test/java/acme/SomeTests.java").text = """ - - public class SomeTests { - @org.junit.Test - public void testSysInput() { - org.junit.Assert.assertEquals("bar", System.getProperty("foo")); - } - } - - """ - buildFile.text = """ - plugins { - id 'java' - id 'opensearch.test-base' - } - - repositories { - mavenCentral() - } - - dependencies { - testImplementation 'junit:junit:4.13.1' - } - - tasks.named('test').configure { - nonInputProperties.systemProperty("foo", project.getProperty('foo')) - } - """ - - when: - def result = gradleRunner("test", '-Dtests.seed=default', '-Pfoo=bar').build() - - then: - result.task(':test').outcome == TaskOutcome.SUCCESS - - when: - result = gradleRunner("test", '-i', '-Dtests.seed=default', '-Pfoo=baz').build() - - then: - result.task(':test').outcome == TaskOutcome.UP_TO_DATE - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/TestClustersPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/TestClustersPluginFuncTest.groovy deleted file mode 100644 index ad948191e43a6..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/TestClustersPluginFuncTest.groovy +++ /dev/null @@ -1,131 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import spock.lang.IgnoreIf - -import static org.opensearch.gradle.fixtures.DistributionDownloadFixture.withMockedDistributionDownload - -/** - * We do not have coverage for the test cluster startup on windows yet. - * One step at a time... - * */ -@IgnoreIf({ os.isWindows() }) -class TestClustersPluginFuncTest extends AbstractGradleFuncTest { - - def setup() { - buildFile << """ - import org.opensearch.gradle.testclusters.DefaultTestClustersTask - plugins { - id 'opensearch.testclusters' - } - - class SomeClusterAwareTask extends DefaultTestClustersTask { - @TaskAction void doSomething() { - println 'SomeClusterAwareTask executed' - } - } - """ - } - - def "test cluster distribution is configured and started"() { - given: - buildFile << """ - testClusters { - myCluster { - testDistribution = 'archive' - } - } - - tasks.register('myTask', SomeClusterAwareTask) { - useCluster testClusters.myCluster - } - """ - - when: - def result = withMockedDistributionDownload(gradleRunner("myTask", '-i')) { - build() - } - - then: - result.output.contains("opensearch-keystore script executed!") - assertOpenSearchStdoutContains("myCluster", "Starting OpenSearch process") - assertOpenSearchStdoutContains("myCluster", "Stopping node") - assertNoCustomDistro('myCluster') - } - - def "custom distro folder created for tweaked cluster distribution"() { - given: - buildFile << """ - testClusters { - myCluster { - testDistribution = 'archive' - extraJarFile(file('${someJar().absolutePath}')) - } - } - - tasks.register('myTask', SomeClusterAwareTask) { - useCluster testClusters.myCluster - } - """ - - when: - def result = withMockedDistributionDownload(gradleRunner("myTask", '-i')) { - build() - } - - then: - result.output.contains("opensearch-keystore script executed!") - assertOpenSearchStdoutContains("myCluster", "Starting OpenSearch process") - assertOpenSearchStdoutContains("myCluster", "Stopping node") - assertCustomDistro('myCluster') - } - - boolean assertOpenSearchStdoutContains(String testCluster, String expectedOutput) { - assert new File(testProjectDir.root, - "build/testclusters/${testCluster}-0/logs/opensearch.stdout.log").text.contains(expectedOutput) - true - } - - boolean assertCustomDistro(String clusterName) { - assert customDistroFolder(clusterName).exists() - true - } - - boolean assertNoCustomDistro(String clusterName) { - assert !customDistroFolder(clusterName).exists() - true - } - - private File customDistroFolder(String clusterName) { - new File(testProjectDir.root, "build/testclusters/${clusterName}-0/distro") - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/AbstractGradleFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/AbstractGradleFuncTest.groovy deleted file mode 100644 index 6443bff93a892..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/AbstractGradleFuncTest.groovy +++ /dev/null @@ -1,141 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.fixtures - -import org.gradle.testkit.runner.GradleRunner -import org.junit.Rule -import org.junit.rules.TemporaryFolder -import spock.lang.Specification - -import java.lang.management.ManagementFactory -import java.util.jar.JarEntry -import java.util.jar.JarOutputStream - -abstract class AbstractGradleFuncTest extends Specification { - - @Rule - TemporaryFolder testProjectDir = new TemporaryFolder() - - File settingsFile - File buildFile - - def setup() { - settingsFile = testProjectDir.newFile('settings.gradle') - settingsFile << "rootProject.name = 'hello-world'\n" - buildFile = testProjectDir.newFile('build.gradle') - } - - GradleRunner gradleRunner(String... arguments) { - return gradleRunner(testProjectDir.root, arguments) - } - - GradleRunner gradleRunner(File projectDir, String... arguments) { - GradleRunner.create() - .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0) - .withProjectDir(projectDir) - .withArguments(arguments) - .withPluginClasspath() - .forwardOutput() - } - - def assertOutputContains(String givenOutput, String expected) { - assert normalizedOutput(givenOutput).contains(normalizedOutput(expected)) - true - } - - String normalizedOutput(String input) { - String normalizedPathPrefix = testProjectDir.root.canonicalPath.replace('\\', '/') - return input.readLines() - .collect { it.replace('\\', '/') } - .collect {it.replace(normalizedPathPrefix , '.') } - .join("\n") - } - - File file(String path) { - File newFile = new File(testProjectDir.root, path) - newFile.getParentFile().mkdirs() - newFile - } - - File someJar(String fileName = 'some.jar') { - File jarFolder = new File(testProjectDir.root, "jars"); - jarFolder.mkdirs() - File jarFile = new File(jarFolder, fileName) - JarEntry entry = new JarEntry("foo.txt"); - - jarFile.withOutputStream { - JarOutputStream target = new JarOutputStream(it) - target.putNextEntry(entry); - target.closeEntry(); - target.close(); - } - - return jarFile; - } - - File internalBuild(File buildScript = buildFile) { - buildScript << """plugins { - id 'opensearch.global-build-info' - } - import org.opensearch.gradle.Architecture - import org.opensearch.gradle.info.BuildParams - - BuildParams.init { it.setIsInternal(true) } - - import org.opensearch.gradle.BwcVersions - import org.opensearch.gradle.Version - - Version currentVersion = Version.fromString("9.0.0") - BwcVersions versions = new BwcVersions(new TreeSet<>( - Arrays.asList(Version.fromString("8.0.0"), Version.fromString("8.0.1"), Version.fromString("8.1.0"), currentVersion)), - currentVersion) - - BuildParams.init { it.setBwcVersions(versions) } - """ - } - - void setupLocalGitRepo() { - //TODO: cleanup - execute("git init") - execute('git config user.email "build-tool@opensearch.org"') - execute('git config user.name "Build tool"') - execute("git add .") - execute('git commit -m "Initial"') - } - - void execute(String command, File workingDir = testProjectDir.root) { - def proc = command.execute(Collections.emptyList(), workingDir) - proc.waitFor() - if(proc.exitValue()) { - println "Error running command ${command}:" - println "Syserr: " + proc.errorStream.text - } - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/DistributionDownloadFixture.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/DistributionDownloadFixture.groovy deleted file mode 100644 index d99a01e2b8398..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/DistributionDownloadFixture.groovy +++ /dev/null @@ -1,83 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.fixtures - - -import org.opensearch.gradle.OpenSearchDistribution -import org.opensearch.gradle.Version -import org.opensearch.gradle.VersionProperties -import org.gradle.testkit.runner.BuildResult -import org.gradle.testkit.runner.GradleRunner - -class DistributionDownloadFixture { - - public static final String INIT_SCRIPT = "repositories-init.gradle" - - static BuildResult withMockedDistributionDownload(GradleRunner gradleRunner, Closure buildRunClosure) { - return withMockedDistributionDownload(VersionProperties.getOpenSearch(), OpenSearchDistribution.CURRENT_PLATFORM, - gradleRunner, buildRunClosure) - } - - static BuildResult withMockedDistributionDownload(String version, OpenSearchDistribution.Platform platform, - GradleRunner gradleRunner, Closure buildRunClosure) { - String urlPath = urlPath(version, platform); - return WiremockFixture.withWireMock(urlPath, filebytes(urlPath)) { server -> - File initFile = new File(gradleRunner.getProjectDir(), INIT_SCRIPT) - initFile.text = """allprojects { p -> - p.repositories.all { repo -> - repo.allowInsecureProtocol = true - repo.setUrl('${server.baseUrl()}') - } - }""" - List givenArguments = gradleRunner.getArguments() - GradleRunner effectiveRunner = gradleRunner.withArguments(givenArguments + ['-I', initFile.getAbsolutePath()]) - buildRunClosure.delegate = effectiveRunner - return buildRunClosure.call(effectiveRunner) - } - } - - private static String urlPath(String version, OpenSearchDistribution.Platform platform) { - String fileType = ((platform == OpenSearchDistribution.Platform.LINUX || - platform == OpenSearchDistribution.Platform.DARWIN)) ? "tar.gz" : "zip" - if (Version.fromString(version).onOrAfter(Version.fromString("1.0.0"))) { - if (version.contains("SNAPSHOT")) { - return "/snapshots/core/opensearch/${version}/opensearch-min-${version}-${platform}-x64-latest.$fileType" - } - return "/releases/core/opensearch/${version}/opensearch-min-${version}-${platform}-x64.$fileType" - } else { - return "/downloads/elasticsearch/elasticsearch-oss-${version}-${platform}-x86_64.$fileType" - } - } - - private static byte[] filebytes(String urlPath) throws IOException { - String suffix = urlPath.endsWith("zip") ? "zip" : "tar.gz"; - return DistributionDownloadFixture.getResourceAsStream("/org/opensearch/gradle/fake_opensearch." + suffix).getBytes() - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/WiremockFixture.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/WiremockFixture.groovy deleted file mode 100644 index 453b2111697e8..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/fixtures/WiremockFixture.groovy +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.fixtures - -import com.github.tomakehurst.wiremock.WireMockServer -import org.gradle.testkit.runner.BuildResult - -import static com.github.tomakehurst.wiremock.client.WireMock.aResponse -import static com.github.tomakehurst.wiremock.client.WireMock.get -import static com.github.tomakehurst.wiremock.client.WireMock.head -import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo - -/** - * A test fixture that allows running testkit builds with wiremock - * */ -class WiremockFixture { - - /** - * the buildRunClosure has passed an instance of WireMockServer that can be used to access e.g. the baseUrl of - * the configured server: - * - *
-     *  WiremockFixture.withWireMock(mockRepoUrl, mockedContent) { server ->
-     *      buildFile << """
-     *          // wire a gradle repository with wiremock
-*               repositories {
-     *              maven {
-     *                 url = '${server.baseUrl()}'
-     *              }
-     *          }
-     *      }
-     *      gadleRunner('myTask').build()
-     * 
- * */ - static BuildResult withWireMock(String expectedUrl, byte[] expectedContent, Closure buildRunClosure) { - WireMockServer wireMock = new WireMockServer(0); - try { - wireMock.stubFor(head(urlEqualTo(expectedUrl)).willReturn(aResponse().withStatus(200))); - wireMock.stubFor( - get(urlEqualTo(expectedUrl)).willReturn(aResponse().withStatus(200).withBody(expectedContent)) - ) - wireMock.start(); - return buildRunClosure.call(wireMock); - } catch (Exception e) { - // for debugging - System.err.println("missed requests: " + wireMock.findUnmatchedRequests().getRequests()); - throw e; - } finally { - wireMock.stop(); - } - } - -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy deleted file mode 100644 index 8451ec2418e6d..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalBwcGitPluginFuncTest.groovy +++ /dev/null @@ -1,61 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.internal - -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.TaskOutcome - -class InternalBwcGitPluginFuncTest extends AbstractGradleFuncTest { - - def setup() { - setupLocalGitRepo() - } - - def "current repository can be cloned"() { - given: - internalBuild(); - buildFile << """ - import org.opensearch.gradle.Version; - apply plugin: org.opensearch.gradle.internal.InternalBwcGitPlugin - - bwcGitConfig { - bwcVersion = project.provider { Version.fromString("7.10.0") } - bwcBranch = project.provider { "7.x" } - checkoutDir = project.provider{file("build/checkout")} - } - """ - when: - def result = gradleRunner("createClone", '--stacktrace').build() - then: - result.task(":createClone").outcome == TaskOutcome.SUCCESS - file("build/checkout/build.gradle").exists() - file("build/checkout/settings.gradle").exists() - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy deleted file mode 100644 index 94a840fbbfade..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPluginFuncTest.groovy +++ /dev/null @@ -1,137 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.internal - -import org.gradle.internal.os.OperatingSystem -import org.opensearch.gradle.VersionProperties -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.TaskOutcome -import spock.lang.Unroll - -class InternalDistributionArchiveCheckPluginFuncTest extends AbstractGradleFuncTest { - - def setup() { - ["darwin-zip", 'darwin-tar'].each { projName -> - settingsFile << """ - include ':${projName}' - """ - - file("${projName}/build.gradle") << """ - plugins { - id 'opensearch.internal-distribution-archive-check' - }""" - } - file("SomeFile.txt") << """ - some dummy txt file - """ - - buildFile << """ - allprojects { - apply plugin:'base' - ext.elasticLicenseUrl = "http://foo.bar" - } - tasks.register("buildDarwinTar", Tar) { - compression = Compression.GZIP - from 'SomeFile.class' - } - tasks.register("buildDarwinZip", Zip) { - from 'SomeFile.txt' - }""" - } - - @Unroll - def "plain class files in distribution #archiveType archives are detected"() { - given: - file("SomeFile.class") << """ - some dummy class file - """ - buildFile << """ - tasks.withType(AbstractArchiveTask).configureEach { - from 'SomeFile.class' - } - """ - if (OperatingSystem.current() == OperatingSystem.WINDOWS) { - when: - def result = gradleRunner(":darwin-${archiveType}:check", '--stacktrace').build() - then: - result.task(":darwin-${archiveType}:checkExtraction").outcome == TaskOutcome.SKIPPED - } else { - when: - def result = gradleRunner(":darwin-${archiveType}:check", '--stacktrace').buildAndFail() - then: - result.task(":darwin-${archiveType}:checkExtraction").outcome == TaskOutcome.FAILED - result.output.contains("Detected class file in distribution ('SomeFile.class')") - } - - where: - archiveType << ["zip", 'tar'] - } - - def "fails on unexpected notice content"() { - given: - license(file("LICENSE.txt")) - file("NOTICE.txt").text = """OpenSearch (https://opensearch.org/) -Copyright 2009-2018 Acme Coorp""" - buildFile << """ - apply plugin:'base' - tasks.withType(AbstractArchiveTask).configureEach { - into("opensearch-${VersionProperties.getOpenSearch()}") { - from 'LICENSE.txt' - from 'SomeFile.txt' - from 'NOTICE.txt' - } - } - """ - - if (OperatingSystem.current() == OperatingSystem.WINDOWS) { - when: - def result = gradleRunner(":darwin-tar:checkNotice").build() - then: - result.task(":darwin-tar:checkNotice").outcome == TaskOutcome.SKIPPED - } else { - when: - def result = gradleRunner(":darwin-tar:checkNotice").buildAndFail() - then: - result.task(":darwin-tar:checkNotice").outcome == TaskOutcome.FAILED - normalizedOutput(result.output).contains("> expected line [2] in " + - "[./darwin-tar/build/tar-extracted/opensearch-${VersionProperties.getOpenSearch()}/NOTICE.txt] " + - "to be [Copyright OpenSearch Contributors] but was [Copyright 2009-2018 Acme Coorp]") - } - - } - - void license(File file = file("licenses/APACHE-LICENSE-2.0.txt")) { - file << """license coorp stuff line 1 -license coorp stuff line 2 -license coorp stuff line 3 -""" - } - -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy deleted file mode 100644 index b5f643e6f4083..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPluginFuncTest.groovy +++ /dev/null @@ -1,237 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.internal - -import org.apache.commons.compress.archivers.tar.TarArchiveEntry -import org.apache.commons.compress.archivers.tar.TarArchiveInputStream -import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream -import org.apache.tools.zip.ZipEntry -import org.apache.tools.zip.ZipFile -import org.gradle.internal.os.OperatingSystem -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.BuildResult -import org.gradle.testkit.runner.TaskOutcome - -class InternalDistributionArchiveSetupPluginFuncTest extends AbstractGradleFuncTest { - - def setup() { - buildFile << """ - import org.opensearch.gradle.tar.SymbolicLinkPreservingTar - plugins { - id 'opensearch.internal-distribution-archive-setup' - } - """ - file('someFile.txt') << "some content" - } - - def "applies defaults to tar tasks"() { - given: - file('someFile.txt') << "some content" - buildFile << """ - tasks.register('${buildTaskName}', SymbolicLinkPreservingTar) { - from 'someFile.txt' - } - """ - - when: - def result = gradleRunner(buildTaskName).build() - - then: - file(expectedOutputArchivePath).exists() - assertTarPermissionDefaults(file(expectedOutputArchivePath)) - assertEmptyDirTasksTriggered(result) - - where: - buildTaskName | expectedOutputArchivePath - "buildDarwinTar" | "darwin-tar/build/distributions/opensearch-min.tar.gz" - } - - def "applies defaults to zip tasks"() { - given: - buildFile << """ - tasks.register('${buildTaskName}', Zip) { - from 'someFile.txt' - } - """ - - when: - def result = gradleRunner(buildTaskName).build() - - then: - file(expectedOutputArchivePath).exists() - assertZipPermissionDefaults(file(expectedOutputArchivePath)) - assertEmptyDirTasksTriggered(result) - - where: - buildTaskName | expectedOutputArchivePath - "buildDarwinZip" | "darwin-zip/build/distributions/opensearch-min.zip" - } - - def "registered distribution provides archives and directory variant"() { - given: - file('someFile.txt') << "some content" - - settingsFile << """ - include ':consumer' - include ':producer-tar' - """ - - buildFile << """ - import org.gradle.api.artifacts.type.ArtifactTypeDefinition; - import org.gradle.api.internal.artifacts.ArtifactAttributes; - def snapshotFile = file("snapshot-\${version}.txt") - snapshotFile << 'some snapshot content' - distribution_archives { - producerTar { - content { - project.copySpec { - from 'someFile.txt' - from snapshotFile - } - } - } - } - project('consumer') { p -> - configurations { - consumeArchive {} - consumeDir {} - } - dependencies { - consumeDir project(path: ':producer-tar', configuration:'extracted') - consumeArchive project(path: ':producer-tar', configuration:'default' ) - } - tasks.register("copyDir", Copy) { - from(configurations.consumeDir) - into('build/dir') - } - tasks.register("copyArchive", Copy) { - from(configurations.consumeArchive) - into('build/archives') - } - } - """ - - if (OperatingSystem.current() != OperatingSystem.WINDOWS) { - when: - def result = gradleRunner("copyArchive").build() - then: "tar task executed and target folder contains plain tar" - result.task(':buildProducerTar').outcome == TaskOutcome.SUCCESS - result.task(':consumer:copyArchive').outcome == TaskOutcome.SUCCESS - file("producer-tar/build/distributions/opensearch-min.tar.gz").exists() - file("consumer/build/archives/opensearch-min.tar.gz").exists() - - when: - result = gradleRunner("copyDir", "-Pversion=1.0").build() - then: "plain copy task executed and target folder contains plain content" - result.task(':buildProducer').outcome == TaskOutcome.SUCCESS - result.task(':consumer:copyDir').outcome == TaskOutcome.SUCCESS - file("producer-tar/build/install/someFile.txt").exists() - file("producer-tar/build/install/snapshot-1.0.txt").exists() - file("consumer/build/dir/someFile.txt").exists() - - when: - gradleRunner("copyDir", "-Pversion=2.0").build() - then: "old content is cleared out" - file("producer-tar/build/install/someFile.txt").exists() - !file("producer-tar/build/install/snapshot-1.0.txt").exists() - file("producer-tar/build/install/snapshot-2.0.txt").exists() - } else { - when: - def result = gradleRunner("copyArchive").build() - then: "tar task execution skipped on windows" - result.task(':buildProducerTar').outcome == TaskOutcome.SKIPPED - result.task(':consumer:copyArchive').outcome == TaskOutcome.NO_SOURCE - - when: - result = gradleRunner("copyDir", "-Pversion=1.0").build() - then: "plain copy task execution skipped on windows" - result.task(':buildProducer').outcome == TaskOutcome.SKIPPED - result.task(':consumer:copyDir').outcome == TaskOutcome.NO_SOURCE - } - - } - - private static boolean assertTarPermissionDefaults(File tarArchive) { - TarArchiveInputStream tarInput = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream(tarArchive))) - try { - TarArchiveEntry currentEntry = tarInput.getNextTarEntry() - while (currentEntry != null) { - if (currentEntry.isDirectory()) { - assertDefaultDirPermissions(currentEntry.getMode()) - } else { - assertDefaultFilePermissions(currentEntry.getMode()) - } - currentEntry = tarInput.getNextTarEntry() - } - return true - } finally { - tarInput.close() - } - } - - private static boolean assertZipPermissionDefaults(File archive) { - ZipFile zip = new ZipFile(archive) - try { - Enumeration entries = zip.getEntries() - while (entries.hasMoreElements()) { - ZipEntry zipEntry = entries.nextElement() - if (zipEntry.isDirectory()) { - assertDefaultDirPermissions(zipEntry.getUnixMode()) - } else { - assertDefaultFilePermissions(zipEntry.getUnixMode()) - } - } - } finally { - zip.close() - } - true - } - - private static boolean assertDefaultDirPermissions(int mode) { - assert ((mode >> 6) & 07) == 7 - assert ((mode >> 3) & 07) == 5 - assert ((mode >> 0) & 07) == 5 - true - } - - private static boolean assertDefaultFilePermissions(int mode) { - assert ((mode >> 6) & 07) == 6 - assert ((mode >> 3) & 07) == 4 - assert ((mode >> 0) & 07) == 4 - true - } - - private static boolean assertEmptyDirTasksTriggered(BuildResult result) { - result.task(":createJvmOptionsDir").outcome == TaskOutcome.SUCCESS - result.task(":createLogsDir").outcome == TaskOutcome.SUCCESS - result.task(":createPluginsDir").outcome == TaskOutcome.SUCCESS - true - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy deleted file mode 100644 index 9d5e8009e3553..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionBwcSetupPluginFuncTest.groovy +++ /dev/null @@ -1,160 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.internal - -import org.apache.commons.io.FileUtils -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.TaskOutcome -import org.junit.Rule -import org.junit.rules.TemporaryFolder - -class InternalDistributionBwcSetupPluginFuncTest extends AbstractGradleFuncTest { - - @Rule - TemporaryFolder remoteRepoDirs = new TemporaryFolder() - - File remoteGitRepo - - def setup() { - remoteGitRepo = new File(setupGitRemote(), '.git') - - "git clone ${remoteGitRepo.absolutePath}".execute(Collections.emptyList(), testProjectDir.root).waitFor() - File buildScript = new File(testProjectDir.root, 'remote/build.gradle') - internalBuild(buildScript) - buildScript << """ - apply plugin: 'opensearch.internal-distribution-bwc-setup' - """ - } - - def "builds distribution from branches via archives assemble"() { - when: - def result = gradleRunner(new File(testProjectDir.root, "remote"), - ":distribution:bwc:bugfix:buildBwcDarwinTar", - "-DtestRemoteRepo=" + remoteGitRepo, - "-Dbwc.remote=origin") - .build() - then: - result.task(":distribution:bwc:bugfix:buildBwcDarwinTar").outcome == TaskOutcome.SUCCESS - - and: "assemble task triggered" - result.output.contains("[8.0.1] > Task :distribution:archives:darwin-tar:assemble") - } - - def "bwc distribution archives can be resolved as bwc project artifact"() { - setup: - new File(testProjectDir.root, 'remote/build.gradle') << """ - - configurations { - dists - } - - dependencies { - dists project(path: ":distribution:bwc:bugfix", configuration:"darwin-tar") - } - - tasks.register("resolveDistributionArchive") { - inputs.files(configurations.dists) - doLast { - configurations.dists.files.each { - println "distfile " + (it.absolutePath - project.rootDir.absolutePath) - } - } - } - """ - when: - def result = gradleRunner(new File(testProjectDir.root, "remote"), - ":resolveDistributionArchive", - "-DtestRemoteRepo=" + remoteGitRepo, - "-Dbwc.remote=origin") - .build() - then: - result.task(":resolveDistributionArchive").outcome == TaskOutcome.SUCCESS - result.task(":distribution:bwc:bugfix:buildBwcDarwinTar").outcome == TaskOutcome.SUCCESS - - and: "assemble task triggered" - result.output.contains("[8.0.1] > Task :distribution:archives:darwin-tar:assemble") - normalizedOutput(result.output) - .contains("distfile /distribution/bwc/bugfix/build/bwc/checkout-8.0/distribution/archives/darwin-tar/" + - "build/distributions/opensearch-8.0.1-SNAPSHOT-darwin-x64.tar.gz") - } - - def "bwc expanded distribution folder can be resolved as bwc project artifact"() { - setup: - new File(testProjectDir.root, 'remote/build.gradle') << """ - - configurations { - expandedDist - } - - dependencies { - expandedDist project(path: ":distribution:bwc:bugfix", configuration:"expanded-darwin-tar") - } - - tasks.register("resolveExpandedDistribution") { - inputs.files(configurations.expandedDist) - doLast { - configurations.expandedDist.files.each { - println "distfile " + (it.absolutePath - project.rootDir.absolutePath) - } - } - } - """ - when: - def result = gradleRunner(new File(testProjectDir.root, "remote"), - ":resolveExpandedDistribution", - "-DtestRemoteRepo=" + remoteGitRepo, - "-Dbwc.remote=origin") - .build() - then: - result.task(":resolveExpandedDistribution").outcome == TaskOutcome.SUCCESS - result.task(":distribution:bwc:bugfix:buildBwcDarwinTar").outcome == TaskOutcome.SUCCESS - - and: "assemble task triggered" - result.output.contains("[8.0.1] > Task :distribution:archives:darwin-tar:assemble") - normalizedOutput(result.output) - .contains("distfile /distribution/bwc/bugfix/build/bwc/checkout-8.0/" + - "distribution/archives/darwin-tar/build/install") - } - - File setupGitRemote() { - URL fakeRemote = getClass().getResource("fake_git/remote") - File workingRemoteGit = new File(remoteRepoDirs.root, 'remote') - FileUtils.copyDirectory(new File(fakeRemote.file), workingRemoteGit) - fakeRemote.file + "/.git" - gradleRunner(workingRemoteGit, "wrapper").build() - execute("git init", workingRemoteGit) - execute('git config user.email "build-tool@opensearch.org"', workingRemoteGit) - execute('git config user.name "Build tool"', workingRemoteGit) - execute("git add .", workingRemoteGit) - execute('git commit -m"Initial"', workingRemoteGit) - execute("git checkout -b origin/8.0", workingRemoteGit) - return workingRemoteGit; - } -} diff --git a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy b/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy deleted file mode 100644 index 46143687b83a7..0000000000000 --- a/buildSrc/src/integTest/groovy/org/opensearch/gradle/internal/InternalDistributionDownloadPluginFuncTest.groovy +++ /dev/null @@ -1,224 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.internal - -import org.opensearch.gradle.VersionProperties -import org.opensearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.GradleRunner -import org.gradle.testkit.runner.TaskOutcome -import org.junit.Rule -import org.junit.rules.TemporaryFolder - -import java.lang.management.ManagementFactory - -class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest { - - def "plugin application fails on non internal build"() { - given: - buildFile.text = """ - plugins { - id 'opensearch.internal-distribution-download' - } - """ - - when: - def result = gradleRunner("tasks").buildAndFail() - - then: - assertOutputContains(result.output, "Plugin 'opensearch.internal-distribution-download' is not supported. " + - "Use 'opensearch.distribution-download' plugin instead") - } - - def "resolves current version from local build"() { - given: - internalBuild() - localDistroSetup() - def distroVersion = VersionProperties.getOpenSearch() - buildFile << """ - apply plugin: 'opensearch.internal-distribution-download' - - opensearch_distributions { - test_distro { - version = "$distroVersion" - type = "archive" - platform = "linux" - architecture = Architecture.current(); - } - } - tasks.register("setupDistro", Sync) { - from(opensearch_distributions.test_distro.extracted) - into("build/distro") - } - """ - - when: - def result = gradleRunner("setupDistro", '-g', testProjectDir.newFolder('GUH').path).build() - - then: - result.task(":distribution:archives:linux-tar:buildExpanded").outcome == TaskOutcome.SUCCESS - result.task(":setupDistro").outcome == TaskOutcome.SUCCESS - assertExtractedDistroIsCreated("build/distro", 'current-marker.txt') - } - - def "resolves expanded bwc versions from source"() { - given: - internalBuild() - bwcMinorProjectSetup() - buildFile << """ - apply plugin: 'opensearch.internal-distribution-download' - - opensearch_distributions { - test_distro { - version = "8.1.0" - type = "archive" - platform = "linux" - architecture = Architecture.current(); - } - } - tasks.register("setupDistro", Sync) { - from(opensearch_distributions.test_distro.extracted) - into("build/distro") - } - """ - when: - - def result = gradleRunner("setupDistro").build() - then: - result.task(":distribution:bwc:minor:buildBwcExpandedTask").outcome == TaskOutcome.SUCCESS - result.task(":setupDistro").outcome == TaskOutcome.SUCCESS - assertExtractedDistroIsCreated("distribution/bwc/minor/build/install/opensearch-distro", - 'bwc-marker.txt') - } - - def "fails on resolving bwc versions with no bundled jdk"() { - given: - internalBuild() - bwcMinorProjectSetup() - buildFile << """ - apply plugin: 'opensearch.internal-distribution-download' - - opensearch_distributions { - test_distro { - version = "8.1.0" - type = "archive" - platform = "linux" - architecture = Architecture.current(); - bundledJdk = false - } - } - tasks.register("createExtractedTestDistro") { - dependsOn opensearch_distributions.test_distro.extracted - } - """ - when: - def result = gradleRunner("createExtractedTestDistro").buildAndFail() - then: - assertOutputContains(result.output, "Configuring a snapshot bwc distribution ('test_distro') " + - "without a bundled JDK is not supported.") - } - - private void bwcMinorProjectSetup() { - settingsFile << """ - include ':distribution:bwc:minor' - """ - def bwcSubProjectFolder = testProjectDir.newFolder("distribution", "bwc", "minor") - new File(bwcSubProjectFolder, 'bwc-marker.txt') << "bwc=minor" - new File(bwcSubProjectFolder, 'build.gradle') << """ - apply plugin:'base' - - // packed distro - configurations.create("linux-tar") - tasks.register("buildBwcTask", Tar) { - from('bwc-marker.txt') - archiveExtension = "tar.gz" - compression = Compression.GZIP - } - artifacts { - it.add("linux-tar", buildBwcTask) - } - - // expanded distro - configurations.create("expanded-linux-tar") - def expandedTask = tasks.register("buildBwcExpandedTask", Copy) { - from('bwc-marker.txt') - into('build/install/opensearch-distro') - } - artifacts { - it.add("expanded-linux-tar", file('build/install')) { - builtBy expandedTask - type = 'directory' - } - } - """ - } - - private void localDistroSetup() { - settingsFile << """ - include ":distribution:archives:linux-tar" - """ - def bwcSubProjectFolder = testProjectDir.newFolder("distribution", "archives", "linux-tar") - new File(bwcSubProjectFolder, 'current-marker.txt') << "current" - new File(bwcSubProjectFolder, 'build.gradle') << """ - import org.gradle.api.internal.artifacts.ArtifactAttributes; - - apply plugin:'distribution' - - def buildTar = tasks.register("buildTar", Tar) { - from('current-marker.txt') - archiveExtension = "tar.gz" - compression = Compression.GZIP - } - def buildExpanded = tasks.register("buildExpanded", Copy) { - from('current-marker.txt') - into("build/local") - } - configurations { - extracted { - attributes { - attribute(ArtifactAttributes.ARTIFACT_FORMAT, "directory") - } - } - } - artifacts { - it.add("default", buildTar) - it.add("extracted", buildExpanded) - } - """ - buildFile << """ - """ - } - - boolean assertExtractedDistroIsCreated(String relativeDistroPath, String markerFileName) { - File extractedFolder = new File(testProjectDir.root, relativeDistroPath) - assert extractedFolder.exists() - assert new File(extractedFolder, markerFileName).exists() - true - } -} diff --git a/buildSrc/src/integTest/java/org/opensearch/gradle/BuildPluginIT.java b/buildSrc/src/integTest/java/org/opensearch/gradle/BuildPluginIT.java deleted file mode 100644 index 4658b31d77fe1..0000000000000 --- a/buildSrc/src/integTest/java/org/opensearch/gradle/BuildPluginIT.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.apache.commons.io.FileUtils; -import org.apache.commons.io.IOUtils; -import org.opensearch.gradle.test.GradleIntegrationTestCase; -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.Rule; -import org.junit.rules.TemporaryFolder; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; - -import static org.opensearch.gradle.test.TestClasspathUtils.setupJarJdkClasspath; - -public class BuildPluginIT extends GradleIntegrationTestCase { - - @Rule - public TemporaryFolder tmpDir = new TemporaryFolder(); - - public void testPluginCanBeApplied() { - BuildResult result = getGradleRunner("opensearch.build").withArguments("hello", "-s").build(); - assertTaskSuccessful(result, ":hello"); - assertOutputContains("build plugin can be applied"); - } - - public void testCheckTask() { - setupJarJdkClasspath(getProjectDir("opensearch.build")); - BuildResult result = getGradleRunner("opensearch.build").withArguments("check", "assemble", "-s").build(); - assertTaskSuccessful(result, ":check"); - } - - public void testInsecureMavenRepository() throws IOException { - final String name = "opensearch-maven"; - final String url = "http://s3.amazonaws.com/artifacts.opensearch.org/maven"; - // add an insecure maven repository to the build.gradle - final List lines = Arrays.asList( - "repositories {", - " maven {", - " name \"opensearch-maven\"", - " url \"" + url + "\"\n", - " }", - "}" - ); - runInsecureArtifactRepositoryTest(name, url, lines); - } - - public void testInsecureIvyRepository() throws IOException { - final String name = "opensearch-ivy"; - final String url = "http://s3.amazonaws.com/artifacts.opensearch.org/ivy"; - // add an insecure ivy repository to the build.gradle - final List lines = Arrays.asList( - "repositories {", - " ivy {", - " name \"opensearch-ivy\"", - " url \"" + url + "\"\n", - " }", - "}" - ); - runInsecureArtifactRepositoryTest(name, url, lines); - } - - private void runInsecureArtifactRepositoryTest(final String name, final String url, final List lines) throws IOException { - final File projectDir = getProjectDir("opensearch.build"); - final Path projectDirPath = projectDir.toPath(); - FileUtils.copyDirectory(projectDir, tmpDir.getRoot(), file -> { - final Path relativePath = projectDirPath.relativize(file.toPath()); - for (Path segment : relativePath) { - if (segment.toString().equals("build")) { - return false; - } - } - return true; - }); - final List buildGradleLines = Files.readAllLines(tmpDir.getRoot().toPath().resolve("build.gradle"), StandardCharsets.UTF_8); - buildGradleLines.addAll(lines); - Files.write(tmpDir.getRoot().toPath().resolve("build.gradle"), buildGradleLines, StandardCharsets.UTF_8); - final BuildResult result = GradleRunner.create() - .withProjectDir(tmpDir.getRoot()) - .withArguments("clean", "hello", "-s", "-i", "--warning-mode=all", "--scan") - .withPluginClasspath() - .buildAndFail(); - assertOutputContains( - result.getOutput(), - "repository [" + name + "] on project with path [:] is not using a secure protocol for artifacts on [" + url + "]" - ); - } - - public void testLicenseAndNotice() throws IOException { - BuildResult result = getGradleRunner("opensearch.build").withArguments("clean", "assemble").build(); - - assertTaskSuccessful(result, ":assemble"); - - assertBuildFileExists(result, "opensearch.build", "distributions/opensearch.build.jar"); - - try (ZipFile zipFile = new ZipFile(new File(getBuildDir("opensearch.build"), "distributions/opensearch.build.jar"))) { - ZipEntry licenseEntry = zipFile.getEntry("META-INF/LICENSE.txt"); - ZipEntry noticeEntry = zipFile.getEntry("META-INF/NOTICE.txt"); - assertNotNull("Jar does not have META-INF/LICENSE.txt", licenseEntry); - assertNotNull("Jar does not have META-INF/NOTICE.txt", noticeEntry); - try (InputStream license = zipFile.getInputStream(licenseEntry); InputStream notice = zipFile.getInputStream(noticeEntry)) { - assertEquals("this is a test license file", IOUtils.toString(license, StandardCharsets.UTF_8.name())); - assertEquals("this is a test notice file", IOUtils.toString(notice, StandardCharsets.UTF_8.name())); - } - } - } - -} diff --git a/buildSrc/src/integTest/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTaskIT.java b/buildSrc/src/integTest/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTaskIT.java deleted file mode 100644 index b05250f8a66a7..0000000000000 --- a/buildSrc/src/integTest/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTaskIT.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.test.GradleIntegrationTestCase; - -public class ExportOpenSearchBuildResourcesTaskIT extends GradleIntegrationTestCase { - - public static final String PROJECT_NAME = "opensearch-build-resources"; - - public void testIncorrectUsage() { - assertOutputContains( - getGradleRunner(PROJECT_NAME).withArguments("noConfigAfterExecution", "-s", "-i").buildAndFail().getOutput(), - "buildResources can't be configured after the task ran" - ); - } -} diff --git a/buildSrc/src/integTest/java/org/opensearch/gradle/ReaperPluginIT.java b/buildSrc/src/integTest/java/org/opensearch/gradle/ReaperPluginIT.java deleted file mode 100644 index 2d4ec77827fcf..0000000000000 --- a/buildSrc/src/integTest/java/org/opensearch/gradle/ReaperPluginIT.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.test.GradleIntegrationTestCase; -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.Before; - -public class ReaperPluginIT extends GradleIntegrationTestCase { - private GradleRunner runner; - - @Before - public void setup() { - runner = getGradleRunner("reaper"); - } - - public void testCanLaunchReaper() { - BuildResult result = runner.withArguments(":launchReaper", "-S", "--info").build(); - assertTaskSuccessful(result, ":launchReaper"); - assertOutputContains(result.getOutput(), "Copying reaper.jar..."); - } -} diff --git a/buildSrc/src/integTest/java/org/opensearch/gradle/precommit/TestingConventionsTasksIT.java b/buildSrc/src/integTest/java/org/opensearch/gradle/precommit/TestingConventionsTasksIT.java deleted file mode 100644 index 436bfc557756d..0000000000000 --- a/buildSrc/src/integTest/java/org/opensearch/gradle/precommit/TestingConventionsTasksIT.java +++ /dev/null @@ -1,163 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.test.GradleIntegrationTestCase; -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.Before; - -public class TestingConventionsTasksIT extends GradleIntegrationTestCase { - - @Before - public void setUp() {} - - public void testInnerClasses() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments( - "clean", - ":no_tests_in_inner_classes:testingConventions", - "-i", - "-s" - ); - BuildResult result = runner.buildAndFail(); - assertOutputContains( - result.getOutput(), - "Test classes implemented by inner classes will not run:", - " * org.opensearch.gradle.testkit.NastyInnerClasses$LooksLikeATestWithoutNamingConvention1", - " * org.opensearch.gradle.testkit.NastyInnerClasses$LooksLikeATestWithoutNamingConvention2", - " * org.opensearch.gradle.testkit.NastyInnerClasses$LooksLikeATestWithoutNamingConvention3", - " * org.opensearch.gradle.testkit.NastyInnerClasses$NamingConventionIT", - " * org.opensearch.gradle.testkit.NastyInnerClasses$NamingConventionTests" - ); - } - - public void testNamingConvention() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments( - "clean", - ":incorrect_naming_conventions:testingConventions", - "-i", - "-s" - ); - BuildResult result = runner.buildAndFail(); - assertOutputContains( - result.getOutput(), - "Seem like test classes but don't match naming convention:", - " * org.opensearch.gradle.testkit.LooksLikeATestWithoutNamingConvention1", - " * org.opensearch.gradle.testkit.LooksLikeATestWithoutNamingConvention2", - " * org.opensearch.gradle.testkit.LooksLikeATestWithoutNamingConvention3" - ); - assertOutputDoesNotContain(result.getOutput(), "LooksLikeTestsButAbstract"); - } - - public void testNoEmptyTasks() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments( - "clean", - ":empty_test_task:testingConventions", - "-i", - "-s" - ); - BuildResult result = runner.buildAndFail(); - assertOutputContains( - result.getOutput(), - "Expected at least one test class included in task :empty_test_task:emptyTest, but found none.", - "Expected at least one test class included in task :empty_test_task:test, but found none." - ); - } - - public void testAllTestTasksIncluded() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments( - "clean", - ":all_classes_in_tasks:testingConventions", - "-i", - "-s" - ); - BuildResult result = runner.buildAndFail(); - assertOutputContains( - result.getOutput(), - "Test classes are not included in any enabled task (:all_classes_in_tasks:test):", - " * org.opensearch.gradle.testkit.NamingConventionIT" - ); - } - - public void testTaskNotImplementBaseClass() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments( - "clean", - ":not_implementing_base:testingConventions", - "-i", - "-s" - ); - BuildResult result = runner.buildAndFail(); - assertOutputContains( - result.getOutput(), - "Tests classes with suffix `IT` should extend org.opensearch.gradle.testkit.Integration but the following classes do not:", - " * org.opensearch.gradle.testkit.NamingConventionIT", - " * org.opensearch.gradle.testkit.NamingConventionMissmatchIT", - "Tests classes with suffix `Tests` should extend org.opensearch.gradle.testkit.Unit but the following classes do not:", - " * org.opensearch.gradle.testkit.NamingConventionMissmatchTests", - " * org.opensearch.gradle.testkit.NamingConventionTests" - ); - } - - public void testValidSetupWithoutBaseClass() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments( - "clean", - ":valid_setup_no_base:testingConventions", - "-i", - "-s" - ); - BuildResult result = runner.build(); - assertTaskSuccessful(result, ":valid_setup_no_base:testingConventions"); - } - - public void testValidSetupWithBaseClass() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments( - "clean", - ":valid_setup_with_base:testingConventions", - "-i", - "-s" - ); - BuildResult result = runner.build(); - assertTaskSuccessful(result, ":valid_setup_with_base:testingConventions"); - } - - public void testTestsInMain() { - GradleRunner runner = getGradleRunner("testingConventions").withArguments("clean", ":tests_in_main:testingConventions", "-i", "-s"); - BuildResult result = runner.buildAndFail(); - assertOutputContains( - result.getOutput(), - "Classes matching the test naming convention should be in test not main:", - " * NamingConventionIT", - " * NamingConventionTests" - ); - } - -} diff --git a/buildSrc/src/integTest/java/org/opensearch/gradle/precommit/ThirdPartyAuditTaskIT.java b/buildSrc/src/integTest/java/org/opensearch/gradle/precommit/ThirdPartyAuditTaskIT.java deleted file mode 100644 index 4e5bbfd409f90..0000000000000 --- a/buildSrc/src/integTest/java/org/opensearch/gradle/precommit/ThirdPartyAuditTaskIT.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.test.GradleIntegrationTestCase; -import org.gradle.testkit.runner.BuildResult; -import org.junit.Before; - -import static org.opensearch.gradle.test.TestClasspathUtils.setupJarJdkClasspath; - -public class ThirdPartyAuditTaskIT extends GradleIntegrationTestCase { - - @Before - public void setUp() throws Exception { - // Build the sample jars - getGradleRunner("thirdPartyAudit").withArguments(":sample_jars:build", "-s").build(); - // propagate jdkjarhell jar - setupJarJdkClasspath(getProjectDir("thirdPartyAudit")); - } - - public void testOpenSearchIgnored() { - BuildResult result = getGradleRunner("thirdPartyAudit").withArguments( - ":clean", - ":empty", - "-s", - "-PcompileOnlyGroup=opensearch.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=opensearch.gradle:dummy-io", - "-PcompileVersion=0.0.1" - ).build(); - assertTaskNoSource(result, ":empty"); - assertNoDeprecationWarning(result); - } - - public void testWithEmptyRules() { - getGradleRunner("thirdPartyAudit").withArguments( - ":clean", - ":empty", - "-s", - "-PcompileOnlyGroup=other.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=other.gradle:dummy-io", - "-PcompileVersion=0.0.1" - ).build(); - } - - public void testViolationFoundAndCompileOnlyIgnored() { - BuildResult result = getGradleRunner("thirdPartyAudit").withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileOnlyGroup=other.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=other.gradle:dummy-io", - "-PcompileVersion=0.0.1" - ).buildAndFail(); - - assertTaskFailed(result, ":absurd"); - assertOutputContains(result.getOutput(), "Classes with violations:", " * TestingIO", "> Audit of third party dependencies failed"); - assertOutputDoesNotContain(result.getOutput(), "Missing classes:"); - assertNoDeprecationWarning(result); - } - - public void testClassNotFoundAndCompileOnlyIgnored() { - BuildResult result = getGradleRunner("thirdPartyAudit").withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileGroup=other.gradle:broken-log4j", - "-PcompileVersion=0.0.1", - "-PcompileOnlyGroup=other.gradle:dummy-io", - "-PcompileOnlyVersion=0.0.1" - ).buildAndFail(); - assertTaskFailed(result, ":absurd"); - - assertOutputContains( - result.getOutput(), - "Missing classes:", - " * org.apache.logging.log4j.LogManager", - "> Audit of third party dependencies failed" - ); - assertOutputDoesNotContain(result.getOutput(), "Classes with violations:"); - assertNoDeprecationWarning(result); - } - - public void testJarHellWithJDK() { - BuildResult result = getGradleRunner("thirdPartyAudit").withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileGroup=other.gradle:jarhellJdk", - "-PcompileVersion=0.0.1", - "-PcompileOnlyGroup=other.gradle:dummy-io", - "-PcompileOnlyVersion=0.0.1" - ).buildAndFail(); - assertTaskFailed(result, ":absurd"); - - assertOutputContains( - result.getOutput(), - "> Audit of third party dependencies failed:", - " Jar Hell with the JDK:", - " * java.lang.String" - ); - assertOutputDoesNotContain(result.getOutput(), "Classes with violations:"); - assertNoDeprecationWarning(result); - } - - public void testOpenSearchIgnoredWithViolations() { - BuildResult result = getGradleRunner("thirdPartyAudit").withArguments( - ":clean", - ":absurd", - "-s", - "-PcompileOnlyGroup=opensearch.gradle:broken-log4j", - "-PcompileOnlyVersion=0.0.1", - "-PcompileGroup=opensearch.gradle:dummy-io", - "-PcompileVersion=0.0.1" - ).build(); - assertTaskNoSource(result, ":absurd"); - assertNoDeprecationWarning(result); - } - -} diff --git a/buildSrc/src/integTest/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTarIT.java b/buildSrc/src/integTest/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTarIT.java deleted file mode 100644 index 61aa55b9c6b53..0000000000000 --- a/buildSrc/src/integTest/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTarIT.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.tar; - -import org.apache.commons.compress.archivers.tar.TarArchiveEntry; -import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; -import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream; -import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; -import org.apache.tools.ant.taskdefs.condition.Os; -import org.opensearch.gradle.test.GradleIntegrationTestCase; -import org.gradle.api.GradleException; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.Before; -import org.junit.Rule; -import org.junit.rules.TemporaryFolder; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; - -import static org.hamcrest.CoreMatchers.anyOf; -import static org.hamcrest.CoreMatchers.equalTo; -import static org.junit.Assume.assumeFalse; - -public class SymbolicLinkPreservingTarIT extends GradleIntegrationTestCase { - - @Rule - public final TemporaryFolder temporaryFolder = new TemporaryFolder(); - - @Before - public void before() throws IOException { - assumeFalse("Skip tar tests on windows.", Os.isFamily(Os.FAMILY_WINDOWS)); - final Path realFolder = temporaryFolder.getRoot().toPath().resolve("real-folder"); - Files.createDirectory(realFolder); - Files.createFile(realFolder.resolve("file")); - Files.createSymbolicLink(realFolder.resolve("link-to-file"), Paths.get("./file")); - final Path linkInFolder = temporaryFolder.getRoot().toPath().resolve("link-in-folder"); - Files.createDirectory(linkInFolder); - Files.createSymbolicLink(linkInFolder.resolve("link-to-file"), Paths.get("../real-folder/file")); - final Path linkToRealFolder = temporaryFolder.getRoot().toPath().resolve("link-to-real-folder"); - Files.createSymbolicLink(linkToRealFolder, Paths.get("./real-folder")); - } - - public void testBZip2Tar() throws IOException { - runBuild("buildBZip2Tar", true); - assertTar(".bz2", BZip2CompressorInputStream::new, true); - } - - public void testBZip2TarDoNotPreserveFileTimestamps() throws IOException { - runBuild("buildBZip2Tar", false); - assertTar(".bz2", BZip2CompressorInputStream::new, false); - } - - public void testGZipTar() throws IOException { - runBuild("buildGZipTar", true); - assertTar(".gz", GzipCompressorInputStream::new, true); - } - - public void testGZipTarDoNotPreserveFileTimestamps() throws IOException { - runBuild("buildGZipTar", false); - assertTar(".gz", GzipCompressorInputStream::new, false); - } - - public void testTar() throws IOException { - runBuild("buildTar", true); - assertTar("", fis -> fis, true); - } - - public void testTarDoNotPreserveFileTimestamps() throws IOException { - runBuild("buildTar", false); - assertTar("", fis -> fis, false); - } - - interface FileInputStreamWrapper { - InputStream apply(FileInputStream fis) throws IOException; - } - - private void assertTar(final String extension, final FileInputStreamWrapper wrapper, boolean preserveFileTimestamps) - throws IOException { - try ( - FileInputStream fis = new FileInputStream(getOutputFile(extension)); - TarArchiveInputStream tar = new TarArchiveInputStream(wrapper.apply(fis)) - ) { - TarArchiveEntry entry = tar.getNextTarEntry(); - boolean realFolderEntry = false; - boolean fileEntry = false; - boolean linkToFileEntry = false; - boolean linkInFolderEntry = false; - boolean linkInFolderLinkToFileEntry = false; - boolean linkToRealFolderEntry = false; - while (entry != null) { - if (entry.getName().equals("real-folder/")) { - assertTrue(entry.isDirectory()); - realFolderEntry = true; - } else if (entry.getName().equals("real-folder/file")) { - assertTrue(entry.isFile()); - fileEntry = true; - } else if (entry.getName().equals("real-folder/link-to-file")) { - assertTrue(entry.isSymbolicLink()); - assertThat(entry.getLinkName(), anyOf(equalTo("./file"), equalTo(".\\file"))); - linkToFileEntry = true; - } else if (entry.getName().equals("link-in-folder/")) { - assertTrue(entry.isDirectory()); - linkInFolderEntry = true; - } else if (entry.getName().equals("link-in-folder/link-to-file")) { - assertTrue(entry.isSymbolicLink()); - assertThat(entry.getLinkName(), anyOf(equalTo("../real-folder/file"), equalTo("..\\real-folder\\file"))); - linkInFolderLinkToFileEntry = true; - } else if (entry.getName().equals("link-to-real-folder")) { - assertTrue(entry.isSymbolicLink()); - assertThat(entry.getLinkName(), anyOf(equalTo("./real-folder"), equalTo(".\\real-folder"))); - linkToRealFolderEntry = true; - } else { - throw new GradleException("unexpected entry [" + entry.getName() + "]"); - } - if (preserveFileTimestamps) { - assertTrue(entry.getModTime().getTime() > 0); - } else { - assertThat(entry.getModTime().getTime(), equalTo(0L)); - } - entry = tar.getNextTarEntry(); - } - assertTrue(realFolderEntry); - assertTrue(fileEntry); - assertTrue(linkToFileEntry); - assertTrue(linkInFolderEntry); - assertTrue(linkInFolderLinkToFileEntry); - assertTrue(linkToRealFolderEntry); - } - } - - private void runBuild(final String task, final boolean preserveFileTimestamps) { - final GradleRunner runner = GradleRunner.create() - .withProjectDir(getProjectDir()) - .withArguments( - task, - "-Dtests.symbolic_link_preserving_tar_source=" + temporaryFolder.getRoot().toString(), - "-Dtests.symbolic_link_preserving_tar_preserve_file_timestamps=" + preserveFileTimestamps, - "-i" - ) - .withPluginClasspath(); - - runner.build(); - } - - private File getProjectDir() { - return getProjectDir("symbolic-link-preserving-tar"); - } - - private File getOutputFile(final String extension) { - return getProjectDir().toPath().resolve("build/distributions/symbolic-link-preserving-tar.tar" + extension).toFile(); - } - -} diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_linux.tar.gz b/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_linux.tar.gz deleted file mode 100644 index d38b03a4c2a48fae69aafa2650c1320c45e04a9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmb2|=3oek-yg%k{Pyxit|kMKV;|*G^(V~TDf`{VjZ^o7)7t0xOCFE7?J z+qStj+Gfsnv&lO5bH$XE9Ix7BT?{{28_#~sYJH}`j|FaPHs8zb(Yt=>^3u1b)V5wa zk{rDK?(xdZsL{U2u4>#TqJr+Ue6jXm=x g?GK;+Z~vM5r*_+)muEl%ugjRDkMK(|XfQAU00Q_^Bme*a diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_osx.tar.gz b/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_osx.tar.gz deleted file mode 100644 index 10c8f6e806550343e34115f205832354aa0467dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 219 zcmb2|=3toky(pG}`Rye~z9s{K*2KO`+#SKUG}#Ltn`UJ!3RM)m@;X{oFM=aeN9RlJ zY)(y1-TKm+j^F_&3ta?Z0Zxi~YIh^lqwl zywC5rP%oJLx4hlzq-@8l^-nh2ZwAWyeEt3{ZU0}lAM$RmXZ%~LHks3_@PKChJ$VKc QPLO#lD@ diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_windows.zip b/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_adoptopenjdk_windows.zip deleted file mode 100644 index 61b6b867397d68ec5ad6cc6e2123fa3ee61ef5c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmWIWW@h1H0D+xx)BV5FE7?J z+qStj+Gfsnv&lO5bH$XE9Ix7BT?{{28_#~sYJH}`j|FaPHs8zb(Yt=>^3u1b)V5wa zk{rDK?(xdZsL{U2u4>#TqJr+Ue6jXm=x g?GK;+Z~vM5r*_+)muEl%ugjRDkMK(|XfQAU00Q_^Bme*a diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_openjdk_osx.tar.gz b/buildSrc/src/integTest/resources/org/opensearch/gradle/fake_openjdk_osx.tar.gz deleted file mode 100644 index 9ac1da5e181468368b88b95170845255e071169b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmb2|=3p>t-yg%k{PvnJUz34|+eN*l(i`^t(?8I8`v6C$gd$_fUo$6}84YG)LSL;X z8)Y;U-DjA%@u=X$?bGguo3B}NW<%eOE61w*Z)KeK)GF#K-2G>@VcE-HdwADh3UiGv z|NCU$hP68B?~La?-dM*uF|_@%8<&t*%WBtU58wVfSEcLwBHyF>OZ?&D|GB~6UGJ7_ zvMcV}UwUi7e<`)!?`IWH%;0$R+j{kddeP5+zaO_c$m8<$y3v>Kr?P=sUjGZNJ8NI< m_CxO6jE;X=e;A{VX`U5){Pm>z-qgqUTqKl&?Rk_4qlA3D>7g} z!OAC_tt4us6x%HZ^q=ex?MLlMCwAkP#;sikY4tdOWWF4aclX>;a(Zn1E3iJuha!Vi z0h8gdP8)W^IoKI2%L+V?90UgQt91!#*@U{59oW9(dKR&4%XORsGTxmE>rtqjNmM0c zX`e~E%r~hLT1-H0@@@4-tW+6%eOoyu$mQYDRhhLwrr>A zwA_kgktF8{bf{1Lz;RkFyJ2~*Lj%`tR&IL-CAPsL>mPoBHLm#o9`9eUf8Xls-`~Ca z&zj>p|1q!}`+#^~K$j(aZjLbq&}&|6lPRKYp42_koY(|4^h6AM9X_oASTqx`a9b4gA1! zZGHZy0rkuLzYlDZ|8HBz5?>BW{GYOZrzK#c{C|!ARzR&X|L+4I$^S85Ym86B#`zx~ z`&>%R`Ja~WfA)eh|9{(9;y<$fR?h#|_>Uj2%>Vnqy81sa1FtWVhRAX*(xp9b2(*Wf zDSo5(KbCp^bE#jR|M!B=dH>@Fv_YFrGYDGE^8Nqa#yb9Q&-yv8`2YT3W&U?O+h5?n zg9pF^Vr{+h2KdJLU#*g-FS=yv^+Gc3@k*t-B~So4>Gn>~o}<~?W`!ZJj41vVb|GBL z|5Fr14Mh?635!Q;qKJZ=*tAb2bXtabGQA*Dpi7FiG)mof;3k~2cGhrvv{h$ zh)|szzfJ9#u@KCx@!~ApJWq;b{j7@K0v+hf7%w~V`Qvd0GS_y>c{)(La`mG)p2;My zAQmIsBG(QNb-WTLK}WFScwT|No&nbtX^4 z6oB~vV`nsExoOj~`vQgR$ir1~e7HcjW}Q0i`uTbL0cMs%k%nC+-#i-uWXFf|&cp7r z6B7w~N2g&}V8#k3Pb4!o=mg$^oRz~*(|9sff}$FS*VL%$Kra-Sz8V@M6iI^dWWp(h zG2V;>iFpdj(5uM$EC|Vb)>egpA&>NXG9MdzThrECu$Pl;HvAtQ}To@jDvzfrFk&b0-rgKRSNhTzd z6Vm4r!%xUbrGE69U9bihjXcS)x%2(I$Io6q@Ai&P&i*ko4ek0xk}1vc0i+Dasj z0}gc7!dw=M&^UxdQY2FYq4??0i18T1^#g&^;Fo~%`j{%r_>qurwC!gq&Mf_+TQSDb z+dRVQr|D^tpGI9saMWWdh13eF3_>1Frt0J%Q`F}INXC#h5hly|>OT`aJ`{2q1@q-# z%vElpMC;0ssYMj=kn3ogW*@D^l@dLa+re03o2;#!5HX$0K&wk)fq6ztGul7lF?4j( z!=ZYK172pl|3lWmmMiMv?Lf1+evWtTLHJW`5I$f7=;X*Gs3{gfhIG%{(M;4J)B@T? z9_mwY4Mo;+Hc)0nC<+}Qc1?fLxwhlG$sIZqul)V5x8k3|wpioF_kV%=!S8>LKL0tc zT|WQq1Dibm+3w=+|Fq#@y}51OOKgvo{ND-d=eY6xpKmYl-?lxkeE!=9s`re?)vy9% z2nmEkLGI7}PgE#*mJ{7s;0fd2{gU-x6*jK_^*1n4c({X4U*ps2zkdJY*_4*`e;@d~ z`mg{0kCvI>E5Hr)e+$;nadZ7&|1@E~A?1OXmnF#`bESZ{2`LV^QmG$=Um s7>yYiFryh5mNd@7Wi-MYp&>v^KtY3H2`d}O!^}V^&d9*<8N^`#05R@$s{jB1 diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/.ci/java-versions.properties b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/.ci/java-versions.properties deleted file mode 100644 index 51fc2b4015ef3..0000000000000 --- a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/.ci/java-versions.properties +++ /dev/null @@ -1,32 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -OPENSEARCH_BUILD_JAVA=openjdk14 -OPENSEARCH_RUNTIME_JAVA=openjdk14 -GRADLE_TASK=build diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/build.gradle b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/build.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle deleted file mode 100644 index fbd5936061779..0000000000000 --- a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/build.gradle +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -subprojects { - apply plugin:'base' - - tasks.register('tar', Tar) { - from('.') - destinationDirectory.set(file('build/distributions')) - archiveBaseName.set("opensearch") - archiveVersion.set("8.0.1-SNAPSHOT") - archiveClassifier.set("darwin-x64") - archiveExtension.set('tar.gz') - } - - assemble.dependsOn('tar') -} diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle deleted file mode 100644 index 8b30d7157953c..0000000000000 --- a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/darwin-tar/build.gradle +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/archives/oss-darwin-tar/build.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/bwc/bugfix/build.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/distribution/bwc/minor/build.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/settings.gradle b/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/settings.gradle deleted file mode 100644 index a4aaba7133b81..0000000000000 --- a/buildSrc/src/integTest/resources/org/opensearch/gradle/internal/fake_git/remote/settings.gradle +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -include ":distribution:bwc:bugfix" -include ":distribution:bwc:minor" -include ":distribution:archives:darwin-tar" diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/AntTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/AntTask.groovy deleted file mode 100644 index 72a8fe6783917..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/AntTask.groovy +++ /dev/null @@ -1,118 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import org.apache.tools.ant.BuildListener -import org.apache.tools.ant.BuildLogger -import org.apache.tools.ant.DefaultLogger -import org.apache.tools.ant.Project -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.file.FileSystemOperations -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.TaskAction - -import javax.inject.Inject -import java.nio.charset.Charset - -/** - * A task which will run ant commands. - * - * Logging for the task is customizable for subclasses by overriding makeLogger. - */ -public abstract class AntTask extends DefaultTask { - - /** - * A buffer that will contain the output of the ant code run, - * if the output was not already written directly to stdout. - */ - public final ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream() - - @Inject - protected FileSystemOperations getFileSystemOperations() { - throw new UnsupportedOperationException(); - } - - @TaskAction - final void executeTask() { - AntBuilder ant = new AntBuilder() - - // remove existing loggers, we add our own - List toRemove = new ArrayList<>(); - for (BuildListener listener : ant.project.getBuildListeners()) { - if (listener instanceof BuildLogger) { - toRemove.add(listener); - } - } - for (BuildLogger listener : toRemove) { - ant.project.removeBuildListener(listener) - } - - // otherwise groovy replaces System.out, and you have no chance to debug - // ant.saveStreams = false - - final int outputLevel = logger.isDebugEnabled() ? Project.MSG_DEBUG : Project.MSG_INFO - final PrintStream stream = useStdout() ? System.out : new PrintStream(outputBuffer, true, Charset.defaultCharset().name()) - BuildLogger antLogger = makeLogger(stream, outputLevel) - - ant.project.addBuildListener(antLogger) - try { - runAnt(ant) - } catch (Exception e) { - // ant failed, so see if we have buffered output to emit, then rethrow the failure - String buffer = outputBuffer.toString() - if (buffer.isEmpty() == false) { - logger.error("=== Ant output ===\n${buffer}") - } - throw e - } - } - - /** Runs the doAnt closure. This can be overridden by subclasses instead of having to set a closure. */ - protected abstract void runAnt(AntBuilder ant) - - /** Create the logger the ant runner will use, with the given stream for error/output. */ - protected BuildLogger makeLogger(PrintStream stream, int outputLevel) { - return new DefaultLogger( - errorPrintStream: stream, - outputPrintStream: stream, - messageOutputLevel: outputLevel) - } - - /** - * Returns true if the ant logger should write to stdout, or false if to the buffer. - * The default implementation writes to the buffer when gradle info logging is disabled. - */ - protected boolean useStdout() { - return logger.isInfoEnabled() - } - - -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/BuildPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/BuildPlugin.groovy deleted file mode 100644 index 0a1bc7dfd2395..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/BuildPlugin.groovy +++ /dev/null @@ -1,116 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle - -import groovy.transform.CompileStatic -import org.apache.commons.io.IOUtils -import org.opensearch.gradle.info.BuildParams -import org.opensearch.gradle.info.GlobalBuildInfoPlugin -import org.opensearch.gradle.precommit.PrecommitTasks -import org.opensearch.gradle.test.ErrorReportingTestListener -import org.opensearch.gradle.testclusters.OpenSearchCluster -import org.opensearch.gradle.testclusters.TestClustersPlugin -import org.opensearch.gradle.testclusters.TestDistribution -import org.opensearch.gradle.util.GradleUtils -import org.gradle.api.JavaVersion -import org.gradle.api.* -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.Dependency -import org.gradle.api.artifacts.ModuleDependency -import org.gradle.api.artifacts.ProjectDependency -import org.gradle.api.artifacts.dsl.RepositoryHandler -import org.gradle.api.artifacts.repositories.ExclusiveContentRepository -import org.gradle.api.artifacts.repositories.IvyArtifactRepository -import org.gradle.api.artifacts.repositories.IvyPatternRepositoryLayout -import org.gradle.api.artifacts.repositories.MavenArtifactRepository -import org.gradle.api.credentials.HttpHeaderCredentials -import org.gradle.api.execution.TaskActionListener -import org.opensearch.gradle.info.GlobalBuildInfoPlugin -import org.opensearch.gradle.precommit.PrecommitTasks -import org.gradle.api.GradleException -import org.gradle.api.InvalidUserDataException -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.file.CopySpec -import org.gradle.api.plugins.ExtraPropertiesExtension -import org.gradle.api.tasks.bundling.Jar - -/** - * Encapsulates build configuration for opensearch projects. - */ -@CompileStatic -class BuildPlugin implements Plugin { - - @Override - void apply(Project project) { - // make sure the global build info plugin is applied to the root project - project.rootProject.pluginManager.apply(GlobalBuildInfoPlugin) - - if (project.pluginManager.hasPlugin('opensearch.standalone-rest-test')) { - throw new InvalidUserDataException('opensearch.standalone-test, ' - + 'opensearch.standalone-rest-test, and opensearch.build ' - + 'are mutually exclusive') - } - project.pluginManager.apply('opensearch.java') - configureLicenseAndNotice(project) - project.pluginManager.apply('opensearch.publish') - project.pluginManager.apply(DependenciesInfoPlugin) - project.pluginManager.apply('jacoco') - - PrecommitTasks.create(project, true) - } - - static void configureLicenseAndNotice(Project project) { - ExtraPropertiesExtension ext = project.extensions.getByType(ExtraPropertiesExtension) - ext.set('licenseFile', null) - ext.set('noticeFile', null) - // add license/notice files - project.afterEvaluate { - project.tasks.withType(Jar).configureEach { Jar jarTask -> - if (ext.has('licenseFile') == false || ext.get('licenseFile') == null || ext.has('noticeFile') == false || ext.get('noticeFile') == null) { - throw new GradleException("Must specify license and notice file for project ${project.path}") - } - - File licenseFile = ext.get('licenseFile') as File - File noticeFile = ext.get('noticeFile') as File - - jarTask.metaInf { CopySpec spec -> - spec.from(licenseFile.parent) { CopySpec from -> - from.include licenseFile.name - from.rename { 'LICENSE.txt' } - } - spec.from(noticeFile.parent) { CopySpec from -> - from.include noticeFile.name - from.rename { 'NOTICE.txt' } - } - } - } - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoPlugin.groovy deleted file mode 100644 index 0ea2951817c8e..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoPlugin.groovy +++ /dev/null @@ -1,53 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import org.opensearch.gradle.dependencies.CompileOnlyResolvePlugin -import org.opensearch.gradle.precommit.DependencyLicensesTask -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.plugins.JavaPlugin -import org.gradle.api.tasks.TaskProvider - -class DependenciesInfoPlugin implements Plugin { - @Override - void apply(Project project) { - project.getPlugins().apply(CompileOnlyResolvePlugin.class); - TaskProvider depsInfo = project.getTasks().register("dependenciesInfo", DependenciesInfoTask.class); - depsInfo.configure { DependenciesInfoTask t -> - t.setRuntimeConfiguration(project.getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)); - t.setCompileOnlyConfiguration(project.getConfigurations().getByName(CompileOnlyResolvePlugin.RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME)); - t.getConventionMapping().map("mappings") { -> - TaskProvider depLic = project.getTasks().named("dependencyLicenses", DependencyLicensesTask.class); - return depLic.get().getMappings(); - } - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoTask.groovy deleted file mode 100644 index 21686b702d874..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/DependenciesInfoTask.groovy +++ /dev/null @@ -1,190 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import org.opensearch.gradle.precommit.DependencyLicensesTask -import org.opensearch.gradle.precommit.LicenseAnalyzer -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.Dependency -import org.gradle.api.artifacts.DependencySet -import org.gradle.api.artifacts.ProjectDependency -import org.gradle.api.internal.ConventionTask -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputDirectory -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.Optional -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction - -/** - * A task to gather information about the dependencies and export them into a csv file. - * - * The following information is gathered: - *
- * - */ -class DependenciesInfoTask extends ConventionTask { - - /** Dependencies to gather information from. */ - @InputFiles - Configuration runtimeConfiguration - - /** We subtract compile-only dependencies. */ - @InputFiles - Configuration compileOnlyConfiguration - - /** Directory to read license files */ - @Optional - @InputDirectory - File licensesDir = new File(project.projectDir, 'licenses').exists() ? new File(project.projectDir, 'licenses') : null - - @OutputFile - File outputFile = new File(project.buildDir, "reports/dependencies/dependencies.csv") - - private LinkedHashMap mappings - - DependenciesInfoTask() { - description = 'Create a CSV file with dependencies information.' - } - - @TaskAction - void generateDependenciesInfo() { - - final DependencySet runtimeDependencies = runtimeConfiguration.getAllDependencies() - // we have to resolve the transitive dependencies and create a group:artifactId:version map - final Set compileOnlyArtifacts = - compileOnlyConfiguration - .getResolvedConfiguration() - .resolvedArtifacts - .collect { it -> "${it.moduleVersion.id.group}:${it.moduleVersion.id.name}:${it.moduleVersion.id.version}" } - - final StringBuilder output = new StringBuilder() - - for (final Dependency dependency : runtimeDependencies) { - // we do not need compile-only dependencies here - if (compileOnlyArtifacts.contains("${dependency.group}:${dependency.name}:${dependency.version}")) { - continue - } - // only external dependencies are checked - if (dependency instanceof ProjectDependency) { - continue - } - - final String url = createURL(dependency.group, dependency.name, dependency.version) - final String dependencyName = DependencyLicensesTask.getDependencyName(getMappings(), dependency.name) - logger.info("mapped dependency ${dependency.group}:${dependency.name} to ${dependencyName} for license info") - - final String licenseType = getLicenseType(dependency.group, dependencyName) - output.append("${dependency.group}:${dependency.name},${dependency.version},${url},${licenseType}\n") - - } - outputFile.setText(output.toString(), 'UTF-8') - } - - @Input - LinkedHashMap getMappings() { - return mappings - } - - void setMappings(LinkedHashMap mappings) { - this.mappings = mappings - } - - /** - * Create an URL on Maven Central - * based on dependency coordinates. - */ - protected String createURL(final String group, final String name, final String version){ - final String baseURL = 'https://repo1.maven.org/maven2' - return "${baseURL}/${group.replaceAll('\\.' , '/')}/${name}/${version}" - } - - /** - * Read the LICENSE file associated with the dependency and determine a license type. - * - * The license type is one of the following values: - * - *
  • UNKNOWN if LICENSE file is not present for this dependency.
  • - *
  • one SPDX identifier if the LICENSE content matches with an SPDX license.
  • - *
  • Custom;URL if it's not an SPDX license, - * URL is the Github URL to the LICENSE file in opensearch repository.
  • - * - * - * @param group dependency group - * @param name dependency name - * @return SPDX identifier, UNKNOWN or a Custom license - */ - protected String getLicenseType(final String group, final String name) { - File license = getDependencyInfoFile(group, name, 'LICENSE') - String licenseType - - final LicenseAnalyzer.LicenseInfo licenseInfo = LicenseAnalyzer.licenseType(license) - if (licenseInfo.spdxLicense == false) { - // License has not be identified as SPDX. - // As we have the license file, we create a Custom entry with the URL to this license file. - final gitBranch = System.getProperty('build.branch', 'master') - final String githubBaseURL = "https://raw.githubusercontent.com/elastic/elasticsearch/${gitBranch}/" - licenseType = "${licenseInfo.identifier};${license.getCanonicalPath().replaceFirst('.*/elasticsearch/', githubBaseURL)}," - } else { - licenseType = "${licenseInfo.identifier}," - } - - if (licenseInfo.sourceRedistributionRequired) { - File sources = getDependencyInfoFile(group, name, 'SOURCES') - licenseType += "${sources.text.trim()}" - } - - return licenseType - } - - protected File getDependencyInfoFile(final String group, final String name, final String infoFileSuffix) { - File license = null - - if (licensesDir != null) { - licensesDir.eachFileMatch({ it ==~ /.*-${infoFileSuffix}.*/ }) { File file -> - String prefix = file.name.split("-${infoFileSuffix}.*")[0] - if (group.contains(prefix) || name.contains(prefix)) { - license = file.getAbsoluteFile() - } - } - } - - if (license == null) { - throw new IllegalStateException("Unable to find ${infoFileSuffix} file for dependency ${group}:${name} in ${licensesDir}") - } - - return license - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/FileContentsTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/FileContentsTask.groovy deleted file mode 100644 index b5165b981728f..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/FileContentsTask.groovy +++ /dev/null @@ -1,61 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle - -import org.gradle.api.DefaultTask -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction - -/** - * Creates a file and sets it contents to something. - */ -class FileContentsTask extends DefaultTask { - /** - * The file to be built. Must be of type File to make @OutputFile happy. - */ - @OutputFile - File file - - @Input - Object contents - - /** - * The file to be built. Takes any objecct and coerces to a file. - */ - void setFile(Object file) { - this.file = file as File - } - - @TaskAction - void setContents() { - file = file as File - file.text = contents.toString() - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/MavenFilteringHack.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/MavenFilteringHack.groovy deleted file mode 100644 index 6b072fca50913..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/MavenFilteringHack.groovy +++ /dev/null @@ -1,55 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle - -import org.apache.tools.ant.filters.ReplaceTokens -import org.gradle.api.file.CopySpec - -/** - * Gradle provides "expansion" functionality using groovy's SimpleTemplatingEngine (TODO: check name). - * However, it allows substitutions of the form {@code $foo} (no curlies). Rest tests provide - * some substitution from the test runner, which this form is used for. - * - * This class provides a helper to do maven filtering, where only the form {@code $\{foo\}} is supported. - * - * TODO: we should get rid of this hack, and make the rest tests use some other identifier - * for builtin vars - */ -class MavenFilteringHack { - /** - * Adds a filter to the given copy spec that will substitute maven variables. - * @param CopySpec - */ - static void filter(CopySpec copySpec, Map substitutions) { - Map mavenSubstitutions = substitutions.collectEntries() { - key, value -> ["{${key}".toString(), value.toString()] - } - copySpec.filter(ReplaceTokens, tokens: mavenSubstitutions, beginToken: '$', endToken: '}') - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/NoticeTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/NoticeTask.groovy deleted file mode 100644 index 7b3a0fc01ab65..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/NoticeTask.groovy +++ /dev/null @@ -1,196 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle - -import org.gradle.api.DefaultTask -import org.gradle.api.file.FileCollection -import org.gradle.api.file.FileTree -import org.gradle.api.file.SourceDirectorySet -import org.gradle.api.tasks.InputFile -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.Optional -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction - -import java.nio.file.Files -import java.nio.file.attribute.PosixFilePermissions - -/** - * A task to create a notice file which includes dependencies' notices. - */ -class NoticeTask extends DefaultTask { - - @InputFile - File inputFile = project.rootProject.file('NOTICE.txt') - - @OutputFile - File outputFile = new File(project.buildDir, "notices/${name}/NOTICE.txt") - - private FileTree sources - - /** Directories to include notices from */ - private List licensesDirs = new ArrayList<>() - - NoticeTask() { - description = 'Create a notice file from dependencies' - // Default licenses directory is ${projectDir}/licenses (if it exists) - File licensesDir = new File(project.projectDir, 'licenses') - if (licensesDir.exists()) { - licensesDirs.add(licensesDir) - } - } - - /** Add notices from the specified directory. */ - void licensesDir(File licensesDir) { - licensesDirs.add(licensesDir) - } - - void source(Object source) { - if (sources == null) { - sources = project.fileTree(source) - } else { - sources += project.fileTree(source) - } - } - - void source(SourceDirectorySet source) { - if (sources == null) { - sources = source - } else { - sources += source - } - } - - @TaskAction - void generateNotice() { - StringBuilder output = new StringBuilder() - output.append(inputFile.getText('UTF-8')) - output.append('\n\n') - // This is a map rather than a set so that the sort order is the 3rd - // party component names, unaffected by the full path to the various files - Map seen = new TreeMap<>() - noticeFiles.each { File file -> - String name = file.name.replaceFirst(/-NOTICE\.txt$/, "") - if (seen.containsKey(name)) { - File prevFile = seen.get(name) - if (prevFile.text != file.text) { - throw new RuntimeException("Two different notices exist for dependency '" + - name + "': " + prevFile + " and " + file) - } - } else { - seen.put(name, file) - } - } - - // Add all LICENSE and NOTICE files in licenses directory - for (Map.Entry entry : seen.entrySet()) { - String name = entry.getKey() - File file = entry.getValue() - appendFile(file, name, 'NOTICE', output) - appendFile(new File(file.parentFile, "${name}-LICENSE.txt"), name, 'LICENSE', output) - } - - // Find any source files with "@notice" annotated license header - for (File sourceFile : sources.files) { - boolean isPackageInfo = sourceFile.name == 'package-info.java' - boolean foundNotice = false - boolean inNotice = false - StringBuilder header = new StringBuilder() - String packageDeclaration - - for (String line : sourceFile.readLines()) { - if (isPackageInfo && packageDeclaration == null && line.startsWith('package')) { - packageDeclaration = line - } - - if (foundNotice == false) { - foundNotice = line.contains('@notice') - inNotice = true - } else { - if (line.contains('*/')) { - inNotice = false - - if (!isPackageInfo) { - break - } - } else if (inNotice) { - header.append(line.stripMargin('*')) - header.append('\n') - } - } - } - - if (foundNotice) { - appendText(header.toString(), isPackageInfo ? packageDeclaration : sourceFile.name, '', output) - } - } - outputFile.setText(output.toString(), 'UTF-8') - if (OS.current() != OS.WINDOWS) { - Files.setPosixFilePermissions(outputFile.toPath(), PosixFilePermissions.fromString("rw-r--r--")) - } - } - - @InputFiles - @Optional - FileCollection getNoticeFiles() { - FileTree tree - licensesDirs.each { dir -> - if (tree == null) { - tree = project.fileTree(dir) - } else { - tree += project.fileTree(dir) - } - } - - return tree?.matching { include '**/*-NOTICE.txt' } - } - - @InputFiles - @Optional - FileCollection getSources() { - return sources - } - - static void appendFile(File file, String name, String type, StringBuilder output) { - String text = file.getText('UTF-8') - if (text.trim().isEmpty()) { - return - } - appendText(text, name, type, output) - } - - static void appendText(String text, String name, String type, StringBuilder output) { - output.append('================================================================================\n') - output.append("${name} ${type}\n") - output.append('================================================================================\n') - output.append(text) - output.append('\n\n') - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/ResolveAllDependencies.java b/buildSrc/src/main/groovy/org/opensearch/gradle/ResolveAllDependencies.java deleted file mode 100644 index 63ad25a977b68..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/ResolveAllDependencies.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.DefaultTask; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.tasks.TaskAction; -import org.gradle.internal.deprecation.DeprecatableConfiguration; - -import java.util.Collection; - -import static org.opensearch.gradle.DistributionDownloadPlugin.DISTRO_EXTRACTED_CONFIG_PREFIX; - -public class ResolveAllDependencies extends DefaultTask { - - Collection configs; - - @TaskAction - void resolveAll() { - configs.stream().filter(it -> canBeResolved(it)).forEach(it -> it.resolve()); - } - - static boolean canBeResolved(Configuration configuration) { - if (configuration.isCanBeResolved() == false) { - return false; - } - if (configuration instanceof org.gradle.internal.deprecation.DeprecatableConfiguration) { - DeprecatableConfiguration deprecatableConfiguration = (DeprecatableConfiguration) configuration; - if (deprecatableConfiguration.canSafelyBeResolved() == false) { - return false; - } - } - return configuration.getName().startsWith(DISTRO_EXTRACTED_CONFIG_PREFIX) == false; - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/doc/DocsTestPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/doc/DocsTestPlugin.groovy deleted file mode 100644 index 417cfd9bd171d..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/doc/DocsTestPlugin.groovy +++ /dev/null @@ -1,87 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle.doc - -import org.opensearch.gradle.OS -import org.opensearch.gradle.Version -import org.opensearch.gradle.VersionProperties -import org.gradle.api.Plugin -import org.gradle.api.Project - -/** - * Sets up tests for documentation. - */ -class DocsTestPlugin implements Plugin { - - @Override - void apply(Project project) { - project.pluginManager.apply('opensearch.testclusters') - project.pluginManager.apply('opensearch.standalone-rest-test') - project.pluginManager.apply('opensearch.rest-test') - - String distribution = System.getProperty('tests.distribution', 'archive') - // The distribution can be configured with -Dtests.distribution on the command line - project.testClusters.integTest.testDistribution = distribution.toUpperCase() - - project.testClusters.integTest.nameCustomization = { it.replace("integTest", "node") } - // Docs are published separately so no need to assemble - project.tasks.assemble.enabled = false - Map commonDefaultSubstitutions = [ - /* These match up with the asciidoc syntax for substitutions but - * the values may differ. In particular {version} needs to resolve - * to the version being built for testing but needs to resolve to - * the last released version for docs. */ - '\\{version\\}': Version.fromString(VersionProperties.getOpenSearch()).toString(), - '\\{version_qualified\\}': VersionProperties.getOpenSearch(), - '\\{lucene_version\\}' : VersionProperties.lucene.replaceAll('-snapshot-\\w+$', ''), - '\\{build_type\\}' : OS.conditionalString().onWindows({"zip"}).onUnix({"tar"}).supply(), - ] - project.tasks.register('listSnippets', SnippetsTask) { - group 'Docs' - description 'List each snippet' - defaultSubstitutions = commonDefaultSubstitutions - perSnippet { println(it.toString()) } - } - project.tasks.register('listConsoleCandidates', SnippetsTask) { - group 'Docs' - description - 'List snippets that probably should be marked // CONSOLE' - defaultSubstitutions = commonDefaultSubstitutions - perSnippet { - if (RestTestsFromSnippetsTask.isConsoleCandidate(it)) { - println(it.toString()) - } - } - } - - project.tasks.register('buildRestTests', RestTestsFromSnippetsTask) { - defaultSubstitutions = commonDefaultSubstitutions - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/doc/RestTestsFromSnippetsTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/doc/RestTestsFromSnippetsTask.groovy deleted file mode 100644 index f10b703ff7c20..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/doc/RestTestsFromSnippetsTask.groovy +++ /dev/null @@ -1,465 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.doc - -import groovy.transform.PackageScope -import org.opensearch.gradle.doc.SnippetsTask.Snippet -import org.gradle.api.InvalidUserDataException -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.OutputDirectory - -import java.nio.file.Files -import java.nio.file.Path - -/** - * Generates REST tests for each snippet marked // TEST. - */ -class RestTestsFromSnippetsTask extends SnippetsTask { - /** - * These languages aren't supported by the syntax highlighter so we - * shouldn't use them. - */ - private static final List BAD_LANGUAGES = ['json', 'javascript'] - - @Input - Map setups = new HashMap() - - /** - * A list of files that contain snippets that *probably* should be - * converted to `// CONSOLE` but have yet to be converted. If a file is in - * this list and doesn't contain unconverted snippets this task will fail. - * If there are unconverted snippets not in this list then this task will - * fail. All files are paths relative to the docs dir. - */ - @Input - List expectedUnconvertedCandidates = [] - - /** - * Root directory of the tests being generated. To make rest tests happy - * we generate them in a testRoot() which is contained in this directory. - */ - @OutputDirectory - File testRoot = project.file('build/rest') - - @Internal - Set names = new HashSet<>() - - RestTestsFromSnippetsTask() { - project.afterEvaluate { - // Wait to set this so testRoot can be customized - project.sourceSets.test.output.dir(testRoot, builtBy: this) - } - TestBuilder builder = new TestBuilder() - doFirst { outputRoot().delete() } - perSnippet builder.&handleSnippet - doLast builder.&checkUnconverted - doLast builder.&finishLastTest - } - - /** - * Root directory containing all the files generated by this task. It is - * contained within testRoot. - */ - File outputRoot() { - return new File(testRoot, '/rest-api-spec/test') - } - - /** - * Is this snippet a candidate for conversion to `// CONSOLE`? - */ - static isConsoleCandidate(Snippet snippet) { - /* Snippets that are responses or already marked as `// CONSOLE` or - * `// NOTCONSOLE` are not candidates. */ - if (snippet.console != null || snippet.testResponse) { - return false - } - /* js snippets almost always should be marked with `// CONSOLE`. js - * snippets that shouldn't be marked `// CONSOLE`, like examples for - * js client, should always be marked with `// NOTCONSOLE`. - * - * `sh` snippets that contain `curl` almost always should be marked - * with `// CONSOLE`. In the exceptionally rare cases where they are - * not communicating with Elasticsearch, like the examples in the ec2 - * and gce discovery plugins, the snippets should be marked - * `// NOTCONSOLE`. */ - return snippet.language == 'js' || snippet.curl - } - - /** - * Certain requests should not have the shard failure check because the - * format of the response is incompatible i.e. it is not a JSON object. - */ - static shouldAddShardFailureCheck(String path) { - return path.startsWith('_cat') == false - } - - /** - * Converts Kibana's block quoted strings into standard JSON. These - * {@code """} delimited strings can be embedded in CONSOLE and can - * contain newlines and {@code "} without the normal JSON escaping. - * This has to add it. - */ - @PackageScope - static String replaceBlockQuote(String body) { - int start = body.indexOf('"""'); - if (start < 0) { - return body - } - /* - * 1.3 is a fairly wild guess of the extra space needed to hold - * the escaped string. - */ - StringBuilder result = new StringBuilder((int) (body.length() * 1.3)); - int startOfNormal = 0; - while (start >= 0) { - int end = body.indexOf('"""', start + 3); - if (end < 0) { - throw new InvalidUserDataException( - "Invalid block quote starting at $start in:\n$body") - } - result.append(body.substring(startOfNormal, start)); - result.append('"'); - result.append(body.substring(start + 3, end) - .replace('"', '\\"') - .replace("\n", "\\n")); - result.append('"'); - startOfNormal = end + 3; - start = body.indexOf('"""', startOfNormal); - } - result.append(body.substring(startOfNormal)); - return result.toString(); - } - - private class TestBuilder { - private static final String SYNTAX = { - String method = /(?GET|PUT|POST|HEAD|OPTIONS|DELETE)/ - String pathAndQuery = /(?[^\n]+)/ - String badBody = /GET|PUT|POST|HEAD|OPTIONS|DELETE|startyaml|#/ - String body = /(?(?:\n(?!$badBody)[^\n]+)+)/ - String rawRequest = /(?:$method\s+$pathAndQuery$body?)/ - String yamlRequest = /(?:startyaml(?s)(?.+?)(?-s)endyaml)/ - String nonComment = /(?:$rawRequest|$yamlRequest)/ - String comment = /(?#.+)/ - /(?:$comment|$nonComment)\n+/ - }() - - /** - * The file in which we saw the last snippet that made a test. - */ - Path lastDocsPath - - /** - * The file we're building. - */ - PrintWriter current - - /** - * Files containing all snippets that *probably* should be converted - * to `// CONSOLE` but have yet to be converted. All files are paths - * relative to the docs dir. - */ - Set unconvertedCandidates = new HashSet<>() - - /** - * The last non-TESTRESPONSE snippet. - */ - Snippet previousTest - - /** - * Called each time a snippet is encountered. Tracks the snippets and - * calls buildTest to actually build the test. - */ - void handleSnippet(Snippet snippet) { - if (RestTestsFromSnippetsTask.isConsoleCandidate(snippet)) { - unconvertedCandidates.add(snippet.path.toString() - .replace('\\', '/')) - } - if (BAD_LANGUAGES.contains(snippet.language)) { - throw new InvalidUserDataException( - "$snippet: Use `js` instead of `${snippet.language}`.") - } - if (snippet.testSetup) { - testSetup(snippet) - previousTest = snippet - return - } - if (snippet.testTearDown) { - testTearDown(snippet) - previousTest = snippet - return - } - if (snippet.testResponse || snippet.language == 'console-result') { - response(snippet) - return - } - if ((snippet.language == 'js') && (snippet.console)) { - throw new InvalidUserDataException( - "$snippet: Use `[source,console]` instead of `// CONSOLE`.") - } - if (snippet.test || snippet.language == 'console') { - test(snippet) - previousTest = snippet - return - } - // Must be an unmarked snippet.... - } - - private void test(Snippet test) { - setupCurrent(test) - - if (test.continued) { - /* Catch some difficult to debug errors with // TEST[continued] - * and throw a helpful error message. */ - if (previousTest == null || previousTest.path != test.path) { - throw new InvalidUserDataException("// TEST[continued] " + - "cannot be on first snippet in a file: $test") - } - if (previousTest != null && previousTest.testSetup) { - throw new InvalidUserDataException("// TEST[continued] " + - "cannot immediately follow // TESTSETUP: $test") - } - if (previousTest != null && previousTest.testTearDown) { - throw new InvalidUserDataException("// TEST[continued] " + - "cannot immediately follow // TEARDOWN: $test") - } - } else { - current.println('---') - current.println("\"line_$test.start\":") - /* The Elasticsearch test runner doesn't support quite a few - * constructs unless we output this skip. We don't know if - * we're going to use these constructs, but we might so we - * output the skip just in case. */ - current.println(" - skip:") - current.println(" features: ") - current.println(" - default_shards") - current.println(" - stash_in_key") - current.println(" - stash_in_path") - current.println(" - stash_path_replace") - current.println(" - warnings") - if (test.testEnv != null) { - throw new InvalidUserDataException('Unsupported testEnv: ' + test.testEnv); - } - } - if (test.skip) { - if (test.continued) { - throw new InvalidUserDataException("Continued snippets " - + "can't be skipped") - } - current.println(" - always_skip") - current.println(" reason: $test.skip") - } - if (test.setup != null) { - setup(test) - } - - body(test, false) - } - - private void setup(final Snippet snippet) { - // insert a setup defined outside of the docs - for (final String setupName : snippet.setup.split(',')) { - final String setup = setups[setupName] - if (setup == null) { - throw new InvalidUserDataException("Couldn't find setup for $snippet") - } - current.println(setup) - } - } - - private void response(Snippet response) { - if (null == response.skip) { - current.println(" - match: ") - current.println(" \$body: ") - replaceBlockQuote(response.contents).eachLine { - current.println(" $it") - } - } - } - - void emitDo(String method, String pathAndQuery, String body, - String catchPart, List warnings, boolean inSetup, boolean skipShardFailures) { - def (String path, String query) = pathAndQuery.tokenize('?') - if (path == null) { - path = '' // Catch requests to the root... - } else { - path = path.replace('<', '%3C').replace('>', '%3E') - } - current.println(" - do:") - if (catchPart != null) { - current.println(" catch: $catchPart") - } - if (false == warnings.isEmpty()) { - current.println(" warnings:") - for (String warning in warnings) { - // Escape " because we're going to quote the warning - String escaped = warning.replaceAll('"', '\\\\"') - /* Quote the warning in case it starts with [ which makes - * it look too much like an array. */ - current.println(" - \"$escaped\"") - } - } - current.println(" raw:") - current.println(" method: $method") - current.println(" path: \"$path\"") - if (query != null) { - for (String param: query.tokenize('&')) { - def (String name, String value) = param.tokenize('=') - if (value == null) { - value = '' - } - current.println(" $name: \"$value\"") - } - } - if (body != null) { - // Throw out the leading newline we get from parsing the body - body = body.substring(1) - // Replace """ quoted strings with valid json ones - body = replaceBlockQuote(body) - current.println(" body: |") - body.eachLine { current.println(" $it") } - } - /* Catch any shard failures. These only cause a non-200 response if - * no shard succeeds. But we need to fail the tests on all of these - * because they mean invalid syntax or broken queries or something - * else that we don't want to teach people to do. The REST test - * framework doesn't allow us to have assertions in the setup - * section so we have to skip it there. We also omit the assertion - * from APIs that don't return a JSON object - */ - if (false == inSetup && skipShardFailures == false && shouldAddShardFailureCheck(path)) { - current.println(" - is_false: _shards.failures") - } - } - - private void testSetup(Snippet snippet) { - if (lastDocsPath == snippet.path) { - throw new InvalidUserDataException("$snippet: wasn't first. TESTSETUP can only be used in the first snippet of a document.") - } - setupCurrent(snippet) - current.println('---') - current.println("setup:") - if (snippet.setup != null) { - setup(snippet) - } - body(snippet, true) - } - - private void testTearDown(Snippet snippet) { - if (previousTest.testSetup == false && lastDocsPath == snippet.path) { - throw new InvalidUserDataException("$snippet must follow test setup or be first") - } - setupCurrent(snippet) - current.println('---') - current.println('teardown:') - body(snippet, true) - } - - private void body(Snippet snippet, boolean inSetup) { - parse("$snippet", snippet.contents, SYNTAX) { matcher, last -> - if (matcher.group("comment") != null) { - // Comment - return - } - String yamlRequest = matcher.group("yaml"); - if (yamlRequest != null) { - current.println(yamlRequest) - return - } - String method = matcher.group("method") - String pathAndQuery = matcher.group("pathAndQuery") - String body = matcher.group("body") - String catchPart = last ? snippet.catchPart : null - if (pathAndQuery.startsWith('/')) { - // Leading '/'s break the generated paths - pathAndQuery = pathAndQuery.substring(1) - } - emitDo(method, pathAndQuery, body, catchPart, snippet.warnings, - inSetup, snippet.skipShardsFailures) - } - } - - private PrintWriter setupCurrent(Snippet test) { - if (lastDocsPath == test.path) { - return - } - finishLastTest() - lastDocsPath = test.path - - // Make the destination file: - // Shift the path into the destination directory tree - Path dest = outputRoot().toPath().resolve(test.path) - // Replace the extension - String fileName = dest.getName(dest.nameCount - 1) - dest = dest.parent.resolve(fileName.replace('.asciidoc', '.yml')) - - // Now setup the writer - Files.createDirectories(dest.parent) - current = dest.newPrintWriter('UTF-8') - } - - void finishLastTest() { - if (current != null) { - current.close() - current = null - } - } - - void checkUnconverted() { - List listedButNotFound = [] - for (String listed : expectedUnconvertedCandidates) { - if (false == unconvertedCandidates.remove(listed)) { - listedButNotFound.add(listed) - } - } - String message = "" - if (false == listedButNotFound.isEmpty()) { - Collections.sort(listedButNotFound) - listedButNotFound = listedButNotFound.collect {' ' + it} - message += "Expected unconverted snippets but none found in:\n" - message += listedButNotFound.join("\n") - } - if (false == unconvertedCandidates.isEmpty()) { - List foundButNotListed = - new ArrayList<>(unconvertedCandidates) - Collections.sort(foundButNotListed) - foundButNotListed = foundButNotListed.collect {' ' + it} - if (false == "".equals(message)) { - message += "\n" - } - message += "Unexpected unconverted snippets:\n" - message += foundButNotListed.join("\n") - } - if (false == "".equals(message)) { - throw new InvalidUserDataException(message); - } - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/doc/SnippetsTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/doc/SnippetsTask.groovy deleted file mode 100644 index 287a88cadf834..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/doc/SnippetsTask.groovy +++ /dev/null @@ -1,439 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.doc - -import groovy.json.JsonException -import groovy.json.JsonParserType -import groovy.json.JsonSlurper - -import org.gradle.api.DefaultTask -import org.gradle.api.InvalidUserDataException -import org.gradle.api.file.ConfigurableFileTree -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.TaskAction - -import java.nio.file.Path -import java.util.regex.Matcher - -/** - * A task which will run a closure on each snippet in the documentation. - */ -class SnippetsTask extends DefaultTask { - private static final String SCHAR = /(?:\\\/|[^\/])/ - private static final String SUBSTITUTION = /s\/($SCHAR+)\/($SCHAR*)\// - private static final String CATCH = /catch:\s*((?:\/[^\/]+\/)|[^ \]]+)/ - private static final String SKIP = /skip:([^\]]+)/ - private static final String SETUP = /setup:([^ \]]+)/ - private static final String WARNING = /warning:(.+)/ - private static final String NON_JSON = /(non_json)/ - private static final String TEST_SYNTAX = - /(?:$CATCH|$SUBSTITUTION|$SKIP|(continued)|$SETUP|$WARNING|(skip_shard_failures)) ?/ - - /** - * Action to take on each snippet. Called with a single parameter, an - * instance of Snippet. - */ - @Internal - Closure perSnippet - - /** - * The docs to scan. Defaults to every file in the directory exception the - * build.gradle file because that is appropriate for OpenSearch's docs - * directory. - */ - @InputFiles - ConfigurableFileTree docs = project.fileTree(project.projectDir) { - // No snippets in the build file - exclude 'build.gradle' - // That is where the snippets go, not where they come from! - exclude 'build' - } - - /** - * Substitutions done on every snippet's contents. - */ - @Input - Map defaultSubstitutions = [:] - - @TaskAction - void executeTask() { - /* - * Walks each line of each file, building snippets as it encounters - * the lines that make up the snippet. - */ - for (File file: docs) { - String lastLanguage - int lastLanguageLine - Snippet snippet = null - StringBuilder contents = null - List substitutions = null - String testEnv = null - Closure emit = { - snippet.contents = contents.toString() - contents = null - Closure doSubstitution = { String pattern, String subst -> - /* - * $body is really common but it looks like a - * backreference so we just escape it here to make the - * tests cleaner. - */ - subst = subst.replace('$body', '\\$body') - subst = subst.replace('$_path', '\\$_path') - // \n is a new line.... - subst = subst.replace('\\n', '\n') - snippet.contents = snippet.contents.replaceAll( - pattern, subst) - } - defaultSubstitutions.each doSubstitution - if (substitutions != null) { - substitutions.each doSubstitution - substitutions = null - } - if (snippet.language == null) { - throw new InvalidUserDataException("$snippet: " - + "Snippet missing a language. This is required by " - + "OpenSearch's doc testing infrastructure so we " - + "be sure we don't accidentally forget to test a " - + "snippet.") - } - // Try to detect snippets that contain `curl` - if (snippet.language == 'sh' || snippet.language == 'shell') { - snippet.curl = snippet.contents.contains('curl') - if (snippet.console == false && snippet.curl == false) { - throw new InvalidUserDataException("$snippet: " - + "No need for NOTCONSOLE if snippet doesn't " - + "contain `curl`.") - } - } - if (snippet.testResponse - && ('js' == snippet.language || 'console-result' == snippet.language) - && null == snippet.skip) { - String quoted = snippet.contents - // quote values starting with $ - .replaceAll(/([:,])\s*(\$[^ ,\n}]+)/, '$1 "$2"') - // quote fields starting with $ - .replaceAll(/(\$[^ ,\n}]+)\s*:/, '"$1":') - JsonSlurper slurper = - new JsonSlurper(type: JsonParserType.INDEX_OVERLAY) - try { - slurper.parseText(quoted) - } catch (JsonException e) { - throw new InvalidUserDataException("Invalid json " - + "in $snippet. The error is:\n${e.message}.\n" - + "After substitutions and munging, the json " - + "looks like:\n$quoted", e) - } - } - perSnippet(snippet) - snippet = null - } - file.eachLine('UTF-8') { String line, int lineNumber -> - Matcher matcher - matcher = line =~ /\[testenv="([^"]+)"\]\s*/ - if (matcher.matches()) { - testEnv = matcher.group(1) - } - if (line ==~ /-{4,}\s*/) { // Four dashes looks like a snippet - if (snippet == null) { - Path path = docs.dir.toPath().relativize(file.toPath()) - snippet = new Snippet(path: path, start: lineNumber, testEnv: testEnv) - if (lastLanguageLine == lineNumber - 1) { - snippet.language = lastLanguage - } - } else { - snippet.end = lineNumber - } - return - } - matcher = line =~ /\["?source"?,\s*"?([-\w]+)"?(,.*)?].*/ - if (matcher.matches()) { - lastLanguage = matcher.group(1) - lastLanguageLine = lineNumber - return - } - if (line ==~ /\/\/\s*AUTOSENSE\s*/) { - throw new InvalidUserDataException("$file:$lineNumber: " - + "AUTOSENSE has been replaced by CONSOLE.") - } - if (line ==~ /\/\/\s*CONSOLE\s*/) { - if (snippet == null) { - throw new InvalidUserDataException("$file:$lineNumber: " - + "CONSOLE not paired with a snippet") - } - if (snippet.console != null) { - throw new InvalidUserDataException("$file:$lineNumber: " - + "Can't be both CONSOLE and NOTCONSOLE") - } - snippet.console = true - return - } - if (line ==~ /\/\/\s*NOTCONSOLE\s*/) { - if (snippet == null) { - throw new InvalidUserDataException("$file:$lineNumber: " - + "NOTCONSOLE not paired with a snippet") - } - if (snippet.console != null) { - throw new InvalidUserDataException("$file:$lineNumber: " - + "Can't be both CONSOLE and NOTCONSOLE") - } - snippet.console = false - return - } - matcher = line =~ /\/\/\s*TEST(\[(.+)\])?\s*/ - if (matcher.matches()) { - if (snippet == null) { - throw new InvalidUserDataException("$file:$lineNumber: " - + "TEST not paired with a snippet at ") - } - snippet.test = true - if (matcher.group(2) != null) { - String loc = "$file:$lineNumber" - parse(loc, matcher.group(2), TEST_SYNTAX) { - if (it.group(1) != null) { - snippet.catchPart = it.group(1) - return - } - if (it.group(2) != null) { - if (substitutions == null) { - substitutions = [] - } - substitutions.add([it.group(2), it.group(3)]) - return - } - if (it.group(4) != null) { - snippet.skip = it.group(4) - return - } - if (it.group(5) != null) { - snippet.continued = true - return - } - if (it.group(6) != null) { - snippet.setup = it.group(6) - return - } - if (it.group(7) != null) { - snippet.warnings.add(it.group(7)) - return - } - if (it.group(8) != null) { - snippet.skipShardsFailures = true - return - } - throw new InvalidUserDataException( - "Invalid test marker: $line") - } - } - return - } - matcher = line =~ /\/\/\s*TESTRESPONSE(\[(.+)\])?\s*/ - if (matcher.matches()) { - if (snippet == null) { - throw new InvalidUserDataException("$file:$lineNumber: " - + "TESTRESPONSE not paired with a snippet") - } - snippet.testResponse = true - if (matcher.group(2) != null) { - if (substitutions == null) { - substitutions = [] - } - String loc = "$file:$lineNumber" - parse(loc, matcher.group(2), /(?:$SUBSTITUTION|$NON_JSON|$SKIP) ?/) { - if (it.group(1) != null) { - // TESTRESPONSE[s/adsf/jkl/] - substitutions.add([it.group(1), it.group(2)]) - } else if (it.group(3) != null) { - // TESTRESPONSE[non_json] - substitutions.add(['^', '/']) - substitutions.add(['\n$', '\\\\s*/']) - substitutions.add(['( +)', '$1\\\\s+']) - substitutions.add(['\n', '\\\\s*\n ']) - } else if (it.group(4) != null) { - // TESTRESPONSE[skip:reason] - snippet.skip = it.group(4) - } - } - } - return - } - if (line ==~ /\/\/\s*TESTSETUP\s*/) { - snippet.testSetup = true - return - } - if (line ==~ /\/\/\s*TEARDOWN\s*/) { - snippet.testTearDown = true - return - } - if (snippet == null) { - // Outside - return - } - if (snippet.end == Snippet.NOT_FINISHED) { - // Inside - if (contents == null) { - contents = new StringBuilder() - } - // We don't need the annotations - line = line.replaceAll(/<\d+>/, '') - // Nor any trailing spaces - line = line.replaceAll(/\s+$/, '') - contents.append(line).append('\n') - return - } - // Allow line continuations for console snippets within lists - if (snippet != null && line.trim() == '+') { - return - } - // Just finished - emit() - } - if (snippet != null) emit() - } - } - - static class Snippet { - static final int NOT_FINISHED = -1 - - /** - * Path to the file containing this snippet. Relative to docs.dir of the - * SnippetsTask that created it. - */ - Path path - int start - int end = NOT_FINISHED - String contents - String testEnv - - Boolean console = null - boolean test = false - boolean testResponse = false - boolean testSetup = false - boolean testTearDown = false - String skip = null - boolean continued = false - String language = null - String catchPart = null - String setup = null - boolean curl - List warnings = new ArrayList() - boolean skipShardsFailures = false - - @Override - public String toString() { - String result = "$path[$start:$end]" - if (language != null) { - result += "($language)" - } - if (console != null) { - result += console ? '// CONSOLE' : '// NOTCONSOLE' - } - if (test) { - result += '// TEST' - if (testEnv != null) { - result += "[testenv=$testEnv]" - } - if (catchPart) { - result += "[catch: $catchPart]" - } - if (skip) { - result += "[skip=$skip]" - } - if (continued) { - result += '[continued]' - } - if (setup) { - result += "[setup:$setup]" - } - for (String warning in warnings) { - result += "[warning:$warning]" - } - if (skipShardsFailures) { - result += '[skip_shard_failures]' - } - } - if (testResponse) { - result += '// TESTRESPONSE' - if (skip) { - result += "[skip=$skip]" - } - } - if (testSetup) { - result += '// TESTSETUP' - } - if (curl) { - result += '(curl)' - } - return result - } - } - - /** - * Repeatedly match the pattern to the string, calling the closure with the - * matchers each time there is a match. If there are characters that don't - * match then blow up. If the closure takes two parameters then the second - * one is "is this the last match?". - */ - protected parse(String location, String s, String pattern, Closure c) { - if (s == null) { - return // Silly null, only real stuff gets to match! - } - Matcher m = s =~ pattern - int offset = 0 - Closure extraContent = { message -> - StringBuilder cutOut = new StringBuilder() - cutOut.append(s[offset - 6..offset - 1]) - cutOut.append('*') - cutOut.append(s[offset..Math.min(offset + 5, s.length() - 1)]) - String cutOutNoNl = cutOut.toString().replace('\n', '\\n') - throw new InvalidUserDataException("$location: Extra content " - + "$message ('$cutOutNoNl') matching [$pattern]: $s") - } - while (m.find()) { - if (m.start() != offset) { - extraContent("between [$offset] and [${m.start()}]") - } - offset = m.end() - if (c.maximumNumberOfParameters == 1) { - c(m) - } else { - c(m, offset == s.length()) - } - } - if (offset == 0) { - throw new InvalidUserDataException("$location: Didn't match " - + "$pattern: $s") - } - if (offset != s.length()) { - extraContent("after [$offset]") - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/plugin/PluginBuildPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/plugin/PluginBuildPlugin.groovy deleted file mode 100644 index 427e3f2740a89..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/plugin/PluginBuildPlugin.groovy +++ /dev/null @@ -1,261 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle.plugin - -import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin -import org.opensearch.gradle.BuildPlugin -import org.opensearch.gradle.NoticeTask -import org.opensearch.gradle.Version -import org.opensearch.gradle.VersionProperties -import org.opensearch.gradle.dependencies.CompileOnlyResolvePlugin -import org.opensearch.gradle.info.BuildParams -import org.opensearch.gradle.plugin.PluginPropertiesExtension -import org.opensearch.gradle.test.RestTestBasePlugin -import org.opensearch.gradle.testclusters.RunTask -import org.opensearch.gradle.util.Util -import org.gradle.api.InvalidUserDataException -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.plugins.BasePlugin -import org.gradle.api.publish.maven.MavenPublication -import org.gradle.api.publish.maven.plugins.MavenPublishPlugin -import org.gradle.api.publish.maven.tasks.GenerateMavenPom -import org.gradle.api.tasks.Copy -import org.gradle.api.tasks.SourceSet -import org.gradle.api.tasks.TaskProvider -import org.gradle.api.tasks.bundling.Zip -import org.gradle.jvm.tasks.Jar - -/** - * Encapsulates build configuration for an OpenSearch plugin. - */ -class PluginBuildPlugin implements Plugin { - - public static final String PLUGIN_EXTENSION_NAME = 'opensearchplugin' - - @Override - void apply(Project project) { - project.pluginManager.apply(BuildPlugin) - project.pluginManager.apply(RestTestBasePlugin) - project.pluginManager.apply(CompileOnlyResolvePlugin.class); - - PluginPropertiesExtension extension = project.extensions.create(PLUGIN_EXTENSION_NAME, PluginPropertiesExtension, project) - configureDependencies(project) - - boolean isModule = project.path.startsWith(':modules:') - - createBundleTasks(project, extension) - - project.afterEvaluate { - project.extensions.getByType(PluginPropertiesExtension).extendedPlugins.each { pluginName -> - // Auto add dependent modules to the test cluster - if (project.findProject(":modules:${pluginName}") != null) { - project.testClusters.all { - module(":modules:${pluginName}") - } - } - } - PluginPropertiesExtension extension1 = project.getExtensions().getByType(PluginPropertiesExtension.class) - configurePublishing(project, extension1) - String name = extension1.name - project.archivesBaseName = name - project.description = extension1.description - - if (extension1.name == null) { - throw new InvalidUserDataException('name is a required setting for opensearchplugin') - } - if (extension1.description == null) { - throw new InvalidUserDataException('description is a required setting for opensearchplugin') - } - if (extension1.classname == null) { - throw new InvalidUserDataException('classname is a required setting for opensearchplugin') - } - - Map properties = [ - 'name' : extension1.name, - 'description' : extension1.description, - 'version' : extension1.version, - 'opensearchVersion' : Version.fromString(VersionProperties.getOpenSearch()).toString(), - 'javaVersion' : project.targetCompatibility as String, - 'classname' : extension1.classname, - 'customFolderName' : extension1.customFolderName, - 'extendedPlugins' : extension1.extendedPlugins.join(','), - 'hasNativeController' : extension1.hasNativeController, - 'requiresKeystore' : extension1.requiresKeystore - ] - project.tasks.named('pluginProperties').configure { - expand(properties) - inputs.properties(properties) - } - if (isModule == false) { - addNoticeGeneration(project, extension1) - } - } - - project.tasks.named('testingConventions').configure { - naming.clear() - naming { - Tests { - baseClass 'org.apache.lucene.util.LuceneTestCase' - } - IT { - baseClass 'org.opensearch.test.OpenSearchIntegTestCase' - baseClass 'org.opensearch.test.rest.OpenSearchRestTestCase' - baseClass 'org.opensearch.test.OpenSearchSingleNodeTestCase' - } - } - } - project.configurations.getByName('default') - .extendsFrom(project.configurations.getByName('runtimeClasspath')) - // allow running ES with this plugin in the foreground of a build - project.tasks.register('run', RunTask) { - dependsOn(project.tasks.bundlePlugin) - } - } - - private void configurePublishing(Project project, PluginPropertiesExtension extension) { - // Only configure publishing if applied externally - if (extension.hasClientJar) { - project.pluginManager.apply('nebula.maven-base-publish') - // Only change Jar tasks, we don't want a -client zip so we can't change archivesBaseName - project.tasks.withType(Jar) { - archiveBaseName = archiveBaseName.get() + "-client" - } - // always configure publishing for client jars - project.publishing.publications.nebula(MavenPublication).artifactId(extension.name + "-client") - project.tasks.withType(GenerateMavenPom.class).configureEach { GenerateMavenPom generatePOMTask -> - generatePOMTask.destination = "${project.buildDir}/distributions/${project.archivesBaseName}-client-${project.versions.opensearch}.pom" - } - } else { - if (project.plugins.hasPlugin(MavenPublishPlugin)) { - project.publishing.publications.nebula(MavenPublication).artifactId(extension.name) - } - } - } - - private static void configureDependencies(Project project) { - project.dependencies { - if (BuildParams.internal) { - compileOnly project.project(':server') - testImplementation project.project(':test:framework') - } else { - compileOnly "org.opensearch:opensearch:${project.versions.opensearch}" - testImplementation "org.opensearch.test:framework:${project.versions.opensearch}" - } - // we "upgrade" these optional deps to provided for plugins, since they will run - // with a full opensearch server that includes optional deps - compileOnly "org.locationtech.spatial4j:spatial4j:${project.versions.spatial4j}" - compileOnly "org.locationtech.jts:jts-core:${project.versions.jts}" - compileOnly "org.apache.logging.log4j:log4j-api:${project.versions.log4j}" - compileOnly "org.apache.logging.log4j:log4j-core:${project.versions.log4j}" - compileOnly "net.java.dev.jna:jna:${project.versions.jna}" - } - } - - /** - * Adds a bundlePlugin task which builds the zip containing the plugin jars, - * metadata, properties, and packaging files - */ - private static void createBundleTasks(Project project, PluginPropertiesExtension extension) { - File pluginMetadata = project.file('src/main/plugin-metadata') - File templateFile = new File(project.buildDir, "templates/plugin-descriptor.properties") - - // create tasks to build the properties file for this plugin - TaskProvider copyPluginPropertiesTemplate = project.tasks.register('copyPluginPropertiesTemplate') { - outputs.file(templateFile) - doLast { - InputStream resourceTemplate = PluginBuildPlugin.getResourceAsStream("/${templateFile.name}") - templateFile.setText(resourceTemplate.getText('UTF-8'), 'UTF-8') - } - } - - TaskProvider buildProperties = project.tasks.register('pluginProperties', Copy) { - dependsOn(copyPluginPropertiesTemplate) - from(templateFile) - into("${project.buildDir}/generated-resources") - } - - // add the plugin properties and metadata to test resources, so unit tests can - // know about the plugin (used by test security code to statically initialize the plugin in unit tests) - SourceSet testSourceSet = project.sourceSets.test - testSourceSet.output.dir("${project.buildDir}/generated-resources", builtBy: buildProperties) - testSourceSet.resources.srcDir(pluginMetadata) - - // create the actual bundle task, which zips up all the files for the plugin - TaskProvider bundle = project.tasks.register('bundlePlugin', Zip) { - from buildProperties - from pluginMetadata // metadata (eg custom security policy) - /* - * If the plugin is using the shadow plugin then we need to bundle - * that shadow jar. - */ - from { project.plugins.hasPlugin(ShadowPlugin) ? project.shadowJar : project.jar } - from project.configurations.runtimeClasspath - project.configurations.getByName( - CompileOnlyResolvePlugin.RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME - ) - // extra files for the plugin to go into the zip - from('src/main/packaging') // TODO: move all config/bin/_size/etc into packaging - from('src/main') { - include 'config/**' - include 'bin/**' - } - } - project.tasks.named(BasePlugin.ASSEMBLE_TASK_NAME).configure { - dependsOn(bundle) - } - - // also make the zip available as a configuration (used when depending on this project) - project.configurations.create('zip') - project.artifacts.add('zip', bundle) - } - - /** Configure the pom for the main jar of this plugin */ - protected static void addNoticeGeneration(Project project, PluginPropertiesExtension extension) { - File licenseFile = extension.licenseFile - if (licenseFile != null) { - project.tasks.named('bundlePlugin').configure { - from(licenseFile.parentFile) { - include(licenseFile.name) - rename { 'LICENSE.txt' } - } - } - } - File noticeFile = extension.noticeFile - if (noticeFile != null) { - TaskProvider generateNotice = project.tasks.register('generateNotice', NoticeTask) { - inputFile = noticeFile - source(Util.getJavaMainSourceSet(project).get().allJava) - } - project.tasks.named('bundlePlugin').configure { - from(generateNotice) - } - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersPrecommitPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersPrecommitPlugin.groovy deleted file mode 100644 index fddabd09b01d2..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersPrecommitPlugin.groovy +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.precommit - -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.tasks.TaskProvider - -class LicenseHeadersPrecommitPlugin extends PrecommitPlugin { - @Override - TaskProvider createTask(Project project) { - return project.getTasks().register("licenseHeaders", LicenseHeadersTask.class); - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersTask.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersTask.groovy deleted file mode 100644 index b330934ed2d26..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/LicenseHeadersTask.groovy +++ /dev/null @@ -1,199 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle.precommit - -import org.apache.rat.anttasks.Report -import org.apache.rat.anttasks.SubstringLicenseMatcher -import org.apache.rat.license.SimpleLicenseFamily -import org.opensearch.gradle.AntTask -import org.gradle.api.file.FileCollection -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFiles -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.SkipWhenEmpty - -import java.nio.file.Files - -/** - * Checks files for license headers. - *

    - * This is a port of the apache lucene check - */ -class LicenseHeadersTask extends AntTask { - - @OutputFile - File reportFile = new File(project.buildDir, 'reports/licenseHeaders/rat.log') - - /** Allowed license families for this project. */ - @Input - List approvedLicenses = ['Apache', 'Generated', 'SPDX', 'Vendored'] - - /** - * Files that should be excluded from the license header check. Use with extreme care, only in situations where the license on the - * source file is compatible with the codebase but we do not want to add the license to the list of approved headers (to avoid the - * possibility of inadvertently using the license on our own source files). - */ - @Input - List excludes = [] - - /** - * Additional license families that may be found. The key is the license category name (5 characters), - * followed by the family name and the value list of patterns to search for. - */ - protected Map additionalLicenses = new HashMap<>() - - LicenseHeadersTask() { - description = "Checks sources for missing, incorrect, or unacceptable license headers" - } - - /** - * The list of java files to check. protected so the afterEvaluate closure in the - * constructor can write to it. - */ - @InputFiles - @SkipWhenEmpty - List getJavaFiles() { - return project.sourceSets.collect({it.allJava}) - } - - /** - * Add a new license type. - * - * The license may be added to the {@link #approvedLicenses} using the {@code familyName}. - * - * @param categoryName A 5-character string identifier for the license - * @param familyName An expanded string name for the license - * @param pattern A pattern to search for, which if found, indicates a file contains the license - */ - void additionalLicense(String categoryName, String familyName, String pattern) { - if (categoryName.length() != 5) { - throw new IllegalArgumentException("License category name must be exactly 5 characters, got ${categoryName}"); - } - additionalLicenses.put(categoryName + familyName, pattern); - } - - @Override - protected void runAnt(AntBuilder ant) { - ant.project.addTaskDefinition('ratReport', Report) - ant.project.addDataTypeDefinition('substringMatcher', SubstringLicenseMatcher) - ant.project.addDataTypeDefinition('approvedLicense', SimpleLicenseFamily) - - Files.deleteIfExists(reportFile.toPath()) - - // run rat, going to the file - ant.ratReport(reportFile: reportFile.absolutePath, addDefaultLicenseMatchers: true) { - for (FileCollection dirSet : javaFiles) { - for (File dir: dirSet.srcDirs) { - // sometimes these dirs don't exist, e.g. site-plugin has no actual java src/main... - if (dir.exists()) { - ant.fileset(dir: dir, excludes: excludes.join(' ')) - } - } - } - - // BSD 4-clause stuff (is disallowed below) - // we keep this here, in case someone adds BSD code for some reason, it should never be allowed. - substringMatcher(licenseFamilyCategory: "BSD4 ", - licenseFamilyName: "Original BSD License (with advertising clause)") { - pattern(substring: "All advertising materials") - } - - // Apache - substringMatcher(licenseFamilyCategory: "AL ", - licenseFamilyName: "Apache") { - // Apache license (ES) - pattern(substring: "Licensed to Elasticsearch under one or more contributor") - } - - // SPDX - substringMatcher(licenseFamilyCategory: "SPDX ", - licenseFamilyName: "SPDX") { - // Apache license (OpenSearch) - pattern(substring: "SPDX-License-Identifier: Apache-2.0") - pattern(substring: "Copyright OpenSearch Contributors.") - } - - // Generated resources - substringMatcher(licenseFamilyCategory: "GEN ", - licenseFamilyName: "Generated") { - // parsers generated by antlr - pattern(substring: "ANTLR GENERATED CODE") - } - - // Vendored Code - substringMatcher(licenseFamilyCategory: "VEN ", - licenseFamilyName: "Vendored") { - pattern(substring: "@notice") - } - - // license types added by the project - for (Map.Entry additional : additionalLicenses.entrySet()) { - String category = additional.getKey().substring(0, 5) - String family = additional.getKey().substring(5) - substringMatcher(licenseFamilyCategory: category, - licenseFamilyName: family) { - pattern(substring: additional.getValue()) - } - } - - // approved categories - for (String licenseFamily : approvedLicenses) { - approvedLicense(familyName: licenseFamily) - } - } - - // check the license file for any errors, this should be fast. - boolean zeroUnknownLicenses = false - boolean foundProblemsWithFiles = false - reportFile.eachLine('UTF-8') { line -> - if (line.startsWith("0 Unknown Licenses")) { - zeroUnknownLicenses = true - } - - if (line.startsWith(" !")) { - foundProblemsWithFiles = true - } - } - - if (zeroUnknownLicenses == false || foundProblemsWithFiles) { - // print the unapproved license section, usually its all you need to fix problems. - int sectionNumber = 0 - reportFile.eachLine('UTF-8') { line -> - if (line.startsWith("*******************************")) { - sectionNumber++ - } else { - if (sectionNumber == 2) { - logger.error(line) - } - } - } - throw new IllegalStateException("License header problems were found! Full details: " + reportFile.absolutePath) - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/PrecommitTasks.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/PrecommitTasks.groovy deleted file mode 100644 index e5cd4cda65040..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/precommit/PrecommitTasks.groovy +++ /dev/null @@ -1,70 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle.precommit - - -import org.gradle.api.Project - -/** - * Validation tasks which should be run before committing. These run before tests. - */ -class PrecommitTasks { - - /** Adds a precommit task, which depends on non-test verification tasks. */ - - static void create(Project project, boolean includeDependencyLicenses) { - - project.pluginManager.apply(ForbiddenApisPrecommitPlugin) - project.pluginManager.apply(JarHellPrecommitPlugin) - project.pluginManager.apply(ForbiddenPatternsPrecommitPlugin) - project.pluginManager.apply(LicenseHeadersPrecommitPlugin) - project.pluginManager.apply(FilePermissionsPrecommitPlugin) - project.pluginManager.apply(ThirdPartyAuditPrecommitPlugin) - project.pluginManager.apply(TestingConventionsPrecommitPlugin) - - // tasks with just tests don't need dependency licenses, so this flag makes adding - // the task optional - if (includeDependencyLicenses) { - project.pluginManager.apply(DependencyLicensesPrecommitPlugin) - } - if (project.path != ':build-tools') { - /* - * Sadly, build-tools can't have logger-usage-check because that - * would create a circular project dependency between build-tools - * (which provides NamingConventionsCheck) and :test:logger-usage - * which provides the logger usage check. Since the build tools - * don't use the logger usage check because they don't have any - * of Elaticsearch's loggers and :test:logger-usage actually does - * use the NamingConventionsCheck we break the circular dependency - * here. - */ - project.pluginManager.apply(LoggerUsagePrecommitPlugin) - } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/AntFixture.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/AntFixture.groovy deleted file mode 100644 index 316db8aa01764..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/AntFixture.groovy +++ /dev/null @@ -1,322 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.test - -import org.apache.tools.ant.taskdefs.condition.Os -import org.gradle.api.GradleException -import org.gradle.api.tasks.Exec -import org.gradle.api.tasks.Internal -import org.gradle.api.tasks.TaskProvider -import org.opensearch.gradle.AntTask -import org.opensearch.gradle.LoggedExec -/** - * A fixture for integration tests which runs in a separate process launched by Ant. - */ -class AntFixture extends AntTask implements Fixture { - - /** The path to the executable that starts the fixture. */ - @Internal - String executable - - private final List arguments = new ArrayList<>() - - void args(Object... args) { - arguments.addAll(args) - } - - /** - * Environment variables for the fixture process. The value can be any object, which - * will have toString() called at execution time. - */ - private final Map environment = new HashMap<>() - - void env(String key, Object value) { - environment.put(key, value) - } - - /** A flag to indicate whether the command should be executed from a shell. */ - @Internal - boolean useShell = false - - @Internal - int maxWaitInSeconds = 30 - - /** - * A flag to indicate whether the fixture should be run in the foreground, or spawned. - * It is protected so subclasses can override (eg RunTask). - */ - protected boolean spawn = true - - /** - * A closure to call before the fixture is considered ready. The closure is passed the fixture object, - * as well as a groovy AntBuilder, to enable running ant condition checks. The default wait - * condition is for http on the http port. - */ - @Internal - Closure waitCondition = { AntFixture fixture, AntBuilder ant -> - File tmpFile = new File(fixture.cwd, 'wait.success') - ant.get(src: "http://${fixture.addressAndPort}", - dest: tmpFile.toString(), - ignoreerrors: true, // do not fail on error, so logging information can be flushed - retries: 10) - return tmpFile.exists() - } - - private final TaskProvider stopTask - - AntFixture() { - stopTask = createStopTask() - finalizedBy(stopTask) - } - - @Override - @Internal - TaskProvider getStopTask() { - return stopTask - } - - @Override - protected void runAnt(AntBuilder ant) { - // reset everything - getFileSystemOperations().delete { - it.delete(baseDir) - } - cwd.mkdirs() - final String realExecutable - final List realArgs = new ArrayList<>() - final Map realEnv = environment - // We need to choose which executable we are using. In shell mode, or when we - // are spawning and thus using the wrapper script, the executable is the shell. - if (useShell || spawn) { - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - realExecutable = 'cmd' - realArgs.add('/C') - realArgs.add('"') // quote the entire command - } else { - realExecutable = 'sh' - } - } else { - realExecutable = executable - realArgs.addAll(arguments) - } - if (spawn) { - writeWrapperScript(executable) - realArgs.add(wrapperScript) - realArgs.addAll(arguments) - } - if (Os.isFamily(Os.FAMILY_WINDOWS) && (useShell || spawn)) { - realArgs.add('"') - } - commandString.eachLine { line -> logger.info(line) } - - ant.exec(executable: realExecutable, spawn: spawn, dir: cwd, taskname: name) { - realEnv.each { key, value -> env(key: key, value: value) } - realArgs.each { arg(value: it) } - } - - String failedProp = "failed${name}" - // first wait for resources, or the failure marker from the wrapper script - ant.waitfor(maxwait: maxWaitInSeconds, maxwaitunit: 'second', checkevery: '500', checkeveryunit: 'millisecond', timeoutproperty: failedProp) { - or { - resourceexists { - file(file: failureMarker.toString()) - } - and { - resourceexists { - file(file: pidFile.toString()) - } - resourceexists { - file(file: portsFile.toString()) - } - } - } - } - - if (ant.project.getProperty(failedProp) || failureMarker.exists()) { - fail("Failed to start ${name}") - } - - // the process is started (has a pid) and is bound to a network interface - // so now evaluates if the waitCondition is successful - // TODO: change this to a loop? - boolean success - try { - success = waitCondition(this, ant) - } catch (Exception e) { - String msg = "Wait condition caught exception for ${name}" - logger.error(msg, e) - fail(msg, e) - } - if (success == false) { - fail("Wait condition failed for ${name}") - } - } - - /** Returns a debug string used to log information about how the fixture was run. */ - @Internal - protected String getCommandString() { - String commandString = "\n${name} configuration:\n" - commandString += "-----------------------------------------\n" - commandString += " cwd: ${cwd}\n" - commandString += " command: ${executable} ${arguments.join(' ')}\n" - commandString += ' environment:\n' - environment.each { k, v -> commandString += " ${k}: ${v}\n" } - if (spawn) { - commandString += "\n [${wrapperScript.name}]\n" - wrapperScript.eachLine('UTF-8', { line -> commandString += " ${line}\n"}) - } - return commandString - } - - /** - * Writes a script to run the real executable, so that stdout/stderr can be captured. - * TODO: this could be removed if we do use our own ProcessBuilder and pump output from the process - */ - private void writeWrapperScript(String executable) { - wrapperScript.parentFile.mkdirs() - String argsPasser = '"$@"' - String exitMarker = "; if [ \$? != 0 ]; then touch run.failed; fi" - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - argsPasser = '%*' - exitMarker = "\r\n if \"%errorlevel%\" neq \"0\" ( type nul >> run.failed )" - } - wrapperScript.setText("\"${executable}\" ${argsPasser} > run.log 2>&1 ${exitMarker}", 'UTF-8') - } - - /** Fail the build with the given message, and logging relevant info*/ - private void fail(String msg, Exception... suppressed) { - if (logger.isInfoEnabled() == false) { - // We already log the command at info level. No need to do it twice. - commandString.eachLine { line -> logger.error(line) } - } - logger.error("${name} output:") - logger.error("-----------------------------------------") - logger.error(" failure marker exists: ${failureMarker.exists()}") - logger.error(" pid file exists: ${pidFile.exists()}") - logger.error(" ports file exists: ${portsFile.exists()}") - // also dump the log file for the startup script (which will include ES logging output to stdout) - if (runLog.exists()) { - logger.error("\n [log]") - runLog.eachLine { line -> logger.error(" ${line}") } - } - logger.error("-----------------------------------------") - GradleException toThrow = new GradleException(msg) - for (Exception e : suppressed) { - toThrow.addSuppressed(e) - } - throw toThrow - } - - /** Adds a task to kill an opensearch node with the given pidfile */ - private TaskProvider createStopTask() { - final AntFixture fixture = this - final Object pid = "${ -> fixture.pid }" - TaskProvider stop = project.tasks.register("${name}#stop", LoggedExec) - stop.configure { - onlyIf { fixture.pidFile.exists() } - doFirst { - logger.info("Shutting down ${fixture.name} with pid ${pid}") - } - - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - executable = 'Taskkill' - args('/PID', pid, '/F') - } else { - executable = 'kill' - args('-9', pid) - } - doLast { - getFileSystemOperations().delete { - it.delete(fixture.pidFile) - } - } - - } - - return stop - } - - /** - * A path relative to the build dir that all configuration and runtime files - * will live in for this fixture - */ - @Internal - protected File getBaseDir() { - return new File(project.buildDir, "fixtures/${name}") - } - - /** Returns the working directory for the process. Defaults to "cwd" inside baseDir. */ - @Internal - protected File getCwd() { - return new File(baseDir, 'cwd') - } - - /** Returns the file the process writes its pid to. Defaults to "pid" inside baseDir. */ - @Internal - protected File getPidFile() { - return new File(baseDir, 'pid') - } - - /** Reads the pid file and returns the process' pid */ - @Internal - int getPid() { - return Integer.parseInt(pidFile.getText('UTF-8').trim()) - } - - /** Returns the file the process writes its bound ports to. Defaults to "ports" inside baseDir. */ - @Internal - protected File getPortsFile() { - return new File(baseDir, 'ports') - } - - /** Returns an address and port suitable for a uri to connect to this node over http */ - @Internal - String getAddressAndPort() { - return portsFile.readLines("UTF-8").get(0) - } - - /** Returns a file that wraps around the actual command when {@code spawn == true}. */ - @Internal - protected File getWrapperScript() { - return new File(cwd, Os.isFamily(Os.FAMILY_WINDOWS) ? 'run.bat' : 'run') - } - - /** Returns a file that the wrapper script writes when the command failed. */ - @Internal - protected File getFailureMarker() { - return new File(cwd, 'run.failed') - } - - /** Returns a file that the wrapper script writes when the command failed. */ - @Internal - protected File getRunLog() { - return new File(cwd, 'run.log') - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterConfiguration.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterConfiguration.groovy deleted file mode 100644 index a5207933c3c72..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterConfiguration.groovy +++ /dev/null @@ -1,277 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle.test - -import org.opensearch.gradle.Version -import org.gradle.api.GradleException -import org.gradle.api.Project -import org.gradle.api.tasks.Input - -/** Configuration for an opensearch cluster, used for integration tests. */ -class ClusterConfiguration { - - private final Project project - - @Input - String distribution = 'archive' - - @Input - int numNodes = 1 - - @Input - int numBwcNodes = 0 - - @Input - Version bwcVersion = null - - @Input - int httpPort = 0 - - @Input - int transportPort = 0 - - /** - * An override of the data directory. Input is the node number and output - * is the override data directory. - */ - @Input - Closure dataDir = null - - /** Optional override of the cluster name. */ - @Input - String clusterName = null - - @Input - boolean daemonize = true - - @Input - boolean debug = false - - /** - * Configuration of the setting {@code discovery.zen.minimum_master_nodes} on the nodes. - * In case of more than one node, this defaults to the number of nodes - */ - @Input - Closure minimumMasterNodes = { - if (bwcVersion != null && bwcVersion.before("6.5.0")) { - return numNodes > 1 ? numNodes : -1 - } else { - return numNodes > 1 ? numNodes.intdiv(2) + 1 : -1 - } - } - - /** - * Whether the initial_master_nodes setting should be automatically derived from the nodes - * in the cluster. Only takes effect if all nodes in the cluster understand this setting - * and the discovery type is not explicitly set. - */ - @Input - boolean autoSetInitialMasterNodes = true - - /** - * Whether the file-based discovery provider should be automatically setup based on - * the nodes in the cluster. Only takes effect if no other hosts provider is already - * configured. - */ - @Input - boolean autoSetHostsProvider = true - - @Input - String jvmArgs = "-Xms" + System.getProperty('tests.heap.size', '512m') + - " " + "-Xmx" + System.getProperty('tests.heap.size', '512m') + - " " + System.getProperty('tests.jvm.argline', '') - - /** - * Should the shared environment be cleaned on cluster startup? Defaults - * to {@code true} so we run with a clean cluster but some tests wish to - * preserve snapshots between clusters so they set this to true. - */ - @Input - boolean cleanShared = true - - /** - * A closure to call which returns the unicast host to connect to for cluster formation. - * - * This allows multi node clusters, or a new cluster to connect to an existing cluster. - * The closure takes three arguments, the NodeInfo for the first node in the cluster, - * the NodeInfo for the node current being configured, an AntBuilder which may be used - * to wait on conditions before returning. - */ - @Input - Closure unicastTransportUri = { NodeInfo seedNode, NodeInfo node, AntBuilder ant -> - if (seedNode == node) { - return null - } - ant.waitfor(maxwait: '40', maxwaitunit: 'second', checkevery: '500', checkeveryunit: 'millisecond', - timeoutproperty: "failed.${seedNode.transportPortsFile.path}") { - resourceexists { - file(file: seedNode.transportPortsFile.toString()) - } - } - if (ant.properties.containsKey("failed.${seedNode.transportPortsFile.path}".toString())) { - throw new GradleException("Failed to locate seed node transport file [${seedNode.transportPortsFile}]: " + - "timed out waiting for it to be created after 40 seconds") - } - return seedNode.transportUri() - } - - /** - * A closure to call which returns a manually supplied list of unicast seed hosts. - */ - @Input - Closure> otherUnicastHostAddresses = { - Collections.emptyList() - } - - /** - * A closure to call before the cluster is considered ready. The closure is passed the node info, - * as well as a groovy AntBuilder, to enable running ant condition checks. The default wait - * condition is for http on the http port. - */ - @Input - Closure waitCondition = { NodeInfo node, AntBuilder ant -> - File tmpFile = new File(node.cwd, 'wait.success') - String waitUrl = "http://${node.httpUri()}/_cluster/health?wait_for_nodes=>=${numNodes}&wait_for_status=yellow" - ant.echo(message: "==> [${new Date()}] checking health: ${waitUrl}", - level: 'info') - // checking here for wait_for_nodes to be >= the number of nodes because its possible - // this cluster is attempting to connect to nodes created by another task (same cluster name), - // so there will be more nodes in that case in the cluster state - ant.get(src: waitUrl, - dest: tmpFile.toString(), - ignoreerrors: true, // do not fail on error, so logging buffers can be flushed by the wait task - retries: 10) - return tmpFile.exists() - } - - /** - * The maximum number of seconds to wait for nodes to complete startup, which includes writing - * the ports files for the transports and the pid file. This wait time occurs before the wait - * condition is executed. - */ - @Input - int nodeStartupWaitSeconds = 30 - - public ClusterConfiguration(Project project) { - this.project = project - } - - // **Note** for systemProperties, settings, keystoreFiles etc: - // value could be a GString that is evaluated to just a String - // there are cases when value depends on task that is not executed yet on configuration stage - Map systemProperties = new HashMap<>() - - Map environmentVariables = new HashMap<>() - - Map settings = new HashMap<>() - - Map keystoreSettings = new HashMap<>() - - Map keystoreFiles = new HashMap<>() - - // map from destination path, to source file - Map extraConfigFiles = new HashMap<>() - - LinkedHashMap plugins = new LinkedHashMap<>() - - List modules = new ArrayList<>() - - LinkedHashMap setupCommands = new LinkedHashMap<>() - - List dependencies = new ArrayList<>() - - @Input - void systemProperty(String property, Object value) { - systemProperties.put(property, value) - } - - @Input - void environment(String variable, Object value) { - environmentVariables.put(variable, value) - } - - @Input - void setting(String name, Object value) { - settings.put(name, value) - } - - @Input - void keystoreSetting(String name, String value) { - keystoreSettings.put(name, value) - } - - /** - * Adds a file to the keystore. The name is the secure setting name, and the sourceFile - * is anything accepted by project.file() - */ - @Input - void keystoreFile(String name, Object sourceFile) { - keystoreFiles.put(name, sourceFile) - } - - @Input - void plugin(String path) { - Project pluginProject = project.project(path) - plugins.put(pluginProject.name, pluginProject) - } - - @Input - void mavenPlugin(String name, String mavenCoords) { - plugins.put(name, mavenCoords) - } - - /** Add a module to the cluster. The project must be an opensearchplugin and have a single zip default artifact. */ - @Input - void module(Project moduleProject) { - modules.add(moduleProject) - } - - @Input - void setupCommand(String name, Object... args) { - setupCommands.put(name, args) - } - - /** - * Add an extra configuration file. The path is relative to the config dir, and the sourceFile - * is anything accepted by project.file() - */ - @Input - void extraConfigFile(String path, Object sourceFile) { - if (path == 'opensearch.yml') { - throw new GradleException('Overwriting opensearch.yml is not allowed, add additional settings using cluster { setting "foo", "bar" }') - } - extraConfigFiles.put(path, sourceFile) - } - - /** Add dependencies that must be run before the first task setting up the cluster. */ - @Input - void dependsOn(Object... deps) { - dependencies.addAll(deps) - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterFormationTasks.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterFormationTasks.groovy deleted file mode 100644 index c3dd2526de385..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/ClusterFormationTasks.groovy +++ /dev/null @@ -1,1017 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle.test - -import org.apache.tools.ant.DefaultLogger -import org.apache.tools.ant.taskdefs.condition.Os -import org.opensearch.gradle.BuildPlugin -import org.opensearch.gradle.BwcVersions -import org.opensearch.gradle.LoggedExec -import org.opensearch.gradle.Version -import org.opensearch.gradle.VersionProperties -import org.opensearch.gradle.info.BuildParams -import org.opensearch.gradle.plugin.PluginBuildPlugin -import org.opensearch.gradle.plugin.PluginPropertiesExtension -import org.gradle.api.AntBuilder -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.artifacts.Configuration -import org.gradle.api.artifacts.Dependency -import org.gradle.api.file.FileCollection -import org.gradle.api.logging.Logger -import org.gradle.api.tasks.Copy -import org.gradle.api.tasks.Delete -import org.gradle.api.tasks.Exec -import org.gradle.internal.jvm.Jvm - -import java.nio.charset.StandardCharsets -import java.nio.file.Paths -import java.util.concurrent.TimeUnit -import java.util.stream.Collectors - -/** - * A helper for creating tasks to build a cluster that is used by a task, and tear down the cluster when the task is finished. - */ -class ClusterFormationTasks { - - /** - * Adds dependent tasks to the given task to start and stop a cluster with the given configuration. - * - * Returns a list of NodeInfo objects for each node in the cluster. - */ - static List setup(Project project, String prefix, Task runner, ClusterConfiguration config) { - File sharedDir = new File(project.buildDir, "cluster/shared") - Object startDependencies = config.dependencies - /* First, if we want a clean environment, we remove everything in the - * shared cluster directory to ensure there are no leftovers in repos - * or anything in theory this should not be necessary but repositories - * are only deleted in the cluster-state and not on-disk such that - * snapshots survive failures / test runs and there is no simple way - * today to fix that. */ - if (config.cleanShared) { - Task cleanup = project.tasks.create( - name: "${prefix}#prepareCluster.cleanShared", - type: Delete, - dependsOn: startDependencies) { - delete sharedDir - doLast { - sharedDir.mkdirs() - } - } - startDependencies = cleanup - } - List startTasks = [] - List nodes = [] - if (config.numNodes < config.numBwcNodes) { - throw new GradleException("numNodes must be >= numBwcNodes [${config.numNodes} < ${config.numBwcNodes}]") - } - if (config.numBwcNodes > 0 && config.bwcVersion == null) { - throw new GradleException("bwcVersion must not be null if numBwcNodes is > 0") - } - // this is our current version distribution configuration we use for all kinds of REST tests etc. - Configuration currentDistro = project.configurations.create("${prefix}_opensearchDistro") - Configuration bwcDistro = project.configurations.create("${prefix}_opensearchBwcDistro") - Configuration bwcPlugins = project.configurations.create("${prefix}_opensearchBwcPlugins") - if (System.getProperty('tests.distribution', 'archive') == 'integ-test-zip') { - throw new Exception("tests.distribution=integ-test-zip is not supported") - } - configureDistributionDependency(project, config.distribution, currentDistro, VersionProperties.getOpenSearch()) - boolean hasBwcNodes = config.numBwcNodes > 0 - if (hasBwcNodes) { - if (config.bwcVersion == null) { - throw new IllegalArgumentException("Must specify bwcVersion when numBwcNodes > 0") - } - // if we have a cluster that has a BWC cluster we also need to configure a dependency on the BWC version - // this version uses the same distribution etc. and only differs in the version we depend on. - // from here on everything else works the same as if it's the current version, we fetch the BWC version - // from mirrors using gradles built-in mechanism etc. - - configureDistributionDependency(project, config.distribution, bwcDistro, config.bwcVersion.toString()) - for (Map.Entry entry : config.plugins.entrySet()) { - configureBwcPluginDependency(project, entry.getValue(), bwcPlugins, config.bwcVersion) - } - bwcDistro.resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) - bwcPlugins.resolutionStrategy.cacheChangingModulesFor(0, TimeUnit.SECONDS) - } - for (int i = 0; i < config.numNodes; i++) { - // we start N nodes and out of these N nodes there might be M bwc nodes. - // for each of those nodes we might have a different configuration - Configuration distro - String opensearchVersion - if (i < config.numBwcNodes) { - opensearchVersion = config.bwcVersion.toString() - if (project.bwcVersions.unreleased.contains(config.bwcVersion)) { - opensearchVersion += "-SNAPSHOT" - } - distro = bwcDistro - } else { - opensearchVersion = VersionProperties.getOpenSearch() - distro = currentDistro - } - NodeInfo node = new NodeInfo(config, i, project, prefix, opensearchVersion, sharedDir) - nodes.add(node) - Closure writeConfigSetup - Object dependsOn - if (node.nodeVersion.onOrAfter("6.5.0")) { - writeConfigSetup = { Map esConfig -> - if (config.getAutoSetHostsProvider()) { - // Don't force discovery provider if one is set by the test cluster specs already - final String seedProvidersSettingName = - node.nodeVersion.onOrAfter("7.0.0") ? "discovery.seed_providers" : "discovery.zen.hosts_provider"; - if (esConfig.containsKey(seedProvidersSettingName) == false) { - esConfig[seedProvidersSettingName] = 'file' - } - esConfig[node.nodeVersion.onOrAfter("7.0.0") ? "discovery.seed_hosts" : "discovery.zen.ping.unicast.hosts"] = [] - } - boolean supportsInitialMasterNodes = hasBwcNodes == false || config.bwcVersion.onOrAfter("7.0.0") - if (esConfig['discovery.type'] == null && config.getAutoSetInitialMasterNodes() && supportsInitialMasterNodes) { - esConfig['cluster.initial_master_nodes'] = nodes.stream().map({ n -> - if (n.config.settings['node.name'] == null) { - return "node-" + n.nodeNum - } else { - return n.config.settings['node.name'] - } - }).collect(Collectors.toList()) - } - esConfig - } - dependsOn = startDependencies - } else { - dependsOn = startTasks.empty ? startDependencies : startTasks.get(0) - writeConfigSetup = { Map esConfig -> - String unicastTransportUri = node.config.unicastTransportUri(nodes.get(0), node, project.createAntBuilder()) - if (unicastTransportUri == null) { - esConfig['discovery.zen.ping.unicast.hosts'] = [] - } else { - esConfig['discovery.zen.ping.unicast.hosts'] = "\"${unicastTransportUri}\"" - } - esConfig - } - } - startTasks.add(configureNode(project, prefix, runner, dependsOn, node, config, distro, writeConfigSetup)) - } - - Task wait = configureWaitTask("${prefix}#wait", project, nodes, startTasks, config.nodeStartupWaitSeconds) - runner.dependsOn(wait) - - return nodes - } - - /** Adds a dependency on the given distribution */ - static void configureDistributionDependency(Project project, String distro, Configuration configuration, String opensearchVersion) { - boolean internalBuild = project.hasProperty('bwcVersions') - if (distro.equals("integ-test-zip")) { - // short circuit integ test so it doesn't complicate the rest of the distribution setup below - if (internalBuild) { - project.dependencies.add( - configuration.name, - project.dependencies.project(path: ":distribution", configuration: 'integ-test-zip') - ) - } else { - project.dependencies.add( - configuration.name, - "org.opensearch.distribution.integ-test-zip:opensearch:${opensearchVersion}@zip" - ) - } - return - } - - Version version = Version.fromString(opensearchVersion) - String os = getOs() - String classifier = "-${os}-x64" - String packaging = os.equals('windows') ? 'zip' : 'tar.gz' - String artifactName = 'opensearch' - Object dependency - String snapshotProject = "${os}-${os.equals('windows') ? 'zip' : 'tar'}" - if (version.before("7.0.0")) { - snapshotProject = "zip" - packaging = "zip" - } - - BwcVersions.UnreleasedVersionInfo unreleasedInfo = null - - if (project.hasProperty('bwcVersions')) { - // NOTE: leniency is needed for external plugin authors using build-tools. maybe build the version compat info into build-tools? - unreleasedInfo = project.bwcVersions.unreleasedInfo(version) - } - if (unreleasedInfo != null) { - dependency = project.dependencies.project( - path: unreleasedInfo.gradleProjectPath, configuration: snapshotProject - ) - } else if (internalBuild && opensearchVersion.equals(VersionProperties.getOpenSearch())) { - dependency = project.dependencies.project(path: ":distribution:archives:${snapshotProject}") - } else { - if (version.before('7.0.0')) { - classifier = "" // for bwc, before we had classifiers - } - // group does not matter as it is not used when we pull from the ivy repo that points to the download service - dependency = "dnm:${artifactName}:${opensearchVersion}${classifier}@${packaging}" - } - project.dependencies.add(configuration.name, dependency) - } - - /** Adds a dependency on a different version of the given plugin, which will be retrieved using gradle's dependency resolution */ - static void configureBwcPluginDependency(Project project, Object plugin, Configuration configuration, Version opensearchVersion) { - if (plugin instanceof Project) { - Project pluginProject = (Project)plugin - verifyProjectHasBuildPlugin(configuration.name, opensearchVersion, project, pluginProject) - final String pluginName = findPluginName(pluginProject) - project.dependencies.add(configuration.name, "org.opensearch.plugin:${pluginName}:${opensearchVersion}@zip") - } else { - project.dependencies.add(configuration.name, "${plugin}@zip") - } - } - - /** - * Adds dependent tasks to start an opensearch cluster before the given task is executed, - * and stop it after it has finished executing. - * - * The setup of the cluster involves the following: - *
      - *
    1. Cleanup the extraction directory
    2. - *
    3. Extract a fresh copy of opensearch
    4. - *
    5. Write an opensearch.yml config file
    6. - *
    7. Copy plugins that will be installed to a temporary dir (which contains spaces)
    8. - *
    9. Install plugins
    10. - *
    11. Run additional setup commands
    12. - *
    13. Start opensearch
    14. - *
    - * - * @return a task which starts the node. - */ - static Task configureNode(Project project, String prefix, Task runner, Object dependsOn, NodeInfo node, ClusterConfiguration config, - Configuration distribution, Closure writeConfig) { - - // tasks are chained so their execution order is maintained - Task setup = project.tasks.create(name: taskName(prefix, node, 'clean'), type: Delete, dependsOn: dependsOn) { - delete node.homeDir - delete node.cwd - } - setup = project.tasks.create(name: taskName(prefix, node, 'createCwd'), type: DefaultTask, dependsOn: setup) { - doLast { - node.cwd.mkdirs() - } - outputs.dir node.cwd - } - setup = configureCheckPreviousTask(taskName(prefix, node, 'checkPrevious'), project, setup, node) - setup = configureStopTask(taskName(prefix, node, 'stopPrevious'), project, setup, node) - setup = configureExtractTask(taskName(prefix, node, 'extract'), project, setup, node, distribution, config.distribution) - setup = configureWriteConfigTask(taskName(prefix, node, 'configure'), project, setup, node, writeConfig) - setup = configureCreateKeystoreTask(taskName(prefix, node, 'createKeystore'), project, setup, node) - setup = configureAddKeystoreSettingTasks(prefix, project, setup, node) - setup = configureAddKeystoreFileTasks(prefix, project, setup, node) - - if (node.config.plugins.isEmpty() == false) { - if (node.nodeVersion == Version.fromString(VersionProperties.getOpenSearch())) { - setup = configureCopyPluginsTask(taskName(prefix, node, 'copyPlugins'), project, setup, node, prefix) - } else { - setup = configureCopyBwcPluginsTask(taskName(prefix, node, 'copyBwcPlugins'), project, setup, node, prefix) - } - } - - // install modules - for (Project module : node.config.modules) { - String actionName = pluginTaskName('install', module.name, 'Module') - setup = configureInstallModuleTask(taskName(prefix, node, actionName), project, setup, node, module) - } - - // install plugins - for (String pluginName : node.config.plugins.keySet()) { - String actionName = pluginTaskName('install', pluginName, 'Plugin') - setup = configureInstallPluginTask(taskName(prefix, node, actionName), project, setup, node, pluginName, prefix) - } - - // sets up any extra config files that need to be copied over to the ES instance; - // its run after plugins have been installed, as the extra config files may belong to plugins - setup = configureExtraConfigFilesTask(taskName(prefix, node, 'extraConfig'), project, setup, node) - - // extra setup commands - for (Map.Entry command : node.config.setupCommands.entrySet()) { - // the first argument is the actual script name, relative to home - Object[] args = command.getValue().clone() - final Object commandPath - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to - * getting the short name requiring the path to already exist. Note that we have to capture the value of arg[0] now - * otherwise we would stack overflow later since arg[0] is replaced below. - */ - String argsZero = args[0] - commandPath = "${-> Paths.get(NodeInfo.getShortPathName(node.homeDir.toString())).resolve(argsZero.toString()).toString()}" - } else { - commandPath = node.homeDir.toPath().resolve(args[0].toString()).toString() - } - args[0] = commandPath - setup = configureExecTask(taskName(prefix, node, command.getKey()), project, setup, node, args) - } - - Task start = configureStartTask(taskName(prefix, node, 'start'), project, setup, node) - - if (node.config.daemonize) { - Task stop = configureStopTask(taskName(prefix, node, 'stop'), project, [], node) - // if we are running in the background, make sure to stop the server when the task completes - runner.finalizedBy(stop) - start.finalizedBy(stop) - for (Object dependency : config.dependencies) { - if (dependency instanceof Fixture) { - def depStop = ((Fixture)dependency).stopTask - runner.finalizedBy(depStop) - start.finalizedBy(depStop) - } - } - } - return start - } - - /** Adds a task to extract the opensearch distribution */ - static Task configureExtractTask(String name, Project project, Task setup, NodeInfo node, - Configuration configuration, String distribution) { - List extractDependsOn = [configuration, setup] - /* configuration.singleFile will be an external artifact if this is being run by a plugin not living in the - opensearch source tree. If this is a plugin built in the opensearch source tree or this is a distro in - the opensearch source tree then this should be the version of opensearch built by the source tree. - If it isn't then Bad Things(TM) will happen. */ - Task extract = project.tasks.create(name: name, type: Copy, dependsOn: extractDependsOn) { - if (getOs().equals("windows") || distribution.equals("integ-test-zip") || node.nodeVersion.before("7.0.0")) { - from { - project.zipTree(configuration.singleFile) - } - } else { - // macos and linux use tar - from { - project.tarTree(project.resources.gzip(configuration.singleFile)) - } - } - into node.baseDir - } - - return extract - } - - /** Adds a task to write opensearch.yml for the given node configuration */ - static Task configureWriteConfigTask(String name, Project project, Task setup, NodeInfo node, Closure configFilter) { - Map esConfig = [ - 'cluster.name' : node.clusterName, - 'node.name' : "node-" + node.nodeNum, - (node.nodeVersion.onOrAfter('7.4.0') ? 'node.pidfile' : 'pidfile') : node.pidFile, - 'path.repo' : "${node.sharedDir}/repo", - 'path.shared_data' : "${node.sharedDir}/", - // Define a node attribute so we can test that it exists - 'node.attr.testattr' : 'test', - // Don't wait for state, just start up quickly. This will also allow new and old nodes in the BWC case to become the master - 'discovery.initial_state_timeout' : '0s' - ] - int minimumMasterNodes = node.config.minimumMasterNodes.call() - if (node.nodeVersion.before("7.0.0") && minimumMasterNodes > 0) { - esConfig['discovery.zen.minimum_master_nodes'] = minimumMasterNodes - } - if (node.nodeVersion.before("7.0.0") && esConfig.containsKey('discovery.zen.master_election.wait_for_joins_timeout') == false) { - // If a node decides to become master based on partial information from the pinging, don't let it hang for 30 seconds to correct - // its mistake. Instead, only wait 5s to do another round of pinging. - // This is necessary since we use 30s as the default timeout in REST requests waiting for cluster formation - // so we need to bail quicker than the default 30s for the cluster to form in time. - esConfig['discovery.zen.master_election.wait_for_joins_timeout'] = '5s' - } - esConfig['http.port'] = node.config.httpPort - if (node.nodeVersion.onOrAfter('6.7.0')) { - esConfig['transport.port'] = node.config.transportPort - } else { - esConfig['transport.tcp.port'] = node.config.transportPort - } - // Default the watermarks to absurdly low to prevent the tests from failing on nodes without enough disk space - esConfig['cluster.routing.allocation.disk.watermark.low'] = '1b' - esConfig['cluster.routing.allocation.disk.watermark.high'] = '1b' - if (node.nodeVersion.major >= 6) { - esConfig['cluster.routing.allocation.disk.watermark.flood_stage'] = '1b' - } - // increase script compilation limit since tests can rapid-fire script compilations - if (node.nodeVersion.onOrAfter('7.9.0')) { - esConfig['script.disable_max_compilations_rate'] = 'true' - } else { - esConfig['script.max_compilations_rate'] = '2048/1m' - } - // Temporarily disable the real memory usage circuit breaker. It depends on real memory usage which we have no full control - // over and the REST client will not retry on circuit breaking exceptions yet (see #31986 for details). Once the REST client - // can retry on circuit breaking exceptions, we can revert again to the default configuration. - if (node.nodeVersion.major >= 7) { - esConfig['indices.breaker.total.use_real_memory'] = false - } - - Task writeConfig = project.tasks.create(name: name, type: DefaultTask, dependsOn: setup) - writeConfig.doFirst { - for (Map.Entry setting : node.config.settings) { - if (setting.value == null) { - esConfig.remove(setting.key) - } else { - esConfig.put(setting.key, setting.value) - } - } - - esConfig = configFilter.call(esConfig) - File configFile = new File(node.pathConf, 'opensearch.yml') - logger.info("Configuring ${configFile}") - configFile.setText(esConfig.collect { key, value -> "${key}: ${value}" }.join('\n'), 'UTF-8') - } - } - - /** Adds a task to create keystore */ - static Task configureCreateKeystoreTask(String name, Project project, Task setup, NodeInfo node) { - if (node.config.keystoreSettings.isEmpty() && node.config.keystoreFiles.isEmpty()) { - return setup - } else { - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to - * getting the short name requiring the path to already exist. - */ - final Object esKeystoreUtil = "${-> node.binPath().resolve('opensearch-keystore').toString()}" - return configureExecTask(name, project, setup, node, esKeystoreUtil, 'create') - } - } - - /** Adds tasks to add settings to the keystore */ - static Task configureAddKeystoreSettingTasks(String parent, Project project, Task setup, NodeInfo node) { - Map kvs = node.config.keystoreSettings - Task parentTask = setup - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to getting - * the short name requiring the path to already exist. - */ - final Object esKeystoreUtil = "${-> node.binPath().resolve('opensearch-keystore').toString()}" - for (Map.Entry entry in kvs) { - String key = entry.getKey() - String name = taskName(parent, node, 'addToKeystore#' + key) - Task t = configureExecTask(name, project, parentTask, node, esKeystoreUtil, 'add', key, '-x') - String settingsValue = entry.getValue() // eval this early otherwise it will not use the right value - t.doFirst { - standardInput = new ByteArrayInputStream(settingsValue.getBytes(StandardCharsets.UTF_8)) - } - parentTask = t - } - return parentTask - } - - /** Adds tasks to add files to the keystore */ - static Task configureAddKeystoreFileTasks(String parent, Project project, Task setup, NodeInfo node) { - Map kvs = node.config.keystoreFiles - if (kvs.isEmpty()) { - return setup - } - Task parentTask = setup - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to getting - * the short name requiring the path to already exist. - */ - final Object esKeystoreUtil = "${-> node.binPath().resolve('opensearch-keystore').toString()}" - for (Map.Entry entry in kvs) { - String key = entry.getKey() - String name = taskName(parent, node, 'addToKeystore#' + key) - String srcFileName = entry.getValue() - Task t = configureExecTask(name, project, parentTask, node, esKeystoreUtil, 'add-file', key, srcFileName) - t.doFirst { - File srcFile = project.file(srcFileName) - if (srcFile.isDirectory()) { - throw new GradleException("Source for keystoreFile must be a file: ${srcFile}") - } - if (srcFile.exists() == false) { - throw new GradleException("Source file for keystoreFile does not exist: ${srcFile}") - } - } - parentTask = t - } - return parentTask - } - - static Task configureExtraConfigFilesTask(String name, Project project, Task setup, NodeInfo node) { - if (node.config.extraConfigFiles.isEmpty()) { - return setup - } - Copy copyConfig = project.tasks.create(name: name, type: Copy, dependsOn: setup) - File configDir = new File(node.homeDir, 'config') - copyConfig.into(configDir) // copy must always have a general dest dir, even though we don't use it - for (Map.Entry extraConfigFile : node.config.extraConfigFiles.entrySet()) { - Object extraConfigFileValue = extraConfigFile.getValue() - copyConfig.doFirst { - // make sure the copy won't be a no-op or act on a directory - File srcConfigFile = project.file(extraConfigFileValue) - if (srcConfigFile.isDirectory()) { - throw new GradleException("Source for extraConfigFile must be a file: ${srcConfigFile}") - } - if (srcConfigFile.exists() == false) { - throw new GradleException("Source file for extraConfigFile does not exist: ${srcConfigFile}") - } - } - File destConfigFile = new File(node.homeDir, 'config/' + extraConfigFile.getKey()) - // wrap source file in closure to delay resolution to execution time - copyConfig.from({ extraConfigFileValue }) { - // this must be in a closure so it is only applied to the single file specified in from above - into(configDir.toPath().relativize(destConfigFile.canonicalFile.parentFile.toPath()).toFile()) - rename { destConfigFile.name } - } - } - return copyConfig - } - - /** - * Adds a task to copy plugins to a temp dir, which they will later be installed from. - * - * For each plugin, if the plugin has rest spec apis in its tests, those api files are also copied - * to the test resources for this project. - */ - static Task configureCopyPluginsTask(String name, Project project, Task setup, NodeInfo node, String prefix) { - Copy copyPlugins = project.tasks.create(name: name, type: Copy, dependsOn: setup) - - List pluginFiles = [] - for (Map.Entry plugin : node.config.plugins.entrySet()) { - - String configurationName = pluginConfigurationName(prefix, plugin.key) - Configuration configuration = project.configurations.findByName(configurationName) - if (configuration == null) { - configuration = project.configurations.create(configurationName) - } - - if (plugin.getValue() instanceof Project) { - Project pluginProject = plugin.getValue() - verifyProjectHasBuildPlugin(name, node.nodeVersion, project, pluginProject) - - project.dependencies.add(configurationName, project.dependencies.project(path: pluginProject.path, configuration: 'zip')) - setup.dependsOn(pluginProject.tasks.bundlePlugin) - - // also allow rest tests to use the rest spec from the plugin - String copyRestSpecTaskName = pluginTaskName('copy', plugin.getKey(), 'PluginRestSpec') - Copy copyRestSpec = project.tasks.findByName(copyRestSpecTaskName) - for (File resourceDir : pluginProject.sourceSets.test.resources.srcDirs) { - File restApiDir = new File(resourceDir, 'rest-api-spec/api') - if (restApiDir.exists() == false) continue - if (copyRestSpec == null) { - copyRestSpec = project.tasks.create(name: copyRestSpecTaskName, type: Copy) - copyPlugins.dependsOn(copyRestSpec) - copyRestSpec.into(project.sourceSets.test.output.resourcesDir) - } - copyRestSpec.from(resourceDir).include('rest-api-spec/api/**') - } - } else { - project.dependencies.add(configurationName, "${plugin.getValue()}@zip") - } - - - - pluginFiles.add(configuration) - } - - copyPlugins.into(node.pluginsTmpDir) - copyPlugins.from(pluginFiles) - return copyPlugins - } - - private static String pluginConfigurationName(final String prefix, final String name) { - return "_plugin_${prefix}_${name}".replace(':', '_') - } - - private static String pluginBwcConfigurationName(final String prefix, final String name) { - return "_plugin_bwc_${prefix}_${name}".replace(':', '_') - } - - /** Configures task to copy a plugin based on a zip file resolved using dependencies for an older version */ - static Task configureCopyBwcPluginsTask(String name, Project project, Task setup, NodeInfo node, String prefix) { - Configuration bwcPlugins = project.configurations.getByName("${prefix}_opensearchBwcPlugins") - for (Map.Entry plugin : node.config.plugins.entrySet()) { - String configurationName = pluginBwcConfigurationName(prefix, plugin.key) - Configuration configuration = project.configurations.findByName(configurationName) - if (configuration == null) { - configuration = project.configurations.create(configurationName) - } - - if (plugin.getValue() instanceof Project) { - Project pluginProject = plugin.getValue() - verifyProjectHasBuildPlugin(name, node.nodeVersion, project, pluginProject) - - final String depName = findPluginName(pluginProject) - - Dependency dep = bwcPlugins.dependencies.find { - it.name == depName - } - configuration.dependencies.add(dep) - } else { - project.dependencies.add(configurationName, "${plugin.getValue()}@zip") - } - } - - Copy copyPlugins = project.tasks.create(name: name, type: Copy, dependsOn: setup) { - from bwcPlugins - into node.pluginsTmpDir - } - return copyPlugins - } - - static Task configureInstallModuleTask(String name, Project project, Task setup, NodeInfo node, Project module) { - if (node.config.distribution != 'integ-test-zip') { - project.logger.info("Not installing modules for $name, ${node.config.distribution} already has them") - return setup - } - if (module.plugins.hasPlugin(PluginBuildPlugin) == false) { - throw new GradleException("Task ${name} cannot include module ${module.path} which is not an opensearchplugin") - } - Copy installModule = project.tasks.create(name, Copy.class) - installModule.dependsOn(setup) - installModule.dependsOn(module.tasks.bundlePlugin) - installModule.into(new File(node.homeDir, "modules/${module.name}")) - installModule.from({ project.zipTree(module.tasks.bundlePlugin.outputs.files.singleFile) }) - return installModule - } - - static Task configureInstallPluginTask(String name, Project project, Task setup, NodeInfo node, String pluginName, String prefix) { - FileCollection pluginZip; - if (node.nodeVersion != Version.fromString(VersionProperties.getOpenSearch())) { - pluginZip = project.configurations.getByName(pluginBwcConfigurationName(prefix, pluginName)) - } else { - pluginZip = project.configurations.getByName(pluginConfigurationName(prefix, pluginName)) - } - // delay reading the file location until execution time by wrapping in a closure within a GString - final Object file = "${-> new File(node.pluginsTmpDir, pluginZip.singleFile.getName()).toURI().toURL().toString()}" - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to getting - * the short name requiring the path to already exist. - */ - final Object esPluginUtil = "${-> node.binPath().resolve('opensearch-plugin').toString()}" - final Object[] args = [esPluginUtil, 'install', '--batch', file] - return configureExecTask(name, project, setup, node, args) - } - - /** Wrapper for command line argument: surrounds comma with double quotes **/ - private static class EscapeCommaWrapper { - - Object arg - - public String toString() { - String s = arg.toString() - - /// Surround strings that contains a comma with double quotes - if (s.indexOf(',') != -1) { - return "\"${s}\"" - } - return s - } - } - - /** Adds a task to execute a command to help setup the cluster */ - static Task configureExecTask(String name, Project project, Task setup, NodeInfo node, Object[] execArgs) { - return project.tasks.create(name: name, type: LoggedExec, dependsOn: setup) { Exec exec -> - exec.workingDir node.cwd - if (useRuntimeJava(project, node)) { - exec.environment.put('JAVA_HOME', project.runtimeJavaHome) - } else { - // force JAVA_HOME to *not* be set - exec.environment.remove('JAVA_HOME') - } - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - exec.executable 'cmd' - exec.args '/C', 'call' - // On Windows the comma character is considered a parameter separator: - // argument are wrapped in an ExecArgWrapper that escapes commas - exec.args execArgs.collect { a -> new EscapeCommaWrapper(arg: a) } - } else { - exec.commandLine execArgs - } - } - } - - public static boolean useRuntimeJava(Project project, NodeInfo node) { - return (BuildParams.isRuntimeJavaHomeSet || - (node.isBwcNode == false && node.nodeVersion.before(Version.fromString("7.0.0"))) || - node.config.distribution == 'integ-test-zip') - } - - /** Adds a task to start an opensearch node with the given configuration */ - static Task configureStartTask(String name, Project project, Task setup, NodeInfo node) { - // this closure is converted into ant nodes by groovy's AntBuilder - Closure antRunner = { AntBuilder ant -> - ant.exec(executable: node.executable, spawn: node.config.daemonize, newenvironment: true, - dir: node.cwd, taskname: 'opensearch') { - node.env.each { key, value -> env(key: key, value: value) } - if (useRuntimeJava(project, node)) { - env(key: 'JAVA_HOME', value: project.runtimeJavaHome) - } - node.args.each { arg(value: it) } - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - // Having no TMP on Windows defaults to C:\Windows and permission errors - // Since we configure ant to run with a new environment above, we need to explicitly pass this - String tmp = System.getenv("TMP") - assert tmp != null - env(key: "TMP", value: tmp) - } - } - } - - // this closure is the actual code to run opensearch - Closure opensearchRunner = { - // Due to how ant exec works with the spawn option, we lose all stdout/stderr from the - // process executed. To work around this, when spawning, we wrap the opensearch start - // command inside another shell script, which simply internally redirects the output - // of the real opensearch script. This allows ant to keep the streams open with the - // dummy process, but us to have the output available if there is an error in the - // opensearch start script - if (node.config.daemonize) { - node.writeWrapperScript() - } - - node.getCommandString().eachLine { line -> logger.info(line) } - - if (logger.isInfoEnabled() || node.config.daemonize == false) { - runAntCommand(project, antRunner, System.out, System.err) - } else { - // buffer the output, we may not need to print it - PrintStream captureStream = new PrintStream(node.buffer, true, "UTF-8") - runAntCommand(project, antRunner, captureStream, captureStream) - } - } - - Task start = project.tasks.create(name: name, type: DefaultTask, dependsOn: setup) - if (node.javaVersion != null) { - BuildPlugin.requireJavaHome(start, node.javaVersion) - } - start.doLast(opensearchRunner) - start.doFirst { - // If the node runs in a FIPS 140-2 JVM, the BCFKS default keystore will be password protected - if (BuildParams.inFipsJvm) { - node.config.systemProperties.put('javax.net.ssl.trustStorePassword', 'password') - node.config.systemProperties.put('javax.net.ssl.keyStorePassword', 'password') - } - - // Configure ES JAVA OPTS - adds system properties, assertion flags, remote debug etc - List opensearchJavaOpts = [node.env.get('OPENSEARCH_JAVA_OPTS', '')] - String collectedSystemProperties = node.config.systemProperties.collect { key, value -> "-D${key}=${value}" }.join(" ") - opensearchJavaOpts.add(collectedSystemProperties) - opensearchJavaOpts.add(node.config.jvmArgs) - if (Boolean.parseBoolean(System.getProperty('tests.asserts', 'true'))) { - // put the enable assertions options before other options to allow - // flexibility to disable assertions for specific packages or classes - // in the cluster-specific options - opensearchJavaOpts.add("-ea") - opensearchJavaOpts.add("-esa") - } - // we must add debug options inside the closure so the config is read at execution time, as - // gradle task options are not processed until the end of the configuration phase - if (node.config.debug) { - println 'Running opensearch in debug mode, suspending until connected on port 8000' - opensearchJavaOpts.add('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000') - } - node.env['OPENSEARCH_JAVA_OPTS'] = opensearchJavaOpts.join(" ") - - // - project.logger.info("Starting node in ${node.clusterName} distribution: ${node.config.distribution}") - } - return start - } - - static Task configureWaitTask(String name, Project project, List nodes, List startTasks, int waitSeconds) { - Task wait = project.tasks.create(name: name, dependsOn: startTasks) - wait.doLast { - - Collection unicastHosts = new HashSet<>() - nodes.forEach { node -> - unicastHosts.addAll(node.config.otherUnicastHostAddresses.call()) - String unicastHost = node.config.unicastTransportUri(node, null, project.createAntBuilder()) - if (unicastHost != null) { - unicastHosts.add(unicastHost) - } - } - String unicastHostsTxt = String.join("\n", unicastHosts) - nodes.forEach { node -> - node.pathConf.toPath().resolve("unicast_hosts.txt").setText(unicastHostsTxt) - } - - ant.waitfor(maxwait: "${waitSeconds}", maxwaitunit: 'second', checkevery: '500', checkeveryunit: 'millisecond', timeoutproperty: "failed${name}") { - or { - for (NodeInfo node : nodes) { - resourceexists { - file(file: node.failedMarker.toString()) - } - } - and { - for (NodeInfo node : nodes) { - resourceexists { - file(file: node.pidFile.toString()) - } - resourceexists { - file(file: node.httpPortsFile.toString()) - } - resourceexists { - file(file: node.transportPortsFile.toString()) - } - } - } - } - } - if (ant.properties.containsKey("failed${name}".toString())) { - waitFailed(project, nodes, logger, "Failed to start opensearch: timed out after ${waitSeconds} seconds") - } - - boolean anyNodeFailed = false - for (NodeInfo node : nodes) { - if (node.failedMarker.exists()) { - logger.error("Failed to start opensearch: ${node.failedMarker.toString()} exists") - anyNodeFailed = true - } - } - if (anyNodeFailed) { - waitFailed(project, nodes, logger, 'Failed to start opensearch') - } - - // make sure all files exist otherwise we haven't fully started up - boolean missingFile = false - for (NodeInfo node : nodes) { - missingFile |= node.pidFile.exists() == false - missingFile |= node.httpPortsFile.exists() == false - missingFile |= node.transportPortsFile.exists() == false - } - if (missingFile) { - waitFailed(project, nodes, logger, 'OpenSearch did not complete startup in time allotted') - } - - // go through each node checking the wait condition - for (NodeInfo node : nodes) { - // first bind node info to the closure, then pass to the ant runner so we can get good logging - Closure antRunner = node.config.waitCondition.curry(node) - - boolean success - if (logger.isInfoEnabled()) { - success = runAntCommand(project, antRunner, System.out, System.err) - } else { - PrintStream captureStream = new PrintStream(node.buffer, true, "UTF-8") - success = runAntCommand(project, antRunner, captureStream, captureStream) - } - - if (success == false) { - waitFailed(project, nodes, logger, 'OpenSearch cluster failed to pass wait condition') - } - } - } - return wait - } - - static void waitFailed(Project project, List nodes, Logger logger, String msg) { - for (NodeInfo node : nodes) { - if (logger.isInfoEnabled() == false) { - // We already log the command at info level. No need to do it twice. - node.getCommandString().eachLine { line -> logger.error(line) } - } - logger.error("Node ${node.nodeNum} output:") - logger.error("|-----------------------------------------") - logger.error("| failure marker exists: ${node.failedMarker.exists()}") - logger.error("| pid file exists: ${node.pidFile.exists()}") - logger.error("| http ports file exists: ${node.httpPortsFile.exists()}") - logger.error("| transport ports file exists: ${node.transportPortsFile.exists()}") - // the waitfor failed, so dump any output we got (if info logging this goes directly to stdout) - logger.error("|\n| [ant output]") - node.buffer.toString('UTF-8').eachLine { line -> logger.error("| ${line}") } - // also dump the log file for the startup script (which will include ES logging output to stdout) - if (node.startLog.exists()) { - logger.error("|\n| [log]") - node.startLog.eachLine { line -> logger.error("| ${line}") } - } - if (node.pidFile.exists() && node.failedMarker.exists() == false && - (node.httpPortsFile.exists() == false || node.transportPortsFile.exists() == false)) { - logger.error("|\n| [jstack]") - String pid = node.pidFile.getText('UTF-8') - ByteArrayOutputStream output = new ByteArrayOutputStream() - project.exec { - commandLine = ["${project.runtimeJavaHome}/bin/jstack", pid] - standardOutput = output - } - output.toString('UTF-8').eachLine { line -> logger.error("| ${line}") } - } - logger.error("|-----------------------------------------") - } - throw new GradleException(msg) - } - - /** Adds a task to check if the process with the given pidfile is actually opensearch */ - static Task configureCheckPreviousTask(String name, Project project, Object depends, NodeInfo node) { - return project.tasks.create(name: name, type: Exec, dependsOn: depends) { - onlyIf { node.pidFile.exists() } - // the pid file won't actually be read until execution time, since the read is wrapped within an inner closure of the GString - ext.pid = "${ -> node.pidFile.getText('UTF-8').trim()}" - final File jps = Jvm.forHome(project.runtimeJavaHome).getExecutable('jps') - commandLine jps, '-l' - standardOutput = new ByteArrayOutputStream() - doLast { - String out = standardOutput.toString() - if (out.contains("${ext.pid} org.opensearch.bootstrap.OpenSearch") == false) { - logger.error('jps -l') - logger.error(out) - logger.error("pid file: ${node.pidFile}") - logger.error("pid: ${ext.pid}") - throw new GradleException("jps -l did not report any process with org.opensearch.bootstrap.OpenSearch\n" + - "Did you run gradle clean? Maybe an old pid file is still lying around.") - } else { - logger.info(out) - } - } - } - } - - /** Adds a task to kill an opensearch node with the given pidfile */ - static Task configureStopTask(String name, Project project, Object depends, NodeInfo node) { - return project.tasks.create(name: name, type: LoggedExec, dependsOn: depends) { - onlyIf { node.pidFile.exists() } - // the pid file won't actually be read until execution time, since the read is wrapped within an inner closure of the GString - ext.pid = "${ -> node.pidFile.getText('UTF-8').trim()}" - doFirst { - logger.info("Shutting down external node with pid ${pid}") - } - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - executable 'Taskkill' - args '/PID', pid, '/F' - } else { - executable 'kill' - args '-9', pid - } - doLast { - project.delete(node.pidFile) - // Large tests can exhaust disk space, clean up jdk from the distribution to save some space - project.delete(new File(node.homeDir, "jdk")) - } - } - } - - /** Returns a unique task name for this task and node configuration */ - static String taskName(String prefix, NodeInfo node, String action) { - if (node.config.numNodes > 1) { - return "${prefix}#node${node.nodeNum}.${action}" - } else { - return "${prefix}#${action}" - } - } - - public static String pluginTaskName(String action, String name, String suffix) { - // replace every dash followed by a character with just the uppercase character - String camelName = name.replaceAll(/-(\w)/) { _, c -> c.toUpperCase(Locale.ROOT) } - return action + camelName[0].toUpperCase(Locale.ROOT) + camelName.substring(1) + suffix - } - - /** Runs an ant command, sending output to the given out and error streams */ - static Object runAntCommand(Project project, Closure command, PrintStream outputStream, PrintStream errorStream) { - DefaultLogger listener = new DefaultLogger( - errorPrintStream: errorStream, - outputPrintStream: outputStream, - messageOutputLevel: org.apache.tools.ant.Project.MSG_INFO) - - AntBuilder ant = project.createAntBuilder() - ant.project.addBuildListener(listener) - Object retVal = command(ant) - ant.project.removeBuildListener(listener) - return retVal - } - - static void verifyProjectHasBuildPlugin(String name, Version version, Project project, Project pluginProject) { - if (pluginProject.plugins.hasPlugin(PluginBuildPlugin) == false) { - throw new GradleException("Task [${name}] cannot add plugin [${pluginProject.path}] with version [${version}] to project's " + - "[${project.path}] dependencies: the plugin is not an opensearchplugin") - } - } - - /** Find the plugin name in the given project. */ - static String findPluginName(Project pluginProject) { - PluginPropertiesExtension extension = pluginProject.extensions.findByName('opensearchplugin') - return extension.name - } - - /** Find the current OS */ - static String getOs() { - String os = "linux" - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - os = "windows" - } else if (Os.isFamily(Os.FAMILY_MAC)) { - os = "darwin" - } - return os - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/NodeInfo.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/NodeInfo.groovy deleted file mode 100644 index b42b7b29e8dab..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/NodeInfo.groovy +++ /dev/null @@ -1,308 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.test - -import com.sun.jna.Native -import com.sun.jna.WString -import org.apache.tools.ant.taskdefs.condition.Os -import org.opensearch.gradle.Version -import org.opensearch.gradle.VersionProperties -import org.gradle.api.Project -import org.opensearch.gradle.test.JNAKernel32Library - -import java.nio.file.Files -import java.nio.file.Path -import java.nio.file.Paths -/** - * A container for the files and configuration associated with a single node in a test cluster. - */ -class NodeInfo { - /** Gradle project this node is part of */ - Project project - - /** common configuration for all nodes, including this one */ - ClusterConfiguration config - - /** node number within the cluster, for creating unique names and paths */ - int nodeNum - - /** name of the cluster this node is part of */ - String clusterName - - /** root directory all node files and operations happen under */ - File baseDir - - /** shared data directory all nodes share */ - File sharedDir - - /** the pid file the node will use */ - File pidFile - - /** a file written by opensearch containing the ports of each bound address for http */ - File httpPortsFile - - /** a file written by opensearch containing the ports of each bound address for transport */ - File transportPortsFile - - /** opensearch home dir */ - File homeDir - - /** config directory */ - File pathConf - - /** data directory (as an Object, to allow lazy evaluation) */ - Object dataDir - - /** THE config file */ - File configFile - - /** working directory for the node process */ - File cwd - - /** file that if it exists, indicates the node failed to start */ - File failedMarker - - /** stdout/stderr log of the opensearch process for this node */ - File startLog - - /** directory to install plugins from */ - File pluginsTmpDir - - /** Major version of java this node runs with, or {@code null} if using the runtime java version */ - Integer javaVersion - - /** environment variables to start the node with */ - Map env - - /** arguments to start the node with */ - List args - - /** Executable to run the bin/opensearch with, either cmd or sh */ - String executable - - /** Path to the opensearch start script */ - private Object opensearchScript - - /** script to run when running in the background */ - private File wrapperScript - - /** buffer for ant output when starting this node */ - ByteArrayOutputStream buffer = new ByteArrayOutputStream() - - /** the version of opensearch that this node runs */ - Version nodeVersion - - /** true if the node is not the current version */ - boolean isBwcNode - - /** Holds node configuration for part of a test cluster. */ - NodeInfo(ClusterConfiguration config, int nodeNum, Project project, String prefix, String nodeVersion, File sharedDir) { - this.config = config - this.nodeNum = nodeNum - this.project = project - this.sharedDir = sharedDir - if (config.clusterName != null) { - clusterName = config.clusterName - } else { - clusterName = project.path.replace(':', '_').substring(1) + '_' + prefix - } - baseDir = new File(project.buildDir, "cluster/${prefix} node${nodeNum}") - pidFile = new File(baseDir, 'opensearch.pid') - this.nodeVersion = Version.fromString(nodeVersion) - this.isBwcNode = this.nodeVersion.before(VersionProperties.getOpenSearch()) - homeDir = new File(baseDir, "opensearch-${nodeVersion}") - pathConf = new File(homeDir, 'config') - if (config.dataDir != null) { - dataDir = "${config.dataDir(nodeNum)}" - } else { - dataDir = new File(homeDir, "data") - } - configFile = new File(pathConf, 'opensearch.yml') - // even for rpm/deb, the logs are under home because we dont start with real services - File logsDir = new File(homeDir, 'logs') - httpPortsFile = new File(logsDir, 'http.ports') - transportPortsFile = new File(logsDir, 'transport.ports') - cwd = new File(baseDir, "cwd") - failedMarker = new File(cwd, 'run.failed') - startLog = new File(cwd, 'run.log') - pluginsTmpDir = new File(baseDir, "plugins tmp") - - args = [] - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - executable = 'cmd' - args.add('/C') - args.add('"') // quote the entire command - wrapperScript = new File(cwd, "run.bat") - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to - * getting the short name requiring the path to already exist. - */ - opensearchScript = "${-> binPath().resolve('opensearch.bat').toString()}" - } else { - executable = 'bash' - wrapperScript = new File(cwd, "run") - opensearchScript = binPath().resolve('opensearch') - } - if (config.daemonize) { - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to - * getting the short name requiring the path to already exist. - */ - args.add("${-> getShortPathName(wrapperScript.toString())}") - } else { - args.add("${wrapperScript}") - } - } else { - args.add("${opensearchScript}") - } - - - if (this.nodeVersion.before("6.2.0")) { - javaVersion = 8 - } else if (this.nodeVersion.onOrAfter("6.2.0") && this.nodeVersion.before("6.3.0")) { - javaVersion = 9 - } else if (this.nodeVersion.onOrAfter("6.3.0") && this.nodeVersion.before("6.5.0")) { - javaVersion = 10 - } - - args.addAll("-E", "node.portsfile=true") - env = [:] - env.putAll(config.environmentVariables) - for (Map.Entry property : System.properties.entrySet()) { - if (property.key.startsWith('tests.opensearch.')) { - args.add("-E") - args.add("${property.key.substring('tests.opensearch.'.size())}=${property.value}") - } - } - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to - * getting the short name requiring the path to already exist. - */ - env.put('OPENSEARCH_PATH_CONF', "${-> getShortPathName(pathConf.toString())}") - } - else { - env.put('OPENSEARCH_PATH_CONF', pathConf) - } - if (!System.properties.containsKey("tests.opensearch.path.data")) { - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - /* - * We have to delay building the string as the path will not exist during configuration which will fail on Windows due to - * getting the short name requiring the path to already exist. This one is extra tricky because usually we rely on the node - * creating its data directory on startup but we simply can not do that here because getting the short path name requires - * the directory to already exist. Therefore, we create this directory immediately before getting the short name. - */ - args.addAll("-E", "path.data=${-> Files.createDirectories(Paths.get(dataDir.toString())); getShortPathName(dataDir.toString())}") - } else { - args.addAll("-E", "path.data=${-> dataDir.toString()}") - } - } - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - args.add('"') // end the entire command, quoted - } - } - - Path binPath() { - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - return Paths.get(getShortPathName(new File(homeDir, 'bin').toString())) - } else { - return Paths.get(new File(homeDir, 'bin').toURI()) - } - } - - static String getShortPathName(String path) { - assert Os.isFamily(Os.FAMILY_WINDOWS) - final WString longPath = new WString("\\\\?\\" + path) - // first we get the length of the buffer needed - final int length = JNAKernel32Library.getInstance().GetShortPathNameW(longPath, null, 0) - if (length == 0) { - throw new IllegalStateException("path [" + path + "] encountered error [" + Native.getLastError() + "]") - } - final char[] shortPath = new char[length] - // knowing the length of the buffer, now we get the short name - if (JNAKernel32Library.getInstance().GetShortPathNameW(longPath, shortPath, length) == 0) { - throw new IllegalStateException("path [" + path + "] encountered error [" + Native.getLastError() + "]") - } - // we have to strip the \\?\ away from the path for cmd.exe - return Native.toString(shortPath).substring(4) - } - - /** Returns debug string for the command that started this node. */ - String getCommandString() { - String esCommandString = "\nNode ${nodeNum} configuration:\n" - esCommandString += "|-----------------------------------------\n" - esCommandString += "| cwd: ${cwd}\n" - esCommandString += "| command: ${executable} ${args.join(' ')}\n" - esCommandString += '| environment:\n' - env.each { k, v -> esCommandString += "| ${k}: ${v}\n" } - if (config.daemonize) { - esCommandString += "|\n| [${wrapperScript.name}]\n" - wrapperScript.eachLine('UTF-8', { line -> esCommandString += " ${line}\n"}) - } - esCommandString += '|\n| [opensearch.yml]\n' - configFile.eachLine('UTF-8', { line -> esCommandString += "| ${line}\n" }) - esCommandString += "|-----------------------------------------" - return esCommandString - } - - void writeWrapperScript() { - String argsPasser = '"$@"' - String exitMarker = "; if [ \$? != 0 ]; then touch run.failed; fi" - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - argsPasser = '%*' - exitMarker = "\r\n if \"%errorlevel%\" neq \"0\" ( type nul >> run.failed )" - } - wrapperScript.setText("\"${opensearchScript}\" ${argsPasser} > run.log 2>&1 ${exitMarker}", 'UTF-8') - } - - /** Returns an address and port suitable for a uri to connect to this node over http */ - String httpUri() { - return httpPortsFile.readLines("UTF-8").get(0) - } - - /** Returns an address and port suitable for a uri to connect to this node over transport protocol */ - String transportUri() { - return transportPortsFile.readLines("UTF-8").get(0) - } - - /** Returns the file which contains the transport protocol ports for this node */ - File getTransportPortsFile() { - return transportPortsFile - } - - /** Returns the data directory for this node */ - File getDataDir() { - if (!(dataDir instanceof File)) { - return new File(dataDir) - } - return dataDir - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/RestTestPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/RestTestPlugin.groovy deleted file mode 100644 index 93a9e61db6f32..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/RestTestPlugin.groovy +++ /dev/null @@ -1,66 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.opensearch.gradle.test - -import groovy.transform.CompileStatic -import org.opensearch.gradle.BuildPlugin -import org.opensearch.gradle.testclusters.TestClustersPlugin -import org.gradle.api.InvalidUserDataException -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.plugins.JavaBasePlugin - -/** - * Adds support for starting an OpenSearch cluster before running integration - * tests. Used in conjunction with {@link StandaloneRestTestPlugin} for qa - * projects and in conjunction with {@link BuildPlugin} for testing the rest - * client. - */ -@CompileStatic -class RestTestPlugin implements Plugin { - List REQUIRED_PLUGINS = [ - 'opensearch.build', - 'opensearch.standalone-rest-test'] - - @Override - void apply(Project project) { - if (false == REQUIRED_PLUGINS.any { project.pluginManager.hasPlugin(it) }) { - throw new InvalidUserDataException('opensearch.rest-test ' - + 'requires either opensearch.build or ' - + 'opensearch.standalone-rest-test') - } - project.getPlugins().apply(RestTestBasePlugin.class); - project.pluginManager.apply(TestClustersPlugin) - RestIntegTestTask integTest = project.tasks.create('integTest', RestIntegTestTask.class) - integTest.description = 'Runs rest tests against an opensearch cluster.' - integTest.group = JavaBasePlugin.VERIFICATION_GROUP - integTest.mustRunAfter(project.tasks.named('precommit')) - project.tasks.named('check').configure { it.dependsOn(integTest) } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneRestTestPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneRestTestPlugin.groovy deleted file mode 100644 index edd10b24b2000..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneRestTestPlugin.groovy +++ /dev/null @@ -1,106 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - - -package org.opensearch.gradle.test - -import groovy.transform.CompileStatic -import org.opensearch.gradle.OpenSearchJavaPlugin -import org.opensearch.gradle.ExportOpenSearchBuildResourcesTask -import org.opensearch.gradle.RepositoriesSetupPlugin -import org.opensearch.gradle.info.BuildParams -import org.opensearch.gradle.info.GlobalBuildInfoPlugin -import org.opensearch.gradle.precommit.PrecommitTasks -import org.opensearch.gradle.testclusters.TestClustersPlugin -import org.gradle.api.InvalidUserDataException -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.artifacts.Configuration -import org.gradle.api.plugins.JavaBasePlugin -import org.gradle.api.plugins.JavaPlugin -import org.gradle.api.plugins.JavaPluginExtension -import org.gradle.api.tasks.SourceSet -import org.gradle.api.tasks.SourceSetContainer -import org.gradle.api.tasks.testing.Test -import org.gradle.plugins.ide.eclipse.model.EclipseModel -import org.gradle.plugins.ide.idea.model.IdeaModel - -/** - * Configures the build to compile tests against OpenSearch's test framework - * and run REST tests. Use BuildPlugin if you want to build main code as well - * as tests. - */ -@CompileStatic -class StandaloneRestTestPlugin implements Plugin { - - @Override - void apply(Project project) { - if (project.pluginManager.hasPlugin('opensearch.build')) { - throw new InvalidUserDataException('opensearch.standalone-test ' - + 'opensearch.standalone-rest-test, and opensearch.build ' - + 'are mutually exclusive') - } - project.rootProject.pluginManager.apply(GlobalBuildInfoPlugin) - project.pluginManager.apply(JavaBasePlugin) - project.pluginManager.apply(TestClustersPlugin) - project.pluginManager.apply(RepositoriesSetupPlugin) - project.pluginManager.apply(RestTestBasePlugin) - - project.getTasks().register("buildResources", ExportOpenSearchBuildResourcesTask) - OpenSearchJavaPlugin.configureInputNormalization(project) - OpenSearchJavaPlugin.configureCompile(project) - - - project.extensions.getByType(JavaPluginExtension).sourceCompatibility = BuildParams.minimumRuntimeVersion - project.extensions.getByType(JavaPluginExtension).targetCompatibility = BuildParams.minimumRuntimeVersion - - // only setup tests to build - SourceSetContainer sourceSets = project.extensions.getByType(SourceSetContainer) - SourceSet testSourceSet = sourceSets.create('test') - - project.tasks.withType(Test).configureEach { Test test -> - test.testClassesDirs = testSourceSet.output.classesDirs - test.classpath = testSourceSet.runtimeClasspath - } - - // create a compileOnly configuration as others might expect it - project.configurations.create("compileOnly") - project.dependencies.add('testImplementation', project.project(':test:framework')) - - EclipseModel eclipse = project.extensions.getByType(EclipseModel) - eclipse.classpath.sourceSets = [testSourceSet] - eclipse.classpath.plusConfigurations = [project.configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME)] - - IdeaModel idea = project.extensions.getByType(IdeaModel) - idea.module.testSourceDirs += testSourceSet.java.srcDirs - idea.module.scopes.put('TEST', [plus: [project.configurations.getByName(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME)]] as Map>) - - PrecommitTasks.create(project, false) - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneTestPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneTestPlugin.groovy deleted file mode 100644 index 89489ce0d828d..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/StandaloneTestPlugin.groovy +++ /dev/null @@ -1,59 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.test - -import groovy.transform.CompileStatic -import org.opensearch.gradle.OpenSearchJavaPlugin -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.plugins.JavaBasePlugin -import org.gradle.api.tasks.testing.Test - -/** - * Configures the build to compile against OpenSearch's test framework and - * run integration and unit tests. Use BuildPlugin if you want to build main - * code as well as tests. */ -@CompileStatic -class StandaloneTestPlugin implements Plugin { - - @Override - void apply(Project project) { - project.pluginManager.apply(StandaloneRestTestPlugin) - - project.tasks.register('test', Test).configure { t -> - t.group = JavaBasePlugin.VERIFICATION_GROUP - t.description = 'Runs unit tests that are separate' - t.mustRunAfter(project.tasks.getByName('precommit')) - } - - OpenSearchJavaPlugin.configureCompile(project) - project.tasks.named('check').configure { it.dependsOn(project.tasks.named('test')) } - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithDependenciesPlugin.groovy b/buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithDependenciesPlugin.groovy deleted file mode 100644 index e84493d442f39..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithDependenciesPlugin.groovy +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.opensearch.gradle.test - -import org.opensearch.gradle.plugin.PluginBuildPlugin -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.artifacts.Dependency -import org.gradle.api.artifacts.ProjectDependency -import org.gradle.api.tasks.Copy - -/** - * A plugin to run tests that depend on other plugins or modules. - * - * This plugin will add the plugin-metadata and properties files for each - * dependency to the test source set. - */ -class TestWithDependenciesPlugin implements Plugin { - - @Override - void apply(Project project) { - if (project.isEclipse) { - /* The changes this plugin makes both break and aren't needed by - * Eclipse. This is because Eclipse flattens main and test - * dependencies into a single dependency. Because Eclipse is - * "special".... */ - return - } - - project.configurations.testImplementation.dependencies.all { Dependency dep -> - // this closure is run every time a compile dependency is added - if (dep instanceof ProjectDependency && dep.dependencyProject.plugins.hasPlugin(PluginBuildPlugin)) { - project.gradle.projectsEvaluated { - addPluginResources(project, dep.dependencyProject) - } - } - } - } - - private static addPluginResources(Project project, Project pluginProject) { - String outputDir = "${project.buildDir}/generated-resources/${pluginProject.name}" - String camelName = pluginProject.name.replaceAll(/-(\w)/) { _, c -> c.toUpperCase(Locale.ROOT) } - String taskName = "copy" + camelName[0].toUpperCase(Locale.ROOT) + camelName.substring(1) + "Metadata" - project.tasks.register(taskName, Copy.class) { - into(outputDir) - from(pluginProject.tasks.pluginProperties) - from(pluginProject.file('src/main/plugin-metadata')) - } - - project.sourceSets.test.output.dir(outputDir, builtBy: taskName) - } -} diff --git a/buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithSslPlugin.java b/buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithSslPlugin.java deleted file mode 100644 index 33e8966bd32c1..0000000000000 --- a/buildSrc/src/main/groovy/org/opensearch/gradle/test/TestWithSslPlugin.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.opensearch.gradle.ExportOpenSearchBuildResourcesTask; -import org.opensearch.gradle.precommit.ForbiddenPatternsTask; -import org.opensearch.gradle.testclusters.OpenSearchCluster; -import org.opensearch.gradle.testclusters.TestClustersAware; -import org.opensearch.gradle.testclusters.TestClustersPlugin; -import org.opensearch.gradle.util.Util; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskProvider; - -import java.io.File; - -public class TestWithSslPlugin implements Plugin { - - @Override - public void apply(Project project) { - File keyStoreDir = new File(project.getBuildDir(), "keystore"); - TaskProvider exportKeyStore = project.getTasks() - .register("copyTestCertificates", ExportOpenSearchBuildResourcesTask.class, (t) -> { - t.copy("test/ssl/test-client.crt"); - t.copy("test/ssl/test-client.jks"); - t.copy("test/ssl/test-node.crt"); - t.copy("test/ssl/test-node.jks"); - t.setOutputDir(keyStoreDir); - }); - - project.getPlugins().withType(StandaloneRestTestPlugin.class).configureEach(restTestPlugin -> { - SourceSet testSourceSet = Util.getJavaTestSourceSet(project).get(); - testSourceSet.getResources().srcDir(new File(keyStoreDir, "test/ssl")); - testSourceSet.compiledBy(exportKeyStore); - - project.getTasks().withType(TestClustersAware.class).configureEach(clusterAware -> clusterAware.dependsOn(exportKeyStore)); - - // Tell the tests we're running with ssl enabled - project.getTasks() - .withType(RestIntegTestTask.class) - .configureEach(runner -> runner.systemProperty("tests.ssl.enabled", "true")); - }); - - project.getPlugins().withType(TestClustersPlugin.class).configureEach(clustersPlugin -> { - File keystoreDir = new File(project.getBuildDir(), "keystore/test/ssl"); - File nodeKeystore = new File(keystoreDir, "test-node.jks"); - File clientKeyStore = new File(keystoreDir, "test-client.jks"); - NamedDomainObjectContainer clusters = (NamedDomainObjectContainer) project.getExtensions() - .getByName(TestClustersPlugin.EXTENSION_NAME); - clusters.all(c -> { - // copy keystores & certs into config/ - c.extraConfigFile(nodeKeystore.getName(), nodeKeystore); - c.extraConfigFile(clientKeyStore.getName(), clientKeyStore); - }); - }); - - project.getTasks() - .withType(ForbiddenPatternsTask.class) - .configureEach(forbiddenPatternTask -> forbiddenPatternTask.exclude("**/*.crt")); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/AbstractLazyPropertyCollection.java b/buildSrc/src/main/java/org/opensearch/gradle/AbstractLazyPropertyCollection.java deleted file mode 100644 index 5572ece6ba91c..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/AbstractLazyPropertyCollection.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.util.List; - -public abstract class AbstractLazyPropertyCollection { - - final String name; - final Object owner; - - public AbstractLazyPropertyCollection(String name) { - this(name, null); - } - - public AbstractLazyPropertyCollection(String name, Object owner) { - this.name = name; - this.owner = owner; - } - - public abstract List getNormalizedCollection(); - - void assertNotNull(Object value, String description) { - if (value == null) { - throw new NullPointerException(name + " " + description + " was null" + (owner != null ? " when configuring " + owner : "")); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/Architecture.java b/buildSrc/src/main/java/org/opensearch/gradle/Architecture.java deleted file mode 100644 index 432426f089860..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/Architecture.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -public enum Architecture { - - X64, - ARM64, - PPC64LE; - - public static Architecture current() { - final String architecture = System.getProperty("os.arch", ""); - switch (architecture) { - case "amd64": - case "x86_64": - return X64; - case "aarch64": - return ARM64; - case "ppc64le": - return PPC64LE; - default: - throw new IllegalArgumentException("can not determine architecture from [" + architecture + "]"); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/BwcVersions.java b/buildSrc/src/main/java/org/opensearch/gradle/BwcVersions.java deleted file mode 100644 index d04fd2c7f4c56..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/BwcVersions.java +++ /dev/null @@ -1,431 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.SortedSet; -import java.util.TreeSet; -import java.util.function.Consumer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static java.util.Collections.emptyList; -import static java.util.Collections.unmodifiableList; - -/** - * A container for opensearch supported version information used in BWC testing. - * - * Parse the Java source file containing the versions declarations and use the known rules to figure out which are all - * the version the current one is wire and index compatible with. - * On top of this, figure out which of these are unreleased and provide the branch they can be built from. - * - * Note that in this context, currentVersion is the unreleased version this build operates on. - * At any point in time there will surely be four such unreleased versions being worked on, - * thus currentVersion will be one of these. - * - * Considering: - *
    - *
    M, M > 0
    - *
    last released major
    - *
    N, N > 0
    - *
    last released minor
    - *
    - * - *
      - *
    • the unreleased major, M+1.0.0 on the `master` branch
    • - *
    • the unreleased minor, M.N.0 on the `M.x` (x is literal) branch
    • - *
    • the unreleased bugfix, M.N.c (c > 0) on the `M.N` branch
    • - *
    • the unreleased maintenance, M-1.d.e ( d > 0, e > 0) on the `(M-1).d` branch
    • - *
    - * In addition to these, there will be a fifth one when a minor reaches feature freeze, we call this the staged - * version: - *
      - *
    • the unreleased staged, M.N-2.0 (N > 2) on the `M.(N-2)` branch
    • - *
    - * - * Each build is only concerned with versions before it, as those are the ones that need to be tested - * for backwards compatibility. We never look forward, and don't add forward facing version number to branches of previous - * version. - * - * Each branch has a current version, and expected compatible versions are parsed from the server code's Version` class. - * We can reliably figure out which the unreleased versions are due to the convention of always adding the next unreleased - * version number to server in all branches when a version is released. - * E.x when M.N.c is released M.N.c+1 is added to the Version class mentioned above in all the following branches: - * `M.N`, `M.x` and `master` so we can reliably assume that the leafs of the version tree are unreleased. - * This convention is enforced by checking the versions we consider to be unreleased against an - * authoritative source (maven central). - * We are then able to map the unreleased version to branches in git and Gradle projects that are capable of checking - * out and building them, so we can include these in the testing plan as well. - */ -public class BwcVersions { - - private static final Pattern LINE_PATTERN = Pattern.compile( - "\\W+public static final (LegacyES)?Version V_(\\d+)_(\\d+)_(\\d+)(_alpha\\d+|_beta\\d+|_rc\\d+)? .*" - ); - - private final Version currentVersion; - private final Map> groupByMajor; - private final Map unreleased; - - public class UnreleasedVersionInfo { - public final Version version; - public final String branch; - public final String gradleProjectPath; - - UnreleasedVersionInfo(Version version, String branch, String gradleProjectPath) { - this.version = version; - this.branch = branch; - this.gradleProjectPath = gradleProjectPath; - } - } - - public BwcVersions(List versionLines) { - this(versionLines, Version.fromString(VersionProperties.getOpenSearch())); - } - - protected BwcVersions(List versionLines, Version currentVersionProperty) { - this( - versionLines.stream() - .map(LINE_PATTERN::matcher) - .filter(Matcher::matches) - .map( - match -> new Version( - Integer.parseInt(match.group(2)), - Integer.parseInt(match.group(3)), - Integer.parseInt(match.group(4)) - ) - ) - .collect(Collectors.toCollection(TreeSet::new)), - currentVersionProperty - ); - } - - // for testkit tests, until BwcVersions is extracted into an extension - public BwcVersions(SortedSet allVersions, Version currentVersionProperty) { - if (allVersions.isEmpty()) { - throw new IllegalArgumentException("Could not parse any versions"); - } - - // hack: this is horribly volatile like this entire logic; fix - currentVersion = allVersions.last(); - - groupByMajor = allVersions.stream() - // We only care about the last 2 majors when it comes to BWC. - // It might take us time to remove the older ones from versionLines, so we allow them to exist. - // Adjust the major number since OpenSearch 1.x is released after predecessor version 7.x - .filter( - version -> (version.getMajor() == 1 ? 7 : version.getMajor()) > (currentVersion.getMajor() == 1 - ? 7 - : currentVersion.getMajor()) - 2 - ) - .collect(Collectors.groupingBy(Version::getMajor, Collectors.toList())); - - assertCurrentVersionMatchesParsed(currentVersionProperty); - - assertNoOlderThanTwoMajors(); - - Map unreleased = new HashMap<>(); - for (Version unreleasedVersion : getUnreleased()) { - unreleased.put( - unreleasedVersion, - new UnreleasedVersionInfo(unreleasedVersion, getBranchFor(unreleasedVersion), getGradleProjectPathFor(unreleasedVersion)) - ); - } - this.unreleased = Collections.unmodifiableMap(unreleased); - } - - private void assertNoOlderThanTwoMajors() { - Set majors = groupByMajor.keySet(); - // until OpenSearch 3.0 we will need to carry three major support - // (1, 7, 6) && (2, 1, 7) since OpenSearch 1.0 === Legacy 7.x - int numSupportedMajors = (currentVersion.getMajor() < 3) ? 3 : 2; - if (majors.size() != numSupportedMajors && currentVersion.getMinor() != 0 && currentVersion.getRevision() != 0) { - throw new IllegalStateException("Expected exactly 2 majors in parsed versions but found: " + majors); - } - } - - private void assertCurrentVersionMatchesParsed(Version currentVersionProperty) { - if (currentVersionProperty.equals(currentVersion) == false) { - throw new IllegalStateException( - "Parsed versions latest version does not match the one configured in build properties. " - + "Parsed latest version is " - + currentVersion - + " but the build has " - + currentVersionProperty - ); - } - } - - /** - * Returns info about the unreleased version, or {@code null} if the version is released. - */ - public UnreleasedVersionInfo unreleasedInfo(Version version) { - return unreleased.get(version); - } - - public void forPreviousUnreleased(Consumer consumer) { - List collect = getUnreleased().stream() - .filter(version -> version.equals(currentVersion) == false) - .map(version -> new UnreleasedVersionInfo(version, getBranchFor(version), getGradleProjectPathFor(version))) - .collect(Collectors.toList()); - - collect.forEach(uvi -> consumer.accept(uvi)); - } - - private String getGradleProjectPathFor(Version version) { - // We have Gradle projects set up to check out and build unreleased versions based on the our branching - // conventions described in this classes javadoc - if (version.equals(currentVersion)) { - return ":distribution"; - } - - Map> releasedMajorGroupedByMinor = getReleasedMajorGroupedByMinor(); - - if (version.getRevision() == 0) { - List unreleasedStagedOrMinor = getUnreleased().stream().filter(v -> v.getRevision() == 0).collect(Collectors.toList()); - if (unreleasedStagedOrMinor.size() > 2) { - if (unreleasedStagedOrMinor.get(unreleasedStagedOrMinor.size() - 2).equals(version)) { - return ":distribution:bwc:minor"; - } else { - return ":distribution:bwc:staged"; - } - } else { - return ":distribution:bwc:minor"; - } - } else { - if (releasedMajorGroupedByMinor.getOrDefault(version.getMinor(), emptyList()).contains(version)) { - return ":distribution:bwc:bugfix"; - } else { - return ":distribution:bwc:maintenance"; - } - } - } - - private String getBranchFor(Version version) { - // based on the rules described in this classes javadoc, figure out the branch on which an unreleased version - // lives. - // We do this based on the Gradle project path because there's a direct correlation, so we dont have to duplicate - // the logic from there - switch (getGradleProjectPathFor(version)) { - case ":distribution": - return "master"; - case ":distribution:bwc:minor": - // The .x branch will always point to the latest minor (for that major), so a "minor" project will be on the .x branch - // unless there is more recent (higher) minor. - final Version latestInMajor = getLatestVersionByKey(groupByMajor, version.getMajor()); - if (latestInMajor.getMinor() == version.getMinor()) { - return version.getMajor() + ".x"; - } else { - return version.getMajor() + "." + version.getMinor(); - } - case ":distribution:bwc:staged": - case ":distribution:bwc:maintenance": - case ":distribution:bwc:bugfix": - return version.getMajor() + "." + version.getMinor(); - default: - throw new IllegalStateException("Unexpected Gradle project name"); - } - } - - public List getUnreleased() { - List unreleased = new ArrayList<>(); - - // The current version is being worked, is always unreleased - unreleased.add(currentVersion); - - // No unreleased versions for 1.0.0 - // todo remove this hack - if (currentVersion.equals(Version.fromString("1.0.0"))) { - return unmodifiableList(unreleased); - } - - // the tip of the previous major is unreleased for sure, be it a minor or a bugfix - if (currentVersion.getMajor() != 1) { - final Version latestOfPreviousMajor = getLatestVersionByKey( - this.groupByMajor, - currentVersion.getMajor() == 1 ? 7 : currentVersion.getMajor() - 1 - ); - unreleased.add(latestOfPreviousMajor); - if (latestOfPreviousMajor.getRevision() == 0) { - // if the previous major is a x.y.0 release, then the tip of the minor before that (y-1) is also unreleased - final Version previousMinor = getLatestInMinor(latestOfPreviousMajor.getMajor(), latestOfPreviousMajor.getMinor() - 1); - if (previousMinor != null) { - unreleased.add(previousMinor); - } - } - } - - final Map> groupByMinor = getReleasedMajorGroupedByMinor(); - int greatestMinor = groupByMinor.keySet().stream().max(Integer::compareTo).orElse(0); - - // the last bugfix for this minor series is always unreleased - unreleased.add(getLatestVersionByKey(groupByMinor, greatestMinor)); - - if (groupByMinor.get(greatestMinor).size() == 1) { - // we found an unreleased minor - unreleased.add(getLatestVersionByKey(groupByMinor, greatestMinor - 1)); - if (groupByMinor.getOrDefault(greatestMinor - 1, emptyList()).size() == 1) { - // we found that the previous minor is staged but not yet released - // in this case, the minor before that has a bugfix, should there be such a minor - if (greatestMinor >= 2) { - unreleased.add(getLatestVersionByKey(groupByMinor, greatestMinor - 2)); - } - } - } - - return unmodifiableList(unreleased.stream().sorted().distinct().collect(Collectors.toList())); - } - - private Version getLatestInMinor(int major, int minor) { - return groupByMajor.get(major).stream().filter(v -> v.getMinor() == minor).max(Version::compareTo).orElse(null); - } - - private Version getLatestVersionByKey(Map> groupByMajor, int key) { - return groupByMajor.getOrDefault(key, emptyList()) - .stream() - .max(Version::compareTo) - .orElseThrow(() -> new IllegalStateException("Unexpected number of versions in collection")); - } - - private Map> getReleasedMajorGroupedByMinor() { - int currentMajor = currentVersion.getMajor(); - List currentMajorVersions = groupByMajor.get(currentMajor); - List previousMajorVersions = groupByMajor.get(getPreviousMajor(currentMajor)); - - final Map> groupByMinor; - if (currentMajorVersions.size() == 1) { - // Current is an unreleased major: x.0.0 so we have to look for other unreleased versions in the previous major - groupByMinor = previousMajorVersions.stream().collect(Collectors.groupingBy(Version::getMinor, Collectors.toList())); - } else { - groupByMinor = currentMajorVersions.stream().collect(Collectors.groupingBy(Version::getMinor, Collectors.toList())); - } - return groupByMinor; - } - - public void compareToAuthoritative(List authoritativeReleasedVersions) { - Set notReallyReleased = new HashSet<>(getReleased()); - notReallyReleased.removeAll(authoritativeReleasedVersions); - if (notReallyReleased.isEmpty() == false) { - throw new IllegalStateException( - "out-of-date released versions" - + "\nFollowing versions are not really released, but the build thinks they are: " - + notReallyReleased - ); - } - - Set incorrectlyConsideredUnreleased = new HashSet<>(authoritativeReleasedVersions); - incorrectlyConsideredUnreleased.retainAll(getUnreleased()); - if (incorrectlyConsideredUnreleased.isEmpty() == false) { - throw new IllegalStateException( - "out-of-date released versions" - + "\nBuild considers versions unreleased, " - + "but they are released according to an authoritative source: " - + incorrectlyConsideredUnreleased - + "\nThe next versions probably needs to be added to Version.java (CURRENT doesn't count)." - ); - } - } - - private List getReleased() { - List unreleased = getUnreleased(); - return groupByMajor.values() - .stream() - .flatMap(Collection::stream) - .filter(each -> unreleased.contains(each) == false) - .collect(Collectors.toList()); - } - - public List getIndexCompatible() { - int currentMajor = currentVersion.getMajor(); - int prevMajor = getPreviousMajor(currentMajor); - List result = Stream.concat(groupByMajor.get(prevMajor).stream(), groupByMajor.get(currentMajor).stream()) - .filter(version -> version.equals(currentVersion) == false) - .collect(Collectors.toList()); - if (currentMajor == 1) { - // add 6.x compatible for OpenSearch 1.0.0 - return unmodifiableList(Stream.concat(groupByMajor.get(prevMajor - 1).stream(), result.stream()).collect(Collectors.toList())); - } - return unmodifiableList(result); - } - - public List getWireCompatible() { - List wireCompat = new ArrayList<>(); - int currentMajor = currentVersion.getMajor(); - int lastMajor = currentMajor == 1 ? 6 : currentMajor - 1; - List lastMajorList = groupByMajor.get(lastMajor); - if (lastMajorList == null) { - throw new IllegalStateException("Expected to find a list of versions for version: " + lastMajor); - } - int minor = lastMajorList.get(lastMajorList.size() - 1).getMinor(); - for (int i = lastMajorList.size() - 1; i > 0 && lastMajorList.get(i).getMinor() == minor; --i) { - wireCompat.add(lastMajorList.get(i)); - } - - // if current is OpenSearch 1.0.0 add all of the 7.x line: - if (currentMajor == 1) { - List previousMajor = groupByMajor.get(7); - for (Version v : previousMajor) { - wireCompat.add(v); - } - } - wireCompat.addAll(groupByMajor.get(currentMajor)); - wireCompat.remove(currentVersion); - wireCompat.sort(Version::compareTo); - return unmodifiableList(wireCompat); - } - - public List getUnreleasedIndexCompatible() { - List unreleasedIndexCompatible = new ArrayList<>(getIndexCompatible()); - unreleasedIndexCompatible.retainAll(getUnreleased()); - return unmodifiableList(unreleasedIndexCompatible); - } - - public List getUnreleasedWireCompatible() { - List unreleasedWireCompatible = new ArrayList<>(getWireCompatible()); - unreleasedWireCompatible.retainAll(getUnreleased()); - return unmodifiableList(unreleasedWireCompatible); - } - - private int getPreviousMajor(int currentMajor) { - return currentMajor == 1 ? 7 : currentMajor - 1; - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/ConcatFilesTask.java b/buildSrc/src/main/java/org/opensearch/gradle/ConcatFilesTask.java deleted file mode 100644 index 96e3702d5a729..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/ConcatFilesTask.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; - -import org.gradle.api.DefaultTask; -import org.gradle.api.file.FileTree; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.Optional; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.TaskAction; - -/** - * Concatenates a list of files into one and removes duplicate lines. - */ -public class ConcatFilesTask extends DefaultTask { - - public ConcatFilesTask() { - setDescription("Concat a list of files into one."); - } - - /** List of files to concatenate */ - private FileTree files; - - /** line to add at the top of the target file */ - private String headerLine; - - private File target; - - private List additionalLines = new ArrayList<>(); - - public void setFiles(FileTree files) { - this.files = files; - } - - @InputFiles - public FileTree getFiles() { - return files; - } - - public void setHeaderLine(String headerLine) { - this.headerLine = headerLine; - } - - @Input - @Optional - public String getHeaderLine() { - return headerLine; - } - - public void setTarget(File target) { - this.target = target; - } - - @OutputFile - public File getTarget() { - return target; - } - - @Input - public List getAdditionalLines() { - return additionalLines; - } - - public void setAdditionalLines(List additionalLines) { - this.additionalLines = additionalLines; - } - - @TaskAction - public void concatFiles() throws IOException { - if (getHeaderLine() != null) { - Files.write(getTarget().toPath(), (getHeaderLine() + '\n').getBytes(StandardCharsets.UTF_8)); - } - - // To remove duplicate lines - LinkedHashSet uniqueLines = new LinkedHashSet<>(); - for (File f : getFiles()) { - uniqueLines.addAll(Files.readAllLines(f.toPath(), StandardCharsets.UTF_8)); - } - Files.write(getTarget().toPath(), uniqueLines, StandardCharsets.UTF_8, StandardOpenOption.APPEND); - - for (String additionalLine : additionalLines) { - Files.write(getTarget().toPath(), (additionalLine + '\n').getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/DistributionDependency.java b/buildSrc/src/main/java/org/opensearch/gradle/DistributionDependency.java deleted file mode 100644 index 3ab4fbf2da470..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/DistributionDependency.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -public interface DistributionDependency { - static DistributionDependency of(String dependencyNotation) { - return new StringBasedDistributionDependency(dependencyNotation); - } - - Object getDefaultNotation(); - - Object getExtractedNotation(); - - class StringBasedDistributionDependency implements DistributionDependency { - private final String notation; - - public StringBasedDistributionDependency(String notation) { - this.notation = notation; - } - - @Override - public Object getDefaultNotation() { - return notation; - } - - @Override - public Object getExtractedNotation() { - return notation; - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/DistributionDownloadPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/DistributionDownloadPlugin.java deleted file mode 100644 index 741a6f8620c7c..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/DistributionDownloadPlugin.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.OpenSearchDistribution.Platform; -import org.opensearch.gradle.OpenSearchDistribution.Type; -import org.opensearch.gradle.docker.DockerSupportPlugin; -import org.opensearch.gradle.docker.DockerSupportService; -import org.opensearch.gradle.transform.SymbolicLinkPreservingUntarTransform; -import org.opensearch.gradle.transform.UnzipTransform; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.dsl.DependencyHandler; -import org.gradle.api.artifacts.repositories.IvyArtifactRepository; -import org.gradle.api.artifacts.type.ArtifactTypeDefinition; -import org.gradle.api.internal.artifacts.ArtifactAttributes; -import org.gradle.api.provider.Provider; - -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - -/** - * A plugin to manage getting and extracting distributions of OpenSearch. - *

    - * The plugin provides hooks to register custom distribution resolutions. - * This plugin resolves distributions from the OpenSearch downloads service if - * no registered resolution strategy can resolve to a distribution. - */ -public class DistributionDownloadPlugin implements Plugin { - - static final String RESOLUTION_CONTAINER_NAME = "opensearch_distributions_resolutions"; - private static final String CONTAINER_NAME = "opensearch_distributions"; - private static final String FAKE_IVY_GROUP = "opensearch-distribution"; - private static final String FAKE_SNAPSHOT_IVY_GROUP = "opensearch-distribution-snapshot"; - private static final String DOWNLOAD_REPO_NAME = "opensearch-downloads"; - private static final String SNAPSHOT_REPO_NAME = "opensearch-snapshots"; - public static final String DISTRO_EXTRACTED_CONFIG_PREFIX = "opensearch_distro_extracted_"; - - // for downloading Elasticsearch OSS distributions to run BWC - private static final String FAKE_IVY_GROUP_ES = "elasticsearch-distribution"; - private static final String DOWNLOAD_REPO_NAME_ES = "elasticsearch-downloads"; - private static final String SNAPSHOT_REPO_NAME_ES = "elasticsearch-snapshots"; - private static final String FAKE_SNAPSHOT_IVY_GROUP_ES = "elasticsearch-distribution-snapshot"; - - private static final String RELEASE_PATTERN_LAYOUT = "/core/opensearch/[revision]/[module]-min-[revision](-[classifier]).[ext]"; - private static final String SNAPSHOT_PATTERN_LAYOUT = - "/snapshots/core/opensearch/[revision]/[module]-min-[revision](-[classifier])-latest.[ext]"; - - private NamedDomainObjectContainer distributionsContainer; - private NamedDomainObjectContainer distributionsResolutionStrategiesContainer; - - @Override - public void apply(Project project) { - project.getRootProject().getPluginManager().apply(DockerSupportPlugin.class); - Provider dockerSupport = GradleUtils.getBuildService( - project.getGradle().getSharedServices(), - DockerSupportPlugin.DOCKER_SUPPORT_SERVICE_NAME - ); - - project.getDependencies().registerTransform(UnzipTransform.class, transformSpec -> { - transformSpec.getFrom().attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.ZIP_TYPE); - transformSpec.getTo().attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE); - }); - - ArtifactTypeDefinition tarArtifactTypeDefinition = project.getDependencies().getArtifactTypes().maybeCreate("tar.gz"); - project.getDependencies().registerTransform(SymbolicLinkPreservingUntarTransform.class, transformSpec -> { - transformSpec.getFrom().attribute(ArtifactAttributes.ARTIFACT_FORMAT, tarArtifactTypeDefinition.getName()); - transformSpec.getTo().attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE); - }); - - setupResolutionsContainer(project); - setupDistributionContainer(project, dockerSupport); - setupDownloadServiceRepo(project); - project.afterEvaluate(this::setupDistributions); - } - - private void setupDistributionContainer(Project project, Provider dockerSupport) { - distributionsContainer = project.container(OpenSearchDistribution.class, name -> { - Configuration fileConfiguration = project.getConfigurations().create("opensearch_distro_file_" + name); - Configuration extractedConfiguration = project.getConfigurations().create(DISTRO_EXTRACTED_CONFIG_PREFIX + name); - extractedConfiguration.getAttributes().attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE); - return new OpenSearchDistribution(name, project.getObjects(), dockerSupport, fileConfiguration, extractedConfiguration); - }); - project.getExtensions().add(CONTAINER_NAME, distributionsContainer); - } - - private void setupResolutionsContainer(Project project) { - distributionsResolutionStrategiesContainer = project.container(DistributionResolution.class); - // We want this ordered in the same resolution strategies are added - distributionsResolutionStrategiesContainer.whenObjectAdded( - resolveDependencyNotation -> resolveDependencyNotation.setPriority(distributionsResolutionStrategiesContainer.size()) - ); - project.getExtensions().add(RESOLUTION_CONTAINER_NAME, distributionsResolutionStrategiesContainer); - } - - @SuppressWarnings("unchecked") - public static NamedDomainObjectContainer getContainer(Project project) { - return (NamedDomainObjectContainer) project.getExtensions().getByName(CONTAINER_NAME); - } - - @SuppressWarnings("unchecked") - public static NamedDomainObjectContainer getRegistrationsContainer(Project project) { - return (NamedDomainObjectContainer) project.getExtensions().getByName(RESOLUTION_CONTAINER_NAME); - } - - // pkg private for tests - void setupDistributions(Project project) { - for (OpenSearchDistribution distribution : distributionsContainer) { - distribution.finalizeValues(); - DependencyHandler dependencies = project.getDependencies(); - // for the distribution as a file, just depend on the artifact directly - DistributionDependency distributionDependency = resolveDependencyNotation(project, distribution); - dependencies.add(distribution.configuration.getName(), distributionDependency.getDefaultNotation()); - // no extraction allowed for rpm, deb or docker - if (distribution.getType().shouldExtract()) { - // The extracted configuration depends on the artifact directly but has - // an artifact transform registered to resolve it as an unpacked folder. - dependencies.add(distribution.getExtracted().getName(), distributionDependency.getExtractedNotation()); - } - } - } - - private DistributionDependency resolveDependencyNotation(Project p, OpenSearchDistribution distribution) { - return distributionsResolutionStrategiesContainer.stream() - .sorted(Comparator.comparingInt(DistributionResolution::getPriority)) - .map(r -> r.getResolver().resolve(p, distribution)) - .filter(d -> d != null) - .findFirst() - .orElseGet(() -> DistributionDependency.of(dependencyNotation(distribution))); - } - - private static void addIvyRepo(Project project, String name, String url, String group, String... patternLayout) { - final List repos = Arrays.stream(patternLayout).map(pattern -> project.getRepositories().ivy(repo -> { - repo.setName(name); - repo.setUrl(url); - repo.metadataSources(IvyArtifactRepository.MetadataSources::artifact); - repo.patternLayout(layout -> layout.artifact(pattern)); - })).collect(Collectors.toList()); - - project.getRepositories().exclusiveContent(exclusiveContentRepository -> { - exclusiveContentRepository.filter(config -> config.includeGroup(group)); - exclusiveContentRepository.forRepositories(repos.toArray(new IvyArtifactRepository[repos.size()])); - }); - } - - private static void addIvyRepo2(Project project, String name, String url, String group) { - IvyArtifactRepository ivyRepo = project.getRepositories().ivy(repo -> { - repo.setName(name); - repo.setUrl(url); - repo.metadataSources(IvyArtifactRepository.MetadataSources::artifact); - repo.patternLayout(layout -> layout.artifact("/downloads/elasticsearch/elasticsearch-oss-[revision](-[classifier]).[ext]")); - }); - project.getRepositories().exclusiveContent(exclusiveContentRepository -> { - exclusiveContentRepository.filter(config -> config.includeGroup(group)); - exclusiveContentRepository.forRepositories(ivyRepo); - }); - } - - private static void setupDownloadServiceRepo(Project project) { - if (project.getRepositories().findByName(DOWNLOAD_REPO_NAME) != null) { - return; - } - addIvyRepo( - project, - DOWNLOAD_REPO_NAME, - "https://artifacts.opensearch.org", - FAKE_IVY_GROUP, - "/releases" + RELEASE_PATTERN_LAYOUT, - "/release-candidates" + RELEASE_PATTERN_LAYOUT - ); - - addIvyRepo(project, SNAPSHOT_REPO_NAME, "https://artifacts.opensearch.org", FAKE_SNAPSHOT_IVY_GROUP, SNAPSHOT_PATTERN_LAYOUT); - - addIvyRepo2(project, DOWNLOAD_REPO_NAME_ES, "https://artifacts-no-kpi.elastic.co", FAKE_IVY_GROUP_ES); - addIvyRepo2(project, SNAPSHOT_REPO_NAME_ES, "https://snapshots-no-kpi.elastic.co", FAKE_SNAPSHOT_IVY_GROUP_ES); - } - - /** - * Returns a dependency object representing the given distribution. - *

    - * The returned object is suitable to be passed to {@link DependencyHandler}. - * The concrete type of the object will be a set of maven coordinates as a {@link String}. - * Maven coordinates point to either the integ-test-zip coordinates on maven central, or a set of artificial - * coordinates that resolve to the Elastic download service through an ivy repository. - */ - private String dependencyNotation(OpenSearchDistribution distribution) { - Version distroVersion = Version.fromString(distribution.getVersion()); - if (distribution.getType() == Type.INTEG_TEST_ZIP) { - if (distroVersion.onOrAfter("1.0.0")) { - return "org.opensearch.distribution.integ-test-zip:opensearch:" + distribution.getVersion() + "@zip"; - } else { - return "org.elasticsearch.distribution.integ-test-zip:elasticsearch:" + distribution.getVersion() + "@zip"; - } - } - - String extension = distribution.getType().toString(); - String classifier = distroVersion.onOrAfter("1.0.0") ? ":x64" : ":x86_64"; - if (distribution.getType() == Type.ARCHIVE) { - extension = distribution.getPlatform() == Platform.WINDOWS ? "zip" : "tar.gz"; - - if (distroVersion.onOrAfter("1.0.0")) { - switch (distribution.getArchitecture()) { - case ARM64: - classifier = ":" + distribution.getPlatform() + "-arm64"; - break; - case X64: - classifier = ":" + distribution.getPlatform() + "-x64"; - break; - case PPC64LE: - classifier = ":" + distribution.getPlatform() + "-ppc64le"; - break; - default: - throw new IllegalArgumentException("Unsupported architecture: " + distribution.getArchitecture()); - } - } else if (distroVersion.onOrAfter("7.0.0")) { - classifier = ":" + distribution.getPlatform() + "-x86_64"; - } else { - classifier = ""; - } - } else if (distribution.getType() == Type.DEB) { - if (distroVersion.onOrAfter("7.0.0")) { - classifier = ":amd64"; - } else { - classifier = ""; - } - } else if (distribution.getType() == Type.RPM && distroVersion.before("7.0.0")) { - classifier = ""; - } - - String group; - if (distroVersion.onOrAfter("1.0.0")) { - group = distribution.getVersion().endsWith("-SNAPSHOT") ? FAKE_SNAPSHOT_IVY_GROUP : FAKE_IVY_GROUP; - return group + ":opensearch" + ":" + distribution.getVersion() + classifier + "@" + extension; - } else { - group = distribution.getVersion().endsWith("-SNAPSHOT") ? FAKE_SNAPSHOT_IVY_GROUP_ES : FAKE_IVY_GROUP_ES; - return group + ":elasticsearch-oss" + ":" + distribution.getVersion() + classifier + "@" + extension; - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/DistributionResolution.java b/buildSrc/src/main/java/org/opensearch/gradle/DistributionResolution.java deleted file mode 100644 index 4e95210e63c50..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/DistributionResolution.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.Project; - -public class DistributionResolution { - private Resolver resolver; - private String name; - private int priority; - - public DistributionResolution(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - public Resolver getResolver() { - return resolver; - } - - public void setResolver(Resolver resolver) { - this.resolver = resolver; - } - - public void setPriority(int priority) { - this.priority = priority; - } - - public int getPriority() { - return priority; - } - - public interface Resolver { - DistributionDependency resolve(Project project, OpenSearchDistribution distribution); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/DockerBase.java b/buildSrc/src/main/java/org/opensearch/gradle/DockerBase.java deleted file mode 100644 index 5fd155400cec7..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/DockerBase.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -/** - * This class models the different Docker base images that are used to build Docker distributions of OpenSearch. - */ -public enum DockerBase { - CENTOS("centos:8"); - - private final String image; - - DockerBase(String image) { - this.image = image; - } - - public String getImage() { - return image; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/EmptyDirTask.java b/buildSrc/src/main/java/org/opensearch/gradle/EmptyDirTask.java deleted file mode 100644 index f16b667f96ed4..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/EmptyDirTask.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.File; - -import javax.inject.Inject; - -import org.gradle.api.DefaultTask; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.Internal; -import org.gradle.api.tasks.TaskAction; -import org.gradle.internal.file.Chmod; - -/** - * Creates an empty directory. - */ -public class EmptyDirTask extends DefaultTask { - - private File dir; - private int dirMode = 0755; - - /** - * Creates an empty directory with the configured permissions. - */ - @TaskAction - public void create() { - dir.mkdirs(); - getChmod().chmod(dir, dirMode); - } - - @Inject - public Chmod getChmod() { - throw new UnsupportedOperationException(); - } - - @Internal - public File getDir() { - return dir; - } - - @Input - public String getDirPath() { - return dir.getPath(); - } - - /** - * @param dir The directory to create - */ - public void setDir(File dir) { - this.dir = dir; - } - - /** - * @param dir The path of the directory to create. Takes a String and coerces it to a file. - */ - public void setDir(String dir) { - this.dir = getProject().file(dir); - } - - @Input - public int getDirMode() { - return dirMode; - } - - /** - * @param dirMode The permissions to apply to the new directory - */ - public void setDirMode(int dirMode) { - this.dirMode = dirMode; - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTask.java b/buildSrc/src/main/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTask.java deleted file mode 100644 index d00e790c94fcc..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/ExportOpenSearchBuildResourcesTask.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.DefaultTask; -import org.gradle.api.GradleException; -import org.gradle.api.file.DirectoryProperty; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.tasks.Classpath; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.OutputDirectory; -import org.gradle.api.tasks.StopExecutionException; -import org.gradle.api.tasks.TaskAction; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -/** - * Export OpenSearch build resources to configurable paths - *

    - * Wil overwrite existing files and create missing directories. - * Useful for resources that that need to be passed to other processes trough the filesystem or otherwise can't be - * consumed from the classpath. - */ -public class ExportOpenSearchBuildResourcesTask extends DefaultTask { - - private final Logger logger = Logging.getLogger(ExportOpenSearchBuildResourcesTask.class); - - private final Set resources = new HashSet<>(); - - private DirectoryProperty outputDir; - - public ExportOpenSearchBuildResourcesTask() { - outputDir = getProject().getObjects().directoryProperty(); - } - - @OutputDirectory - public DirectoryProperty getOutputDir() { - return outputDir; - } - - @Input - public Set getResources() { - return Collections.unmodifiableSet(resources); - } - - @Classpath - public String getResourcesClasspath() { - // This will make sure the task is not considered up to date if the resources are changed. - logger.info("Classpath: {}", System.getProperty("java.class.path")); - return System.getProperty("java.class.path"); - } - - public void setOutputDir(File outputDir) { - this.outputDir.set(outputDir); - } - - public void copy(String resource) { - if (getState().getExecuted() || getState().getExecuting()) { - throw new GradleException( - "buildResources can't be configured after the task ran. " + "Make sure task is not used after configuration time" - ); - } - resources.add(resource); - } - - @TaskAction - public void doExport() { - if (resources.isEmpty()) { - setDidWork(false); - throw new StopExecutionException(); - } - resources.stream().parallel().forEach(resourcePath -> { - Path destination = outputDir.get().file(resourcePath).getAsFile().toPath(); - try (InputStream is = getClass().getClassLoader().getResourceAsStream(resourcePath)) { - Files.createDirectories(destination.getParent()); - if (is == null) { - throw new GradleException("Can't export `" + resourcePath + "` from build-tools: not found"); - } - Files.copy(is, destination, StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { - throw new GradleException("Can't write resource `" + resourcePath + "` to " + destination, e); - } - }); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/FileSupplier.java b/buildSrc/src/main/java/org/opensearch/gradle/FileSupplier.java deleted file mode 100644 index 1c32b4251afa4..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/FileSupplier.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.File; -import java.util.function.Supplier; - -public interface FileSupplier extends Supplier {} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/FileSystemOperationsAware.java b/buildSrc/src/main/java/org/opensearch/gradle/FileSystemOperationsAware.java deleted file mode 100644 index e0a16efe9c449..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/FileSystemOperationsAware.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.tasks.WorkResult; - -/** - * An interface for tasks that support basic file operations. - * Methods will be added as needed. - */ -public interface FileSystemOperationsAware { - WorkResult delete(Object... objects); -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/Jdk.java b/buildSrc/src/main/java/org/opensearch/gradle/Jdk.java deleted file mode 100644 index 29aa0ece6c971..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/Jdk.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.Buildable; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.model.ObjectFactory; -import org.gradle.api.provider.Property; -import org.gradle.api.tasks.TaskDependency; - -import java.io.File; -import java.util.Arrays; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class Jdk implements Buildable, Iterable { - - private static final List ALLOWED_ARCHITECTURES = Collections.unmodifiableList(Arrays.asList("aarch64", "x64", "ppc64le")); - private static final List ALLOWED_VENDORS = Collections.unmodifiableList(Arrays.asList("adoptium", "adoptopenjdk", "openjdk")); - private static final List ALLOWED_PLATFORMS = Collections.unmodifiableList( - Arrays.asList("darwin", "freebsd", "linux", "mac", "windows") - ); - private static final Pattern VERSION_PATTERN = Pattern.compile( - "(\\d+)(\\.\\d+\\.\\d+(?:.\\d+)?)?\\+(\\d+(?:\\.\\d+)?)(@([a-f0-9]{32}))?" - ); - private static final Pattern LEGACY_VERSION_PATTERN = Pattern.compile("(\\d)(u\\d+)(?:\\+|\\-)(b\\d+?)(@([a-f0-9]{32}))?"); - - private final String name; - private final Configuration configuration; - - private final Property vendor; - private final Property version; - private final Property platform; - private final Property architecture; - private String baseVersion; - private String major; - private String build; - private String hash; - - Jdk(String name, Configuration configuration, ObjectFactory objectFactory) { - this.name = name; - this.configuration = configuration; - this.vendor = objectFactory.property(String.class); - this.version = objectFactory.property(String.class); - this.platform = objectFactory.property(String.class); - this.architecture = objectFactory.property(String.class); - } - - public String getName() { - return name; - } - - public String getVendor() { - return vendor.get(); - } - - public void setVendor(final String vendor) { - if (ALLOWED_VENDORS.contains(vendor) == false) { - throw new IllegalArgumentException("unknown vendor [" + vendor + "] for jdk [" + name + "], must be one of " + ALLOWED_VENDORS); - } - this.vendor.set(vendor); - } - - public String getVersion() { - return version.get(); - } - - public void setVersion(String version) { - if (VERSION_PATTERN.matcher(version).matches() == false && LEGACY_VERSION_PATTERN.matcher(version).matches() == false) { - throw new IllegalArgumentException("malformed version [" + version + "] for jdk [" + name + "]"); - } - parseVersion(version); - this.version.set(version); - } - - public String getPlatform() { - return platform.get(); - } - - public void setPlatform(String platform) { - if (ALLOWED_PLATFORMS.contains(platform) == false) { - throw new IllegalArgumentException( - "unknown platform [" + platform + "] for jdk [" + name + "], must be one of " + ALLOWED_PLATFORMS - ); - } - this.platform.set(platform); - } - - public String getArchitecture() { - return architecture.get(); - } - - public void setArchitecture(final String architecture) { - String jdkArchitecture = translateJdkArchitecture(architecture); - if (ALLOWED_ARCHITECTURES.contains(jdkArchitecture) == false) { - throw new IllegalArgumentException( - "unknown architecture [" + jdkArchitecture + "] for jdk [" + name + "], must be one of " + ALLOWED_ARCHITECTURES - ); - } - this.architecture.set(architecture); - } - - public String getBaseVersion() { - return baseVersion; - } - - public String getMajor() { - return major; - } - - public String getBuild() { - return build; - } - - public String getHash() { - return hash; - } - - public String getPath() { - return configuration.getSingleFile().toString(); - } - - public String getConfigurationName() { - return configuration.getName(); - } - - @Override - public String toString() { - return getPath(); - } - - @Override - public TaskDependency getBuildDependencies() { - return configuration.getBuildDependencies(); - } - - public Object getBinJavaPath() { - return new Object() { - @Override - public String toString() { - return getHomeRoot() + "/bin/java"; - } - }; - } - - public Object getJavaHomePath() { - return new Object() { - @Override - public String toString() { - return getHomeRoot(); - } - }; - } - - private String getHomeRoot() { - boolean isOSX = "mac".equals(getPlatform()) || "darwin".equals(getPlatform()); - return getPath() + (isOSX ? "/Contents/Home" : ""); - } - - // internal, make this jdks configuration unmodifiable - void finalizeValues() { - if (version.isPresent() == false) { - throw new IllegalArgumentException("version not specified for jdk [" + name + "]"); - } - if (platform.isPresent() == false) { - throw new IllegalArgumentException("platform not specified for jdk [" + name + "]"); - } - if (vendor.isPresent() == false) { - throw new IllegalArgumentException("vendor not specified for jdk [" + name + "]"); - } - if (architecture.isPresent() == false) { - throw new IllegalArgumentException("architecture not specified for jdk [" + name + "]"); - } - version.finalizeValue(); - platform.finalizeValue(); - vendor.finalizeValue(); - architecture.finalizeValue(); - } - - @Override - public Iterator iterator() { - return configuration.iterator(); - } - - private void parseVersion(String version) { - // decompose the bundled jdk version, broken into elements as: [feature, interim, update, build] - // Note the "patch" version is not yet handled here, as it has not yet been used by java. - Matcher jdkVersionMatcher = VERSION_PATTERN.matcher(version); - if (jdkVersionMatcher.matches() == false) { - // Try again with the pre-Java9 version format - jdkVersionMatcher = LEGACY_VERSION_PATTERN.matcher(version); - - if (jdkVersionMatcher.matches() == false) { - throw new IllegalArgumentException("Malformed jdk version [" + version + "]"); - } - } - - baseVersion = jdkVersionMatcher.group(1) + (jdkVersionMatcher.group(2) != null ? (jdkVersionMatcher.group(2)) : ""); - major = jdkVersionMatcher.group(1); - build = jdkVersionMatcher.group(3); - hash = jdkVersionMatcher.group(5); - } - - private String translateJdkArchitecture(String architecture) { - /* - * Jdk uses aarch64 from ARM. Translating from arm64 to aarch64 which Jdk understands. - */ - return "arm64".equals(architecture) ? "aarch64" : architecture; - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/JdkDownloadPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/JdkDownloadPlugin.java deleted file mode 100644 index f638f1931cf62..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/JdkDownloadPlugin.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.transform.SymbolicLinkPreservingUntarTransform; -import org.opensearch.gradle.transform.UnzipTransform; -import org.gradle.api.GradleException; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.dsl.RepositoryHandler; -import org.gradle.api.artifacts.repositories.IvyArtifactRepository; -import org.gradle.api.artifacts.type.ArtifactTypeDefinition; -import org.gradle.api.attributes.Attribute; -import org.gradle.api.internal.artifacts.ArtifactAttributes; - -public class JdkDownloadPlugin implements Plugin { - public static final String VENDOR_ADOPTIUM = "adoptium"; - public static final String VENDOR_ADOPTOPENJDK = "adoptopenjdk"; - public static final String VENDOR_OPENJDK = "openjdk"; - - private static final String REPO_NAME_PREFIX = "jdk_repo_"; - private static final String EXTENSION_NAME = "jdks"; - public static final String JDK_TRIMMED_PREFIX = "jdk-?\\d.*"; - - @Override - public void apply(Project project) { - Attribute jdkAttribute = Attribute.of("jdk", Boolean.class); - project.getDependencies().getAttributesSchema().attribute(jdkAttribute); - project.getDependencies().getArtifactTypes().maybeCreate(ArtifactTypeDefinition.ZIP_TYPE); - project.getDependencies().registerTransform(UnzipTransform.class, transformSpec -> { - transformSpec.getFrom() - .attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.ZIP_TYPE) - .attribute(jdkAttribute, true); - transformSpec.getTo() - .attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE) - .attribute(jdkAttribute, true); - transformSpec.parameters(parameters -> parameters.setTrimmedPrefixPattern(JDK_TRIMMED_PREFIX)); - }); - - ArtifactTypeDefinition tarArtifactTypeDefinition = project.getDependencies().getArtifactTypes().maybeCreate("tar.gz"); - project.getDependencies().registerTransform(SymbolicLinkPreservingUntarTransform.class, transformSpec -> { - transformSpec.getFrom() - .attribute(ArtifactAttributes.ARTIFACT_FORMAT, tarArtifactTypeDefinition.getName()) - .attribute(jdkAttribute, true); - transformSpec.getTo() - .attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE) - .attribute(jdkAttribute, true); - transformSpec.parameters(parameters -> parameters.setTrimmedPrefixPattern(JDK_TRIMMED_PREFIX)); - }); - - NamedDomainObjectContainer jdksContainer = project.container(Jdk.class, name -> { - Configuration configuration = project.getConfigurations().create("jdk_" + name); - configuration.setCanBeConsumed(false); - configuration.getAttributes().attribute(ArtifactAttributes.ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE); - configuration.getAttributes().attribute(jdkAttribute, true); - Jdk jdk = new Jdk(name, configuration, project.getObjects()); - configuration.defaultDependencies(dependencies -> { - jdk.finalizeValues(); - setupRepository(project, jdk); - dependencies.add(project.getDependencies().create(dependencyNotation(jdk))); - }); - return jdk; - }); - project.getExtensions().add(EXTENSION_NAME, jdksContainer); - } - - private void setupRepository(Project project, Jdk jdk) { - RepositoryHandler repositories = project.getRepositories(); - - /* - * Define the appropriate repository for the given JDK vendor and version - * - * For Oracle/OpenJDK/AdoptOpenJDK we define a repository per-version. - */ - String repoName = REPO_NAME_PREFIX + jdk.getVendor() + "_" + jdk.getVersion(); - String repoUrl; - String artifactPattern; - - if (jdk.getVendor().equals(VENDOR_ADOPTIUM)) { - repoUrl = "https://github.com/adoptium/temurin" + jdk.getMajor() + "-binaries/releases/download/"; - - if (jdk.getMajor().equals("8")) { - // JDK-8 updates are always suffixed with 'U' (fe OpenJDK8U). - artifactPattern = "jdk" - + jdk.getBaseVersion() - + "-" - + jdk.getBuild() - + "/OpenJDK" - + jdk.getMajor() - + "U" - + "-jdk_[classifier]_[module]_hotspot_" - + jdk.getBaseVersion() - + jdk.getBuild() - + ".[ext]"; - } else { - // JDK updates are suffixed with 'U' (fe OpenJDK17U), whereas GA releases are not (fe OpenJDK17). - // To distinguish between those, the GA releases have only major version component (fe 17+32), - // the updates always have minor/patch components (fe 17.0.1+12), checking for the presence of - // version separator '.' should be enough. - artifactPattern = "jdk-" - + jdk.getBaseVersion() - + "+" - + jdk.getBuild() - + "/OpenJDK" - + jdk.getMajor() - + (jdk.getBaseVersion().contains(".") ? "U" : "") - + "-jdk_[classifier]_[module]_hotspot_" - + jdk.getBaseVersion() - + "_" - + jdk.getBuild() - + ".[ext]"; - } - } else if (jdk.getVendor().equals(VENDOR_ADOPTOPENJDK)) { - repoUrl = "https://api.adoptopenjdk.net/v3/binary/version/"; - if (jdk.getMajor().equals("8")) { - // legacy pattern for JDK 8 - artifactPattern = "jdk" - + jdk.getBaseVersion() - + "-" - + jdk.getBuild() - + "/[module]/[classifier]/jdk/hotspot/normal/adoptopenjdk"; - } else { - // current pattern since JDK 9 - artifactPattern = "jdk-" - + jdk.getBaseVersion() - + "+" - + jdk.getBuild() - + "/[module]/[classifier]/jdk/hotspot/normal/adoptopenjdk"; - } - } else if (jdk.getVendor().equals(VENDOR_OPENJDK)) { - repoUrl = "https://download.oracle.com"; - if (jdk.getHash() != null) { - // current pattern since 12.0.1 - artifactPattern = "java/GA/jdk" - + jdk.getBaseVersion() - + "/" - + jdk.getHash() - + "/" - + jdk.getBuild() - + "/GPL/openjdk-[revision]_[module]-[classifier]_bin.[ext]"; - } else { - // simpler legacy pattern from JDK 9 to JDK 12 that we are advocating to Oracle to bring back - artifactPattern = "java/GA/jdk" - + jdk.getMajor() - + "/" - + jdk.getBuild() - + "/GPL/openjdk-[revision]_[module]-[classifier]_bin.[ext]"; - } - } else { - throw new GradleException("Unknown JDK vendor [" + jdk.getVendor() + "]"); - } - - // Define the repository if we haven't already - if (repositories.findByName(repoName) == null) { - repositories.ivy(repo -> { - repo.setName(repoName); - repo.setUrl(repoUrl); - repo.metadataSources(IvyArtifactRepository.MetadataSources::artifact); - repo.patternLayout(layout -> layout.artifact(artifactPattern)); - repo.content(repositoryContentDescriptor -> repositoryContentDescriptor.includeGroup(groupName(jdk))); - }); - } - } - - @SuppressWarnings("unchecked") - public static NamedDomainObjectContainer getContainer(Project project) { - return (NamedDomainObjectContainer) project.getExtensions().getByName(EXTENSION_NAME); - } - - private static String dependencyNotation(Jdk jdk) { - String platformDep = jdk.getPlatform().equals("darwin") || jdk.getPlatform().equals("mac") - ? (jdk.getVendor().equals(VENDOR_OPENJDK) ? "osx" : "mac") - : jdk.getPlatform(); - String extension = jdk.getPlatform().equals("windows") ? "zip" : "tar.gz"; - - return groupName(jdk) + ":" + platformDep + ":" + jdk.getBaseVersion() + ":" + jdk.getArchitecture() + "@" + extension; - } - - private static String groupName(Jdk jdk) { - return jdk.getVendor() + "_" + jdk.getMajor(); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/LazyFileOutputStream.java b/buildSrc/src/main/java/org/opensearch/gradle/LazyFileOutputStream.java deleted file mode 100644 index 61fd3897eacb4..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/LazyFileOutputStream.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; - -/** - * An outputstream to a File that is lazily opened on the first write. - */ -class LazyFileOutputStream extends OutputStream { - private OutputStream delegate; - - LazyFileOutputStream(File file) { - // use an initial dummy delegate to avoid doing a conditional on every write - this.delegate = new OutputStream() { - private void bootstrap() throws IOException { - file.getParentFile().mkdirs(); - delegate = new FileOutputStream(file); - } - - @Override - public void write(int b) throws IOException { - bootstrap(); - delegate.write(b); - } - - @Override - public void write(byte b[], int off, int len) throws IOException { - bootstrap(); - delegate.write(b, off, len); - } - }; - } - - @Override - public void write(int b) throws IOException { - delegate.write(b); - } - - @Override - public void write(byte b[], int off, int len) throws IOException { - delegate.write(b, off, len); - } - - @Override - public void close() throws IOException { - delegate.close(); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyList.java b/buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyList.java deleted file mode 100644 index 0ff7f1c23cd30..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyList.java +++ /dev/null @@ -1,245 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.tasks.Input; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -public class LazyPropertyList extends AbstractLazyPropertyCollection implements List { - - private final List> delegate = new ArrayList<>(); - - public LazyPropertyList(String name) { - super(name); - } - - public LazyPropertyList(String name, Object owner) { - super(name, owner); - } - - @Override - public int size() { - return delegate.size(); - } - - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - @Override - public boolean contains(Object o) { - return delegate.stream().anyMatch(entry -> entry.getValue().equals(o)); - } - - @Override - public Iterator iterator() { - return delegate.stream().peek(this::validate).map(PropertyListEntry::getValue).iterator(); - } - - @Override - public Object[] toArray() { - return delegate.stream().peek(this::validate).map(PropertyListEntry::getValue).toArray(); - } - - @Override - public T1[] toArray(T1[] a) { - return delegate.stream().peek(this::validate).map(PropertyListEntry::getValue).collect(Collectors.toList()).toArray(a); - } - - @Override - public boolean add(T t) { - return delegate.add(new PropertyListEntry<>(() -> t, PropertyNormalization.DEFAULT)); - } - - public boolean add(Supplier supplier) { - return delegate.add(new PropertyListEntry<>(supplier, PropertyNormalization.DEFAULT)); - } - - public boolean add(Supplier supplier, PropertyNormalization normalization) { - return delegate.add(new PropertyListEntry<>(supplier, normalization)); - } - - @Override - public boolean remove(Object o) { - throw new UnsupportedOperationException(this.getClass().getName() + " does not support remove()"); - } - - @Override - public boolean containsAll(Collection c) { - return delegate.stream().map(PropertyListEntry::getValue).collect(Collectors.toList()).containsAll(c); - } - - @Override - public boolean addAll(Collection c) { - c.forEach(this::add); - return true; - } - - @Override - public boolean addAll(int index, Collection c) { - int i = index; - for (T item : c) { - this.add(i++, item); - } - return true; - } - - @Override - public boolean removeAll(Collection c) { - throw new UnsupportedOperationException(this.getClass().getName() + " does not support removeAll()"); - } - - @Override - public boolean retainAll(Collection c) { - throw new UnsupportedOperationException(this.getClass().getName() + " does not support retainAll()"); - } - - @Override - public void clear() { - delegate.clear(); - } - - @Override - public T get(int index) { - PropertyListEntry entry = delegate.get(index); - validate(entry); - return entry.getValue(); - } - - @Override - public T set(int index, T element) { - return delegate.set(index, new PropertyListEntry<>(() -> element, PropertyNormalization.DEFAULT)).getValue(); - } - - @Override - public void add(int index, T element) { - delegate.add(index, new PropertyListEntry<>(() -> element, PropertyNormalization.DEFAULT)); - } - - @Override - public T remove(int index) { - return delegate.remove(index).getValue(); - } - - @Override - public int indexOf(Object o) { - for (int i = 0; i < delegate.size(); i++) { - if (delegate.get(i).getValue().equals(o)) { - return i; - } - } - - return -1; - } - - @Override - public int lastIndexOf(Object o) { - int lastIndex = -1; - for (int i = 0; i < delegate.size(); i++) { - if (delegate.get(i).getValue().equals(o)) { - lastIndex = i; - } - } - - return lastIndex; - } - - @Override - public ListIterator listIterator() { - return delegate.stream().map(PropertyListEntry::getValue).collect(Collectors.toList()).listIterator(); - } - - @Override - public ListIterator listIterator(int index) { - return delegate.stream().peek(this::validate).map(PropertyListEntry::getValue).collect(Collectors.toList()).listIterator(index); - } - - @Override - public List subList(int fromIndex, int toIndex) { - return delegate.stream() - .peek(this::validate) - .map(PropertyListEntry::getValue) - .collect(Collectors.toList()) - .subList(fromIndex, toIndex); - } - - @Override - public List> getNormalizedCollection() { - return delegate.stream() - .peek(this::validate) - .filter(entry -> entry.getNormalization() != PropertyNormalization.IGNORE_VALUE) - .collect(Collectors.toList()); - } - - /** - * Return a "flattened" collection. This should be used when the collection type is itself a complex type with properties - * annotated as Gradle inputs rather than a simple type like {@link String}. - * - * @return a flattened collection filtered according to normalization strategy - */ - public List getFlatNormalizedCollection() { - return getNormalizedCollection().stream().map(PropertyListEntry::getValue).collect(Collectors.toList()); - } - - private void validate(PropertyListEntry entry) { - assertNotNull(entry.getValue(), "entry"); - } - - private class PropertyListEntry { - private final Supplier supplier; - private final PropertyNormalization normalization; - - PropertyListEntry(Supplier supplier, PropertyNormalization normalization) { - this.supplier = supplier; - this.normalization = normalization; - } - - @Input - public PropertyNormalization getNormalization() { - return normalization; - } - - @Input - public T getValue() { - assertNotNull(supplier, "supplier"); - return supplier.get(); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyMap.java b/buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyMap.java deleted file mode 100644 index 61fdff84ce8e9..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/LazyPropertyMap.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.Named; -import org.gradle.api.tasks.Input; - -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.BiFunction; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -public class LazyPropertyMap extends AbstractLazyPropertyCollection implements Map { - - private final Map> delegate = new LinkedHashMap<>(); - private final BiFunction normalizationMapper; - - public LazyPropertyMap(String name) { - this(name, null); - } - - public LazyPropertyMap(String name, Object owner) { - this(name, owner, null); - } - - public LazyPropertyMap(String name, Object owner, BiFunction normalizationMapper) { - super(name, owner); - this.normalizationMapper = normalizationMapper; - } - - @Override - public int size() { - return delegate.size(); - } - - @Override - public boolean isEmpty() { - return delegate.isEmpty(); - } - - @Override - public boolean containsKey(Object key) { - return delegate.containsKey(key); - } - - @Override - public boolean containsValue(Object value) { - return delegate.values().stream().map(PropertyMapEntry::getValue).anyMatch(v -> v.equals(value)); - } - - @Override - public V get(Object key) { - PropertyMapEntry entry = delegate.get(key); - if (entry != null) { - V value = entry.getValue(); - assertNotNull(value, "value for key '" + key + "'"); - return value; - } else { - return null; - } - } - - @Override - public V put(K key, V value) { - return put(key, value, PropertyNormalization.DEFAULT); - } - - public V put(K key, V value, PropertyNormalization normalization) { - assertNotNull(value, "value for key '" + key + "'"); - return put(key, () -> value, normalization); - } - - public V put(K key, Supplier supplier) { - return put(key, supplier, PropertyNormalization.DEFAULT); - } - - public V put(K key, Supplier supplier, PropertyNormalization normalization) { - assertNotNull(supplier, "supplier for key '" + key + "'"); - PropertyMapEntry previous = delegate.put(key, new PropertyMapEntry<>(key, supplier, normalization)); - return previous == null ? null : previous.getValue(); - } - - @Override - public V remove(Object key) { - PropertyMapEntry previous = delegate.remove(key); - return previous == null ? null : previous.getValue(); - } - - @Override - public void putAll(Map m) { - throw new UnsupportedOperationException(this.getClass().getName() + " does not support putAll()"); - } - - @Override - public void clear() { - delegate.clear(); - } - - @Override - public Set keySet() { - return delegate.keySet(); - } - - @Override - public Collection values() { - return delegate.values().stream().peek(this::validate).map(PropertyMapEntry::getValue).collect(Collectors.toList()); - } - - @Override - public Set> entrySet() { - return delegate.entrySet() - .stream() - .peek(this::validate) - .collect(Collectors.toMap(Entry::getKey, entry -> entry.getValue().getValue())) - .entrySet(); - } - - @Override - public List getNormalizedCollection() { - return delegate.values() - .stream() - .peek(this::validate) - .filter(entry -> entry.getNormalization() != PropertyNormalization.IGNORE_VALUE) - .map(entry -> normalizationMapper == null ? entry : normalizationMapper.apply(entry.getKey(), entry.getValue())) - .collect(Collectors.toList()); - } - - private void validate(Map.Entry> entry) { - validate(entry.getValue()); - } - - private void validate(PropertyMapEntry supplier) { - assertNotNull(supplier, "key '" + supplier.getKey() + "' supplier value"); - } - - private static class PropertyMapEntry implements Named { - private final K key; - private final Supplier value; - private final PropertyNormalization normalization; - - PropertyMapEntry(K key, Supplier value, PropertyNormalization normalization) { - this.key = key; - this.value = value; - this.normalization = normalization; - } - - @Input - public PropertyNormalization getNormalization() { - return normalization; - } - - @Override - @Input - public String getName() { - return getKey().toString(); - } - - @Input - public K getKey() { - return key; - } - - @Input - public V getValue() { - return value.get(); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/LoggedExec.java b/buildSrc/src/main/java/org/opensearch/gradle/LoggedExec.java deleted file mode 100644 index faa962bf372bb..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/LoggedExec.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.file.FileSystemOperations; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.tasks.Exec; -import org.gradle.api.tasks.WorkResult; -import org.gradle.process.BaseExecSpec; -import org.gradle.process.ExecOperations; -import org.gradle.process.ExecResult; -import org.gradle.process.ExecSpec; -import org.gradle.process.JavaExecSpec; - -import javax.inject.Inject; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.io.UncheckedIOException; -import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Arrays; -import java.util.List; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.regex.Pattern; - -/** - * A wrapper around gradle's Exec task to capture output and log on error. - */ -public class LoggedExec extends Exec implements FileSystemOperationsAware { - - private static final Logger LOGGER = Logging.getLogger(LoggedExec.class); - private Consumer outputLogger; - private FileSystemOperations fileSystemOperations; - - @Inject - public LoggedExec(FileSystemOperations fileSystemOperations) { - this.fileSystemOperations = fileSystemOperations; - if (getLogger().isInfoEnabled() == false) { - setIgnoreExitValue(true); - setSpoolOutput(false); - // We use an anonymous inner class here because Gradle cannot properly snapshot this input for the purposes of - // incremental build if we use a lambda. This ensures LoggedExec tasks that declare output can be UP-TO-DATE. - doLast(new Action() { - @Override - public void execute(Task task) { - if (LoggedExec.this.getExecResult().getExitValue() != 0) { - try { - LoggedExec.this.getLogger().error("Output for " + LoggedExec.this.getExecutable() + ":"); - outputLogger.accept(LoggedExec.this.getLogger()); - } catch (Exception e) { - throw new GradleException("Failed to read exec output", e); - } - throw new GradleException( - String.format( - "Process '%s %s' finished with non-zero exit value %d", - LoggedExec.this.getExecutable(), - LoggedExec.this.getArgs(), - LoggedExec.this.getExecResult().getExitValue() - ) - ); - } - } - }); - } - } - - public void setSpoolOutput(boolean spoolOutput) { - final OutputStream out; - if (spoolOutput) { - File spoolFile = new File(getProject().getBuildDir() + "/buffered-output/" + this.getName()); - out = new LazyFileOutputStream(spoolFile); - outputLogger = logger -> { - try { - // the file may not exist if the command never output anything - if (Files.exists(spoolFile.toPath())) { - Files.lines(spoolFile.toPath()).forEach(logger::error); - } - } catch (IOException e) { - throw new RuntimeException("could not log", e); - } - }; - } else { - out = new ByteArrayOutputStream(); - outputLogger = logger -> { - try { - logger.error(((ByteArrayOutputStream) out).toString("UTF-8")); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); - } - }; - } - setStandardOutput(out); - setErrorOutput(out); - } - - public static ExecResult exec(Project project, Action action) { - return genericExec(project::exec, action); - } - - public static ExecResult exec(ExecOperations execOperations, Action action) { - return genericExec(execOperations::exec, action); - } - - public static ExecResult javaexec(Project project, Action action) { - return genericExec(project::javaexec, action); - } - - /** Returns JVM arguments suitable for a short-lived forked task */ - public static final List shortLivedArgs() { - return Arrays.asList(new String[] { "-XX:TieredStopAtLevel=1" }); - } - - private static final Pattern NEWLINE = Pattern.compile(System.lineSeparator()); - - private static ExecResult genericExec(Function, ExecResult> function, Action action) { - if (LOGGER.isInfoEnabled()) { - return function.apply(action); - } - ByteArrayOutputStream output = new ByteArrayOutputStream(); - try { - return function.apply(spec -> { - spec.setStandardOutput(output); - spec.setErrorOutput(output); - // optimize for short-lived process - if (spec instanceof JavaExecSpec) { - ((JavaExecSpec) spec).setJvmArgs(shortLivedArgs()); - } - action.execute(spec); - try { - output.write(("Output for " + spec.getExecutable() + ":").getBytes(StandardCharsets.UTF_8)); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - }); - } catch (Exception e) { - try { - if (output.size() != 0) { - LOGGER.error("Exec output and error:"); - NEWLINE.splitAsStream(output.toString("UTF-8")).forEach(s -> LOGGER.error("| " + s)); - } - } catch (UnsupportedEncodingException ue) { - throw new GradleException("Failed to read exec output", ue); - } - throw e; - } - } - - @Override - public WorkResult delete(Object... objects) { - return fileSystemOperations.delete(d -> d.delete(objects)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/LoggingOutputStream.java b/buildSrc/src/main/java/org/opensearch/gradle/LoggingOutputStream.java deleted file mode 100644 index 5ae7ad1595e2f..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/LoggingOutputStream.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.Arrays; - -/** - * Writes data passed to this stream as log messages. - * - * The stream will be flushed whenever a newline is detected. - * Allows setting an optional prefix before each line of output. - */ -public abstract class LoggingOutputStream extends OutputStream { - /** The starting length of the buffer */ - private static final int DEFAULT_BUFFER_LENGTH = 4096; - - /** The buffer of bytes sent to the stream */ - private byte[] buffer = new byte[DEFAULT_BUFFER_LENGTH]; - - /** Offset of the start of unwritten data in the buffer */ - private int start = 0; - - /** Offset of the end (semi-open) of unwritten data in the buffer */ - private int end = 0; - - @Override - public void write(final int b) throws IOException { - if (b == 0) { - return; - } - if (b == '\n') { - // always flush with newlines instead of adding to the buffer - flush(); - return; - } - - if (end == buffer.length) { - if (start != 0) { - // first try shifting the used buffer back to the beginning to make space - int len = end - start; - System.arraycopy(buffer, start, buffer, 0, len); - start = 0; - end = len; - } else { - // otherwise extend the buffer - buffer = Arrays.copyOf(buffer, buffer.length + DEFAULT_BUFFER_LENGTH); - } - } - - buffer[end++] = (byte) b; - } - - @Override - public void flush() { - if (end == start) { - return; - } - logLine(new String(buffer, start, end - start)); - start = end; - } - - protected abstract void logLine(String line); -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/OS.java b/buildSrc/src/main/java/org/opensearch/gradle/OS.java deleted file mode 100644 index b5243030cbc71..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/OS.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.function.Supplier; - -public enum OS { - FREEBSD, - LINUX, - MAC, - WINDOWS; - - public static OS current() { - String os = System.getProperty("os.name", ""); - if (os.startsWith("FreeBSD")) { - return OS.FREEBSD; - } - if (os.startsWith("Linux") || os.startsWith("LINUX")) { - return OS.LINUX; - } - if (os.startsWith("Mac")) { - return OS.MAC; - } - if (os.startsWith("Windows")) { - return OS.WINDOWS; - } - throw new IllegalStateException("Can't determine OS from: " + os); - } - - public static class Conditional { - - private final Map> conditions = new HashMap<>(); - - public Conditional onLinux(Supplier supplier) { - conditions.put(LINUX, supplier); - return this; - } - - public Conditional onFreeBSD(Supplier supplier) { - conditions.put(FREEBSD, supplier); - return this; - } - - public Conditional onMac(Supplier supplier) { - conditions.put(MAC, supplier); - return this; - } - - public Conditional onUnix(Supplier supplier) { - conditions.put(FREEBSD, supplier); - conditions.put(LINUX, supplier); - conditions.put(MAC, supplier); - return this; - } - - public Conditional onWindows(Supplier supplier) { - conditions.put(WINDOWS, supplier); - return this; - } - - public T supply() { - HashSet missingOS = new HashSet<>(Arrays.asList(OS.values())); - missingOS.removeAll(conditions.keySet()); - if (missingOS.isEmpty() == false) { - throw new IllegalArgumentException("No condition specified for " + missingOS); - } - return conditions.get(OS.current()).get(); - } - - } - - public static Conditional conditional() { - return new Conditional<>(); - } - - public static Conditional conditionalString() { - return conditional(); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchDistribution.java b/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchDistribution.java deleted file mode 100644 index 968bd13bd4011..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchDistribution.java +++ /dev/null @@ -1,277 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.docker.DockerSupportService; -import org.gradle.api.Buildable; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.model.ObjectFactory; -import org.gradle.api.provider.Property; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.TaskDependency; - -import java.io.File; -import java.util.Collections; -import java.util.Iterator; -import java.util.Locale; - -public class OpenSearchDistribution implements Buildable, Iterable { - - public enum Platform { - DARWIN, - FREEBSD, - LINUX, - WINDOWS; - - @Override - public String toString() { - return super.toString().toLowerCase(Locale.ROOT); - } - } - - public enum Type { - INTEG_TEST_ZIP, - ARCHIVE, - RPM, - DEB, - DOCKER; - - @Override - public String toString() { - return super.toString().toLowerCase(Locale.ROOT); - } - - public boolean shouldExtract() { - switch (this) { - case DEB: - case DOCKER: - case RPM: - return false; - - default: - return true; - } - } - } - - // package private to tests can use - public static final Platform CURRENT_PLATFORM = OS.conditional() - .onFreeBSD(() -> Platform.FREEBSD) - .onLinux(() -> Platform.LINUX) - .onMac(() -> Platform.DARWIN) - .onWindows(() -> Platform.WINDOWS) - .supply(); - - private final String name; - private final Provider dockerSupport; - // pkg private so plugin can configure - final Configuration configuration; - - private final Property architecture; - private final Property version; - private final Property type; - private final Property platform; - private final Property bundledJdk; - private final Property failIfUnavailable; - private final Configuration extracted; - - OpenSearchDistribution( - String name, - ObjectFactory objectFactory, - Provider dockerSupport, - Configuration fileConfiguration, - Configuration extractedConfiguration - ) { - this.name = name; - this.dockerSupport = dockerSupport; - this.configuration = fileConfiguration; - this.architecture = objectFactory.property(Architecture.class); - this.version = objectFactory.property(String.class).convention(VersionProperties.getOpenSearch()); - this.type = objectFactory.property(Type.class); - this.type.convention(Type.ARCHIVE); - this.platform = objectFactory.property(Platform.class); - this.bundledJdk = objectFactory.property(Boolean.class); - this.failIfUnavailable = objectFactory.property(Boolean.class).convention(true); - this.extracted = extractedConfiguration; - } - - public String getName() { - return name; - } - - public String getVersion() { - return version.get(); - } - - public void setVersion(String version) { - Version.fromString(version); // ensure the version parses, but don't store as Version since that removes -SNAPSHOT - this.version.set(version); - } - - public Platform getPlatform() { - return platform.getOrNull(); - } - - public void setPlatform(Platform platform) { - this.platform.set(platform); - } - - public Type getType() { - return type.get(); - } - - public void setType(Type type) { - this.type.set(type); - } - - public boolean getBundledJdk() { - return bundledJdk.getOrElse(true); - } - - public boolean isDocker() { - final Type type = this.type.get(); - return type == Type.DOCKER; - } - - public void setBundledJdk(Boolean bundledJdk) { - this.bundledJdk.set(bundledJdk); - } - - public boolean getFailIfUnavailable() { - return this.failIfUnavailable.get(); - } - - public void setFailIfUnavailable(boolean failIfUnavailable) { - this.failIfUnavailable.set(failIfUnavailable); - } - - public void setArchitecture(Architecture architecture) { - this.architecture.set(architecture); - } - - public Architecture getArchitecture() { - return this.architecture.get(); - } - - @Override - public String toString() { - return getName() + "_" + getType() + "_" + getVersion(); - } - - public String getFilepath() { - return configuration.getSingleFile().toString(); - } - - public Configuration getExtracted() { - switch (getType()) { - case DEB: - case DOCKER: - case RPM: - throw new UnsupportedOperationException( - "distribution type [" + getType() + "] for " + "opensearch distribution [" + name + "] cannot be extracted" - ); - - default: - return extracted; - } - } - - @Override - public TaskDependency getBuildDependencies() { - // For non-required Docker distributions, skip building the distribution is Docker is unavailable - if (isDocker() && getFailIfUnavailable() == false && dockerSupport.get().getDockerAvailability().isAvailable == false) { - return task -> Collections.emptySet(); - } - - return configuration.getBuildDependencies(); - } - - @Override - public Iterator iterator() { - return configuration.iterator(); - } - - // internal, make this distribution's configuration unmodifiable - void finalizeValues() { - - if (getType() == Type.INTEG_TEST_ZIP) { - if (platform.getOrNull() != null) { - throw new IllegalArgumentException( - "platform cannot be set on opensearch distribution [" + name + "] of type [integ_test_zip]" - ); - } - - if (bundledJdk.getOrNull() != null) { - throw new IllegalArgumentException( - "bundledJdk cannot be set on opensearch distribution [" + name + "] of type [integ_test_zip]" - ); - } - return; - } - - if (isDocker() == false && failIfUnavailable.get() == false) { - throw new IllegalArgumentException( - "failIfUnavailable cannot be 'false' on opensearch distribution [" + name + "] of type [" + getType() + "]" - ); - } - - if (getType() == Type.ARCHIVE) { - // defaults for archive, set here instead of via convention so integ-test-zip can verify they are not set - if (platform.isPresent() == false) { - platform.set(CURRENT_PLATFORM); - } - } else { // rpm, deb or docker - if (platform.isPresent()) { - throw new IllegalArgumentException( - "platform cannot be set on opensearch distribution [" + name + "] of type [" + getType() + "]" - ); - } - if (isDocker()) { - if (bundledJdk.isPresent()) { - throw new IllegalArgumentException( - "bundledJdk cannot be set on opensearch distribution [" + name + "] of type " + "[docker]" - ); - } - } - } - - if (bundledJdk.isPresent() == false) { - bundledJdk.set(true); - } - - version.finalizeValue(); - platform.finalizeValue(); - type.finalizeValue(); - bundledJdk.finalizeValue(); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchJavaPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchJavaPlugin.java deleted file mode 100644 index c701c47f9e68c..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchJavaPlugin.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar; -import nebula.plugin.info.InfoBrokerPlugin; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.opensearch.gradle.precommit.PrecommitTaskPlugin; -import org.opensearch.gradle.util.Util; -import org.gradle.api.Action; -import org.gradle.api.JavaVersion; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.ModuleDependency; -import org.gradle.api.artifacts.ProjectDependency; -import org.gradle.api.artifacts.ResolutionStrategy; -import org.gradle.api.plugins.BasePlugin; -import org.gradle.api.plugins.JavaLibraryPlugin; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.plugins.JavaPluginExtension; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.bundling.Jar; -import org.gradle.api.tasks.compile.AbstractCompile; -import org.gradle.api.tasks.compile.CompileOptions; -import org.gradle.api.tasks.compile.GroovyCompile; -import org.gradle.api.tasks.compile.JavaCompile; -import org.gradle.api.tasks.javadoc.Javadoc; -import org.gradle.external.javadoc.CoreJavadocOptions; -import org.gradle.language.base.plugins.LifecycleBasePlugin; - -import java.io.File; -import java.util.HashMap; -import java.util.List; -import java.util.function.Consumer; - -import static org.opensearch.gradle.util.Util.toStringable; - -/** - * A wrapper around Gradle's Java plugin that applies our common configuration. - */ -public class OpenSearchJavaPlugin implements Plugin { - @Override - public void apply(Project project) { - // make sure the global build info plugin is applied to the root project - project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class); - // common repositories setup - project.getPluginManager().apply(RepositoriesSetupPlugin.class); - project.getPluginManager().apply(JavaLibraryPlugin.class); - project.getPluginManager().apply(OpenSearchTestBasePlugin.class); - project.getPluginManager().apply(PrecommitTaskPlugin.class); - - configureConfigurations(project); - configureCompile(project); - configureInputNormalization(project); - configureJars(project); - configureJarManifest(project); - configureJavadoc(project); - - // convenience access to common versions used in dependencies - project.getExtensions().getExtraProperties().set("versions", VersionProperties.getVersions()); - } - - /** - * Makes dependencies non-transitive. - *

    - * Gradle allows setting all dependencies as non-transitive very easily. - * Sadly this mechanism does not translate into maven pom generation. In order - * to effectively make the pom act as if it has no transitive dependencies, - * we must exclude each transitive dependency of each direct dependency. - *

    - * Determining the transitive deps of a dependency which has been resolved as - * non-transitive is difficult because the process of resolving removes the - * transitive deps. To sidestep this issue, we create a configuration per - * direct dependency version. This specially named and unique configuration - * will contain all of the transitive dependencies of this particular - * dependency. We can then use this configuration during pom generation - * to iterate the transitive dependencies and add excludes. - */ - public static void configureConfigurations(Project project) { - // we want to test compileOnly deps! - Configuration compileOnlyConfig = project.getConfigurations().getByName(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME); - Configuration testImplementationConfig = project.getConfigurations().getByName(JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME); - testImplementationConfig.extendsFrom(compileOnlyConfig); - - // we are not shipping these jars, we act like dumb consumers of these things - if (project.getPath().startsWith(":test:fixtures") || project.getPath().equals(":build-tools")) { - return; - } - // fail on any conflicting dependency versions - project.getConfigurations().all(configuration -> { - if (configuration.getName().endsWith("Fixture")) { - // just a self contained test-fixture configuration, likely transitive and hellacious - return; - } - configuration.resolutionStrategy(ResolutionStrategy::failOnVersionConflict); - }); - - // force all dependencies added directly to compile/testImplementation to be non-transitive, except for ES itself - Consumer disableTransitiveDeps = configName -> { - Configuration config = project.getConfigurations().getByName(configName); - config.getDependencies().all(dep -> { - if (dep instanceof ModuleDependency - && dep instanceof ProjectDependency == false - && dep.getGroup().startsWith("org.opensearch") == false) { - ((ModuleDependency) dep).setTransitive(false); - } - }); - }; - disableTransitiveDeps.accept(JavaPlugin.API_CONFIGURATION_NAME); - disableTransitiveDeps.accept(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME); - disableTransitiveDeps.accept(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME); - disableTransitiveDeps.accept(JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME); - disableTransitiveDeps.accept(JavaPlugin.TEST_IMPLEMENTATION_CONFIGURATION_NAME); - } - - /** - * Adds compiler settings to the project - */ - public static void configureCompile(Project project) { - project.getExtensions().getExtraProperties().set("compactProfile", "full"); - - JavaPluginExtension java = project.getExtensions().getByType(JavaPluginExtension.class); - java.setSourceCompatibility(BuildParams.getMinimumRuntimeVersion()); - java.setTargetCompatibility(BuildParams.getMinimumRuntimeVersion()); - - project.afterEvaluate(p -> { - project.getTasks().withType(JavaCompile.class).configureEach(compileTask -> { - CompileOptions compileOptions = compileTask.getOptions(); - // TODO Discuss moving compileOptions.getCompilerArgs() to use provider api with Gradle team. - List compilerArgs = compileOptions.getCompilerArgs(); - // either disable annotation processor completely (default) or allow to enable them if an annotation processor is explicitly - // defined - if (compilerArgs.contains("-processor") == false) { - compilerArgs.add("-proc:none"); - } - - compileOptions.setEncoding("UTF-8"); - compileOptions.setIncremental(true); - // workaround for https://github.com/gradle/gradle/issues/14141 - compileTask.getConventionMapping().map("sourceCompatibility", () -> java.getSourceCompatibility().toString()); - compileTask.getConventionMapping().map("targetCompatibility", () -> java.getTargetCompatibility().toString()); - // The '--release is available from JDK-9 and above - if (BuildParams.getRuntimeJavaVersion().compareTo(JavaVersion.VERSION_1_8) > 0) { - compileOptions.getRelease().set(releaseVersionProviderFromCompileTask(project, compileTask)); - } - }); - // also apply release flag to groovy, which is used in build-tools - project.getTasks().withType(GroovyCompile.class).configureEach(compileTask -> { - // TODO: this probably shouldn't apply to groovy at all? - compileTask.getOptions().getRelease().set(releaseVersionProviderFromCompileTask(project, compileTask)); - }); - }); - } - - private static Provider releaseVersionProviderFromCompileTask(Project project, AbstractCompile compileTask) { - return project.provider(() -> { - JavaVersion javaVersion = JavaVersion.toVersion(compileTask.getTargetCompatibility()); - return Integer.parseInt(javaVersion.getMajorVersion()); - }); - } - - /** - * Apply runtime classpath input normalization so that changes in JAR manifests don't break build cacheability - */ - public static void configureInputNormalization(Project project) { - project.getNormalization().getRuntimeClasspath().ignore("META-INF/MANIFEST.MF"); - } - - /** - * Adds additional manifest info to jars - */ - static void configureJars(Project project) { - project.getTasks().withType(Jar.class).configureEach(jarTask -> { - // we put all our distributable files under distributions - jarTask.getDestinationDirectory().set(new File(project.getBuildDir(), "distributions")); - // fixup the jar manifest - // Explicitly using an Action interface as java lambdas - // are not supported by Gradle up-to-date checks - jarTask.doFirst(new Action() { - @Override - public void execute(Task task) { - // this doFirst is added before the info plugin, therefore it will run - // after the doFirst added by the info plugin, and we can override attributes - jarTask.getManifest().attributes(new HashMap() { - { - put("Build-Date", BuildParams.getBuildDate()); - put("Build-Java-Version", BuildParams.getGradleJavaVersion()); - } - }); - } - }); - }); - project.getPluginManager().withPlugin("com.github.johnrengelman.shadow", p -> { - project.getTasks().withType(ShadowJar.class).configureEach(shadowJar -> { - /* - * Replace the default "-all" classifier with null - * which will leave the classifier off of the file name. - */ - shadowJar.getArchiveClassifier().set((String) null); - /* - * Not all cases need service files merged but it is - * better to be safe - */ - shadowJar.mergeServiceFiles(); - }); - // Add "original" classifier to the non-shadowed JAR to distinguish it from the shadow JAR - project.getTasks().named(JavaPlugin.JAR_TASK_NAME, Jar.class).configure(jar -> jar.getArchiveClassifier().set("original")); - // Make sure we assemble the shadow jar - project.getTasks().named(BasePlugin.ASSEMBLE_TASK_NAME).configure(task -> task.dependsOn("shadowJar")); - }); - } - - private static void configureJarManifest(Project project) { - project.getPlugins().withType(InfoBrokerPlugin.class).whenPluginAdded(manifestPlugin -> { - manifestPlugin.add("Module-Origin", toStringable(BuildParams::getGitOrigin)); - manifestPlugin.add("Change", toStringable(BuildParams::getGitRevision)); - manifestPlugin.add("X-Compile-OpenSearch-Version", toStringable(VersionProperties::getOpenSearch)); - manifestPlugin.add("X-Compile-Lucene-Version", toStringable(VersionProperties::getLucene)); - manifestPlugin.add( - "X-Compile-OpenSearch-Snapshot", - toStringable(() -> Boolean.toString(VersionProperties.isOpenSearchSnapshot())) - ); - }); - - project.getPluginManager().apply("nebula.info-broker"); - project.getPluginManager().apply("nebula.info-basic"); - project.getPluginManager().apply("nebula.info-java"); - project.getPluginManager().apply("nebula.info-jar"); - } - - private static void configureJavadoc(Project project) { - project.getTasks().withType(Javadoc.class).configureEach(javadoc -> { - - /* - * Generate docs using html5 to suppress a warning from `javadoc` - * that the default will change to html5 in the future. - */ - CoreJavadocOptions javadocOptions = (CoreJavadocOptions) javadoc.getOptions(); - if (BuildParams.getRuntimeJavaVersion().compareTo(JavaVersion.VERSION_1_8) > 0) { - javadocOptions.addBooleanOption("html5", true); - } - }); - - TaskProvider javadoc = project.getTasks().withType(Javadoc.class).named("javadoc"); - javadoc.configure(doc -> - // remove compiled classes from the Javadoc classpath: - // http://mail.openjdk.java.net/pipermail/javadoc-dev/2018-January/000400.html - doc.setClasspath(Util.getJavaMainSourceSet(project).get().getCompileClasspath())); - - // ensure javadoc task is run with 'check' - project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(javadoc)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java deleted file mode 100644 index 07a4a9f9b66e6..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/OpenSearchTestBasePlugin.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import com.github.jengelman.gradle.plugins.shadow.ShadowBasePlugin; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.opensearch.gradle.test.ErrorReportingTestListener; -import org.opensearch.gradle.util.Util; -import org.gradle.api.Action; -import org.gradle.api.JavaVersion; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.file.FileCollection; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.SourceSetContainer; -import org.gradle.api.tasks.testing.Test; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; - -import static org.opensearch.gradle.util.FileUtils.mkdirs; -import static org.opensearch.gradle.util.GradleUtils.maybeConfigure; - -/** - * Applies commonly used settings to all Test tasks in the project - */ -public class OpenSearchTestBasePlugin implements Plugin { - - @Override - public void apply(Project project) { - // for fips mode check - project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class); - // Default test task should run only unit tests - maybeConfigure(project.getTasks(), "test", Test.class, task -> task.include("**/*Tests.class")); - - // none of this stuff is applicable to the `:buildSrc` project tests - if (project.getPath().equals(":build-tools")) { - return; - } - - File heapdumpDir = new File(project.getBuildDir(), "heapdump"); - - project.getTasks().withType(Test.class).configureEach(test -> { - File testOutputDir = new File(test.getReports().getJunitXml().getDestination(), "output"); - - ErrorReportingTestListener listener = new ErrorReportingTestListener(test.getTestLogging(), test.getLogger(), testOutputDir); - test.getExtensions().add("errorReportingTestListener", listener); - test.addTestOutputListener(listener); - test.addTestListener(listener); - - /* - * We use lazy-evaluated strings in order to configure system properties whose value will not be known until - * execution time (e.g. cluster port numbers). Adding these via the normal DSL doesn't work as these get treated - * as task inputs and therefore Gradle attempts to snapshot them before/after task execution. This fails due - * to the GStrings containing references to non-serializable objects. - * - * We bypass this by instead passing this system properties vi a CommandLineArgumentProvider. This has the added - * side-effect that these properties are NOT treated as inputs, therefore they don't influence things like the - * build cache key or up to date checking. - */ - SystemPropertyCommandLineArgumentProvider nonInputProperties = new SystemPropertyCommandLineArgumentProvider(); - - // We specifically use an anonymous inner class here because lambda task actions break Gradle cacheability - // See: https://docs.gradle.org/current/userguide/more_about_tasks.html#sec:how_does_it_work - test.doFirst(new Action() { - @Override - public void execute(Task t) { - mkdirs(testOutputDir); - mkdirs(heapdumpDir); - mkdirs(test.getWorkingDir()); - mkdirs(test.getWorkingDir().toPath().resolve("temp").toFile()); - - // TODO remove once jvm.options are added to test system properties - if (BuildParams.getRuntimeJavaVersion() == JavaVersion.VERSION_1_8) { - test.systemProperty("java.locale.providers", "SPI,JRE"); - } else { - test.systemProperty("java.locale.providers", "SPI,COMPAT"); - test.jvmArgs("--illegal-access=warn"); - } - } - }); - test.getJvmArgumentProviders().add(nonInputProperties); - test.getExtensions().add("nonInputProperties", nonInputProperties); - - test.setWorkingDir(project.file(project.getBuildDir() + "/testrun/" + test.getName())); - test.setMaxParallelForks(Integer.parseInt(System.getProperty("tests.jvms", BuildParams.getDefaultParallel().toString()))); - - test.exclude("**/*$*.class"); - - test.jvmArgs( - "-Xmx" + System.getProperty("tests.heap.size", "512m"), - "-Xms" + System.getProperty("tests.heap.size", "512m"), - "-XX:+HeapDumpOnOutOfMemoryError" - ); - - test.getJvmArgumentProviders().add(new SimpleCommandLineArgumentProvider("-XX:HeapDumpPath=" + heapdumpDir)); - - String argline = System.getProperty("tests.jvm.argline"); - if (argline != null) { - test.jvmArgs((Object[]) argline.split(" ")); - } - - if (Util.getBooleanProperty("tests.asserts", true)) { - test.jvmArgs("-ea", "-esa"); - } - - Map sysprops = new HashMap() { - { - put("java.awt.headless", "true"); - put("tests.gradle", "true"); - put("tests.artifact", project.getName()); - put("tests.task", test.getPath()); - put("tests.security.manager", "true"); - put("jna.nosys", "true"); - } - }; - test.systemProperties(sysprops); - - // ignore changing test seed when build is passed -Dignore.tests.seed for cacheability experimentation - if (System.getProperty("ignore.tests.seed") != null) { - nonInputProperties.systemProperty("tests.seed", BuildParams.getTestSeed()); - } else { - test.systemProperty("tests.seed", BuildParams.getTestSeed()); - } - - // don't track these as inputs since they contain absolute paths and break cache relocatability - File gradleHome = project.getGradle().getGradleUserHomeDir(); - String gradleVersion = project.getGradle().getGradleVersion(); - nonInputProperties.systemProperty("gradle.dist.lib", new File(project.getGradle().getGradleHomeDir(), "lib")); - nonInputProperties.systemProperty( - "gradle.worker.jar", - gradleHome + "/caches/" + gradleVersion + "/workerMain/gradle-worker.jar" - ); - nonInputProperties.systemProperty("gradle.user.home", gradleHome); - // we use 'temp' relative to CWD since this is per JVM and tests are forbidden from writing to CWD - nonInputProperties.systemProperty("java.io.tmpdir", test.getWorkingDir().toPath().resolve("temp")); - - // TODO: remove setting logging level via system property - test.systemProperty("tests.logger.level", "WARN"); - System.getProperties().entrySet().forEach(entry -> { - if ((entry.getKey().toString().startsWith("tests.") || entry.getKey().toString().startsWith("opensearch."))) { - test.systemProperty(entry.getKey().toString(), entry.getValue()); - } - }); - - // TODO: remove this once ctx isn't added to update script params in 7.0 - test.systemProperty("opensearch.scripting.update.ctx_in_params", "false"); - - // TODO: remove this property in 8.0 - test.systemProperty("opensearch.search.rewrite_sort", "true"); - - // TODO: remove this once cname is prepended to transport.publish_address by default in 8.0 - test.systemProperty("opensearch.transport.cname_in_publish_address", "true"); - - // Set netty system properties to the properties we configure in jvm.options - test.systemProperty("io.netty.noUnsafe", "true"); - test.systemProperty("io.netty.noKeySetOptimization", "true"); - test.systemProperty("io.netty.recycler.maxCapacityPerThread", "0"); - - test.testLogging(logging -> { - logging.setShowExceptions(true); - logging.setShowCauses(true); - logging.setExceptionFormat("full"); - logging.setShowStandardStreams(Util.getBooleanProperty("tests.output", false)); - }); - - if (OS.current().equals(OS.WINDOWS) && System.getProperty("tests.timeoutSuite") == null) { - // override the suite timeout to 30 mins for windows, because it has the most inefficient filesystem known to man - test.systemProperty("tests.timeoutSuite", "1800000!"); - } - - /* - * If this project builds a shadow JAR than any unit tests should test against that artifact instead of - * compiled class output and dependency jars. This better emulates the runtime environment of consumers. - */ - project.getPluginManager().withPlugin("com.github.johnrengelman.shadow", p -> { - // Remove output class files and any other dependencies from the test classpath, since the shadow JAR includes these - FileCollection mainRuntime = project.getExtensions() - .getByType(SourceSetContainer.class) - .getByName(SourceSet.MAIN_SOURCE_SET_NAME) - .getRuntimeClasspath(); - // Add any "shadow" dependencies. These are dependencies that are *not* bundled into the shadow JAR - Configuration shadowConfig = project.getConfigurations().getByName(ShadowBasePlugin.getCONFIGURATION_NAME()); - // Add the shadow JAR artifact itself - FileCollection shadowJar = project.files(project.getTasks().named("shadowJar")); - - test.setClasspath(test.getClasspath().minus(mainRuntime).plus(shadowConfig).plus(shadowJar)); - }); - }); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/PropertyNormalization.java b/buildSrc/src/main/java/org/opensearch/gradle/PropertyNormalization.java deleted file mode 100644 index b856ac1908c87..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/PropertyNormalization.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -public enum PropertyNormalization { - /** - * Uses default strategy based on runtime property type. - */ - DEFAULT, - - /** - * Ignores property value completely for the purposes of input snapshotting. - */ - IGNORE_VALUE -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/PublishPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/PublishPlugin.java deleted file mode 100644 index e2bd3e71f5fc9..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/PublishPlugin.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import com.github.jengelman.gradle.plugins.shadow.ShadowBasePlugin; -import com.github.jengelman.gradle.plugins.shadow.ShadowExtension; -import groovy.util.Node; -import groovy.util.NodeList; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.precommit.PomValidationPrecommitPlugin; -import org.opensearch.gradle.util.Util; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.XmlProvider; -import org.gradle.api.artifacts.ProjectDependency; -import org.gradle.api.plugins.BasePlugin; -import org.gradle.api.plugins.BasePluginConvention; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.publish.PublishingExtension; -import org.gradle.api.publish.maven.MavenPublication; -import org.gradle.api.publish.maven.tasks.GenerateMavenPom; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.bundling.Jar; -import org.gradle.language.base.plugins.LifecycleBasePlugin; - -import java.util.concurrent.Callable; - -import static org.opensearch.gradle.util.GradleUtils.maybeConfigure; - -public class PublishPlugin implements Plugin { - - @Override - public void apply(Project project) { - project.getPluginManager().apply("nebula.maven-base-publish"); - project.getPluginManager().apply(PomValidationPrecommitPlugin.class); - - configureJavadocJar(project); - configureSourcesJar(project); - configurePomGeneration(project); - } - - private static String getArchivesBaseName(Project project) { - return project.getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName(); - } - - /**Configuration generation of maven poms. */ - private static void configurePomGeneration(Project project) { - - TaskProvider generatePomTask = project.getTasks().register("generatePom"); - - maybeConfigure(project.getTasks(), LifecycleBasePlugin.ASSEMBLE_TASK_NAME, assemble -> assemble.dependsOn(generatePomTask)); - - project.getTasks().withType(GenerateMavenPom.class).configureEach(pomTask -> pomTask.setDestination(new Callable() { - @Override - public String call() throws Exception { - return String.format( - "%s/distributions/%s-%s.pom", - project.getBuildDir(), - getArchivesBaseName(project), - project.getVersion() - ); - } - })); - - PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); - - project.getPluginManager().withPlugin("com.github.johnrengelman.shadow", plugin -> { - MavenPublication publication = publishing.getPublications().maybeCreate("shadow", MavenPublication.class); - ShadowExtension shadow = project.getExtensions().getByType(ShadowExtension.class); - shadow.component(publication); - // Workaround for https://github.com/johnrengelman/shadow/issues/334 - // Here we manually add any project dependencies in the "shadow" configuration to our generated POM - publication.getPom().withXml(xml -> { - Node root = xml.asNode(); - root.appendNode("name", project.getName()); - root.appendNode("description", project.getDescription()); - Node dependenciesNode = (Node) ((NodeList) root.get("dependencies")).get(0); - project.getConfigurations().getByName(ShadowBasePlugin.getCONFIGURATION_NAME()).getAllDependencies().all(dependency -> { - if (dependency instanceof ProjectDependency) { - Node dependencyNode = dependenciesNode.appendNode("dependency"); - dependencyNode.appendNode("groupId", dependency.getGroup()); - ProjectDependency projectDependency = (ProjectDependency) dependency; - String artifactId = getArchivesBaseName(projectDependency.getDependencyProject()); - dependencyNode.appendNode("artifactId", artifactId); - dependencyNode.appendNode("version", dependency.getVersion()); - dependencyNode.appendNode("scope", "compile"); - } - }); - }); - }); - - publishing.getPublications().withType(MavenPublication.class, publication -> { - // Add git origin info to generated POM files - publication.getPom().withXml(PublishPlugin::addScmInfo); - - // have to defer this until archivesBaseName is set - project.afterEvaluate(p -> publication.setArtifactId(getArchivesBaseName(project))); - - // publish sources and javadoc for Java projects. - if (project.getPluginManager().hasPlugin("opensearch.java")) { - publication.artifact(project.getTasks().getByName("sourcesJar")); - publication.artifact(project.getTasks().getByName("javadocJar")); - } - - generatePomTask.configure( - t -> t.dependsOn(String.format("generatePomFileFor%sPublication", Util.capitalize(publication.getName()))) - ); - }); - - } - - private static void addScmInfo(XmlProvider xml) { - Node root = xml.asNode(); - root.appendNode("url", Util.urlFromOrigin(BuildParams.getGitOrigin())); - Node scmNode = root.appendNode("scm"); - scmNode.appendNode("url", BuildParams.getGitOrigin()); - } - - /** Adds a javadocJar task to generate a jar containing javadocs. */ - private static void configureJavadocJar(Project project) { - project.getPlugins().withId("opensearch.java", p -> { - TaskProvider javadocJarTask = project.getTasks().register("javadocJar", Jar.class); - javadocJarTask.configure(jar -> { - jar.getArchiveClassifier().set("javadoc"); - jar.setGroup("build"); - jar.setDescription("Assembles a jar containing javadocs."); - jar.from(project.getTasks().named(JavaPlugin.JAVADOC_TASK_NAME)); - }); - maybeConfigure(project.getTasks(), BasePlugin.ASSEMBLE_TASK_NAME, t -> t.dependsOn(javadocJarTask)); - }); - } - - static void configureSourcesJar(Project project) { - project.getPlugins().withId("opensearch.java", p -> { - TaskProvider sourcesJarTask = project.getTasks().register("sourcesJar", Jar.class); - sourcesJarTask.configure(jar -> { - jar.getArchiveClassifier().set("sources"); - jar.setGroup("build"); - jar.setDescription("Assembles a jar containing source files."); - SourceSet mainSourceSet = Util.getJavaMainSourceSet(project).get(); - jar.from(mainSourceSet.getAllSource()); - }); - maybeConfigure(project.getTasks(), BasePlugin.ASSEMBLE_TASK_NAME, t -> t.dependsOn(sourcesJarTask)); - }); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/ReaperPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/ReaperPlugin.java deleted file mode 100644 index af9dc6e053fb2..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/ReaperPlugin.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.gradle.api.Plugin; -import org.gradle.api.Project; - -import java.lang.management.ManagementFactory; -import java.nio.file.Path; - -/** - * A plugin to handle reaping external services spawned by a build if Gradle dies. - */ -public class ReaperPlugin implements Plugin { - - @Override - public void apply(Project project) { - if (project != project.getRootProject()) { - throw new IllegalArgumentException("ReaperPlugin can only be applied to the root project of a build"); - } - - project.getPlugins().apply(GlobalBuildInfoPlugin.class); - - Path inputDir = project.getRootDir().toPath().resolve(".gradle").resolve("reaper").resolve("build-" + getProcessId("xx")); - ReaperService service = project.getExtensions() - .create("reaper", ReaperService.class, project, project.getBuildDir().toPath(), inputDir); - - project.getGradle().buildFinished(result -> service.shutdown()); - } - - private static String getProcessId(final String fallback) { - // Note: may fail in some JVM implementations - // therefore fallback has to be provided - - // something like '@', at least in SUN / Oracle JVMs - final String jvmName = ManagementFactory.getRuntimeMXBean().getName(); - final int index = jvmName.indexOf('@'); - - if (index < 1) { - // part before '@' empty (index = 0) / '@' not found (index = -1) - return fallback; - } - - try { - return Long.toString(Long.parseLong(jvmName.substring(0, index))); - } catch (NumberFormatException e) { - // ignore - } - return fallback; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/ReaperService.java b/buildSrc/src/main/java/org/opensearch/gradle/ReaperService.java deleted file mode 100644 index 19660c672af3a..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/ReaperService.java +++ /dev/null @@ -1,200 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.info.BuildParams; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.logging.Logger; -import org.gradle.internal.jvm.Jvm; - -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UncheckedIOException; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class ReaperService { - - private static final String REAPER_CLASS = "org/opensearch/gradle/reaper/Reaper.class"; - private static final Pattern REAPER_JAR_PATH_PATTERN = Pattern.compile("file:(.*)!/" + REAPER_CLASS); - private final Logger logger; - private final boolean isInternal; - private final Path buildDir; - private final Path inputDir; - private final Path logFile; - private volatile Process reaperProcess; - - public ReaperService(Project project, Path buildDir, Path inputDir) { - this.logger = project.getLogger(); - this.isInternal = BuildParams.isInternal(); - this.buildDir = buildDir; - this.inputDir = inputDir; - this.logFile = inputDir.resolve("reaper.log"); - } - - /** - * Register a pid that will be killed by the reaper. - */ - public void registerPid(String serviceId, long pid) { - String[] killPidCommand = OS.conditional() - .onWindows(() -> new String[] { "Taskkill", "/F", "/PID", String.valueOf(pid) }) - .onUnix(() -> new String[] { "kill", "-9", String.valueOf(pid) }) - .supply(); - registerCommand(serviceId, killPidCommand); - } - - /** - * Register a system command that will be run by the reaper. - */ - public void registerCommand(String serviceId, String... command) { - ensureReaperStarted(); - - try (FileWriter writer = new FileWriter(getCmdFile(serviceId).toFile())) { - writer.write(String.join(" ", command)); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - private Path getCmdFile(String serviceId) { - return inputDir.resolve(serviceId.replaceAll("[^a-zA-Z0-9]", "-") + ".cmd"); - } - - public void unregister(String serviceId) { - try { - Files.deleteIfExists(getCmdFile(serviceId)); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - void shutdown() { - if (reaperProcess != null) { - ensureReaperAlive(); - try { - reaperProcess.getOutputStream().close(); - logger.info("Waiting for reaper to exit normally"); - if (reaperProcess.waitFor() != 0) { - throw new GradleException("Reaper process failed. Check log at " + inputDir.resolve("error.log") + " for details"); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - - } - } - - private synchronized void ensureReaperStarted() { - if (reaperProcess == null) { - try { - Path jarPath = locateReaperJar(); - - // ensure the input directory exists - Files.createDirectories(inputDir); - - // start the reaper - ProcessBuilder builder = new ProcessBuilder( - Jvm.current().getJavaExecutable().toString(), // same jvm as gradle - "-Xms4m", - "-Xmx16m", // no need for a big heap, just need to read some files and execute - "-jar", - jarPath.toString(), - inputDir.toString() - ); - logger.info("Launching reaper: " + String.join(" ", builder.command())); - // be explicit for stdin, we use closing of the pipe to signal shutdown to the reaper - builder.redirectInput(ProcessBuilder.Redirect.PIPE); - builder.redirectOutput(logFile.toFile()); - builder.redirectError(logFile.toFile()); - reaperProcess = builder.start(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } else { - ensureReaperAlive(); - } - } - - private Path locateReaperJar() { - if (isInternal) { - // when running inside the Elasticsearch build just pull find the jar in the runtime classpath - URL main = this.getClass().getClassLoader().getResource(REAPER_CLASS); - String mainPath = main.getFile(); - Matcher matcher = REAPER_JAR_PATH_PATTERN.matcher(mainPath); - - if (matcher.matches()) { - String path = matcher.group(1); - return Paths.get(OS.conditional().onWindows(() -> path.substring(1)).onUnix(() -> path).supply()); - } else { - throw new RuntimeException("Unable to locate " + REAPER_CLASS + " on build classpath."); - } - } else { - // copy the reaper jar - Path jarPath = buildDir.resolve("reaper").resolve("reaper.jar"); - try { - Files.createDirectories(jarPath.getParent()); - } catch (IOException e) { - throw new UncheckedIOException("Unable to create reaper JAR output directory " + jarPath.getParent(), e); - } - - try ( - OutputStream out = Files.newOutputStream(jarPath); - InputStream jarInput = this.getClass().getResourceAsStream("/META-INF/reaper.jar"); - ) { - logger.info("Copying reaper.jar..."); - byte[] buffer = new byte[4096]; - int len; - while ((len = jarInput.read(buffer)) > 0) { - out.write(buffer, 0, len); - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } - - return jarPath; - } - } - - private void ensureReaperAlive() { - if (reaperProcess.isAlive() == false) { - throw new IllegalStateException("Reaper process died unexpectedly! Check the log at " + logFile.toString()); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/RepositoriesSetupPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/RepositoriesSetupPlugin.java deleted file mode 100644 index 30847f0648c5c..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/RepositoriesSetupPlugin.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.GradleException; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.artifacts.dsl.RepositoryHandler; -import org.gradle.api.artifacts.repositories.IvyArtifactRepository; -import org.gradle.api.artifacts.repositories.MavenArtifactRepository; - -import java.net.MalformedURLException; -import java.net.URI; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class RepositoriesSetupPlugin implements Plugin { - - private static final List SECURE_URL_SCHEMES = Arrays.asList("file", "https", "s3"); - private static final Pattern LUCENE_SNAPSHOT_REGEX = Pattern.compile("\\w+-snapshot-([a-z0-9]+)"); - - @Override - public void apply(Project project) { - configureRepositories(project); - } - - /** - * Adds repositories used by ES projects and dependencies - */ - public static void configureRepositories(Project project) { - // ensure all repositories use secure urls - // TODO: remove this with gradle 7.0, which no longer allows insecure urls - project.getRepositories().all(repository -> { - if (repository instanceof MavenArtifactRepository) { - final MavenArtifactRepository maven = (MavenArtifactRepository) repository; - assertRepositoryURIIsSecure(maven.getName(), project.getPath(), maven.getUrl()); - for (URI uri : maven.getArtifactUrls()) { - assertRepositoryURIIsSecure(maven.getName(), project.getPath(), uri); - } - } else if (repository instanceof IvyArtifactRepository) { - final IvyArtifactRepository ivy = (IvyArtifactRepository) repository; - assertRepositoryURIIsSecure(ivy.getName(), project.getPath(), ivy.getUrl()); - } - }); - RepositoryHandler repos = project.getRepositories(); - if (System.getProperty("repos.mavenLocal") != null) { - // with -Drepos.mavenLocal=true we can force checking the local .m2 repo which is - // useful for development ie. bwc tests where we install stuff in the local repository - // such that we don't have to pass hardcoded files to gradle - repos.mavenLocal(); - } - repos.mavenCentral(); - - String luceneVersion = VersionProperties.getLucene(); - if (luceneVersion.contains("-snapshot")) { - // extract the revision number from the version with a regex matcher - Matcher matcher = LUCENE_SNAPSHOT_REGEX.matcher(luceneVersion); - if (matcher.find() == false) { - throw new GradleException("Malformed lucene snapshot version: " + luceneVersion); - } - String revision = matcher.group(1); - // TODO(cleanup) - Setup own lucene snapshot repo - MavenArtifactRepository luceneRepo = repos.maven(repo -> { - repo.setName("lucene-snapshots"); - repo.setUrl("https://artifacts.opensearch.org/snapshots/lucene/"); - }); - repos.exclusiveContent(exclusiveRepo -> { - exclusiveRepo.filter( - descriptor -> descriptor.includeVersionByRegex("org\\.apache\\.lucene", ".*", ".*-snapshot-" + revision) - ); - exclusiveRepo.forRepositories(luceneRepo); - }); - } - } - - private static void assertRepositoryURIIsSecure(final String repositoryName, final String projectPath, final URI uri) { - if (uri != null && SECURE_URL_SCHEMES.contains(uri.getScheme()) == false) { - String url; - try { - url = uri.toURL().toString(); - } catch (MalformedURLException e) { - throw new IllegalStateException(e); - } - final String message = String.format( - Locale.ROOT, - "repository [%s] on project with path [%s] is not using a secure protocol for artifacts on [%s]", - repositoryName, - projectPath, - url - ); - throw new GradleException(message); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/SimpleCommandLineArgumentProvider.java b/buildSrc/src/main/java/org/opensearch/gradle/SimpleCommandLineArgumentProvider.java deleted file mode 100644 index 77dc10f635b71..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/SimpleCommandLineArgumentProvider.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.process.CommandLineArgumentProvider; - -import java.util.Arrays; -import java.util.List; - -/** - * A {@link CommandLineArgumentProvider} implementation that simply returns the given list. This implementation does not track any - * arguments as inputs, so this is useful for passing arguments that should not be used for the purposes of input snapshotting. - */ -public class SimpleCommandLineArgumentProvider implements CommandLineArgumentProvider { - private final List arguments; - - public SimpleCommandLineArgumentProvider(String... arguments) { - this.arguments = Arrays.asList(arguments); - } - - @Override - public Iterable asArguments() { - return arguments; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/SystemPropertyCommandLineArgumentProvider.java b/buildSrc/src/main/java/org/opensearch/gradle/SystemPropertyCommandLineArgumentProvider.java deleted file mode 100644 index f8182deac1489..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/SystemPropertyCommandLineArgumentProvider.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.gradle.api.tasks.Input; -import org.gradle.process.CommandLineArgumentProvider; - -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -public class SystemPropertyCommandLineArgumentProvider implements CommandLineArgumentProvider { - private final Map systemProperties = new LinkedHashMap<>(); - - public void systemProperty(String key, Supplier value) { - systemProperties.put(key, value); - } - - public void systemProperty(String key, Object value) { - systemProperties.put(key, value); - } - - @Override - public Iterable asArguments() { - return systemProperties.entrySet() - .stream() - .map( - entry -> "-D" - + entry.getKey() - + "=" - + (entry.getValue() instanceof Supplier ? ((Supplier) entry.getValue()).get() : entry.getValue()) - ) - .collect(Collectors.toList()); - } - - // Track system property keys as an input so our build cache key will change if we add properties but values are still ignored - @Input - public Iterable getPropertyNames() { - return systemProperties.keySet(); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/Version.java b/buildSrc/src/main/java/org/opensearch/gradle/Version.java deleted file mode 100644 index 8e00b4419f5f3..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/Version.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.util.Objects; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -/** - * Encapsulates comparison and printing logic for an x.y.z version. - */ -public final class Version implements Comparable { - private final int major; - private final int minor; - private final int revision; - private final int id; - // used to identify rebase to OpenSearch 1.0.0 - public static final int MASK = 0x08000000; - - /** - * Specifies how a version string should be parsed. - */ - public enum Mode { - /** - * Strict parsing only allows known suffixes after the patch number: "-alpha", "-beta" or "-rc". The - * suffix "-SNAPSHOT" is also allowed, either after the patch number, or after the other suffices. - */ - STRICT, - - /** - * Relaxed parsing allows any alphanumeric suffix after the patch number. - */ - RELAXED - } - - private static final Pattern pattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)(-alpha\\d+|-beta\\d+|-rc\\d+)?(-SNAPSHOT)?"); - - private static final Pattern relaxedPattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)(-[a-zA-Z0-9_]+|\\+[a-zA-Z0-9_]+)*?"); - - public Version(int major, int minor, int revision) { - Objects.requireNonNull(major, "major version can't be null"); - Objects.requireNonNull(minor, "minor version can't be null"); - Objects.requireNonNull(revision, "revision version can't be null"); - this.major = major; - this.minor = minor; - this.revision = revision; - - // currently snapshot is not taken into account - int id = major * 10000000 + minor * 100000 + revision * 1000; - // identify if new OpenSearch version 1 - this.id = major == 1 ? id ^ MASK : id; - } - - private static int parseSuffixNumber(String substring) { - if (substring.isEmpty()) { - throw new IllegalArgumentException("Invalid suffix, must contain a number e.x. alpha2"); - } - return Integer.parseInt(substring); - } - - public static Version fromString(final String s) { - return fromString(s, Mode.STRICT); - } - - public static Version fromString(final String s, final Mode mode) { - Objects.requireNonNull(s); - Matcher matcher = mode == Mode.STRICT ? pattern.matcher(s) : relaxedPattern.matcher(s); - if (matcher.matches() == false) { - String expected = mode == Mode.STRICT - ? "major.minor.revision[-(alpha|beta|rc)Number][-SNAPSHOT]" - : "major.minor.revision[-extra]"; - throw new IllegalArgumentException("Invalid version format: '" + s + "'. Should be " + expected); - } - - return new Version(Integer.parseInt(matcher.group(1)), parseSuffixNumber(matcher.group(2)), parseSuffixNumber(matcher.group(3))); - } - - @Override - public String toString() { - return String.valueOf(getMajor()) + "." + String.valueOf(getMinor()) + "." + String.valueOf(getRevision()); - } - - public boolean before(Version compareTo) { - return id < compareTo.getId(); - } - - public boolean before(String compareTo) { - return before(fromString(compareTo)); - } - - public boolean onOrBefore(Version compareTo) { - return id <= compareTo.getId(); - } - - public boolean onOrBefore(String compareTo) { - return onOrBefore(fromString(compareTo)); - } - - public boolean onOrAfter(Version compareTo) { - return id >= compareTo.getId(); - } - - public boolean onOrAfter(String compareTo) { - return onOrAfter(fromString(compareTo)); - } - - public boolean after(Version compareTo) { - return id > compareTo.getId(); - } - - public boolean after(String compareTo) { - return after(fromString(compareTo)); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Version version = (Version) o; - return major == version.major && minor == version.minor && revision == version.revision; - } - - @Override - public int hashCode() { - return Objects.hash(major, minor, revision, id); - } - - public int getMajor() { - return major; - } - - public int getMinor() { - return minor; - } - - public int getRevision() { - return revision; - } - - protected int getId() { - return id; - } - - @Override - public int compareTo(Version other) { - return Integer.compare(getId(), other.getId()); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/VersionProperties.java b/buildSrc/src/main/java/org/opensearch/gradle/VersionProperties.java deleted file mode 100644 index 2b50e59de04d3..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/VersionProperties.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -/** - * Accessor for shared dependency versions used by opensearch, namely the opensearch and lucene versions. - */ -public class VersionProperties { - - public static String getOpenSearch() { - return opensearch; - } - - public static Version getOpenSearchVersion() { - return Version.fromString(opensearch); - } - - public static String getLucene() { - return lucene; - } - - public static String getBundledJdk(final String platform) { - switch (platform) { - case "darwin": // fall trough - case "mac": - return bundledJdkDarwin; - case "freebsd": - return bundledJdkFreeBSD; - case "linux": - return bundledJdkLinux; - case "windows": - return bundledJdkWindows; - default: - throw new IllegalArgumentException("unknown platform [" + platform + "]"); - } - } - - public static String getBundledJdkVendor() { - return bundledJdkVendor; - } - - public static Map getVersions() { - return versions; - } - - private static final String opensearch; - private static final String lucene; - private static final String bundledJdkDarwin; - private static final String bundledJdkFreeBSD; - private static final String bundledJdkLinux; - private static final String bundledJdkWindows; - private static final String bundledJdkVendor; - private static final Map versions = new HashMap(); - - static { - Properties props = getVersionProperties(); - opensearch = props.getProperty("opensearch"); - lucene = props.getProperty("lucene"); - bundledJdkVendor = props.getProperty("bundled_jdk_vendor"); - final String bundledJdk = props.getProperty("bundled_jdk"); - bundledJdkDarwin = props.getProperty("bundled_jdk_darwin", bundledJdk); - bundledJdkFreeBSD = props.getProperty("bundled_jdk_freebsd", bundledJdk); - bundledJdkLinux = props.getProperty("bundled_jdk_linux", bundledJdk); - bundledJdkWindows = props.getProperty("bundled_jdk_windows", bundledJdk); - - for (String property : props.stringPropertyNames()) { - versions.put(property, props.getProperty(property)); - } - } - - private static Properties getVersionProperties() { - Properties props = new Properties(); - try (InputStream propsStream = VersionProperties.class.getResourceAsStream("/version.properties")) { - if (propsStream == null) { - throw new IllegalStateException("/version.properties resource missing"); - } - props.load(propsStream); - } catch (IOException e) { - throw new IllegalStateException("Failed to load version properties", e); - } - return props; - } - - public static boolean isOpenSearchSnapshot() { - return opensearch.endsWith("-SNAPSHOT"); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/dependencies/CompileOnlyResolvePlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/dependencies/CompileOnlyResolvePlugin.java deleted file mode 100644 index c690367a13b86..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/dependencies/CompileOnlyResolvePlugin.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.dependencies; - -import org.gradle.api.NamedDomainObjectProvider; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.plugins.JavaPlugin; - -public class CompileOnlyResolvePlugin implements Plugin { - public static final String RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME = "resolveableCompileOnly"; - - @Override - public void apply(Project project) { - project.getConfigurations().all(configuration -> { - if (configuration.getName().equals(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME)) { - NamedDomainObjectProvider resolvableCompileOnly = project.getConfigurations() - .register(RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME); - resolvableCompileOnly.configure((c) -> { - c.setCanBeResolved(true); - c.setCanBeConsumed(false); - c.extendsFrom(configuration); - }); - } - }); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerBuildTask.java b/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerBuildTask.java deleted file mode 100644 index bb2a6d37362e1..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerBuildTask.java +++ /dev/null @@ -1,212 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.docker; - -import org.opensearch.gradle.LoggedExec; -import org.gradle.api.DefaultTask; -import org.gradle.api.GradleException; -import org.gradle.api.file.DirectoryProperty; -import org.gradle.api.file.RegularFileProperty; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.provider.ListProperty; -import org.gradle.api.provider.Property; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputDirectory; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.PathSensitive; -import org.gradle.api.tasks.PathSensitivity; -import org.gradle.api.tasks.TaskAction; -import org.gradle.process.ExecOperations; -import org.gradle.workers.WorkAction; -import org.gradle.workers.WorkParameters; -import org.gradle.workers.WorkerExecutor; - -import javax.inject.Inject; -import java.io.IOException; -import java.util.Arrays; - -public class DockerBuildTask extends DefaultTask { - private static final Logger LOGGER = Logging.getLogger(DockerBuildTask.class); - - private final WorkerExecutor workerExecutor; - private final RegularFileProperty markerFile = getProject().getObjects().fileProperty(); - private final DirectoryProperty dockerContext = getProject().getObjects().directoryProperty(); - - private String[] tags; - private boolean pull = true; - private boolean noCache = true; - private String[] baseImages; - - @Inject - public DockerBuildTask(WorkerExecutor workerExecutor) { - this.workerExecutor = workerExecutor; - this.markerFile.set(getProject().getLayout().getBuildDirectory().file("markers/" + this.getName() + ".marker")); - } - - @TaskAction - public void build() { - workerExecutor.noIsolation().submit(DockerBuildAction.class, params -> { - params.getDockerContext().set(dockerContext); - params.getMarkerFile().set(markerFile); - params.getTags().set(Arrays.asList(tags)); - params.getPull().set(pull); - params.getNoCache().set(noCache); - params.getBaseImages().set(baseImages); - }); - } - - @InputDirectory - @PathSensitive(PathSensitivity.RELATIVE) - public DirectoryProperty getDockerContext() { - return dockerContext; - } - - @Input - public String[] getTags() { - return tags; - } - - public void setTags(String[] tags) { - this.tags = tags; - } - - @Input - public boolean isPull() { - return pull; - } - - public void setPull(boolean pull) { - this.pull = pull; - } - - @Input - public boolean isNoCache() { - return noCache; - } - - public void setNoCache(boolean noCache) { - this.noCache = noCache; - } - - @Input - public String[] getBaseImages() { - return baseImages; - } - - public void setBaseImages(String[] baseImages) { - this.baseImages = baseImages; - } - - @OutputFile - public RegularFileProperty getMarkerFile() { - return markerFile; - } - - public abstract static class DockerBuildAction implements WorkAction { - private final ExecOperations execOperations; - - @Inject - public DockerBuildAction(ExecOperations execOperations) { - this.execOperations = execOperations; - } - - /** - * Wraps `docker pull` in a retry loop, to try and provide some resilience against - * transient errors - * @param baseImage the image to pull. - */ - private void pullBaseImage(String baseImage) { - final int maxAttempts = 10; - - for (int attempt = 1; attempt <= maxAttempts; attempt++) { - try { - LoggedExec.exec(execOperations, spec -> { - spec.executable("docker"); - spec.args("pull"); - spec.args(baseImage); - }); - - return; - } catch (Exception e) { - LOGGER.warn("Attempt {}/{} to pull Docker base image {} failed", attempt, maxAttempts, baseImage); - } - } - - // If we successfully ran `docker pull` above, we would have returned before this point. - throw new GradleException("Failed to pull Docker base image [" + baseImage + "], all attempts failed"); - } - - @Override - public void execute() { - final Parameters parameters = getParameters(); - - if (parameters.getPull().get()) { - for (String baseImage : parameters.getBaseImages().get()) { - pullBaseImage(baseImage); - } - } - - LoggedExec.exec(execOperations, spec -> { - spec.executable("docker"); - - spec.args("build", parameters.getDockerContext().get().getAsFile().getAbsolutePath()); - - if (parameters.getNoCache().get()) { - spec.args("--no-cache"); - } - - parameters.getTags().get().forEach(tag -> spec.args("--tag", tag)); - }); - - try { - parameters.getMarkerFile().getAsFile().get().createNewFile(); - } catch (IOException e) { - throw new RuntimeException("Failed to create marker file", e); - } - } - } - - interface Parameters extends WorkParameters { - DirectoryProperty getDockerContext(); - - RegularFileProperty getMarkerFile(); - - ListProperty getTags(); - - Property getPull(); - - Property getNoCache(); - - Property getBaseImages(); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportPlugin.java deleted file mode 100644 index 92777638982d2..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportPlugin.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.docker; - -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.provider.Provider; - -import java.io.File; -import java.util.List; -import java.util.stream.Collectors; - -/** - * Plugin providing {@link DockerSupportService} for detecting Docker installations and determining requirements for Docker-based - * OpenSearch build tasks. - */ -public class DockerSupportPlugin implements Plugin { - public static final String DOCKER_SUPPORT_SERVICE_NAME = "dockerSupportService"; - public static final String DOCKER_ON_LINUX_EXCLUSIONS_FILE = ".ci/dockerOnLinuxExclusions"; - - @Override - public void apply(Project project) { - if (project != project.getRootProject()) { - throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project."); - } - - Provider dockerSupportServiceProvider = project.getGradle() - .getSharedServices() - .registerIfAbsent( - DOCKER_SUPPORT_SERVICE_NAME, - DockerSupportService.class, - spec -> spec.parameters( - params -> { params.setExclusionsFile(new File(project.getRootDir(), DOCKER_ON_LINUX_EXCLUSIONS_FILE)); } - ) - ); - - // Ensure that if we are trying to run any DockerBuildTask tasks, we assert an available Docker installation exists - project.getGradle().getTaskGraph().whenReady(graph -> { - List dockerTasks = graph.getAllTasks() - .stream() - .filter(task -> task instanceof DockerBuildTask) - .map(Task::getPath) - .collect(Collectors.toList()); - - if (dockerTasks.isEmpty() == false) { - dockerSupportServiceProvider.get().failIfDockerUnavailable(dockerTasks); - } - }); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportService.java b/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportService.java deleted file mode 100644 index 2eb2852e3e55e..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/docker/DockerSupportService.java +++ /dev/null @@ -1,421 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.docker; - -import org.opensearch.gradle.Version; -import org.opensearch.gradle.info.BuildParams; -import org.gradle.api.GradleException; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.services.BuildService; -import org.gradle.api.services.BuildServiceParameters; -import org.gradle.process.ExecOperations; -import org.gradle.process.ExecResult; -import org.apache.tools.ant.taskdefs.condition.Os; - -import javax.inject.Inject; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Optional; -import java.util.stream.Collectors; - -/** - * Build service for detecting available Docker installation and checking for compatibility with OpenSearch Docker image build - * requirements. This includes a minimum version requirement, as well as the ability to run privileged commands. - */ -public abstract class DockerSupportService implements BuildService { - - private static Logger LOGGER = Logging.getLogger(DockerSupportService.class); - // Defines the possible locations of the Docker CLI. These will be searched in order. - private static String[] DOCKER_BINARIES_UNIX = { "/usr/bin/docker", "/usr/local/bin/docker" }; - - private static String[] DOCKER_BINARIES_WINDOWS = { System.getenv("PROGRAMFILES") + "\\Docker\\Docker\\resources\\bin\\docker.exe" }; - - private static String[] DOCKER_BINARIES = Os.isFamily(Os.FAMILY_WINDOWS) ? DOCKER_BINARIES_WINDOWS : DOCKER_BINARIES_UNIX; - - private static String[] DOCKER_COMPOSE_BINARIES_UNIX = { "/usr/local/bin/docker-compose", "/usr/bin/docker-compose" }; - - private static String[] DOCKER_COMPOSE_BINARIES_WINDOWS = { - System.getenv("PROGRAMFILES") + "\\Docker\\Docker\\resources\\bin\\docker-compose.exe" }; - - private static String[] DOCKER_COMPOSE_BINARIES = Os.isFamily(Os.FAMILY_WINDOWS) - ? DOCKER_COMPOSE_BINARIES_WINDOWS - : DOCKER_COMPOSE_BINARIES_UNIX; - - private static final Version MINIMUM_DOCKER_VERSION = Version.fromString("17.05.0"); - - private final ExecOperations execOperations; - private DockerAvailability dockerAvailability; - - @Inject - public DockerSupportService(ExecOperations execOperations) { - this.execOperations = execOperations; - } - - /** - * Searches for a functional Docker installation, and returns information about the search. - * - * @return the results of the search. - */ - public DockerAvailability getDockerAvailability() { - if (this.dockerAvailability == null) { - String dockerPath = null; - Result lastResult = null; - Version version = null; - boolean isVersionHighEnough = false; - boolean isComposeAvailable = false; - - // Check if the Docker binary exists - final Optional dockerBinary = getDockerPath(); - if (isExcludedOs() == false && dockerBinary.isPresent()) { - dockerPath = dockerBinary.get(); - - // Since we use a multi-stage Docker build, check the Docker version meets minimum requirement - lastResult = runCommand(dockerPath, "version", "--format", "{{.Server.Version}}"); - - if (lastResult.isSuccess()) { - version = Version.fromString(lastResult.stdout.trim(), Version.Mode.RELAXED); - - isVersionHighEnough = version.onOrAfter(MINIMUM_DOCKER_VERSION); - - if (isVersionHighEnough) { - // Check that we can execute a privileged command - lastResult = runCommand(dockerPath, "images"); - - // If docker all checks out, see if docker-compose is available and working - Optional composePath = getDockerComposePath(); - if (lastResult.isSuccess() && composePath.isPresent()) { - isComposeAvailable = runCommand(composePath.get(), "version").isSuccess(); - } - } - } - } - - boolean isAvailable = isVersionHighEnough && lastResult != null && lastResult.isSuccess(); - - this.dockerAvailability = new DockerAvailability( - isAvailable, - isComposeAvailable, - isVersionHighEnough, - dockerPath, - version, - lastResult - ); - } - - return this.dockerAvailability; - } - - /** - * Given a list of tasks that requires Docker, check whether Docker is available, otherwise throw an exception. - * - * @throws GradleException if Docker is not available. The exception message gives the reason. - */ - void failIfDockerUnavailable(List tasks) { - DockerAvailability availability = getDockerAvailability(); - - // Docker installation is available and compatible - if (availability.isAvailable) { - return; - } - - // No Docker binary was located - if (availability.path == null) { - final String message = String.format( - Locale.ROOT, - "Docker (checked [%s]) is required to run the following task%s: \n%s", - String.join(", ", DOCKER_BINARIES), - tasks.size() > 1 ? "s" : "", - String.join("\n", tasks) - ); - throwDockerRequiredException(message); - } - - // Docker binaries were located, but did not meet the minimum version requirement - if (availability.lastCommand.isSuccess() && availability.isVersionHighEnough == false) { - final String message = String.format( - Locale.ROOT, - "building Docker images requires minimum Docker version of %s due to use of multi-stage builds yet was [%s]", - MINIMUM_DOCKER_VERSION, - availability.version - ); - throwDockerRequiredException(message); - } - - // Some other problem, print the error - final String message = String.format( - Locale.ROOT, - "a problem occurred while using Docker from [%s]%s yet it is required to run the following task%s: \n%s\n" - + "the problem is that Docker exited with exit code [%d] with standard error output:\n%s", - availability.path, - availability.version == null ? "" : " v" + availability.version, - tasks.size() > 1 ? "s" : "", - String.join("\n", tasks), - availability.lastCommand.exitCode, - availability.lastCommand.stderr.trim() - ); - throwDockerRequiredException(message); - } - - private boolean isExcludedOs() { - // We don't attempt to check the current flavor and version of Linux unless we're - // running in CI, because we don't want to stop people running the Docker tests in - // their own environments if they really want to. - if (BuildParams.isCi() == false) { - return false; - } - - // Only some hosts in CI are configured with Docker. We attempt to work out the OS - // and version, so that we know whether to expect to find Docker. We don't attempt - // to probe for whether Docker is available, because that doesn't tell us whether - // Docker is unavailable when it should be. - final Path osRelease = Paths.get("/etc/os-release"); - - if (Files.exists(osRelease)) { - Map values; - - try { - final List osReleaseLines = Files.readAllLines(osRelease); - values = parseOsRelease(osReleaseLines); - } catch (IOException e) { - throw new GradleException("Failed to read /etc/os-release", e); - } - - final String id = deriveId(values); - final boolean excluded = getLinuxExclusionList().contains(id); - - if (excluded) { - LOGGER.warn("Linux OS id [{}] is present in the Docker exclude list. Tasks requiring Docker will be disabled.", id); - } - - return excluded; - } - - return false; - } - - private List getLinuxExclusionList() { - File exclusionsFile = getParameters().getExclusionsFile(); - - if (exclusionsFile.exists()) { - try { - return Files.readAllLines(exclusionsFile.toPath()) - .stream() - .map(String::trim) - .filter(line -> (line.isEmpty() || line.startsWith("#")) == false) - .collect(Collectors.toList()); - } catch (IOException e) { - throw new GradleException("Failed to read " + exclusionsFile.getAbsolutePath(), e); - } - } else { - return Collections.emptyList(); - } - } - - // visible for testing - static String deriveId(Map values) { - return values.get("ID") + "-" + values.get("VERSION_ID"); - } - - // visible for testing - static Map parseOsRelease(final List osReleaseLines) { - final Map values = new HashMap<>(); - - osReleaseLines.stream().map(String::trim).filter(line -> (line.isEmpty() || line.startsWith("#")) == false).forEach(line -> { - final String[] parts = line.split("=", 2); - final String key = parts[0]; - // remove optional leading and trailing quotes and whitespace - final String value = parts[1].replaceAll("^['\"]?\\s*", "").replaceAll("\\s*['\"]?$", ""); - - values.put(key, value.toLowerCase()); - }); - - return values; - } - - /** - * Searches the entries in {@link #DOCKER_BINARIES} for the Docker CLI. This method does - * not check whether the Docker installation appears usable, see {@link #getDockerAvailability()} - * instead. - * - * @return the path to a CLI, if available. - */ - private Optional getDockerPath() { - // Check if the Docker binary exists - return Arrays.asList(DOCKER_BINARIES).stream().filter(path -> new File(path).exists()).findFirst(); - } - - /** - * Searches the entries in {@link #DOCKER_COMPOSE_BINARIES} for the Docker Compose CLI. This method does - * not check whether the installation appears usable, see {@link #getDockerAvailability()} instead. - * - * @return the path to a CLI, if available. - */ - private Optional getDockerComposePath() { - // Check if the Docker binary exists - return Arrays.asList(DOCKER_COMPOSE_BINARIES).stream().filter(path -> new File(path).exists()).findFirst(); - } - - private void throwDockerRequiredException(final String message) { - throwDockerRequiredException(message, null); - } - - private void throwDockerRequiredException(final String message, Exception e) { - throw new GradleException( - message + "\nyou can address this by attending to the reported issue, or removing the offending tasks from being executed.", - e - ); - } - - /** - * Runs a command and captures the exit code, standard output and standard error. - * - * @param args the command and any arguments to execute - * @return a object that captures the result of running the command. If an exception occurring - * while running the command, or the process was killed after reaching the 10s timeout, - * then the exit code will be -1. - */ - private Result runCommand(String... args) { - if (args.length == 0) { - throw new IllegalArgumentException("Cannot execute with no command"); - } - - ByteArrayOutputStream stdout = new ByteArrayOutputStream(); - ByteArrayOutputStream stderr = new ByteArrayOutputStream(); - - final ExecResult execResult = execOperations.exec(spec -> { - // The redundant cast is to silence a compiler warning. - spec.setCommandLine((Object[]) args); - spec.setStandardOutput(stdout); - spec.setErrorOutput(stderr); - spec.setIgnoreExitValue(true); - }); - return new Result(execResult.getExitValue(), stdout.toString(), stderr.toString()); - } - - /** - * An immutable class that represents the results of a Docker search from {@link #getDockerAvailability()}}. - */ - public static class DockerAvailability { - /** - * Indicates whether Docker is available and meets the required criteria. - * True if, and only if, Docker is: - *

      - *
    • Installed
    • - *
    • Executable
    • - *
    • Is at least version compatibile with minimum version
    • - *
    • Can execute a command that requires privileges
    • - *
    - */ - public final boolean isAvailable; - - /** - * True if docker-compose is available. - */ - public final boolean isComposeAvailable; - - /** - * True if the installed Docker version is >= 17.05 - */ - public final boolean isVersionHighEnough; - - /** - * The path to the Docker CLI, or null - */ - public final String path; - - /** - * The installed Docker version, or null - */ - public final Version version; - - /** - * Information about the last command executes while probing Docker, or null. - */ - final Result lastCommand; - - DockerAvailability( - boolean isAvailable, - boolean isComposeAvailable, - boolean isVersionHighEnough, - String path, - Version version, - Result lastCommand - ) { - this.isAvailable = isAvailable; - this.isComposeAvailable = isComposeAvailable; - this.isVersionHighEnough = isVersionHighEnough; - this.path = path; - this.version = version; - this.lastCommand = lastCommand; - } - } - - /** - * This class models the result of running a command. It captures the exit code, standard output and standard error. - */ - private static class Result { - final int exitCode; - final String stdout; - final String stderr; - - Result(int exitCode, String stdout, String stderr) { - this.exitCode = exitCode; - this.stdout = stdout; - this.stderr = stderr; - } - - boolean isSuccess() { - return exitCode == 0; - } - - public String toString() { - return "exitCode = [" + exitCode + "] " + "stdout = [" + stdout.trim() + "] " + "stderr = [" + stderr.trim() + "]"; - } - } - - interface Parameters extends BuildServiceParameters { - File getExclusionsFile(); - - void setExclusionsFile(File exclusionsFile); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/http/WaitForHttpResource.java b/buildSrc/src/main/java/org/opensearch/gradle/http/WaitForHttpResource.java deleted file mode 100644 index 41f4054910d97..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/http/WaitForHttpResource.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.http; - -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.KeyManager; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.security.GeneralSecurityException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.SecureRandom; -import java.security.cert.Certificate; -import java.security.cert.CertificateFactory; -import java.util.Arrays; -import java.util.Base64; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -/** - * A utility to wait for a specific HTTP resource to be available, optionally with customized TLS trusted CAs. - * This is logically similar to using the Ant Get task to retrieve a resource, but with the difference that it can - * access resources that do not use the JRE's default trusted CAs. - */ -public class WaitForHttpResource { - - private static final Logger logger = Logging.getLogger(WaitForHttpResource.class); - - private Set validResponseCodes = Collections.singleton(200); - private URL url; - private Set certificateAuthorities; - private File trustStoreFile; - private String trustStorePassword; - private String username; - private String password; - - public WaitForHttpResource(String protocol, String host, int numberOfNodes) throws MalformedURLException { - this(new URL(protocol + "://" + host + "/_cluster/health?wait_for_nodes=>=" + numberOfNodes + "&wait_for_status=yellow")); - } - - public WaitForHttpResource(URL url) { - this.url = url; - } - - public void setValidResponseCodes(int... validResponseCodes) { - this.validResponseCodes = new HashSet<>(validResponseCodes.length); - for (int rc : validResponseCodes) { - this.validResponseCodes.add(rc); - } - } - - public void setCertificateAuthorities(File... certificateAuthorities) { - this.certificateAuthorities = new HashSet<>(Arrays.asList(certificateAuthorities)); - } - - public void setTrustStoreFile(File trustStoreFile) { - this.trustStoreFile = trustStoreFile; - } - - public void setTrustStorePassword(String trustStorePassword) { - this.trustStorePassword = trustStorePassword; - } - - public void setUsername(String username) { - this.username = username; - } - - public void setPassword(String password) { - this.password = password; - } - - public boolean wait(int durationInMs) throws GeneralSecurityException, InterruptedException, IOException { - final long waitUntil = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(durationInMs); - final long sleep = Long.max(durationInMs / 10, 100); - - final SSLContext ssl; - final KeyStore trustStore = buildTrustStore(); - if (trustStore != null) { - ssl = createSslContext(trustStore); - } else { - ssl = null; - } - IOException failure = null; - while (true) { - try { - checkResource(ssl); - return true; - } catch (IOException e) { - logger.debug("Failed to access resource [{}]", url, e); - failure = e; - } - if (System.nanoTime() < waitUntil) { - Thread.sleep(sleep); - } else { - throw failure; - } - } - } - - protected void checkResource(SSLContext ssl) throws IOException { - final HttpURLConnection connection = buildConnection(ssl); - connection.connect(); - final Integer response = connection.getResponseCode(); - if (validResponseCodes.contains(response)) { - logger.info("Got successful response [{}] from URL [{}]", response, url); - return; - } else { - throw new IOException(response + " " + connection.getResponseMessage()); - } - } - - HttpURLConnection buildConnection(SSLContext ssl) throws IOException { - final HttpURLConnection connection = (HttpURLConnection) this.url.openConnection(); - configureSslContext(connection, ssl); - configureBasicAuth(connection); - connection.setRequestMethod("GET"); - return connection; - } - - private void configureSslContext(HttpURLConnection connection, SSLContext ssl) { - if (ssl != null) { - if (connection instanceof HttpsURLConnection) { - ((HttpsURLConnection) connection).setSSLSocketFactory(ssl.getSocketFactory()); - } else { - throw new IllegalStateException("SSL trust has been configured, but [" + url + "] is not a 'https' URL"); - } - } - } - - private void configureBasicAuth(HttpURLConnection connection) { - if (username != null) { - if (password == null) { - throw new IllegalStateException("Basic Auth user [" + username + "] has been set, but no password has been configured"); - } - connection.setRequestProperty( - "Authorization", - "Basic " + Base64.getEncoder().encodeToString((username + ":" + password).getBytes(StandardCharsets.UTF_8)) - ); - } - } - - KeyStore buildTrustStore() throws GeneralSecurityException, IOException { - if (this.certificateAuthorities != null) { - if (trustStoreFile != null) { - throw new IllegalStateException("Cannot specify both truststore and CAs"); - } - return buildTrustStoreFromCA(); - } else if (trustStoreFile != null) { - return buildTrustStoreFromFile(); - } else { - return null; - } - } - - private KeyStore buildTrustStoreFromFile() throws GeneralSecurityException, IOException { - KeyStore keyStore = KeyStore.getInstance(trustStoreFile.getName().endsWith(".jks") ? "JKS" : "PKCS12"); - try (InputStream input = new FileInputStream(trustStoreFile)) { - keyStore.load(input, trustStorePassword == null ? null : trustStorePassword.toCharArray()); - } - return keyStore; - } - - private KeyStore buildTrustStoreFromCA() throws GeneralSecurityException, IOException { - final KeyStore store = KeyStore.getInstance(KeyStore.getDefaultType()); - store.load(null, null); - final CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); - int counter = 0; - for (File ca : certificateAuthorities) { - try (InputStream input = new FileInputStream(ca)) { - for (Certificate certificate : certFactory.generateCertificates(input)) { - store.setCertificateEntry("cert-" + counter, certificate); - counter++; - } - } - } - return store; - } - - private SSLContext createSslContext(KeyStore trustStore) throws GeneralSecurityException { - checkForTrustEntry(trustStore); - TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - tmf.init(trustStore); - SSLContext sslContext = SSLContext.getInstance("TLSv1.2"); - sslContext.init(new KeyManager[0], tmf.getTrustManagers(), new SecureRandom()); - return sslContext; - } - - private void checkForTrustEntry(KeyStore trustStore) throws KeyStoreException { - Enumeration enumeration = trustStore.aliases(); - while (enumeration.hasMoreElements()) { - if (trustStore.isCertificateEntry(enumeration.nextElement())) { - // found trusted cert entry - return; - } - } - throw new IllegalStateException("Trust-store does not contain any trusted certificate entries"); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/info/BuildParams.java b/buildSrc/src/main/java/org/opensearch/gradle/info/BuildParams.java deleted file mode 100644 index 331794c9c2dd7..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/info/BuildParams.java +++ /dev/null @@ -1,263 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.info; - -import org.opensearch.gradle.BwcVersions; -import org.gradle.api.JavaVersion; - -import java.io.File; -import java.lang.reflect.Modifier; -import java.time.ZonedDateTime; -import java.util.Arrays; -import java.util.List; -import java.util.function.Consumer; - -import static java.util.Objects.requireNonNull; - -public class BuildParams { - private static File runtimeJavaHome; - private static Boolean isRuntimeJavaHomeSet; - private static List javaVersions; - private static JavaVersion minimumCompilerVersion; - private static JavaVersion minimumRuntimeVersion; - private static JavaVersion gradleJavaVersion; - private static JavaVersion runtimeJavaVersion; - private static String runtimeJavaDetails; - private static Boolean inFipsJvm; - private static String gitRevision; - private static String gitOrigin; - private static ZonedDateTime buildDate; - private static String testSeed; - private static Boolean isCi; - private static Boolean isInternal; - private static Integer defaultParallel; - private static Boolean isSnapshotBuild; - private static BwcVersions bwcVersions; - - /** - * Initialize global build parameters. This method accepts and a initialization function which in turn accepts a - * {@link MutableBuildParams}. Initialization can be done in "stages", therefore changes override existing values, and values from - * previous calls to {@link #init(Consumer)} carry forward. In cases where you want to clear existing values - * {@link MutableBuildParams#reset()} may be used. - * - * @param initializer Build parameter initializer - */ - public static void init(Consumer initializer) { - initializer.accept(MutableBuildParams.INSTANCE); - } - - public static File getRuntimeJavaHome() { - return value(runtimeJavaHome); - } - - public static Boolean getIsRuntimeJavaHomeSet() { - return value(isRuntimeJavaHomeSet); - } - - public static List getJavaVersions() { - return value(javaVersions); - } - - public static JavaVersion getMinimumCompilerVersion() { - return value(minimumCompilerVersion); - } - - public static JavaVersion getMinimumRuntimeVersion() { - return value(minimumRuntimeVersion); - } - - public static JavaVersion getGradleJavaVersion() { - return value(gradleJavaVersion); - } - - public static JavaVersion getRuntimeJavaVersion() { - return value(runtimeJavaVersion); - } - - public static String getRuntimeJavaDetails() { - return value(runtimeJavaDetails); - } - - public static Boolean isInFipsJvm() { - return value(inFipsJvm); - } - - public static String getGitRevision() { - return value(gitRevision); - } - - public static String getGitOrigin() { - return value(gitOrigin); - } - - public static ZonedDateTime getBuildDate() { - return value(buildDate); - } - - public static BwcVersions getBwcVersions() { - return value(bwcVersions); - } - - public static String getTestSeed() { - return value(testSeed); - } - - public static Boolean isCi() { - return value(isCi); - } - - public static Boolean isInternal() { - return value(isInternal); - } - - public static Integer getDefaultParallel() { - return value(defaultParallel); - } - - public static boolean isSnapshotBuild() { - return value(BuildParams.isSnapshotBuild); - } - - private static T value(T object) { - if (object == null) { - String callingMethod = Thread.currentThread().getStackTrace()[2].getMethodName(); - - throw new IllegalStateException( - "Build parameter '" - + propertyName(callingMethod) - + "' has not been initialized.\n" - + "Perhaps the plugin responsible for initializing this property has not been applied." - ); - } - - return object; - } - - private static String propertyName(String methodName) { - String propertyName = methodName.startsWith("is") ? methodName.substring("is".length()) : methodName.substring("get".length()); - return propertyName.substring(0, 1).toLowerCase() + propertyName.substring(1); - } - - public static class MutableBuildParams { - private static MutableBuildParams INSTANCE = new MutableBuildParams(); - - private MutableBuildParams() {} - - /** - * Resets any existing values from previous initializations. - */ - public void reset() { - Arrays.stream(BuildParams.class.getDeclaredFields()).filter(f -> Modifier.isStatic(f.getModifiers())).forEach(f -> { - try { - // Since we are mutating private static fields from a public static inner class we need to suppress - // accessibility controls here. - f.setAccessible(true); - f.set(null, null); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - }); - } - - public void setRuntimeJavaHome(File runtimeJavaHome) { - BuildParams.runtimeJavaHome = requireNonNull(runtimeJavaHome); - } - - public void setIsRutimeJavaHomeSet(boolean isRutimeJavaHomeSet) { - BuildParams.isRuntimeJavaHomeSet = isRutimeJavaHomeSet; - } - - public void setJavaVersions(List javaVersions) { - BuildParams.javaVersions = requireNonNull(javaVersions); - } - - public void setMinimumCompilerVersion(JavaVersion minimumCompilerVersion) { - BuildParams.minimumCompilerVersion = requireNonNull(minimumCompilerVersion); - } - - public void setMinimumRuntimeVersion(JavaVersion minimumRuntimeVersion) { - BuildParams.minimumRuntimeVersion = requireNonNull(minimumRuntimeVersion); - } - - public void setGradleJavaVersion(JavaVersion gradleJavaVersion) { - BuildParams.gradleJavaVersion = requireNonNull(gradleJavaVersion); - } - - public void setRuntimeJavaVersion(JavaVersion runtimeJavaVersion) { - BuildParams.runtimeJavaVersion = requireNonNull(runtimeJavaVersion); - } - - public void setRuntimeJavaDetails(String runtimeJavaDetails) { - BuildParams.runtimeJavaDetails = runtimeJavaDetails; - } - - public void setInFipsJvm(boolean inFipsJvm) { - BuildParams.inFipsJvm = inFipsJvm; - } - - public void setGitRevision(String gitRevision) { - BuildParams.gitRevision = requireNonNull(gitRevision); - } - - public void setGitOrigin(String gitOrigin) { - BuildParams.gitOrigin = requireNonNull(gitOrigin); - } - - public void setBuildDate(ZonedDateTime buildDate) { - BuildParams.buildDate = requireNonNull(buildDate); - } - - public void setTestSeed(String testSeed) { - BuildParams.testSeed = requireNonNull(testSeed); - } - - public void setIsCi(boolean isCi) { - BuildParams.isCi = isCi; - } - - public void setIsInternal(Boolean isInternal) { - BuildParams.isInternal = requireNonNull(isInternal); - } - - public void setDefaultParallel(int defaultParallel) { - BuildParams.defaultParallel = defaultParallel; - } - - public void setIsSnapshotBuild(final boolean isSnapshotBuild) { - BuildParams.isSnapshotBuild = isSnapshotBuild; - } - - public void setBwcVersions(BwcVersions bwcVersions) { - BuildParams.bwcVersions = requireNonNull(bwcVersions); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/info/GlobalBuildInfoPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/info/GlobalBuildInfoPlugin.java deleted file mode 100644 index 2888bb89e3ece..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/info/GlobalBuildInfoPlugin.java +++ /dev/null @@ -1,436 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.info; - -import org.apache.commons.io.IOUtils; -import org.opensearch.gradle.BwcVersions; -import org.opensearch.gradle.util.Util; -import org.gradle.api.GradleException; -import org.gradle.api.JavaVersion; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.model.ObjectFactory; -import org.gradle.api.provider.Provider; -import org.gradle.api.provider.ProviderFactory; -import org.gradle.internal.jvm.Jvm; -import org.gradle.jvm.toolchain.JavaInstallation; -import org.gradle.jvm.toolchain.JavaInstallationRegistry; -import org.gradle.util.GradleVersion; - -import javax.inject.Inject; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.time.ZoneOffset; -import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Optional; -import java.util.Random; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Stream; - -public class GlobalBuildInfoPlugin implements Plugin { - private static final Logger LOGGER = Logging.getLogger(GlobalBuildInfoPlugin.class); - private static final String DEFAULT_LEGACY_VERSION_JAVA_FILE_PATH = "server/src/main/java/org/opensearch/LegacyESVersion.java"; - private static final String DEFAULT_VERSION_JAVA_FILE_PATH = "server/src/main/java/org/opensearch/Version.java"; - private static Integer _defaultParallel = null; - - private final JavaInstallationRegistry javaInstallationRegistry; - private final ObjectFactory objects; - private final ProviderFactory providers; - - @Inject - public GlobalBuildInfoPlugin(JavaInstallationRegistry javaInstallationRegistry, ObjectFactory objects, ProviderFactory providers) { - this.javaInstallationRegistry = javaInstallationRegistry; - this.objects = objects; - this.providers = providers; - } - - @Override - public void apply(Project project) { - if (project != project.getRootProject()) { - throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project."); - } - GradleVersion minimumGradleVersion = GradleVersion.version(Util.getResourceContents("/minimumGradleVersion")); - if (GradleVersion.current().compareTo(minimumGradleVersion) < 0) { - throw new GradleException("Gradle " + minimumGradleVersion.getVersion() + "+ is required"); - } - - JavaVersion minimumCompilerVersion = JavaVersion.toVersion(Util.getResourceContents("/minimumCompilerVersion")); - JavaVersion minimumRuntimeVersion = JavaVersion.toVersion(Util.getResourceContents("/minimumRuntimeVersion")); - - Optional runtimeJavaHomeOpt = findRuntimeJavaHome(); - File runtimeJavaHome = runtimeJavaHomeOpt.orElse(Jvm.current().getJavaHome()); - - File rootDir = project.getRootDir(); - GitInfo gitInfo = gitInfo(rootDir); - - BuildParams.init(params -> { - // Initialize global build parameters - boolean isInternal = GlobalBuildInfoPlugin.class.getResource("/buildSrc.marker") != null; - - params.reset(); - params.setRuntimeJavaHome(runtimeJavaHome); - params.setRuntimeJavaVersion(determineJavaVersion("runtime java.home", runtimeJavaHome, minimumRuntimeVersion)); - params.setIsRutimeJavaHomeSet(runtimeJavaHomeOpt.isPresent()); - params.setRuntimeJavaDetails(getJavaInstallation(runtimeJavaHome).getImplementationName()); - params.setJavaVersions(getAvailableJavaVersions(minimumCompilerVersion)); - params.setMinimumCompilerVersion(minimumCompilerVersion); - params.setMinimumRuntimeVersion(minimumRuntimeVersion); - params.setGradleJavaVersion(Jvm.current().getJavaVersion()); - params.setGitRevision(gitInfo.getRevision()); - params.setGitOrigin(gitInfo.getOrigin()); - params.setBuildDate(Util.getBuildDate(ZonedDateTime.now(ZoneOffset.UTC))); - params.setTestSeed(getTestSeed()); - params.setIsCi(System.getenv("JENKINS_URL") != null); - params.setIsInternal(isInternal); - params.setDefaultParallel(findDefaultParallel(project)); - params.setInFipsJvm(Util.getBooleanProperty("tests.fips.enabled", false)); - params.setIsSnapshotBuild(Util.getBooleanProperty("build.snapshot", true)); - if (isInternal) { - params.setBwcVersions(resolveBwcVersions(rootDir)); - } - }); - - // Print global build info header just before task execution - project.getGradle().getTaskGraph().whenReady(graph -> logGlobalBuildInfo()); - } - - /* Introspect all versions of ES that may be tested against for backwards - * compatibility. It is *super* important that this logic is the same as the - * logic in VersionUtils.java. */ - private static BwcVersions resolveBwcVersions(File root) { - // todo redesign this terrible unreliable hack; should NEVER rely on parsing a source file - // for now, we hack the hack - File versionsFile = new File(root, DEFAULT_VERSION_JAVA_FILE_PATH); - File legacyVersionsFile = new File(root, DEFAULT_LEGACY_VERSION_JAVA_FILE_PATH); - try (FileInputStream fis = new FileInputStream(versionsFile); FileInputStream fis2 = new FileInputStream(legacyVersionsFile)) { - List versionLines = IOUtils.readLines(fis, "UTF-8"); - versionLines.addAll(IOUtils.readLines(fis2, "UTF-8")); - return new BwcVersions(versionLines); - } catch (IOException e) { - throw new IllegalStateException("Unable to resolve to resolve bwc versions from versionsFile.", e); - } - } - - private void logGlobalBuildInfo() { - final String osName = System.getProperty("os.name"); - final String osVersion = System.getProperty("os.version"); - final String osArch = System.getProperty("os.arch"); - final Jvm gradleJvm = Jvm.current(); - final String gradleJvmDetails = getJavaInstallation(gradleJvm.getJavaHome()).getImplementationName(); - - LOGGER.quiet("======================================="); - LOGGER.quiet("OpenSearch Build Hamster says Hello!"); - LOGGER.quiet(" Gradle Version : " + GradleVersion.current().getVersion()); - LOGGER.quiet(" OS Info : " + osName + " " + osVersion + " (" + osArch + ")"); - if (BuildParams.getIsRuntimeJavaHomeSet()) { - String runtimeJvmDetails = getJavaInstallation(BuildParams.getRuntimeJavaHome()).getImplementationName(); - LOGGER.quiet(" Runtime JDK Version : " + BuildParams.getRuntimeJavaVersion() + " (" + runtimeJvmDetails + ")"); - LOGGER.quiet(" Runtime java.home : " + BuildParams.getRuntimeJavaHome()); - LOGGER.quiet(" Gradle JDK Version : " + gradleJvm.getJavaVersion() + " (" + gradleJvmDetails + ")"); - LOGGER.quiet(" Gradle java.home : " + gradleJvm.getJavaHome()); - } else { - LOGGER.quiet(" JDK Version : " + gradleJvm.getJavaVersion() + " (" + gradleJvmDetails + ")"); - LOGGER.quiet(" JAVA_HOME : " + gradleJvm.getJavaHome()); - } - LOGGER.quiet(" Random Testing Seed : " + BuildParams.getTestSeed()); - LOGGER.quiet(" In FIPS 140 mode : " + BuildParams.isInFipsJvm()); - LOGGER.quiet("======================================="); - } - - private JavaVersion determineJavaVersion(String description, File javaHome, JavaVersion requiredVersion) { - JavaInstallation installation = getJavaInstallation(javaHome); - JavaVersion actualVersion = installation.getJavaVersion(); - if (actualVersion.isCompatibleWith(requiredVersion) == false) { - throwInvalidJavaHomeException( - description, - javaHome, - Integer.parseInt(requiredVersion.getMajorVersion()), - Integer.parseInt(actualVersion.getMajorVersion()) - ); - } - - return actualVersion; - } - - private JavaInstallation getJavaInstallation(File javaHome) { - JavaInstallation installation; - if (isCurrentJavaHome(javaHome)) { - installation = javaInstallationRegistry.getInstallationForCurrentVirtualMachine().get(); - } else { - installation = javaInstallationRegistry.installationForDirectory(objects.directoryProperty().fileValue(javaHome)).get(); - } - - return installation; - } - - private List getAvailableJavaVersions(JavaVersion minimumCompilerVersion) { - final List javaVersions = new ArrayList<>(); - for (int v = 8; v <= Integer.parseInt(minimumCompilerVersion.getMajorVersion()); v++) { - int version = v; - String javaHomeEnvVarName = getJavaHomeEnvVarName(Integer.toString(version)); - if (System.getenv(javaHomeEnvVarName) != null) { - File javaHomeDirectory = new File(findJavaHome(Integer.toString(version))); - Provider javaInstallationProvider = javaInstallationRegistry.installationForDirectory( - objects.directoryProperty().fileValue(javaHomeDirectory) - ); - JavaHome javaHome = JavaHome.of(version, providers.provider(() -> { - int actualVersion = Integer.parseInt(javaInstallationProvider.get().getJavaVersion().getMajorVersion()); - if (actualVersion != version) { - throwInvalidJavaHomeException("env variable " + javaHomeEnvVarName, javaHomeDirectory, version, actualVersion); - } - return javaHomeDirectory; - })); - javaVersions.add(javaHome); - } - } - return javaVersions; - } - - private static boolean isCurrentJavaHome(File javaHome) { - try { - return Files.isSameFile(javaHome.toPath(), Jvm.current().getJavaHome().toPath()); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - private static String getTestSeed() { - String testSeedProperty = System.getProperty("tests.seed"); - final String testSeed; - if (testSeedProperty == null) { - long seed = new Random(System.currentTimeMillis()).nextLong(); - testSeed = Long.toUnsignedString(seed, 16).toUpperCase(Locale.ROOT); - } else { - testSeed = testSeedProperty; - } - return testSeed; - } - - private static void throwInvalidJavaHomeException(String description, File javaHome, int expectedVersion, int actualVersion) { - String message = String.format( - Locale.ROOT, - "The %s must be set to a JDK installation directory for Java %d but is [%s] corresponding to [%s]", - description, - expectedVersion, - javaHome, - actualVersion - ); - - throw new GradleException(message); - } - - private static Optional findRuntimeJavaHome() { - String runtimeJavaProperty = System.getProperty("runtime.java"); - - if (runtimeJavaProperty != null) { - return Optional.of(new File(findJavaHome(runtimeJavaProperty))); - } - - return System.getenv("RUNTIME_JAVA_HOME") == null ? Optional.empty() : Optional.of(new File(System.getenv("RUNTIME_JAVA_HOME"))); - } - - private static String findJavaHome(String version) { - String versionedJavaHome = System.getenv(getJavaHomeEnvVarName(version)); - if (versionedJavaHome == null) { - final String exceptionMessage = String.format( - Locale.ROOT, - "$%s must be set to build OpenSearch. " - + "Note that if the variable was just set you " - + "might have to run `./gradlew --stop` for " - + "it to be picked up. See https://github.com/elastic/elasticsearch/issues/31399 details.", - getJavaHomeEnvVarName(version) - ); - - throw new GradleException(exceptionMessage); - } - return versionedJavaHome; - } - - private static String getJavaHomeEnvVarName(String version) { - return "JAVA" + version + "_HOME"; - } - - private static int findDefaultParallel(Project project) { - // It's safe to store this in a static variable since it's just a primitive so leaking memory isn't an issue - if (_defaultParallel == null) { - _defaultParallel = Math.max(1, Runtime.getRuntime().availableProcessors() / 2); - } - - return _defaultParallel; - } - - public static GitInfo gitInfo(File rootDir) { - try { - /* - * We want to avoid forking another process to run git rev-parse HEAD. Instead, we will read the refs manually. The - * documentation for this follows from https://git-scm.com/docs/gitrepository-layout and https://git-scm.com/docs/git-worktree. - * - * There are two cases to consider: - * - a plain repository with .git directory at the root of the working tree - * - a worktree with a plain text .git file at the root of the working tree - * - * In each case, our goal is to parse the HEAD file to get either a ref or a bare revision (in the case of being in detached - * HEAD state). - * - * In the case of a plain repository, we can read the HEAD file directly, resolved directly from the .git directory. - * - * In the case of a worktree, we read the gitdir from the plain text .git file. This resolves to a directory from which we read - * the HEAD file and resolve commondir to the plain git repository. - */ - final Path dotGit = rootDir.toPath().resolve(".git"); - final String revision; - if (Files.exists(dotGit) == false) { - return new GitInfo("unknown", "unknown"); - } - final Path head; - final Path gitDir; - if (Files.isDirectory(dotGit)) { - // this is a git repository, we can read HEAD directly - head = dotGit.resolve("HEAD"); - gitDir = dotGit; - } else { - // this is a git worktree, follow the pointer to the repository - final Path workTree = Paths.get(readFirstLine(dotGit).substring("gitdir:".length()).trim()); - if (Files.exists(workTree) == false) { - return new GitInfo("unknown", "unknown"); - } - head = workTree.resolve("HEAD"); - final Path commonDir = Paths.get(readFirstLine(workTree.resolve("commondir"))); - if (commonDir.isAbsolute()) { - gitDir = commonDir; - } else { - // this is the common case - gitDir = workTree.resolve(commonDir); - } - } - final String ref = readFirstLine(head); - if (ref.startsWith("ref:")) { - String refName = ref.substring("ref:".length()).trim(); - Path refFile = gitDir.resolve(refName); - if (Files.exists(refFile)) { - revision = readFirstLine(refFile); - } else if (Files.exists(gitDir.resolve("packed-refs"))) { - // Check packed references for commit ID - Pattern p = Pattern.compile("^([a-f0-9]{40}) " + refName + "$"); - try (Stream lines = Files.lines(gitDir.resolve("packed-refs"))) { - revision = lines.map(p::matcher) - .filter(Matcher::matches) - .map(m -> m.group(1)) - .findFirst() - .orElseThrow(() -> new IOException("Packed reference not found for refName " + refName)); - } - } else { - throw new GradleException("Can't find revision for refName " + refName); - } - } else { - // we are in detached HEAD state - revision = ref; - } - return new GitInfo(revision, findOriginUrl(gitDir.resolve("config"))); - } catch (final IOException e) { - // for now, do not be lenient until we have better understanding of real-world scenarios where this happens - throw new GradleException("unable to read the git revision", e); - } - } - - private static String findOriginUrl(final Path configFile) throws IOException { - Map props = new HashMap<>(); - - try (Stream stream = Files.lines(configFile, StandardCharsets.UTF_8)) { - Iterator lines = stream.iterator(); - boolean foundOrigin = false; - while (lines.hasNext()) { - String line = lines.next().trim(); - if (line.startsWith(";") || line.startsWith("#")) { - // ignore comments - continue; - } - if (foundOrigin) { - if (line.startsWith("[")) { - // we're on to the next config item so stop looking - break; - } - String[] pair = line.trim().split("="); - props.put(pair[0].trim(), pair[1].trim()); - } else { - if (line.equals("[remote \"origin\"]")) { - foundOrigin = true; - } - } - } - } - - String originUrl = props.get("url"); - return originUrl == null ? "unknown" : originUrl; - } - - private static String readFirstLine(final Path path) throws IOException { - String firstLine; - try (Stream lines = Files.lines(path, StandardCharsets.UTF_8)) { - firstLine = lines.findFirst().orElseThrow(() -> new IOException("file [" + path + "] is empty")); - } - return firstLine; - } - - public static class GitInfo { - private final String revision; - private final String origin; - - GitInfo(String revision, String origin) { - this.revision = revision; - this.origin = origin; - } - - public String getRevision() { - return revision; - } - - public String getOrigin() { - return origin; - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/info/JavaHome.java b/buildSrc/src/main/java/org/opensearch/gradle/info/JavaHome.java deleted file mode 100644 index 0fe3ea561ab3b..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/info/JavaHome.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.info; - -import org.gradle.api.provider.Provider; - -import java.io.File; - -public class JavaHome { - private Integer version; - private Provider javaHome; - - private JavaHome(int version, Provider javaHome) { - this.version = version; - this.javaHome = javaHome; - } - - public static JavaHome of(int version, Provider javaHome) { - return new JavaHome(version, javaHome); - } - - public Integer getVersion() { - return version; - } - - public Provider getJavaHome() { - return javaHome; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/BwcGitExtension.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/BwcGitExtension.java deleted file mode 100644 index 52956f0cd7446..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/BwcGitExtension.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.opensearch.gradle.Version; -import org.gradle.api.provider.Provider; - -import java.io.File; - -public class BwcGitExtension { - - private Provider bwcVersion; - private Provider bwcBranch; - private Provider checkoutDir; - - public Provider getBwcVersion() { - return bwcVersion; - } - - public void setBwcVersion(Provider bwcVersion) { - this.bwcVersion = bwcVersion; - } - - public Provider getBwcBranch() { - return bwcBranch; - } - - public void setBwcBranch(Provider bwcBranch) { - this.bwcBranch = bwcBranch; - } - - public Provider getCheckoutDir() { - return checkoutDir; - } - - public void setCheckoutDir(Provider checkoutDir) { - this.checkoutDir = checkoutDir; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/BwcSetupExtension.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/BwcSetupExtension.java deleted file mode 100644 index 53b89a5d783e8..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/BwcSetupExtension.java +++ /dev/null @@ -1,190 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.apache.commons.io.FileUtils; -import org.apache.tools.ant.taskdefs.condition.Os; -import org.opensearch.gradle.BwcVersions; -import org.opensearch.gradle.LoggedExec; -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.logging.LogLevel; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.TaskProvider; - -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.List; -import java.util.Locale; -import java.util.stream.Collectors; - -import static org.opensearch.gradle.util.JavaUtil.getJavaHome; - -/** - * By registering bwc tasks via this extension we can support declaring custom bwc tasks from the build script - * without relying on groovy closures and sharing common logic for tasks created by the BwcSetup plugin already. - * */ -public class BwcSetupExtension { - - private final Project project; - - private final Provider unreleasedVersionInfo; - private Provider checkoutDir; - - public BwcSetupExtension( - Project project, - Provider unreleasedVersionInfo, - Provider checkoutDir - ) { - this.project = project; - this.unreleasedVersionInfo = unreleasedVersionInfo; - this.checkoutDir = checkoutDir; - } - - TaskProvider bwcTask(String name, Action configuration) { - return createRunBwcGradleTask(project, name, configuration); - } - - private TaskProvider createRunBwcGradleTask(Project project, String name, Action configAction) { - return project.getTasks().register(name, LoggedExec.class, loggedExec -> { - // TODO revisit - loggedExec.dependsOn("checkoutBwcBranch"); - loggedExec.setSpoolOutput(true); - loggedExec.setWorkingDir(checkoutDir.get()); - loggedExec.doFirst(t -> { - // Execution time so that the checkouts are available - String javaVersionsString = readFromFile(new File(checkoutDir.get(), ".ci/java-versions.properties")); - loggedExec.environment( - "JAVA_HOME", - getJavaHome( - Integer.parseInt( - Arrays.asList(javaVersionsString.split("\n")) - .stream() - .filter(l -> l.trim().startsWith("OPENSEARCH_BUILD_JAVA=")) - .map(l -> l.replace("OPENSEARCH_BUILD_JAVA=java", "").trim()) - .map(l -> l.replace("OPENSEARCH_BUILD_JAVA=openjdk", "").trim()) - .collect(Collectors.joining("!!")) - ) - ) - ); - loggedExec.environment( - "RUNTIME_JAVA_HOME", - getJavaHome( - Integer.parseInt( - Arrays.asList(javaVersionsString.split("\n")) - .stream() - .filter(l -> l.trim().startsWith("OPENSEARCH_RUNTIME_JAVA=")) - .map(l -> l.replace("OPENSEARCH_RUNTIME_JAVA=java", "").trim()) - .map(l -> l.replace("OPENSEARCH_RUNTIME_JAVA=openjdk", "").trim()) - .collect(Collectors.joining("!!")) - ) - ) - ); - }); - - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - loggedExec.executable("cmd"); - loggedExec.args("/C", "call", new File(checkoutDir.get(), "gradlew").toString()); - } else { - loggedExec.executable(new File(checkoutDir.get(), "gradlew").toString()); - } - if (project.getGradle().getStartParameter().isOffline()) { - loggedExec.args("--offline"); - } - // TODO resolve - String buildCacheUrl = System.getProperty("org.opensearch.build.cache.url"); - if (buildCacheUrl != null) { - loggedExec.args("-Dorg.opensearch.build.cache.url=" + buildCacheUrl); - } - - loggedExec.args("-Dbuild.snapshot=true"); - loggedExec.args("-Dscan.tag.NESTED"); - final LogLevel logLevel = project.getGradle().getStartParameter().getLogLevel(); - List nonDefaultLogLevels = Arrays.asList(LogLevel.QUIET, LogLevel.WARN, LogLevel.INFO, LogLevel.DEBUG); - if (nonDefaultLogLevels.contains(logLevel)) { - loggedExec.args("--" + logLevel.name().toLowerCase(Locale.ENGLISH)); - } - final String showStacktraceName = project.getGradle().getStartParameter().getShowStacktrace().name(); - assert Arrays.asList("INTERNAL_EXCEPTIONS", "ALWAYS", "ALWAYS_FULL").contains(showStacktraceName); - if (showStacktraceName.equals("ALWAYS")) { - loggedExec.args("--stacktrace"); - } else if (showStacktraceName.equals("ALWAYS_FULL")) { - loggedExec.args("--full-stacktrace"); - } - if (project.getGradle().getStartParameter().isParallelProjectExecutionEnabled()) { - loggedExec.args("--parallel"); - } - loggedExec.setStandardOutput(new IndentingOutputStream(System.out, unreleasedVersionInfo.get().version)); - loggedExec.setErrorOutput(new IndentingOutputStream(System.err, unreleasedVersionInfo.get().version)); - configAction.execute(loggedExec); - }); - } - - private static class IndentingOutputStream extends OutputStream { - - public final byte[] indent; - private final OutputStream delegate; - - IndentingOutputStream(OutputStream delegate, Object version) { - this.delegate = delegate; - indent = (" [" + version + "] ").getBytes(StandardCharsets.UTF_8); - } - - @Override - public void write(int b) throws IOException { - int[] arr = { b }; - write(arr, 0, 1); - } - - public void write(int[] bytes, int offset, int length) throws IOException { - for (int i = 0; i < bytes.length; i++) { - delegate.write(bytes[i]); - if (bytes[i] == '\n') { - delegate.write(indent); - } - } - } - } - - private static String readFromFile(File file) { - try { - return FileUtils.readFileToString(file).trim(); - } catch (IOException ioException) { - throw new GradleException("Cannot read java properties file.", ioException); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchive.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchive.java deleted file mode 100644 index 58b104874f5bb..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchive.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.gradle.api.Named; -import org.gradle.api.file.CopySpec; -import org.gradle.api.tasks.Sync; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.bundling.AbstractArchiveTask; - -import java.util.function.Supplier; - -public class DistributionArchive implements Named { - - private TaskProvider archiveTask; - private TaskProvider expandedDistTask; - private final String name; - - public DistributionArchive(TaskProvider archiveTask, TaskProvider expandedDistTask, String name) { - this.archiveTask = archiveTask; - this.expandedDistTask = expandedDistTask; - this.name = name; - } - - public void setArchiveClassifier(String classifier) { - this.archiveTask.configure(abstractArchiveTask -> abstractArchiveTask.getArchiveClassifier().set(classifier)); - } - - public void content(Supplier p) { - this.archiveTask.configure(t -> t.with(p.get())); - this.expandedDistTask.configure(t -> t.with(p.get())); - } - - @Override - public String getName() { - return name; - } - - public TaskProvider getArchiveTask() { - return archiveTask; - } - - public TaskProvider getExpandedDistTask() { - return expandedDistTask; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchiveCheckExtension.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchiveCheckExtension.java deleted file mode 100644 index 004f79d1a0b49..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/DistributionArchiveCheckExtension.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.gradle.api.model.ObjectFactory; -import org.gradle.api.provider.ListProperty; - -public class DistributionArchiveCheckExtension { - - ListProperty expectedMlLicenses; - - public DistributionArchiveCheckExtension(ObjectFactory factory) { - this.expectedMlLicenses = factory.listProperty(String.class); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalBwcGitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalBwcGitPlugin.java deleted file mode 100644 index 11270e5c9a51d..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalBwcGitPlugin.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.apache.commons.io.FileUtils; -import org.opensearch.gradle.LoggedExec; -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.logging.Logger; -import org.gradle.api.plugins.ExtraPropertiesExtension; -import org.gradle.api.provider.Provider; -import org.gradle.api.provider.ProviderFactory; -import org.gradle.api.tasks.TaskContainer; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.process.ExecOperations; -import org.gradle.process.ExecResult; -import org.gradle.process.ExecSpec; - -import javax.inject.Inject; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.UncheckedIOException; -import static java.util.Arrays.asList; - -public class InternalBwcGitPlugin implements Plugin { - - private final ProviderFactory providerFactory; - private final ExecOperations execOperations; - - private BwcGitExtension gitExtension; - private Project project; - - @Inject - public InternalBwcGitPlugin(ProviderFactory providerFactory, ExecOperations execOperations) { - this.providerFactory = providerFactory; - this.execOperations = execOperations; - } - - @Override - public void apply(Project project) { - this.project = project; - this.gitExtension = project.getExtensions().create("bwcGitConfig", BwcGitExtension.class); - Provider remote = providerFactory.systemProperty("bwc.remote").forUseAtConfigurationTime().orElse("opensearch-project"); - - TaskContainer tasks = project.getTasks(); - TaskProvider createCloneTaskProvider = tasks.register("createClone", LoggedExec.class, createClone -> { - createClone.onlyIf(task -> this.gitExtension.getCheckoutDir().get().exists() == false); - createClone.setCommandLine(asList("git", "clone", project.getRootDir(), gitExtension.getCheckoutDir().get())); - }); - - TaskProvider findRemoteTaskProvider = tasks.register("findRemote", LoggedExec.class, findRemote -> { - findRemote.dependsOn(createCloneTaskProvider); - // TODO Gradle should provide property based configuration here - findRemote.setWorkingDir(gitExtension.getCheckoutDir().get()); - - findRemote.setCommandLine(asList("git", "remote", "-v")); - ByteArrayOutputStream output = new ByteArrayOutputStream(); - findRemote.setStandardOutput(output); - findRemote.doLast(t -> { - ExtraPropertiesExtension extraProperties = project.getExtensions().getExtraProperties(); - extraProperties.set("remoteExists", isRemoteAvailable(remote, output)); - }); - }); - - TaskProvider addRemoteTaskProvider = tasks.register("addRemote", LoggedExec.class, addRemote -> { - addRemote.dependsOn(findRemoteTaskProvider); - addRemote.onlyIf(task -> ((boolean) project.getExtensions().getExtraProperties().get("remoteExists")) == false); - addRemote.setWorkingDir(gitExtension.getCheckoutDir().get()); - String remoteRepo = remote.get(); - // for testing only we can override the base remote url - String remoteRepoUrl = providerFactory.systemProperty("testRemoteRepo") - .forUseAtConfigurationTime() - .getOrElse("https://github.com/" + remoteRepo + "/OpenSearch.git"); - addRemote.setCommandLine(asList("git", "remote", "add", remoteRepo, remoteRepoUrl)); - }); - - TaskProvider fetchLatestTaskProvider = tasks.register("fetchLatest", LoggedExec.class, fetchLatest -> { - Provider gitFetchLatest = project.getProviders() - .systemProperty("tests.bwc.git_fetch_latest") - .forUseAtConfigurationTime() - .orElse("true") - .map(fetchProp -> { - if ("true".equals(fetchProp)) { - return true; - } - if ("false".equals(fetchProp)) { - return false; - } - throw new GradleException("tests.bwc.git_fetch_latest must be [true] or [false] but was [" + fetchProp + "]"); - }); - fetchLatest.onlyIf(t -> project.getGradle().getStartParameter().isOffline() == false && gitFetchLatest.get() != null); - fetchLatest.dependsOn(addRemoteTaskProvider); - fetchLatest.setWorkingDir(gitExtension.getCheckoutDir().get()); - fetchLatest.setCommandLine(asList("git", "fetch", "--all")); - }); - - tasks.register("checkoutBwcBranch", checkoutBwcBranch -> { - checkoutBwcBranch.dependsOn(fetchLatestTaskProvider); - checkoutBwcBranch.doLast(t -> { - Logger logger = project.getLogger(); - - String bwcBranch = this.gitExtension.getBwcBranch().get(); - final String refspec = providerFactory.systemProperty("bwc.refspec." + bwcBranch) - .orElse(providerFactory.systemProperty("tests.bwc.refspec." + bwcBranch)) - .getOrElse(remote.get() + "/" + bwcBranch); - - String effectiveRefSpec = maybeAlignedRefSpec(logger, refspec); - - logger.lifecycle("Performing checkout of {}...", refspec); - LoggedExec.exec(project, spec -> { - spec.workingDir(gitExtension.getCheckoutDir()); - spec.commandLine("git", "checkout", effectiveRefSpec); - }); - - String checkoutHash = GlobalBuildInfoPlugin.gitInfo(gitExtension.getCheckoutDir().get()).getRevision(); - logger.lifecycle("Checkout hash for {} is {}", project.getPath(), checkoutHash); - writeFile(new File(project.getBuildDir(), "refspec"), checkoutHash); - }); - }); - } - - public BwcGitExtension getGitExtension() { - return gitExtension; - } - - /** - * We use a time based approach to make the bwc versions built deterministic and compatible with the current hash. - * Most of the time we want to test against latest, but when running delayed exhaustive tests or wanting - * reproducible builds we want this to be deterministic by using a hash that was the latest when the current - * commit was made. - *

    - * This approach doesn't work with merge commits as these can introduce commits in the chronological order - * after the fact e.x. a merge done today can add commits dated with yesterday so the result will no longer be - * deterministic. - *

    - * We don't use merge commits, but for additional safety we check that no such commits exist in the time period - * we are interested in. - *

    - * Timestamps are at seconds resolution. rev-parse --before and --after are inclusive w.r.t the second - * passed as input. This means the results might not be deterministic in the current second, but this - * should not matter in practice. - */ - private String maybeAlignedRefSpec(Logger logger, String defaultRefSpec) { - if (providerFactory.systemProperty("bwc.checkout.align").isPresent() == false) { - return defaultRefSpec; - } - - String timeOfCurrent = execInCheckoutDir(execSpec -> { - execSpec.commandLine(asList("git", "show", "--no-patch", "--no-notes", "--pretty='%cD'")); - execSpec.workingDir(project.getRootDir()); - }); - - logger.lifecycle("Commit date of current: {}", timeOfCurrent); - - String mergeCommits = execInCheckoutDir( - spec -> spec.commandLine(asList("git", "rev-list", defaultRefSpec, "--after", timeOfCurrent, "--merges")) - ); - if (mergeCommits.isEmpty() == false) { - throw new IllegalStateException("Found the following merge commits which prevent determining bwc commits: " + mergeCommits); - } - return execInCheckoutDir( - spec -> spec.commandLine(asList("git", "rev-list", defaultRefSpec, "-n", "1", "--before", timeOfCurrent, "--date-order")) - ); - } - - private void writeFile(File file, String content) { - try { - FileUtils.writeStringToFile(file, content); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - private String execInCheckoutDir(Action execSpecConfig) { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - ExecResult exec = execOperations.exec(execSpec -> { - execSpec.setStandardOutput(os); - execSpec.workingDir(gitExtension.getCheckoutDir().get()); - execSpecConfig.execute(execSpec); - }); - exec.assertNormalExitValue(); - return os.toString().trim(); - } - - private static boolean isRemoteAvailable(Provider remote, ByteArrayOutputStream output) { - return new String(output.toByteArray()).contains(remote.get() + "\t"); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java deleted file mode 100644 index 96a2928b6e71e..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveCheckPlugin.java +++ /dev/null @@ -1,201 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.opensearch.gradle.VersionProperties; -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.file.ArchiveOperations; -import org.gradle.api.plugins.BasePlugin; -import org.gradle.api.tasks.Copy; -import org.gradle.api.tasks.TaskProvider; - -import javax.inject.Inject; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Arrays; -import java.util.List; -import java.util.concurrent.Callable; -import java.util.stream.Collectors; - -import static org.opensearch.gradle.util.Util.capitalize; - -public class InternalDistributionArchiveCheckPlugin implements Plugin { - - private ArchiveOperations archiveOperations; - - @Inject - public InternalDistributionArchiveCheckPlugin(ArchiveOperations archiveOperations) { - this.archiveOperations = archiveOperations; - } - - @Override - public void apply(Project project) { - project.getPlugins().apply(BasePlugin.class); - String buildTaskName = calculateBuildTask(project.getName()); - TaskProvider buildDistTask = project.getParent().getTasks().named(buildTaskName); - DistributionArchiveCheckExtension distributionArchiveCheckExtension = project.getExtensions() - .create("distributionArchiveCheck", DistributionArchiveCheckExtension.class); - - File archiveExtractionDir = calculateArchiveExtractionDir(project); - // sanity checks if archives can be extracted - TaskProvider checkExtraction = registerCheckExtractionTask(project, buildDistTask, archiveExtractionDir); - checkExtraction.configure(InternalDistributionArchiveSetupPlugin.configure(buildTaskName)); - TaskProvider checkLicense = registerCheckLicenseTask(project, checkExtraction); - checkLicense.configure(InternalDistributionArchiveSetupPlugin.configure(buildTaskName)); - - TaskProvider checkNotice = registerCheckNoticeTask(project, checkExtraction); - checkNotice.configure(InternalDistributionArchiveSetupPlugin.configure(buildTaskName)); - TaskProvider checkTask = project.getTasks().named("check"); - checkTask.configure(task -> { - task.dependsOn(checkExtraction); - task.dependsOn(checkLicense); - task.dependsOn(checkNotice); - }); - } - - private File calculateArchiveExtractionDir(Project project) { - if (project.getName().contains("tar")) { - return new File(project.getBuildDir(), "tar-extracted"); - } - if (project.getName().contains("zip") == false) { - throw new GradleException("Expecting project name containing 'zip' or 'tar'."); - } - return new File(project.getBuildDir(), "zip-extracted"); - } - - private TaskProvider registerCheckNoticeTask(Project project, TaskProvider checkExtraction) { - return project.getTasks().register("checkNotice", task -> { - task.dependsOn(checkExtraction); - task.doLast(new Action() { - @Override - public void execute(Task task) { - final List noticeLines = Arrays.asList( - "OpenSearch (https://opensearch.org/)", - "Copyright OpenSearch Contributors" - ); - final Path noticePath = checkExtraction.get() - .getDestinationDir() - .toPath() - .resolve("opensearch-" + VersionProperties.getOpenSearch() + "/NOTICE.txt"); - assertLinesInFile(noticePath, noticeLines); - } - }); - }); - } - - private TaskProvider registerCheckLicenseTask(Project project, TaskProvider checkExtraction) { - return project.getTasks().register("checkLicense", task -> { - task.dependsOn(checkExtraction); - task.doLast(new Action() { - @Override - public void execute(Task task) { - String licenseFilename = "APACHE-LICENSE-2.0.txt"; - final List licenseLines; - try { - licenseLines = Files.readAllLines(project.getRootDir().toPath().resolve("licenses/" + licenseFilename)); - final Path licensePath = checkExtraction.get() - .getDestinationDir() - .toPath() - .resolve("opensearch-" + VersionProperties.getOpenSearch() + "/LICENSE.txt"); - assertLinesInFile(licensePath, licenseLines); - } catch (IOException ioException) { - ioException.printStackTrace(); - } - } - }); - }); - } - - private TaskProvider registerCheckExtractionTask(Project project, TaskProvider buildDistTask, File archiveExtractionDir) { - return project.getTasks().register("checkExtraction", Copy.class, t -> { - t.dependsOn(buildDistTask); - if (project.getName().contains("tar")) { - t.from(archiveOperations.tarTree(distTaskOutput(buildDistTask))); - } else { - t.from(archiveOperations.zipTree(distTaskOutput(buildDistTask))); - } - t.into(archiveExtractionDir); - // common sanity checks on extracted archive directly as part of checkExtraction - t.eachFile(fileCopyDetails -> assertNoClassFile(fileCopyDetails.getFile())); - }); - } - - private static void assertLinesInFile(Path path, List expectedLines) { - try { - final List actualLines = Files.readAllLines(path); - int line = 0; - for (final String expectedLine : expectedLines) { - final String actualLine = actualLines.get(line); - if (expectedLine.equals(actualLine) == false) { - throw new GradleException( - "expected line [" + (line + 1) + "] in [" + path + "] to be [" + expectedLine + "] but was [" + actualLine + "]" - ); - } - line++; - } - } catch (IOException ioException) { - throw new GradleException("Unable to read from file " + path, ioException); - } - } - - private static void assertNoClassFile(File file) { - if (file.getName().endsWith(".class")) { - throw new GradleException("Detected class file in distribution ('" + file.getName() + "')"); - } - } - - private Object distTaskOutput(TaskProvider buildDistTask) { - return new Callable() { - @Override - public File call() { - return buildDistTask.get().getOutputs().getFiles().getSingleFile(); - } - - @Override - public String toString() { - return call().getAbsolutePath(); - } - }; - } - - private String calculateBuildTask(String projectName) { - return "build" + Arrays.stream(projectName.split("-")).map(f -> capitalize(f)).collect(Collectors.joining()); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java deleted file mode 100644 index 0944f3960467b..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionArchiveSetupPlugin.java +++ /dev/null @@ -1,203 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.opensearch.gradle.EmptyDirTask; -import org.opensearch.gradle.tar.SymbolicLinkPreservingTar; -import org.gradle.api.Action; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.type.ArtifactTypeDefinition; -import org.gradle.api.plugins.BasePlugin; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.tasks.AbstractCopyTask; -import org.gradle.api.tasks.Sync; -import org.gradle.api.tasks.TaskContainer; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.bundling.AbstractArchiveTask; -import org.gradle.api.tasks.bundling.Compression; -import org.gradle.api.tasks.bundling.Zip; -import org.gradle.internal.os.OperatingSystem; -import java.io.File; - -import static org.opensearch.gradle.util.Util.capitalize; -import static org.gradle.api.internal.artifacts.ArtifactAttributes.ARTIFACT_FORMAT; - -/** - * Provides a DSL and common configurations to define different types of - * OpenSearch distribution archives. See ':distribution:archives'. - *

    - * This configures the default artifacts for the distribution specific - * subprojects. We have subprojects for two reasons: - * 1. Gradle project substitutions can only bind to the default - * configuration of a project - * 2. The integ-test-zip and zip distributions have the exact same - * filename, so they must be placed in different directories. - * 3. We provide a packed and an unpacked variant of the distribution - * - the unpacked variant is used by consumers like test cluster definitions - * 4. Having per-distribution sub-projects means we can build them in parallel. - */ -public class InternalDistributionArchiveSetupPlugin implements Plugin { - private static final Logger LOGGER = Logging.getLogger(InternalDistributionArchiveSetupPlugin.class); - - public static final String DEFAULT_CONFIGURATION_NAME = "default"; - public static final String EXTRACTED_CONFIGURATION_NAME = "extracted"; - private NamedDomainObjectContainer container; - - @Override - public void apply(Project project) { - project.getPlugins().apply(BasePlugin.class); - registerAndConfigureDistributionArchivesExtension(project); - registerEmptyDirectoryTasks(project); - configureGeneralTaskDefaults(project); - configureTarDefaults(project); - } - - static Action configure(String name) { - return (Task task) -> task.onlyIf(s -> { - if (OperatingSystem.current().isWindows()) { - // On Windows, include only Windows distributions and integTestZip - final String nameLowerCased = name.toLowerCase(); - final boolean skip = !(nameLowerCased.contains("windows") || nameLowerCased.contains("integtest")); - - if (skip) { - LOGGER.info("Skipping task " + name + " since it does not match current OS platform"); - } - - return !skip; - } else { - return true; - } - }); - } - - private void registerAndConfigureDistributionArchivesExtension(Project project) { - container = project.container(DistributionArchive.class, name -> { - String subProjectDir = archiveToSubprojectName(name); - String copyDistributionTaskName = "build" + capitalize(name.substring(0, name.length() - 3)); - TaskContainer tasks = project.getTasks(); - TaskProvider explodedDist = tasks.register( - copyDistributionTaskName, - Sync.class, - sync -> sync.into(subProjectDir + "/build/install/") - ); - explodedDist.configure(configure(name)); - String archiveTaskName = "build" + capitalize(name); - - TaskProvider archiveTask = name.endsWith("Tar") - ? tasks.register(archiveTaskName, SymbolicLinkPreservingTar.class) - : tasks.register(archiveTaskName, Zip.class); - archiveTask.configure(configure(name)); - - return new DistributionArchive(archiveTask, explodedDist, name); - }); - // Each defined distribution archive is linked to a subproject. - // A distribution archive definition not matching a sub project will result in build failure. - container.whenObjectAdded(distributionArchive -> { - String subProjectName = archiveToSubprojectName(distributionArchive.getName()); - project.project(subProjectName, sub -> { - sub.getPlugins().apply(BasePlugin.class); - sub.getArtifacts().add(DEFAULT_CONFIGURATION_NAME, distributionArchive.getArchiveTask()); - Configuration extractedConfiguration = sub.getConfigurations().create("extracted"); - extractedConfiguration.setCanBeResolved(false); - extractedConfiguration.getAttributes().attribute(ARTIFACT_FORMAT, ArtifactTypeDefinition.DIRECTORY_TYPE); - sub.getArtifacts().add(EXTRACTED_CONFIGURATION_NAME, distributionArchive.getExpandedDistTask()); - - }); - }); - project.getExtensions().add("distribution_archives", container); - } - - private void configureGeneralTaskDefaults(Project project) { - // common config across all copy / archive tasks - project.getTasks().withType(AbstractCopyTask.class).configureEach(t -> { - t.dependsOn(project.getTasks().withType(EmptyDirTask.class)); - t.setIncludeEmptyDirs(true); - t.setDirMode(0755); - t.setFileMode(0644); - }); - - // common config across all archives - project.getTasks().withType(AbstractArchiveTask.class).configureEach(t -> { - String subdir = archiveTaskToSubprojectName(t.getName()); - t.getDestinationDirectory().set(project.file(subdir + "/build/distributions")); - t.getArchiveBaseName().set("opensearch-min"); - }); - } - - private void configureTarDefaults(Project project) { - // common config across all tars - project.getTasks().withType(SymbolicLinkPreservingTar.class).configureEach(t -> { - t.getArchiveExtension().set("tar.gz"); - t.setCompression(Compression.GZIP); - }); - } - - private void registerEmptyDirectoryTasks(Project project) { - // CopySpec does not make it easy to create an empty directory so we - // create the directory that we want, and then point CopySpec to its - // parent to copy to the root of the distribution - File logsDir = new File(project.getBuildDir(), "logs-hack/logs"); - project.getExtensions().getExtraProperties().set("logsDir", new File(project.getBuildDir(), "logs-hack/logs")); - project.getTasks().register("createLogsDir", EmptyDirTask.class, t -> { - t.setDir(logsDir); - t.setDirMode(0755); - }); - - File pluginsDir = new File(project.getBuildDir(), "plugins-hack/plugins"); - project.getExtensions().add("pluginsDir", pluginsDir); - project.getTasks().register("createPluginsDir", EmptyDirTask.class, t -> { - t.setDir(pluginsDir); - t.setDirMode(0755); - }); - - File jvmOptionsDir = new File(project.getBuildDir(), "jvm-options-hack/jvm.options.d"); - project.getExtensions().add("jvmOptionsDir", jvmOptionsDir); - project.getTasks().register("createJvmOptionsDir", EmptyDirTask.class, t -> { - t.setDir(jvmOptionsDir); - t.setDirMode(0750); - }); - } - - private static String archiveTaskToSubprojectName(String taskName) { - return archiveToSubprojectName(taskName).substring("build".length() + 1); - } - - private static String archiveToSubprojectName(String taskName) { - return taskName.replaceAll("[A-Z]", "-$0").toLowerCase(); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.java deleted file mode 100644 index 36e7adf1ae98e..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionBwcSetupPlugin.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.opensearch.gradle.BwcVersions; -import org.opensearch.gradle.Version; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.gradle.api.InvalidUserDataException; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.provider.Provider; -import org.gradle.api.provider.ProviderFactory; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.language.base.plugins.LifecycleBasePlugin; - -import javax.inject.Inject; -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; -import java.util.stream.Collectors; - -import static java.util.Arrays.asList; -import static java.util.Arrays.stream; - -/** - * We want to be able to do BWC tests for unreleased versions without relying on and waiting for snapshots. - * For this we need to check out and build the unreleased versions. - * Since these depend on the current version, we can't name the Gradle projects statically, and don't know what the - * unreleased versions are when Gradle projects are set up, so we use "build-unreleased-version-*" as placeholders - * and configure them to build various versions here. - */ -public class InternalDistributionBwcSetupPlugin implements Plugin { - - private ProviderFactory providerFactory; - - @Inject - public InternalDistributionBwcSetupPlugin(ProviderFactory providerFactory) { - this.providerFactory = providerFactory; - } - - @Override - public void apply(Project project) { - project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class); - BuildParams.getBwcVersions() - .forPreviousUnreleased( - (BwcVersions.UnreleasedVersionInfo unreleasedVersion) -> { - configureBwcProject(project.project(unreleasedVersion.gradleProjectPath), unreleasedVersion); - } - ); - } - - private void configureBwcProject(Project project, BwcVersions.UnreleasedVersionInfo versionInfo) { - Provider versionInfoProvider = providerFactory.provider(() -> versionInfo); - Provider checkoutDir = versionInfoProvider.map(info -> new File(project.getBuildDir(), "bwc/checkout-" + info.branch)); - BwcSetupExtension bwcSetupExtension = project.getExtensions() - .create("bwcSetup", BwcSetupExtension.class, project, versionInfoProvider, checkoutDir); - BwcGitExtension gitExtension = project.getPlugins().apply(InternalBwcGitPlugin.class).getGitExtension(); - Provider bwcVersion = versionInfoProvider.map(info -> info.version); - gitExtension.setBwcVersion(versionInfoProvider.map(info -> info.version)); - gitExtension.setBwcBranch(versionInfoProvider.map(info -> info.branch)); - gitExtension.setCheckoutDir(checkoutDir); - - // we want basic lifecycle tasks like `clean` here. - project.getPlugins().apply(LifecycleBasePlugin.class); - - TaskProvider buildBwcTaskProvider = project.getTasks().register("buildBwc"); - List distributionProjects = resolveArchiveProjects(checkoutDir.get(), bwcVersion.get()); - - for (DistributionProject distributionProject : distributionProjects) { - createBuildBwcTask( - bwcSetupExtension, - project, - bwcVersion, - distributionProject.name, - distributionProject.getProjectPath(), - distributionProject.getDistFile(), - buildBwcTaskProvider - ); - - registerBwcArtifacts(project, distributionProject); - } - } - - private void registerBwcArtifacts(Project bwcProject, DistributionProject distributionProject) { - String projectName = distributionProject.name; - String buildBwcTask = buildBwcTaskName(projectName); - - registerDistributionArchiveArtifact(bwcProject, distributionProject, buildBwcTask); - if (distributionProject.getExpandedDistDirectory() != null) { - String expandedDistConfiguration = "expanded-" + projectName; - bwcProject.getConfigurations().create(expandedDistConfiguration); - bwcProject.getArtifacts().add(expandedDistConfiguration, distributionProject.getExpandedDistDirectory(), artifact -> { - artifact.setName("opensearch"); - artifact.builtBy(buildBwcTask); - artifact.setType("directory"); - }); - } - } - - private void registerDistributionArchiveArtifact(Project bwcProject, DistributionProject distributionProject, String buildBwcTask) { - String artifactFileName = distributionProject.getDistFile().getName(); - String artifactName = "opensearch"; - - String suffix = artifactFileName.endsWith("tar.gz") ? "tar.gz" : artifactFileName.substring(artifactFileName.length() - 3); - int archIndex = artifactFileName.indexOf("x64"); - - bwcProject.getConfigurations().create(distributionProject.name); - bwcProject.getArtifacts().add(distributionProject.name, distributionProject.getDistFile(), artifact -> { - artifact.setName(artifactName); - artifact.builtBy(buildBwcTask); - artifact.setType(suffix); - - String classifier = ""; - if (archIndex != -1) { - int osIndex = artifactFileName.lastIndexOf('-', archIndex - 2); - classifier = "-" + artifactFileName.substring(osIndex + 1, archIndex - 1) + "-x64"; - } - artifact.setClassifier(classifier); - }); - } - - private static List resolveArchiveProjects(File checkoutDir, Version bwcVersion) { - List projects = new ArrayList<>(); - // All active BWC branches publish rpm and deb packages - projects.addAll(asList("deb", "rpm")); - - if (bwcVersion.onOrAfter("7.0.0")) { // starting with 7.0 we bundle a jdk which means we have platform-specific archives - projects.addAll( - asList( - "darwin-tar", - "darwin-arm64-tar", - "linux-tar", - "linux-arm64-tar", - "linux-ppc64le-tar", - "linux-s390x-tar", - "windows-zip" - ) - ); - } else { // prior to 7.0 we published only a single zip and tar archives - projects.addAll(asList("zip", "tar")); - } - - return projects.stream().map(name -> { - String baseDir = "distribution" + (name.endsWith("zip") || name.endsWith("tar") ? "/archives" : "/packages"); - String classifier = ""; - String extension = name; - if (bwcVersion.onOrAfter("7.0.0")) { - if (name.contains("zip") || name.contains("tar")) { - int index = name.lastIndexOf('-'); - String baseName = name.substring(0, index); - classifier = "-" + baseName + "-x64"; - extension = name.substring(index + 1); - if (extension.equals("tar")) { - extension += ".gz"; - } - } else if (name.contains("deb")) { - classifier = "-amd64"; - } else if (name.contains("rpm")) { - classifier = "-x64"; - } - } else { - extension = name.substring(4); - } - return new DistributionProject(name, baseDir, bwcVersion, classifier, extension, checkoutDir); - }).collect(Collectors.toList()); - } - - private static String buildBwcTaskName(String projectName) { - return "buildBwc" - + stream(projectName.split("-")).map(i -> i.substring(0, 1).toUpperCase(Locale.ROOT) + i.substring(1)) - .collect(Collectors.joining()); - } - - static void createBuildBwcTask( - BwcSetupExtension bwcSetupExtension, - Project project, - Provider bwcVersion, - String projectName, - String projectPath, - File projectArtifact, - TaskProvider bwcTaskProvider - ) { - String bwcTaskName = buildBwcTaskName(projectName); - bwcSetupExtension.bwcTask(bwcTaskName, c -> { - c.getInputs().file(new File(project.getBuildDir(), "refspec")); - c.getOutputs().files(projectArtifact); - c.getOutputs().cacheIf("BWC distribution caching is disabled on 'master' branch", task -> { - String gitBranch = System.getenv("GIT_BRANCH"); - return BuildParams.isCi() && (gitBranch == null || gitBranch.endsWith("master") == false); - }); - c.args(projectPath.replace('/', ':') + ":assemble"); - if (project.getGradle().getStartParameter().isBuildCacheEnabled()) { - c.args("--build-cache"); - } - c.doLast(task -> { - if (projectArtifact.exists() == false) { - throw new InvalidUserDataException( - "Building " + bwcVersion.get() + " didn't generate expected file " + projectArtifact - ); - } - }); - }); - bwcTaskProvider.configure(t -> t.dependsOn(bwcTaskName)); - } - - /** - * Represents an archive project (distribution/archives/*) - * we build from a bwc Version in a cloned repository - */ - private static class DistributionProject { - private final String name; - private String projectPath; - private File distFile; - private File expandedDistDir; - - DistributionProject(String name, String baseDir, Version version, String classifier, String extension, File checkoutDir) { - this.name = name; - this.projectPath = baseDir + "/" + name; - if (version.onOrAfter("1.1.0")) { - this.distFile = new File( - checkoutDir, - baseDir + "/" + name + "/build/distributions/opensearch-min-" + version + "-SNAPSHOT" + classifier + "." + extension - ); - } else { - this.distFile = new File( - checkoutDir, - baseDir + "/" + name + "/build/distributions/opensearch-" + version + "-SNAPSHOT" + classifier + "." + extension - ); - } - // we only ported this down to the 7.x branch. - if (version.onOrAfter("7.10.0") && (name.endsWith("zip") || name.endsWith("tar"))) { - this.expandedDistDir = new File(checkoutDir, baseDir + "/" + name + "/build/install"); - } - } - - public String getProjectPath() { - return projectPath; - } - - public File getDistFile() { - return distFile; - } - - public File getExpandedDistDirectory() { - return expandedDistDir; - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin.java deleted file mode 100644 index f4368b1cecc59..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/internal/InternalDistributionDownloadPlugin.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.internal; - -import org.opensearch.gradle.Architecture; -import org.opensearch.gradle.BwcVersions; -import org.opensearch.gradle.DistributionDependency; -import org.opensearch.gradle.DistributionDownloadPlugin; -import org.opensearch.gradle.DistributionResolution; -import org.opensearch.gradle.OpenSearchDistribution; -import org.opensearch.gradle.Version; -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.gradle.api.GradleException; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Dependency; - -import java.util.function.Function; - -import static org.opensearch.gradle.util.GradleUtils.projectDependency; - -/** - * An internal opensearch build plugin that registers additional - * distribution resolution strategies to the 'opensearch.download-distribution' plugin - * to resolve distributions from a local snapshot or a locally built bwc snapshot. - */ -public class InternalDistributionDownloadPlugin implements Plugin { - - private BwcVersions bwcVersions = null; - - @Override - public void apply(Project project) { - // this is needed for isInternal - project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class); - if (!BuildParams.isInternal()) { - throw new GradleException( - "Plugin 'opensearch.internal-distribution-download' is not supported. " - + "Use 'opensearch.distribution-download' plugin instead." - ); - } - project.getPluginManager().apply(DistributionDownloadPlugin.class); - this.bwcVersions = BuildParams.getBwcVersions(); - registerInternalDistributionResolutions(DistributionDownloadPlugin.getRegistrationsContainer(project)); - } - - /** - * Registers internal distribution resolutions. - *

    - * OpenSearch distributions are resolved as project dependencies either representing - * the current version pointing to a project either under `:distribution:archives` or :distribution:packages`. - *

    - * BWC versions are resolved as project to projects under `:distribution:bwc`. - */ - private void registerInternalDistributionResolutions(NamedDomainObjectContainer resolutions) { - - resolutions.register("localBuild", distributionResolution -> distributionResolution.setResolver((project, distribution) -> { - if (VersionProperties.getOpenSearch().equals(distribution.getVersion())) { - // non-external project, so depend on local build - return new ProjectBasedDistributionDependency( - config -> projectDependency(project, distributionProjectPath(distribution), config) - ); - } - return null; - })); - - resolutions.register("bwc", distributionResolution -> distributionResolution.setResolver((project, distribution) -> { - BwcVersions.UnreleasedVersionInfo unreleasedInfo = bwcVersions.unreleasedInfo(Version.fromString(distribution.getVersion())); - if (unreleasedInfo != null) { - if (!distribution.getBundledJdk()) { - throw new GradleException( - "Configuring a snapshot bwc distribution ('" - + distribution.getName() - + "') " - + "without a bundled JDK is not supported." - ); - } - String projectConfig = getProjectConfig(distribution, unreleasedInfo); - return new ProjectBasedDistributionDependency( - (config) -> projectDependency(project, unreleasedInfo.gradleProjectPath, projectConfig) - ); - } - return null; - })); - } - - /** - * Will be removed once this is backported to all unreleased branches. - */ - private static String getProjectConfig(OpenSearchDistribution distribution, BwcVersions.UnreleasedVersionInfo info) { - String distributionProjectName = distributionProjectName(distribution); - if (distribution.getType().shouldExtract()) { - return (info.gradleProjectPath.equals(":distribution") || info.version.before("7.10.0")) - ? distributionProjectName - : "expanded-" + distributionProjectName; - } else { - return distributionProjectName; - - } - - } - - private static String distributionProjectPath(OpenSearchDistribution distribution) { - String projectPath = ":distribution"; - switch (distribution.getType()) { - case INTEG_TEST_ZIP: - projectPath += ":archives:integ-test-zip"; - break; - - case DOCKER: - projectPath += ":docker:"; - projectPath += distributionProjectName(distribution); - break; - - default: - projectPath += distribution.getType() == OpenSearchDistribution.Type.ARCHIVE ? ":archives:" : ":packages:"; - projectPath += distributionProjectName(distribution); - break; - } - return projectPath; - } - - /** - * Works out the gradle project name that provides a distribution artifact. - * - * @param distribution the distribution from which to derive a project name - * @return the name of a project. It is not the full project path, only the name. - */ - private static String distributionProjectName(OpenSearchDistribution distribution) { - OpenSearchDistribution.Platform platform = distribution.getPlatform(); - Architecture architecture = distribution.getArchitecture(); - String projectName = ""; - - final String archString = platform == OpenSearchDistribution.Platform.WINDOWS || architecture == Architecture.X64 - ? "" - : "-" + architecture.toString().toLowerCase(); - - if (distribution.getBundledJdk() == false) { - projectName += "no-jdk-"; - } - switch (distribution.getType()) { - case ARCHIVE: - if (Version.fromString(distribution.getVersion()).onOrAfter("7.0.0")) { - projectName += platform.toString() + archString + (platform == OpenSearchDistribution.Platform.WINDOWS - ? "-zip" - : "-tar"); - } else { - projectName = "zip"; - } - break; - - case DOCKER: - projectName += "docker" + archString + "-export"; - break; - - default: - projectName += distribution.getType(); - break; - } - return projectName; - } - - private static class ProjectBasedDistributionDependency implements DistributionDependency { - - private Function function; - - ProjectBasedDistributionDependency(Function function) { - this.function = function; - } - - @Override - public Object getDefaultNotation() { - return function.apply("default"); - } - - @Override - public Object getExtractedNotation() { - return function.apply("extracted"); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/plugin/PluginPropertiesExtension.java b/buildSrc/src/main/java/org/opensearch/gradle/plugin/PluginPropertiesExtension.java deleted file mode 100644 index d6117923973fa..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/plugin/PluginPropertiesExtension.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.plugin; - -import org.gradle.api.Project; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -/** - * A container for plugin properties that will be written to the plugin descriptor, for easy - * manipulation in the gradle DSL. - */ -public class PluginPropertiesExtension { - private String name; - - private String version; - - private String description; - - private String classname; - - private String customFolderName = ""; - - /** Other plugins this plugin extends through SPI */ - private List extendedPlugins = new ArrayList<>(); - - private boolean hasNativeController; - - /** True if the plugin requires the opensearch keystore to exist, false otherwise. */ - private boolean requiresKeystore; - - /** A license file that should be included in the built plugin zip. */ - private File licenseFile; - - private boolean hasClientJar = false; - - /** - * A notice file that should be included in the built plugin zip. This will be - * extended with notices from the {@code licenses/} directory. - */ - private File noticeFile; - - private final Project project; - - public PluginPropertiesExtension(Project project) { - this.project = project; - } - - public String getCustomFolderName() { - return customFolderName; - } - - public void setCustomFolderName(String customFolderName) { - this.customFolderName = customFolderName; - } - - public String getName() { - return name == null ? project.getName() : name; - } - - public void setName(String name) { - this.name = name; - } - - public String getVersion() { - return version == null ? project.getVersion().toString() : version; - } - - public void setVersion(String version) { - this.version = version; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getClassname() { - return classname; - } - - public void setClassname(String classname) { - this.classname = classname; - } - - public List getExtendedPlugins() { - return this.extendedPlugins; - } - - public boolean isHasNativeController() { - return hasNativeController; - } - - public void setHasNativeController(boolean hasNativeController) { - this.hasNativeController = hasNativeController; - } - - public boolean isRequiresKeystore() { - return requiresKeystore; - } - - public void setRequiresKeystore(boolean requiresKeystore) { - this.requiresKeystore = requiresKeystore; - } - - public File getLicenseFile() { - return licenseFile; - } - - public void setLicenseFile(File licenseFile) { - this.project.getExtensions().getExtraProperties().set("licenseFile", licenseFile); - this.licenseFile = licenseFile; - } - - public File getNoticeFile() { - return noticeFile; - } - - public void setNoticeFile(File noticeFile) { - this.project.getExtensions().getExtraProperties().set("noticeFile", noticeFile); - this.noticeFile = noticeFile; - } - - public Project getProject() { - return project; - } - - public void setExtendedPlugins(List extendedPlugins) { - this.extendedPlugins = extendedPlugins; - } - - public boolean isHasClientJar() { - return hasClientJar; - } - - public void setHasClientJar(boolean hasClientJar) { - this.hasClientJar = hasClientJar; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesPrecommitPlugin.java deleted file mode 100644 index d4dcde9d63087..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesPrecommitPlugin.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.dependencies.CompileOnlyResolvePlugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.ProjectDependency; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.tasks.TaskProvider; - -public class DependencyLicensesPrecommitPlugin extends PrecommitPlugin { - - @Override - public TaskProvider createTask(Project project) { - project.getPlugins().apply(CompileOnlyResolvePlugin.class); - TaskProvider dependencyLicenses = project.getTasks() - .register("dependencyLicenses", DependencyLicensesTask.class); - - // only require dependency licenses for non-opensearch deps - dependencyLicenses.configure(t -> { - Configuration runtimeClasspath = project.getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME); - Configuration compileOnly = project.getConfigurations() - .getByName(CompileOnlyResolvePlugin.RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME); - t.setDependencies( - runtimeClasspath.fileCollection(dependency -> dependency instanceof ProjectDependency == false).minus(compileOnly) - ); - }); - - // we also create the updateShas helper task that is associated with dependencyLicenses - project.getTasks().register("updateShas", UpdateShasTask.class, t -> t.setParentTask(dependencyLicenses)); - return dependencyLicenses; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesTask.java deleted file mode 100644 index e801681c5c386..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/DependencyLicensesTask.java +++ /dev/null @@ -1,392 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.apache.commons.codec.binary.Hex; -import org.opensearch.gradle.precommit.LicenseAnalyzer.LicenseInfo; -import org.gradle.api.DefaultTask; -import org.gradle.api.GradleException; -import org.gradle.api.InvalidUserDataException; -import org.gradle.api.file.FileCollection; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputDirectory; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.Internal; -import org.gradle.api.tasks.Optional; -import org.gradle.api.tasks.OutputDirectory; -import org.gradle.api.tasks.TaskAction; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -/** - * A task to check licenses for dependencies. - *

    - * There are two parts to the check: - *

      - *
    • LICENSE, NOTICE and SOURCES files
    • - *
    • SHA checksums for each dependency jar
    • - *
    - *

    - * The directory to find the license and sha files in defaults to the dir @{code licenses} - * in the project directory for this task. You can override this directory: - *

    - *   dependencyLicenses {
    - *     licensesDir = getProject().file("mybetterlicensedir")
    - *   }
    - * 
    - *

    - * The jar files to check default to the dependencies from the default configuration. You - * can override this, for example, to only check compile dependencies: - *

    - *   dependencyLicenses {
    - *     dependencies = getProject().configurations.compile
    - *   }
    - * 
    - *

    - * Every jar must have a {@code .sha1} file in the licenses dir. These can be managed - * automatically using the {@code updateShas} helper task that is created along - * with this task. It will add {@code .sha1} files for new jars that are in dependencies - * and remove old {@code .sha1} files that are no longer needed. - *

    - * Every jar must also have a LICENSE and NOTICE file. However, multiple jars can share - * LICENSE and NOTICE files by mapping a pattern to the same name. - *

    - *   dependencyLicenses {
    - *     mapping from: /lucene-.*/, to: "lucene"
    - *   }
    - * 
    - * Dependencies using licenses with stricter distribution requirements (such as LGPL) - * require a SOURCES file as well. The file should include a URL to a source distribution - * for the dependency. This artifact will be redistributed by us with the release to - * comply with the license terms. - */ -public class DependencyLicensesTask extends DefaultTask { - - private final Pattern regex = Pattern.compile("-v?\\d+.*"); - - private final Logger logger = Logging.getLogger(getClass()); - - private static final String SHA_EXTENSION = ".sha1"; - - // TODO: we should be able to default this to eg compile deps, but we need to move the licenses - // check from distribution to core (ie this should only be run on java projects) - /** - * A collection of jar files that should be checked. - */ - private FileCollection dependencies; - - /** - * The directory to find the license and sha files in. - */ - private File licensesDir = new File(getProject().getProjectDir(), "licenses"); - - /** - * A map of patterns to prefix, used to find the LICENSE and NOTICE file. - */ - private Map mappings = new LinkedHashMap<>(); - - /** - * Names of dependencies whose shas should not exist. - */ - private Set ignoreShas = new HashSet<>(); - - /** - * Add a mapping from a regex pattern for the jar name, to a prefix to find - * the LICENSE and NOTICE file for that jar. - */ - public void mapping(Map props) { - String from = props.remove("from"); - if (from == null) { - throw new InvalidUserDataException("Missing \"from\" setting for license name mapping"); - } - String to = props.remove("to"); - if (to == null) { - throw new InvalidUserDataException("Missing \"to\" setting for license name mapping"); - } - if (props.isEmpty() == false) { - throw new InvalidUserDataException("Unknown properties for mapping on dependencyLicenses: " + props.keySet()); - } - mappings.put(from, to); - } - - @InputFiles - public FileCollection getDependencies() { - return dependencies; - } - - public void setDependencies(FileCollection dependencies) { - this.dependencies = dependencies; - } - - @Optional - @InputDirectory - public File getLicensesDir() { - if (licensesDir.exists()) { - return licensesDir; - } - - return null; - } - - public void setLicensesDir(File licensesDir) { - this.licensesDir = licensesDir; - } - - /** - * Add a rule which will skip SHA checking for the given dependency name. This should be used for - * locally build dependencies, which cause the sha to change constantly. - */ - public void ignoreSha(String dep) { - ignoreShas.add(dep); - } - - @TaskAction - public void checkDependencies() throws IOException, NoSuchAlgorithmException { - if (dependencies == null) { - throw new GradleException("No dependencies variable defined."); - } - - if (dependencies.isEmpty()) { - if (licensesDir.exists()) { - throw new GradleException("Licenses dir " + licensesDir + " exists, but there are no dependencies"); - } - return; // no dependencies to check - } else if (licensesDir.exists() == false) { - String deps = ""; - for (File file : dependencies) { - deps += file.getName() + "\n"; - } - throw new GradleException("Licences dir " + licensesDir + " does not exist, but there are dependencies: " + deps); - } - - Map licenses = new HashMap<>(); - Map notices = new HashMap<>(); - Map sources = new HashMap<>(); - Set shaFiles = new HashSet<>(); - - for (File file : licensesDir.listFiles()) { - String name = file.getName(); - if (name.endsWith(SHA_EXTENSION)) { - shaFiles.add(file); - } else if (name.endsWith("-LICENSE") || name.endsWith("-LICENSE.txt")) { - // TODO: why do we support suffix of LICENSE *and* LICENSE.txt?? - licenses.put(name, false); - } else if (name.contains("-NOTICE") || name.contains("-NOTICE.txt")) { - notices.put(name, false); - } else if (name.contains("-SOURCES") || name.contains("-SOURCES.txt")) { - sources.put(name, false); - } - } - - checkDependencies(licenses, notices, sources, shaFiles); - - licenses.forEach((item, exists) -> failIfAnyMissing(item, exists, "license")); - - notices.forEach((item, exists) -> failIfAnyMissing(item, exists, "notice")); - - sources.forEach((item, exists) -> failIfAnyMissing(item, exists, "sources")); - - if (shaFiles.isEmpty() == false) { - throw new GradleException("Unused sha files found: \n" + joinFilenames(shaFiles)); - } - - } - - // This is just a marker output folder to allow this task being up-to-date. - // The check logic is exception driven so a failed tasks will not be defined - // by this output but when successful we can safely mark the task as up-to-date. - @OutputDirectory - public File getOutputMarker() { - return new File(getProject().getBuildDir(), "dependencyLicense"); - } - - private void failIfAnyMissing(String item, Boolean exists, String type) { - if (exists == false) { - throw new GradleException("Unused " + type + " " + item); - } - } - - private void checkDependencies( - Map licenses, - Map notices, - Map sources, - Set shaFiles - ) throws NoSuchAlgorithmException, IOException { - for (File dependency : dependencies) { - String jarName = dependency.getName(); - String depName = regex.matcher(jarName).replaceFirst(""); - - validateSha(shaFiles, dependency, jarName, depName); - - String dependencyName = getDependencyName(mappings, depName); - logger.info("mapped dependency name {} to {} for license/notice check", depName, dependencyName); - checkFile(dependencyName, jarName, licenses, "LICENSE"); - checkFile(dependencyName, jarName, notices, "NOTICE"); - - File licenseFile = new File(licensesDir, getFileName(dependencyName, licenses, "LICENSE")); - LicenseInfo licenseInfo = LicenseAnalyzer.licenseType(licenseFile); - if (licenseInfo.isSourceRedistributionRequired()) { - checkFile(dependencyName, jarName, sources, "SOURCES"); - } - } - } - - private void validateSha(Set shaFiles, File dependency, String jarName, String depName) throws NoSuchAlgorithmException, - IOException { - if (ignoreShas.contains(depName)) { - // local deps should not have sha files! - if (getShaFile(jarName).exists()) { - throw new GradleException("SHA file " + getShaFile(jarName) + " exists for ignored dependency " + depName); - } - } else { - logger.info("Checking sha for {}", jarName); - checkSha(dependency, jarName, shaFiles); - } - } - - private String joinFilenames(Set shaFiles) { - List names = shaFiles.stream().map(File::getName).collect(Collectors.toList()); - return String.join("\n", names); - } - - public static String getDependencyName(Map mappings, String dependencyName) { - // order is the same for keys and values iteration since we use a linked hashmap - List mapped = new ArrayList<>(mappings.values()); - Pattern mappingsPattern = Pattern.compile("(" + String.join(")|(", mappings.keySet()) + ")"); - Matcher match = mappingsPattern.matcher(dependencyName); - if (match.matches()) { - int i = 0; - while (i < match.groupCount() && match.group(i + 1) == null) { - ++i; - } - return mapped.get(i); - } - return dependencyName; - } - - private void checkSha(File jar, String jarName, Set shaFiles) throws NoSuchAlgorithmException, IOException { - File shaFile = getShaFile(jarName); - if (shaFile.exists() == false) { - throw new GradleException("Missing SHA for " + jarName + ". Run \"gradle updateSHAs\" to create them"); - } - - // TODO: shouldn't have to trim, sha files should not have trailing newline - byte[] fileBytes = Files.readAllBytes(shaFile.toPath()); - String expectedSha = new String(fileBytes, StandardCharsets.UTF_8).trim(); - - String sha = getSha1(jar); - - if (expectedSha.equals(sha) == false) { - final String exceptionMessage = String.format( - Locale.ROOT, - "SHA has changed! Expected %s for %s but got %s." - + "\nThis usually indicates a corrupt dependency cache or artifacts changed upstream." - + "\nEither wipe your cache, fix the upstream artifact, or delete %s and run updateShas", - expectedSha, - jarName, - sha, - shaFile - ); - - throw new GradleException(exceptionMessage); - } - shaFiles.remove(shaFile); - } - - private void checkFile(String name, String jarName, Map counters, String type) { - String fileName = getFileName(name, counters, type); - - if (counters.containsKey(fileName) == false) { - throw new GradleException("Missing " + type + " for " + jarName + ", expected in " + fileName); - } - - counters.put(fileName, true); - } - - private String getFileName(String name, Map counters, String type) { - String fileName = name + "-" + type; - - if (counters.containsKey(fileName) == false) { - // try the other suffix...TODO: get rid of this, just support ending in .txt - return fileName + ".txt"; - } - - return fileName; - } - - @Input - public LinkedHashMap getMappings() { - return new LinkedHashMap<>(mappings); - } - - File getShaFile(String jarName) { - return new File(licensesDir, jarName + SHA_EXTENSION); - } - - @Internal - Set getShaFiles() { - File[] array = licensesDir.listFiles(); - if (array == null) { - throw new GradleException("\"" + licensesDir.getPath() + "\" isn't a valid directory"); - } - - return Arrays.stream(array).filter(file -> file.getName().endsWith(SHA_EXTENSION)).collect(Collectors.toSet()); - } - - String getSha1(File file) throws IOException, NoSuchAlgorithmException { - byte[] bytes = Files.readAllBytes(file.toPath()); - - MessageDigest digest = MessageDigest.getInstance("SHA-1"); - char[] encoded = Hex.encodeHex(digest.digest(bytes)); - return String.copyValueOf(encoded); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsPrecommitPlugin.java deleted file mode 100644 index 92c87fdff952b..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsPrecommitPlugin.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.tasks.TaskProvider; - -public class FilePermissionsPrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - return project.getTasks().register("filepermissions", FilePermissionsTask.class); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsTask.java deleted file mode 100644 index 9ffd472151b4b..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/FilePermissionsTask.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.attribute.PosixFileAttributeView; -import java.nio.file.attribute.PosixFilePermission; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import org.apache.tools.ant.taskdefs.condition.Os; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.DefaultTask; -import org.gradle.api.GradleException; -import org.gradle.api.file.FileCollection; -import org.gradle.api.file.FileTree; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.SkipWhenEmpty; -import org.gradle.api.tasks.StopExecutionException; -import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.util.PatternFilterable; -import org.gradle.api.tasks.util.PatternSet; - -/** - * Checks source files for correct file permissions. - */ -public class FilePermissionsTask extends DefaultTask { - - /** - * A pattern set of which files should be checked. - */ - private final PatternFilterable filesFilter = new PatternSet() - // we always include all source files, and exclude what should not be checked - .include("**") - // exclude sh files that might have the executable bit set - .exclude("**/*.sh"); - - private File outputMarker = new File(getProject().getBuildDir(), "markers/filePermissions"); - - public FilePermissionsTask() { - setDescription("Checks java source files for correct file permissions"); - } - - private static boolean isExecutableFile(File file) { - try { - Set permissions = Files.getFileAttributeView(file.toPath(), PosixFileAttributeView.class) - .readAttributes() - .permissions(); - return permissions.contains(PosixFilePermission.OTHERS_EXECUTE) - || permissions.contains(PosixFilePermission.OWNER_EXECUTE) - || permissions.contains(PosixFilePermission.GROUP_EXECUTE); - } catch (IOException e) { - throw new IllegalStateException("unable to read the file " + file + " attributes", e); - } - } - - /** - * Returns the files this task will check - */ - @InputFiles - @SkipWhenEmpty - public FileCollection getFiles() { - return GradleUtils.getJavaSourceSets(getProject()) - .stream() - .map(sourceSet -> sourceSet.getAllSource().matching(filesFilter)) - .reduce(FileTree::plus) - .orElse(getProject().files().getAsFileTree()); - } - - @TaskAction - public void checkInvalidPermissions() throws IOException { - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - throw new StopExecutionException(); - } - List failures = getFiles().getFiles() - .stream() - .filter(FilePermissionsTask::isExecutableFile) - .map(file -> "Source file is executable: " + file) - .collect(Collectors.toList()); - - if (!failures.isEmpty()) { - throw new GradleException("Found invalid file permissions:\n" + String.join("\n", failures)); - } - - outputMarker.getParentFile().mkdirs(); - Files.write(outputMarker.toPath(), "done".getBytes("UTF-8")); - } - - @OutputFile - public File getOutputMarker() { - return outputMarker; - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin.java deleted file mode 100644 index 328edda8b1787..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenApisPrecommitPlugin.java +++ /dev/null @@ -1,146 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import de.thetaphi.forbiddenapis.gradle.CheckForbiddenApis; -import de.thetaphi.forbiddenapis.gradle.ForbiddenApisPlugin; -import groovy.lang.Closure; -import org.opensearch.gradle.ExportOpenSearchBuildResourcesTask; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.JavaVersion; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.plugins.ExtraPropertiesExtension; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.SourceSetContainer; -import org.gradle.api.tasks.TaskProvider; - -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; - -public class ForbiddenApisPrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - project.getPluginManager().apply(ForbiddenApisPlugin.class); - - TaskProvider resourcesTask = project.getTasks() - .register("forbiddenApisResources", ExportOpenSearchBuildResourcesTask.class); - Path resourcesDir = project.getBuildDir().toPath().resolve("forbidden-apis-config"); - resourcesTask.configure(t -> { - t.setOutputDir(resourcesDir.toFile()); - t.copy("forbidden/jdk-signatures.txt"); - t.copy("forbidden/opensearch-all-signatures.txt"); - t.copy("forbidden/opensearch-test-signatures.txt"); - t.copy("forbidden/http-signatures.txt"); - t.copy("forbidden/opensearch-server-signatures.txt"); - }); - project.getTasks().withType(CheckForbiddenApis.class).configureEach(t -> { - t.dependsOn(resourcesTask); - - assert t.getName().startsWith(ForbiddenApisPlugin.FORBIDDEN_APIS_TASK_NAME); - String sourceSetName; - if (ForbiddenApisPlugin.FORBIDDEN_APIS_TASK_NAME.equals(t.getName())) { - sourceSetName = "main"; - } else { - // parse out the sourceSetName - char[] chars = t.getName().substring(ForbiddenApisPlugin.FORBIDDEN_APIS_TASK_NAME.length()).toCharArray(); - chars[0] = Character.toLowerCase(chars[0]); - sourceSetName = new String(chars); - } - - SourceSetContainer sourceSets = GradleUtils.getJavaSourceSets(project); - SourceSet sourceSet = sourceSets.getByName(sourceSetName); - t.setClasspath(project.files(sourceSet.getRuntimeClasspath()).plus(sourceSet.getCompileClasspath())); - - t.setTargetCompatibility(BuildParams.getRuntimeJavaVersion().getMajorVersion()); - if (BuildParams.getRuntimeJavaVersion().compareTo(JavaVersion.VERSION_14) > 0) { - // TODO: forbidden apis does not yet support java 15, rethink using runtime version - t.setTargetCompatibility(JavaVersion.VERSION_14.getMajorVersion()); - } - t.setBundledSignatures(new HashSet<>(Arrays.asList("jdk-unsafe", "jdk-deprecated", "jdk-non-portable", "jdk-system-out"))); - t.setSignaturesFiles( - project.files( - resourcesDir.resolve("forbidden/jdk-signatures.txt"), - resourcesDir.resolve("forbidden/opensearch-all-signatures.txt") - ) - ); - t.setSuppressAnnotations(new HashSet<>(Arrays.asList("**.SuppressForbidden"))); - if (t.getName().endsWith("Test")) { - t.setSignaturesFiles( - t.getSignaturesFiles() - .plus( - project.files( - resourcesDir.resolve("forbidden/opensearch-test-signatures.txt"), - resourcesDir.resolve("forbidden/http-signatures.txt") - ) - ) - ); - } else { - t.setSignaturesFiles( - t.getSignaturesFiles().plus(project.files(resourcesDir.resolve("forbidden/opensearch-server-signatures.txt"))) - ); - } - ExtraPropertiesExtension ext = t.getExtensions().getExtraProperties(); - ext.set("replaceSignatureFiles", new Closure(t) { - @Override - public Void call(Object... names) { - List resources = new ArrayList<>(names.length); - for (Object name : names) { - resources.add(resourcesDir.resolve("forbidden/" + name + ".txt")); - } - t.setSignaturesFiles(project.files(resources)); - return null; - } - - }); - ext.set("addSignatureFiles", new Closure(t) { - @Override - public Void call(Object... names) { - List resources = new ArrayList<>(names.length); - for (Object name : names) { - resources.add(resourcesDir.resolve("forbidden/" + name + ".txt")); - } - t.setSignaturesFiles(t.getSignaturesFiles().plus(project.files(resources))); - return null; - } - }); - }); - TaskProvider forbiddenApis = project.getTasks().named("forbiddenApis"); - forbiddenApis.configure(t -> t.setGroup("")); - return forbiddenApis; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.java deleted file mode 100644 index 6930856ff5517..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsPrecommitPlugin.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.tasks.TaskProvider; - -public class ForbiddenPatternsPrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - return project.getTasks().register("forbiddenPatterns", ForbiddenPatternsTask.class); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsTask.java deleted file mode 100644 index f57c190496452..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ForbiddenPatternsTask.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.gradle.api.DefaultTask; -import org.gradle.api.GradleException; -import org.gradle.api.InvalidUserDataException; -import org.gradle.api.file.FileCollection; -import org.gradle.api.file.FileTree; -import org.gradle.api.plugins.JavaPluginConvention; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.SkipWhenEmpty; -import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.util.PatternFilterable; -import org.gradle.api.tasks.util.PatternSet; - -import java.io.File; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.AbstractMap; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -/** - * Checks for patterns in source files for the project which are forbidden. - */ -public class ForbiddenPatternsTask extends DefaultTask { - - /* - * A pattern set of which files should be checked. - */ - private final PatternFilterable filesFilter = new PatternSet() - // we always include all source files, and exclude what should not be checked - .include("**") - // exclude known binary extensions - .exclude("**/*.gz") - .exclude("**/*.ico") - .exclude("**/*.jar") - .exclude("**/*.zip") - .exclude("**/*.jks") - .exclude("**/*.crt") - .exclude("**/*.keystore") - .exclude("**/*.png"); - - /* - * The rules: a map from the rule name, to a rule regex pattern. - */ - private final Map patterns = new HashMap<>(); - - public ForbiddenPatternsTask() { - setDescription("Checks source files for invalid patterns like nocommits or tabs"); - getInputs().property("excludes", filesFilter.getExcludes()); - getInputs().property("rules", patterns); - - // add mandatory rules - patterns.put("nocommit", "nocommit|NOCOMMIT"); - patterns.put("nocommit should be all lowercase or all uppercase", "((?i)nocommit)(? sourceSet.getAllSource().matching(filesFilter)) - .reduce(FileTree::plus) - .orElse(getProject().files().getAsFileTree()); - } - - @TaskAction - public void checkInvalidPatterns() throws IOException { - Pattern allPatterns = Pattern.compile("(" + String.join(")|(", getPatterns().values()) + ")"); - List failures = new ArrayList<>(); - for (File f : getFiles()) { - List lines; - try (Stream stream = Files.lines(f.toPath(), StandardCharsets.UTF_8)) { - lines = stream.collect(Collectors.toList()); - } catch (UncheckedIOException e) { - throw new IllegalArgumentException("Failed to read " + f + " as UTF_8", e); - } - List invalidLines = IntStream.range(0, lines.size()) - .filter(i -> allPatterns.matcher(lines.get(i)).find()) - .boxed() - .collect(Collectors.toList()); - - String path = getProject().getRootProject().getProjectDir().toURI().relativize(f.toURI()).toString(); - failures.addAll( - invalidLines.stream() - .map(l -> new AbstractMap.SimpleEntry<>(l + 1, lines.get(l))) - .flatMap( - kv -> patterns.entrySet() - .stream() - .filter(p -> Pattern.compile(p.getValue()).matcher(kv.getValue()).find()) - .map(p -> "- " + p.getKey() + " on line " + kv.getKey() + " of " + path) - ) - .collect(Collectors.toList()) - ); - } - if (failures.isEmpty() == false) { - throw new GradleException("Found invalid patterns:\n" + String.join("\n", failures)); - } - - File outputMarker = getOutputMarker(); - outputMarker.getParentFile().mkdirs(); - Files.write(outputMarker.toPath(), "done".getBytes(StandardCharsets.UTF_8)); - } - - @OutputFile - public File getOutputMarker() { - return new File(getProject().getBuildDir(), "markers/" + getName()); - } - - @Input - public Map getPatterns() { - return Collections.unmodifiableMap(patterns); - } - - public void exclude(String... excludes) { - filesFilter.exclude(excludes); - } - - public void rule(Map props) { - String name = props.remove("name"); - if (name == null) { - throw new InvalidUserDataException("Missing [name] for invalid pattern rule"); - } - String pattern = props.remove("pattern"); - if (pattern == null) { - throw new InvalidUserDataException("Missing [pattern] for invalid pattern rule"); - } - if (props.isEmpty() == false) { - throw new InvalidUserDataException("Unknown arguments for ForbiddenPatterns rule mapping: " + props.keySet().toString()); - } - // TODO: fail if pattern contains a newline, it won't work (currently) - patterns.put(name, pattern); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellPrecommitPlugin.java deleted file mode 100644 index 04ae37f92bcc9..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellPrecommitPlugin.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.util.Util; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskProvider; - -public class JarHellPrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - Configuration jarHellConfig = project.getConfigurations().create("jarHell"); - if (BuildParams.isInternal() && project.getPath().equals(":libs:opensearch-core") == false) { - // External plugins will depend on this already via transitive dependencies. - // Internal projects are not all plugins, so make sure the check is available - // we are not doing this for this project itself to avoid jar hell with itself - project.getDependencies().add("jarHell", project.project(":libs:opensearch-core")); - } - - TaskProvider jarHell = project.getTasks().register("jarHell", JarHellTask.class); - jarHell.configure(t -> { - SourceSet testSourceSet = Util.getJavaTestSourceSet(project).get(); - t.setClasspath(testSourceSet.getRuntimeClasspath().plus(jarHellConfig)); - t.dependsOn(jarHellConfig); - }); - - return jarHell; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellTask.java deleted file mode 100644 index e642aaee754e7..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/JarHellTask.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.LoggedExec; -import org.gradle.api.file.FileCollection; -import org.gradle.api.tasks.CacheableTask; -import org.gradle.api.tasks.CompileClasspath; -import org.gradle.api.tasks.TaskAction; - -import java.io.File; - -/** - * Runs CheckJarHell on a classpath. - */ -@CacheableTask -public class JarHellTask extends PrecommitTask { - - private FileCollection classpath; - - public JarHellTask() { - setDescription("Runs CheckJarHell on the configured classpath"); - } - - @TaskAction - public void runJarHellCheck() { - LoggedExec.javaexec(getProject(), spec -> { - spec.environment("CLASSPATH", getClasspath().getAsPath()); - spec.setMain("org.opensearch.bootstrap.JarHell"); - }); - } - - // We use compile classpath normalization here because class implementation changes are irrelevant for the purposes of jar hell. - // We only care about the runtime classpath ABI here. - @CompileClasspath - public FileCollection getClasspath() { - return classpath.filter(File::exists); - } - - public void setClasspath(FileCollection classpath) { - this.classpath = classpath; - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/LicenseAnalyzer.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/LicenseAnalyzer.java deleted file mode 100644 index 4c63516126566..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/LicenseAnalyzer.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.apache.commons.io.IOUtils; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.util.regex.Pattern; - -public class LicenseAnalyzer { - /* - * Order here matters. License files can often contain multiple licenses for which the particular piece of software may by used under. - * We should order these in order of most permissive to least permissive such that we identify the license as the most permissive for - * purposes of redistribution. Search order is as defined below so the license will be identified as the first pattern to match. - */ - private static final LicenseMatcher[] matchers = new LicenseMatcher[] { - new LicenseMatcher("Apache-2.0", true, false, Pattern.compile("Apache.*License.*[vV]ersion.*2\\.0", Pattern.DOTALL)), - new LicenseMatcher( - "BSD-2-Clause", - true, - false, - Pattern.compile( - ("Redistribution and use in source and binary forms, with or without\n" - + "modification, are permitted provided that the following conditions\n" - + "are met:\n" - + "\n" - + " 1\\. Redistributions of source code must retain the above copyright\n" - + " notice, this list of conditions and the following disclaimer\\.\n" - + " 2\\. Redistributions in binary form must reproduce the above copyright\n" - + " notice, this list of conditions and the following disclaimer in the\n" - + " documentation and/or other materials provided with the distribution\\.\n" - + "\n" - + "THIS SOFTWARE IS PROVIDED BY .+ (``|''|\")AS IS(''|\") AND ANY EXPRESS OR\n" - + "IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n" - + "OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED\\.\n" - + "IN NO EVENT SHALL .+ BE LIABLE FOR ANY DIRECT, INDIRECT,\n" - + "INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES \\(INCLUDING, BUT\n" - + "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n" - + "DATA, OR PROFITS; OR BUSINESS INTERRUPTION\\) HOWEVER CAUSED AND ON ANY\n" - + "THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n" - + "\\(INCLUDING NEGLIGENCE OR OTHERWISE\\) ARISING IN ANY WAY OUT OF THE USE OF\n" - + "THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE\\.").replaceAll("\\s+", "\\\\s*"), - Pattern.DOTALL - ) - ), - new LicenseMatcher( - "BSD-3-Clause", - true, - false, - Pattern.compile( - ("\n" - + "Redistribution and use in source and binary forms, with or without\n" - + "modification, are permitted provided that the following conditions\n" - + "are met:\n" - + "\n" - + " (1\\.)? Redistributions of source code must retain the above copyright\n" - + " notice, this list of conditions and the following disclaimer\\.\n" - + " (2\\.)? Redistributions in binary form must reproduce the above copyright\n" - + " notice, this list of conditions and the following disclaimer in the\n" - + " documentation and/or other materials provided with the distribution\\.\n" - + " ((3\\.)? The name of .+ may not be used to endorse or promote products\n" - + " derived from this software without specific prior written permission\\.|\n" - + " (3\\.)? Neither the name of .+ nor the names of its\n" - + " contributors may be used to endorse or promote products derived from\n" - + " this software without specific prior written permission\\.)\n" - + "\n" - + "THIS SOFTWARE IS PROVIDED BY .+ (``|''|\")AS IS(''|\") AND ANY EXPRESS OR\n" - + "IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n" - + "OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED\\.\n" - + "IN NO EVENT SHALL .+ BE LIABLE FOR ANY DIRECT, INDIRECT,\n" - + "INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES \\(INCLUDING, BUT\n" - + "NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n" - + "DATA, OR PROFITS; OR BUSINESS INTERRUPTION\\) HOWEVER CAUSED AND ON ANY\n" - + "THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n" - + "\\(INCLUDING NEGLIGENCE OR OTHERWISE\\) ARISING IN ANY WAY OUT OF THE USE OF\n" - + "THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE\\.\n").replaceAll("\\s+", "\\\\s*"), - Pattern.DOTALL - ) - ), - new LicenseMatcher( - "CDDL-1.0", - true, - false, - Pattern.compile("COMMON DEVELOPMENT AND DISTRIBUTION LICENSE.*Version 1.0", Pattern.DOTALL) - ), - new LicenseMatcher( - "CDDL-1.1", - true, - false, - Pattern.compile("COMMON DEVELOPMENT AND DISTRIBUTION LICENSE.*Version 1.1", Pattern.DOTALL) - ), - new LicenseMatcher("ICU", true, false, Pattern.compile("ICU License - ICU 1.8.1 and later", Pattern.DOTALL)), - new LicenseMatcher( - "MIT", - true, - false, - Pattern.compile( - ("\n" - + "Permission is hereby granted, free of charge, to any person obtaining a copy of\n" - + "this software and associated documentation files \\(the \"Software\"\\), to deal in\n" - + "the Software without restriction, including without limitation the rights to\n" - + "use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\n" - + "of the Software, and to permit persons to whom the Software is furnished to do\n" - + "so, subject to the following conditions:\n" - + "\n" - + "The above copyright notice and this permission notice shall be included in all\n" - + "copies or substantial portions of the Software\\.\n" - + "\n" - + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n" - + "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n" - + "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\\. IN NO EVENT SHALL THE\n" - + "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n" - + "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n" - + "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n" - + "SOFTWARE\\.\n").replaceAll("\\s+", "\\\\s*"), - Pattern.DOTALL - ) - ), - new LicenseMatcher("MPL-1.1", true, false, Pattern.compile("Mozilla Public License.*Version 1.1", Pattern.DOTALL)), - new LicenseMatcher("MPL-2.0", true, false, Pattern.compile("Mozilla\\s*Public\\s*License\\s*Version\\s*2\\.0", Pattern.DOTALL)), - new LicenseMatcher("XZ", false, false, Pattern.compile("Licensing of XZ for Java", Pattern.DOTALL)), - new LicenseMatcher("EPL-2.0", true, false, Pattern.compile("Eclipse Public License - v 2.0", Pattern.DOTALL)), - new LicenseMatcher("LGPL-2.1", true, true, Pattern.compile("GNU LESSER GENERAL PUBLIC LICENSE.*Version 2.1", Pattern.DOTALL)), - new LicenseMatcher("LGPL-3.0", true, true, Pattern.compile("GNU LESSER GENERAL PUBLIC LICENSE.*Version 3", Pattern.DOTALL)) }; - - public static LicenseInfo licenseType(File licenseFile) { - for (LicenseMatcher matcher : matchers) { - boolean matches = matcher.matches(licenseFile); - if (matches) { - return new LicenseInfo(matcher.getIdentifier(), matcher.spdxLicense, matcher.sourceRedistributionRequired); - } - } - - throw new IllegalStateException("Unknown license for license file: " + licenseFile); - } - - public static class LicenseInfo { - private final String identifier; - private final boolean spdxLicense; - private final boolean sourceRedistributionRequired; - - public LicenseInfo(String identifier, boolean spdxLicense, boolean sourceRedistributionRequired) { - this.identifier = identifier; - this.spdxLicense = spdxLicense; - this.sourceRedistributionRequired = sourceRedistributionRequired; - } - - public String getIdentifier() { - return identifier; - } - - public boolean isSpdxLicense() { - return spdxLicense; - } - - public boolean isSourceRedistributionRequired() { - return sourceRedistributionRequired; - } - } - - private static class LicenseMatcher { - private final String identifier; - private final boolean spdxLicense; - private final boolean sourceRedistributionRequired; - private final Pattern pattern; - - LicenseMatcher(String identifier, boolean spdxLicense, boolean sourceRedistributionRequired, Pattern pattern) { - this.identifier = identifier; - this.spdxLicense = spdxLicense; - this.sourceRedistributionRequired = sourceRedistributionRequired; - this.pattern = pattern; - } - - public String getIdentifier() { - return identifier; - } - - public boolean matches(File licenseFile) { - try (FileInputStream fis = new FileInputStream(licenseFile)) { - String content = String.join("\n", IOUtils.readLines(fis, "UTF-8")).replaceAll("\\*", " "); - return pattern.matcher(content).find(); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsagePrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsagePrecommitPlugin.java deleted file mode 100644 index 57deb9facbef7..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsagePrecommitPlugin.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.info.BuildParams; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.tasks.TaskProvider; - -public class LoggerUsagePrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - Object dependency = BuildParams.isInternal() - ? project.project(":test:logger-usage") - : ("org.opensearch.test:logger-usage:" + VersionProperties.getOpenSearch()); - - Configuration loggerUsageConfig = project.getConfigurations().create("loggerUsagePlugin"); - project.getDependencies().add("loggerUsagePlugin", dependency); - TaskProvider loggerUsage = project.getTasks().register("loggerUsageCheck", LoggerUsageTask.class); - loggerUsage.configure(t -> t.setClasspath(loggerUsageConfig)); - - return loggerUsage; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsageTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsageTask.java deleted file mode 100644 index 7ce0c0cecff81..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/LoggerUsageTask.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.LoggedExec; -import org.gradle.api.file.FileCollection; -import org.gradle.api.plugins.JavaPluginConvention; -import org.gradle.api.tasks.CacheableTask; -import org.gradle.api.tasks.Classpath; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.PathSensitive; -import org.gradle.api.tasks.PathSensitivity; -import org.gradle.api.tasks.SkipWhenEmpty; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskAction; - -import java.io.File; - -/** - * Runs LoggerUsageCheck on a set of directories. - */ -@CacheableTask -public class LoggerUsageTask extends PrecommitTask { - - private FileCollection classpath; - - public LoggerUsageTask() { - setDescription("Runs LoggerUsageCheck on output directories of all source sets"); - } - - @TaskAction - public void runLoggerUsageTask() { - LoggedExec.javaexec(getProject(), spec -> { - spec.setMain("org.opensearch.test.loggerusage.OpenSearchLoggerUsageChecker"); - spec.classpath(getClasspath()); - getClassDirectories().forEach(spec::args); - }); - } - - @Classpath - public FileCollection getClasspath() { - return classpath; - } - - public void setClasspath(FileCollection classpath) { - this.classpath = classpath; - } - - @InputFiles - @PathSensitive(PathSensitivity.RELATIVE) - @SkipWhenEmpty - public FileCollection getClassDirectories() { - return getProject().getConvention() - .getPlugin(JavaPluginConvention.class) - .getSourceSets() - .stream() - // Don't pick up all source sets like the java9 ones as logger-check doesn't support the class format - .filter( - sourceSet -> sourceSet.getName().equals(SourceSet.MAIN_SOURCE_SET_NAME) - || sourceSet.getName().equals(SourceSet.TEST_SOURCE_SET_NAME) - ) - .map(sourceSet -> sourceSet.getOutput().getClassesDirs()) - .reduce(FileCollection::plus) - .orElse(getProject().files()) - .filter(File::exists); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationPrecommitPlugin.java deleted file mode 100644 index 0e7a357dd5d18..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationPrecommitPlugin.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.util.Util; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.publish.PublishingExtension; -import org.gradle.api.publish.maven.tasks.GenerateMavenPom; -import org.gradle.api.tasks.TaskProvider; - -/** - * Adds pom validation to every pom generation task. - */ -public class PomValidationPrecommitPlugin extends PrecommitPlugin { - - @Override - public TaskProvider createTask(Project project) { - TaskProvider validatePom = project.getTasks().register("validatePom"); - PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); - publishing.getPublications().all(publication -> { - String publicationName = Util.capitalize(publication.getName()); - TaskProvider validateTask = project.getTasks() - .register("validate" + publicationName + "Pom", PomValidationTask.class); - validatePom.configure(t -> t.dependsOn(validateTask)); - validateTask.configure(task -> { - GenerateMavenPom generateMavenPom = project.getTasks() - .withType(GenerateMavenPom.class) - .getByName("generatePomFileFor" + publicationName + "Publication"); - task.dependsOn(generateMavenPom); - task.getPomFile().fileValue(generateMavenPom.getDestination()); - }); - }); - - return validatePom; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationTask.java deleted file mode 100644 index aca882fbb6477..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PomValidationTask.java +++ /dev/null @@ -1,118 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.gradle.api.GradleException; -import org.gradle.api.file.RegularFileProperty; -import org.gradle.api.tasks.InputFile; -import org.gradle.api.tasks.TaskAction; - -import java.io.FileReader; -import java.util.Collection; -import java.util.function.Consumer; -import java.util.function.Predicate; - -public class PomValidationTask extends PrecommitTask { - - private final RegularFileProperty pomFile = getProject().getObjects().fileProperty(); - - private boolean foundError; - - @InputFile - public RegularFileProperty getPomFile() { - return pomFile; - } - - @TaskAction - public void checkPom() throws Exception { - try (FileReader fileReader = new FileReader(pomFile.getAsFile().get())) { - MavenXpp3Reader reader = new MavenXpp3Reader(); - Model model = reader.read(fileReader); - - validateString("groupId", model.getGroupId()); - validateString("artifactId", model.getArtifactId()); - validateString("version", model.getVersion()); - validateString("name", model.getName()); - validateString("description", model.getDescription()); - validateString("url", model.getUrl()); - - validateCollection("licenses", model.getLicenses(), v -> { - validateString("licenses.name", v.getName()); - validateString("licenses.url", v.getUrl()); - }); - - validateCollection("developers", model.getDevelopers(), v -> { - validateString("developers.name", v.getName()); - validateString("developers.url", v.getUrl()); - }); - - validateNonNull("scm", model.getScm(), () -> validateString("scm.url", model.getScm().getUrl())); - } - if (foundError) { - throw new GradleException("Check failed for task '" + getPath() + "', see console log for details"); - } - } - - private void logError(String element, String message) { - foundError = true; - getLogger().error("{} {} in [{}]", element, message, pomFile.getAsFile().get()); - } - - private void validateNonEmpty(String element, T value, Predicate isEmpty) { - if (isEmpty.test(value)) { - logError(element, "is empty"); - } - } - - private void validateNonNull(String element, T value, Runnable validator) { - if (value == null) { - logError(element, "is missing"); - } else { - validator.run(); - } - } - - private void validateString(String element, String value) { - validateNonNull(element, value, () -> validateNonEmpty(element, value, s -> s.trim().isEmpty())); - } - - private void validateCollection(String element, Collection value, Consumer validator) { - validateNonNull(element, value, () -> { - validateNonEmpty(element, value, Collection::isEmpty); - value.forEach(validator); - }); - - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitPlugin.java deleted file mode 100644 index 0b4cc20f145ad..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitPlugin.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskProvider; - -/** - * Base plugin for adding a precommit task. - */ -public abstract class PrecommitPlugin implements Plugin { - - public static final String PRECOMMIT_TASK_NAME = "precommit"; - - @Override - public final void apply(Project project) { - project.getPluginManager().apply(PrecommitTaskPlugin.class); - TaskProvider task = createTask(project); - TaskProvider precommit = project.getTasks().named(PRECOMMIT_TASK_NAME); - precommit.configure(t -> t.dependsOn(task)); - - project.getPluginManager().withPlugin("java", p -> { - // We want to get any compilation error before running the pre-commit checks. - for (SourceSet sourceSet : GradleUtils.getJavaSourceSets(project)) { - task.configure(t -> t.shouldRunAfter(sourceSet.getClassesTaskName())); - } - }); - } - - public abstract TaskProvider createTask(Project project); - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTask.java deleted file mode 100644 index 52646206e4792..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTask.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.gradle.api.DefaultTask; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.TaskAction; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; - -public class PrecommitTask extends DefaultTask { - - @OutputFile - public File getSuccessMarker() { - return new File(getProject().getBuildDir(), "markers/" + this.getName()); - } - - @TaskAction - public void writeMarker() throws IOException { - Files.write(getSuccessMarker().toPath(), new byte[] {}, StandardOpenOption.CREATE); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTaskPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTaskPlugin.java deleted file mode 100644 index 52cbdbded2f13..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/PrecommitTaskPlugin.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.plugins.JavaBasePlugin; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.testing.Test; -import org.gradle.language.base.plugins.LifecycleBasePlugin; - -public class PrecommitTaskPlugin implements Plugin { - - @Override - public void apply(Project project) { - TaskProvider precommit = project.getTasks().register(PrecommitPlugin.PRECOMMIT_TASK_NAME, t -> { - t.setGroup(JavaBasePlugin.VERIFICATION_GROUP); - t.setDescription("Runs all non-test checks"); - }); - - project.getPluginManager() - .withPlugin( - "lifecycle-base", - p -> project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).configure(t -> t.dependsOn(precommit)) - ); - project.getPluginManager().withPlugin("java", p -> { - // run compilation as part of precommit - for (SourceSet sourceSet : GradleUtils.getJavaSourceSets(project)) { - precommit.configure(t -> t.dependsOn(sourceSet.getClassesTaskName())); - } - - // make sure tests run after all precommit tasks - project.getTasks().withType(Test.class).configureEach(t -> t.mustRunAfter(precommit)); - }); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionRule.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionRule.java deleted file mode 100644 index aa81ef75701fa..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionRule.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import java.io.Serializable; -import java.util.Collection; -import java.util.HashSet; -import java.util.Objects; -import java.util.Set; -import java.util.regex.Pattern; - -/** - * Represent rules for tests enforced by the @{link {@link TestingConventionsTasks}} - * - * Rules are identified by name, tests must have this name as a suffix and implement one of the base classes - * and be part of all the specified tasks. - */ -public class TestingConventionRule implements Serializable { - - private final String suffix; - - private Set baseClasses = new HashSet<>(); - - private Set taskNames = new HashSet<>(); - - public TestingConventionRule(String suffix) { - this.suffix = suffix; - } - - public String getSuffix() { - return suffix; - } - - /** - * Alias for @{link getSuffix} as Gradle requires a name property - * - */ - public String getName() { - return suffix; - } - - public void baseClass(String clazz) { - baseClasses.add(clazz); - } - - public void setBaseClasses(Collection baseClasses) { - this.baseClasses.clear(); - this.baseClasses.addAll(baseClasses); - } - - public void taskName(Pattern expression) { - taskNames.add(expression); - } - - public void taskName(String expression) { - taskNames.add(Pattern.compile(expression)); - } - - public void setTaskNames(Collection expressions) { - taskNames.clear(); - taskNames.addAll(expressions); - } - - public Set getBaseClasses() { - return baseClasses; - } - - public Set getTaskNames() { - return taskNames; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - TestingConventionRule that = (TestingConventionRule) o; - return Objects.equals(suffix, that.suffix); - } - - @Override - public int hashCode() { - return Objects.hash(suffix); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsPrecommitPlugin.java deleted file mode 100644 index 4c965d6a0fe90..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsPrecommitPlugin.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.tasks.TaskProvider; - -public class TestingConventionsPrecommitPlugin extends PrecommitPlugin { - @Override - public TaskProvider createTask(Project project) { - TaskProvider testingConventions = project.getTasks() - .register("testingConventions", TestingConventionsTasks.class); - testingConventions.configure(t -> { - TestingConventionRule testsRule = t.getNaming().maybeCreate("Tests"); - testsRule.baseClass("org.apache.lucene.util.LuceneTestCase"); - TestingConventionRule itRule = t.getNaming().maybeCreate("IT"); - itRule.baseClass("org.opensearch.test.OpenSearchIntegTestCase"); - itRule.baseClass("org.opensearch.test.rest.OpenSearchRestTestCase"); - }); - return testingConventions; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java deleted file mode 100644 index 5e42cc99dd79e..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/TestingConventionsTasks.java +++ /dev/null @@ -1,437 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import groovy.lang.Closure; -import org.opensearch.gradle.util.GradleUtils; -import org.opensearch.gradle.util.Util; -import org.gradle.api.DefaultTask; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Task; -import org.gradle.api.file.FileCollection; -import org.gradle.api.file.FileTree; -import org.gradle.api.tasks.Classpath; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.SourceSetContainer; -import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.testing.Test; - -import java.io.File; -import java.io.IOException; -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.nio.file.FileVisitResult; -import java.nio.file.FileVisitor; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.function.Predicate; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class TestingConventionsTasks extends DefaultTask { - - private static final String TEST_METHOD_PREFIX = "test"; - - private Map testClassNames; - - private final NamedDomainObjectContainer naming; - - public TestingConventionsTasks() { - setDescription("Tests various testing conventions"); - // Run only after everything is compiled - GradleUtils.getJavaSourceSets(getProject()).all(sourceSet -> dependsOn(sourceSet.getOutput().getClassesDirs())); - naming = getProject().container(TestingConventionRule.class); - } - - @Input - public Map> getClassFilesPerEnabledTask() { - return getProject().getTasks() - .withType(Test.class) - .stream() - .filter(Task::getEnabled) - .collect(Collectors.toMap(Task::getPath, task -> task.getCandidateClassFiles().getFiles())); - } - - @Input - public Map getTestClassNames() { - if (testClassNames == null) { - testClassNames = Util.getJavaTestSourceSet(getProject()) - .get() - .getOutput() - .getClassesDirs() - .getFiles() - .stream() - .filter(File::exists) - .flatMap(testRoot -> walkPathAndLoadClasses(testRoot).entrySet().stream()) - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); - } - return testClassNames; - } - - @Input - public NamedDomainObjectContainer getNaming() { - return naming; - } - - @OutputFile - public File getSuccessMarker() { - return new File(getProject().getBuildDir(), "markers/" + getName()); - } - - public void naming(Closure action) { - naming.configure(action); - } - - @Input - public Set getMainClassNamedLikeTests() { - SourceSetContainer javaSourceSets = GradleUtils.getJavaSourceSets(getProject()); - if (javaSourceSets.findByName(SourceSet.MAIN_SOURCE_SET_NAME) == null) { - // some test projects don't have a main source set - return Collections.emptySet(); - } - return javaSourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME) - .getOutput() - .getClassesDirs() - .getAsFileTree() - .getFiles() - .stream() - .filter(file -> file.getName().endsWith(".class")) - .map(File::getName) - .map(name -> name.substring(0, name.length() - 6)) - .filter(this::implementsNamingConvention) - .collect(Collectors.toSet()); - } - - @TaskAction - public void doCheck() throws IOException { - final String problems; - - try ( - URLClassLoader isolatedClassLoader = new URLClassLoader( - getTestsClassPath().getFiles().stream().map(this::fileToUrl).toArray(URL[]::new) - ) - ) { - Predicate> isStaticClass = clazz -> Modifier.isStatic(clazz.getModifiers()); - Predicate> isPublicClass = clazz -> Modifier.isPublic(clazz.getModifiers()); - Predicate> isAbstractClass = clazz -> Modifier.isAbstract(clazz.getModifiers()); - - final Map> classes = getTestClassNames().entrySet() - .stream() - .collect(Collectors.toMap(Map.Entry::getValue, entry -> loadClassWithoutInitializing(entry.getKey(), isolatedClassLoader))); - - final FileTree allTestClassFiles = getProject().files( - classes.values() - .stream() - .filter(isStaticClass.negate()) - .filter(isPublicClass) - .filter((Predicate>) this::implementsNamingConvention) - .map(clazz -> testClassNames.get(clazz.getName())) - .collect(Collectors.toList()) - ).getAsFileTree(); - - final Map> classFilesPerTask = getClassFilesPerEnabledTask(); - - final Set testSourceSetFiles = Util.getJavaTestSourceSet(getProject()).get().getRuntimeClasspath().getFiles(); - final Map>> testClassesPerTask = classFilesPerTask.entrySet() - .stream() - .filter(entry -> testSourceSetFiles.containsAll(entry.getValue())) - .collect( - Collectors.toMap( - Map.Entry::getKey, - entry -> entry.getValue() - .stream() - .map(classes::get) - .filter(this::implementsNamingConvention) - .collect(Collectors.toSet()) - ) - ); - - final Map>> suffixToBaseClass; - if (classes.isEmpty()) { - // Don't load base classes if we don't have any tests. - // This allows defaults to be configured for projects that don't have any tests - // - suffixToBaseClass = Collections.emptyMap(); - } else { - suffixToBaseClass = naming.stream() - .collect( - Collectors.toMap( - TestingConventionRule::getSuffix, - rule -> rule.getBaseClasses() - .stream() - .map(each -> loadClassWithoutInitializing(each, isolatedClassLoader)) - .collect(Collectors.toSet()) - ) - ); - } - - problems = collectProblems( - checkNoneExists( - "Test classes implemented by inner classes will not run", - classes.values() - .stream() - .filter(isStaticClass) - .filter(isPublicClass) - .filter(((Predicate>) this::implementsNamingConvention).or(this::seemsLikeATest)) - ), - checkNoneExists( - "Seem like test classes but don't match naming convention", - classes.values() - .stream() - .filter(isStaticClass.negate()) - .filter(isPublicClass) - .filter(isAbstractClass.negate()) - .filter(this::seemsLikeATest) // TODO when base classes are set, check for classes that extend them - .filter(((Predicate>) this::implementsNamingConvention).negate()) - ), - // TODO: check for non public classes that seem like tests - // TODO: check for abstract classes that implement the naming conventions - // No empty enabled tasks - collectProblems( - testClassesPerTask.entrySet() - .stream() - .map(entry -> checkAtLeastOneExists("test class included in task " + entry.getKey(), entry.getValue().stream())) - .sorted() - .collect(Collectors.joining("\n")) - ), - checkNoneExists( - "Test classes are not included in any enabled task (" - + classFilesPerTask.keySet().stream().collect(Collectors.joining(",")) - + ")", - allTestClassFiles.getFiles() - .stream() - .filter(testFile -> classFilesPerTask.values().stream().anyMatch(fileSet -> fileSet.contains(testFile)) == false) - .map(classes::get) - ), - collectProblems(suffixToBaseClass.entrySet().stream().filter(entry -> entry.getValue().isEmpty() == false).map(entry -> { - return checkNoneExists( - "Tests classes with suffix `" - + entry.getKey() - + "` should extend " - + entry.getValue().stream().map(Class::getName).collect(Collectors.joining(" or ")) - + " but the following classes do not", - classes.values() - .stream() - .filter(clazz -> clazz.getName().endsWith(entry.getKey())) - .filter(clazz -> entry.getValue().stream().anyMatch(test -> test.isAssignableFrom(clazz)) == false) - ); - }).sorted().collect(Collectors.joining("\n"))), - // TODO: check that the testing tasks are included in the right task based on the name ( from the rule ) - checkNoneExists("Classes matching the test naming convention should be in test not main", getMainClassNamedLikeTests()) - ); - } - - if (problems.isEmpty()) { - getSuccessMarker().getParentFile().mkdirs(); - Files.write(getSuccessMarker().toPath(), new byte[] {}, StandardOpenOption.CREATE); - } else { - getLogger().error(problems); - throw new IllegalStateException(String.format("Testing conventions [%s] are not honored", problems)); - } - } - - private String collectProblems(String... problems) { - return Stream.of(problems).map(String::trim).filter(s -> s.isEmpty() == false).collect(Collectors.joining("\n")); - } - - private String checkNoneExists(String message, Stream> stream) { - String problem = stream.map(each -> " * " + each.getName()).sorted().collect(Collectors.joining("\n")); - if (problem.isEmpty() == false) { - return message + ":\n" + problem; - } else { - return ""; - } - } - - private String checkNoneExists(String message, Set candidates) { - String problem = candidates.stream().map(each -> " * " + each).sorted().collect(Collectors.joining("\n")); - if (problem.isEmpty() == false) { - return message + ":\n" + problem; - } else { - return ""; - } - } - - private String checkAtLeastOneExists(String message, Stream> stream) { - if (stream.findAny().isPresent()) { - return ""; - } else { - return "Expected at least one " + message + ", but found none."; - } - } - - private boolean seemsLikeATest(Class clazz) { - try { - ClassLoader classLoader = clazz.getClassLoader(); - - Class junitTest = loadClassWithoutInitializing("org.junit.Assert", classLoader); - if (junitTest.isAssignableFrom(clazz)) { - getLogger().debug("{} is a test because it extends {}", clazz.getName(), junitTest.getName()); - return true; - } - - Class junitAnnotation = loadClassWithoutInitializing("org.junit.Test", classLoader); - for (Method method : clazz.getMethods()) { - if (matchesTestMethodNamingConvention(method)) { - getLogger().debug("{} is a test because it has method named '{}'", clazz.getName(), method.getName()); - return true; - } - if (isAnnotated(method, junitAnnotation)) { - getLogger().debug( - "{} is a test because it has method '{}' annotated with '{}'", - clazz.getName(), - method.getName(), - junitAnnotation.getName() - ); - return true; - } - } - - return false; - } catch (NoClassDefFoundError e) { - // Include the message to get more info to get more a more useful message when running Gradle without -s - throw new IllegalStateException("Failed to inspect class " + clazz.getName() + ". Missing class? " + e.getMessage(), e); - } - } - - private boolean implementsNamingConvention(Class clazz) { - Objects.requireNonNull(clazz); - return implementsNamingConvention(clazz.getName()); - } - - private boolean implementsNamingConvention(String className) { - if (naming.stream().map(TestingConventionRule::getSuffix).anyMatch(suffix -> className.endsWith(suffix))) { - getLogger().debug("{} is a test because it matches the naming convention", className); - return true; - } - return false; - } - - private boolean matchesTestMethodNamingConvention(Method method) { - return method.getName().startsWith(TEST_METHOD_PREFIX) && Modifier.isStatic(method.getModifiers()) == false; - } - - private boolean isAnnotated(Method method, Class annotation) { - for (Annotation presentAnnotation : method.getAnnotations()) { - if (annotation.isAssignableFrom(presentAnnotation.getClass())) { - return true; - } - } - return false; - } - - @Classpath - public FileCollection getTestsClassPath() { - return Util.getJavaTestSourceSet(getProject()).get().getRuntimeClasspath(); - } - - private Map walkPathAndLoadClasses(File testRoot) { - Map classes = new HashMap<>(); - try { - Files.walkFileTree(testRoot.toPath(), new FileVisitor() { - private String packageName; - - @Override - public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { - // First we visit the root directory - if (packageName == null) { - // And it package is empty string regardless of the directory name - packageName = ""; - } else { - packageName += dir.getFileName() + "."; - } - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { - // Go up one package by jumping back to the second to last '.' - packageName = packageName.substring(0, 1 + packageName.lastIndexOf('.', packageName.length() - 2)); - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { - String filename = file.getFileName().toString(); - if (filename.endsWith(".class")) { - String className = filename.substring(0, filename.length() - ".class".length()); - classes.put(packageName + className, file.toFile()); - } - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { - throw new IOException("Failed to visit " + file, exc); - } - }); - } catch (IOException e) { - throw new IllegalStateException(e); - } - return classes; - } - - private Class loadClassWithoutInitializing(String name, ClassLoader isolatedClassLoader) { - try { - return Class.forName( - name, - // Don't initialize the class to save time. Not needed for this test and this doesn't share a VM with any other tests. - false, - isolatedClassLoader - ); - } catch (ClassNotFoundException e) { - throw new RuntimeException("Failed to load class " + name + ". Incorrect test runtime classpath?", e); - } - } - - private URL fileToUrl(File file) { - try { - return file.toURI().toURL(); - } catch (MalformedURLException e) { - throw new IllegalStateException(e); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java deleted file mode 100644 index 5d707ce2b9f28..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditPrecommitPlugin.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.ExportOpenSearchBuildResourcesTask; -import org.opensearch.gradle.dependencies.CompileOnlyResolvePlugin; -import org.opensearch.gradle.info.BuildParams; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.tasks.TaskProvider; - -import java.nio.file.Path; - -public class ThirdPartyAuditPrecommitPlugin extends PrecommitPlugin { - - public static final String JDK_JAR_HELL_CONFIG_NAME = "jdkJarHell"; - public static final String LIBS_OPENSEARCH_CORE_PROJECT_PATH = ":libs:opensearch-core"; - - @Override - public TaskProvider createTask(Project project) { - project.getPlugins().apply(CompileOnlyResolvePlugin.class); - project.getConfigurations().create("forbiddenApisCliJar"); - project.getDependencies().add("forbiddenApisCliJar", "de.thetaphi:forbiddenapis:3.2"); - - Configuration jdkJarHellConfig = project.getConfigurations().create(JDK_JAR_HELL_CONFIG_NAME); - if (BuildParams.isInternal() && project.getPath().equals(":libs:opensearch-core") == false) { - // External plugins will depend on this already via transitive dependencies. - // Internal projects are not all plugins, so make sure the check is available - // we are not doing this for this project itself to avoid jar hell with itself - project.getDependencies().add(JDK_JAR_HELL_CONFIG_NAME, project.project(LIBS_OPENSEARCH_CORE_PROJECT_PATH)); - } - - TaskProvider resourcesTask = project.getTasks() - .register("thirdPartyAuditResources", ExportOpenSearchBuildResourcesTask.class); - Path resourcesDir = project.getBuildDir().toPath().resolve("third-party-audit-config"); - resourcesTask.configure(t -> { - t.setOutputDir(resourcesDir.toFile()); - t.copy("forbidden/third-party-audit.txt"); - }); - TaskProvider audit = project.getTasks().register("thirdPartyAudit", ThirdPartyAuditTask.class); - audit.configure(t -> { - t.dependsOn(resourcesTask); - t.setJavaHome(BuildParams.getRuntimeJavaHome().toString()); - t.getTargetCompatibility().set(project.provider(BuildParams::getRuntimeJavaVersion)); - t.setSignatureFile(resourcesDir.resolve("forbidden/third-party-audit.txt").toFile()); - }); - project.getTasks().withType(ThirdPartyAuditTask.class).configureEach(t -> t.setJdkJarHellClasspath(jdkJarHellConfig)); - return audit; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditTask.java deleted file mode 100644 index 8be3f3b8e9b95..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ThirdPartyAuditTask.java +++ /dev/null @@ -1,418 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import de.thetaphi.forbiddenapis.cli.CliMain; -import org.apache.commons.io.output.NullOutputStream; -import org.opensearch.gradle.LoggedExec; -import org.opensearch.gradle.OS; -import org.opensearch.gradle.dependencies.CompileOnlyResolvePlugin; -import org.gradle.api.DefaultTask; -import org.gradle.api.JavaVersion; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.Dependency; -import org.gradle.api.file.FileCollection; -import org.gradle.api.file.FileTree; -import org.gradle.api.provider.Property; -import org.gradle.api.specs.Spec; -import org.gradle.api.tasks.CacheableTask; -import org.gradle.api.tasks.Classpath; -import org.gradle.api.tasks.CompileClasspath; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFile; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.Internal; -import org.gradle.api.tasks.Optional; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.PathSensitive; -import org.gradle.api.tasks.PathSensitivity; -import org.gradle.api.tasks.SkipWhenEmpty; -import org.gradle.api.tasks.TaskAction; -import org.gradle.process.ExecResult; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.TreeSet; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -@CacheableTask -public class ThirdPartyAuditTask extends DefaultTask { - - private static final Pattern MISSING_CLASS_PATTERN = Pattern.compile( - "WARNING: Class '(.*)' cannot be loaded \\(.*\\)\\. Please fix the classpath!" - ); - - private static final Pattern VIOLATION_PATTERN = Pattern.compile("\\s\\sin ([a-zA-Z0-9$.]+) \\(.*\\)"); - private static final int SIG_KILL_EXIT_VALUE = 137; - private static final List EXPECTED_EXIT_CODES = Arrays.asList( - CliMain.EXIT_SUCCESS, - CliMain.EXIT_VIOLATION, - CliMain.EXIT_UNSUPPORTED_JDK - ); - private static final String JDK_JAR_HELL_MAIN_CLASS = "org.opensearch.bootstrap.JdkJarHellCheck"; - - private Set missingClassExcludes = new TreeSet<>(); - - private Set violationsExcludes = new TreeSet<>(); - - private Set jdkJarHellExcludes = new TreeSet<>(); - - private File signatureFile; - - private String javaHome; - - private FileCollection jdkJarHellClasspath; - - private final Property targetCompatibility = getProject().getObjects().property(JavaVersion.class); - - @Input - public Property getTargetCompatibility() { - return targetCompatibility; - } - - @InputFiles - @PathSensitive(PathSensitivity.NAME_ONLY) - public Configuration getForbiddenAPIsConfiguration() { - return getProject().getConfigurations().getByName("forbiddenApisCliJar"); - } - - @InputFile - @PathSensitive(PathSensitivity.NONE) - public File getSignatureFile() { - return signatureFile; - } - - public void setSignatureFile(File signatureFile) { - this.signatureFile = signatureFile; - } - - @Input - @Optional - public String getJavaHome() { - return javaHome; - } - - public void setJavaHome(String javaHome) { - this.javaHome = javaHome; - } - - @Internal - public File getJarExpandDir() { - return new File(new File(getProject().getBuildDir(), "precommit/thirdPartyAudit"), getName()); - } - - @OutputFile - public File getSuccessMarker() { - return new File(getProject().getBuildDir(), "markers/" + getName()); - } - - // We use compile classpath normalization here because class implementation changes are irrelevant for the purposes of jdk jar hell. - // We only care about the runtime classpath ABI here. - @CompileClasspath - public FileCollection getJdkJarHellClasspath() { - return jdkJarHellClasspath.filter(File::exists); - } - - public void setJdkJarHellClasspath(FileCollection jdkJarHellClasspath) { - this.jdkJarHellClasspath = jdkJarHellClasspath; - } - - public void ignoreMissingClasses(String... classesOrPackages) { - if (classesOrPackages.length == 0) { - missingClassExcludes = null; - return; - } - if (missingClassExcludes == null) { - missingClassExcludes = new TreeSet<>(); - } - for (String each : classesOrPackages) { - missingClassExcludes.add(each); - } - } - - public void ignoreViolations(String... violatingClasses) { - for (String each : violatingClasses) { - violationsExcludes.add(each); - } - } - - public void ignoreJarHellWithJDK(String... classes) { - for (String each : classes) { - jdkJarHellExcludes.add(each); - } - } - - @Input - public Set getJdkJarHellExcludes() { - return jdkJarHellExcludes; - } - - @Input - @Optional - public Set getMissingClassExcludes() { - return missingClassExcludes; - } - - @Classpath - @SkipWhenEmpty - public Set getJarsToScan() { - // These are SelfResolvingDependency, and some of them backed by file collections, like the Gradle API files, - // or dependencies added as `files(...)`, we can't be sure if those are third party or not. - // err on the side of scanning these to make sure we don't miss anything - Spec reallyThirdParty = dep -> dep.getGroup() != null && dep.getGroup().startsWith("org.opensearch") == false; - Set jars = getRuntimeConfiguration().getResolvedConfiguration().getFiles(reallyThirdParty); - Set compileOnlyConfiguration = getProject().getConfigurations() - .getByName(CompileOnlyResolvePlugin.RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME) - .getResolvedConfiguration() - .getFiles(reallyThirdParty); - // don't scan provided dependencies that we already scanned, e.x. don't scan cores dependencies for every plugin - if (compileOnlyConfiguration != null) { - jars.removeAll(compileOnlyConfiguration); - } - return jars; - } - - @TaskAction - public void runThirdPartyAudit() throws IOException { - Set jars = getJarsToScan(); - - extractJars(jars); - - final String forbiddenApisOutput = runForbiddenAPIsCli(); - - final Set missingClasses = new TreeSet<>(); - Matcher missingMatcher = MISSING_CLASS_PATTERN.matcher(forbiddenApisOutput); - while (missingMatcher.find()) { - missingClasses.add(missingMatcher.group(1)); - } - - final Set violationsClasses = new TreeSet<>(); - Matcher violationMatcher = VIOLATION_PATTERN.matcher(forbiddenApisOutput); - while (violationMatcher.find()) { - violationsClasses.add(violationMatcher.group(1)); - } - - Set jdkJarHellClasses = runJdkJarHellCheck(); - - if (missingClassExcludes != null) { - long bogousExcludesCount = Stream.concat(missingClassExcludes.stream(), violationsExcludes.stream()) - .filter(each -> missingClasses.contains(each) == false) - .filter(each -> violationsClasses.contains(each) == false) - .count(); - if (bogousExcludesCount != 0 && bogousExcludesCount == missingClassExcludes.size() + violationsExcludes.size()) { - logForbiddenAPIsOutput(forbiddenApisOutput); - throw new IllegalStateException( - "All excluded classes seem to have no issues. " + "This is sometimes an indication that the check silently failed" - ); - } - assertNoPointlessExclusions("are not missing", missingClassExcludes, missingClasses); - missingClasses.removeAll(missingClassExcludes); - } - assertNoPointlessExclusions("have no violations", violationsExcludes, violationsClasses); - assertNoPointlessExclusions("do not generate jar hell with the JDK", jdkJarHellExcludes, jdkJarHellClasses); - - if (missingClassExcludes == null && (missingClasses.isEmpty() == false)) { - getLogger().info("Found missing classes, but task is configured to ignore all of them:\n {}", formatClassList(missingClasses)); - missingClasses.clear(); - } - - violationsClasses.removeAll(violationsExcludes); - if (missingClasses.isEmpty() && violationsClasses.isEmpty()) { - getLogger().info("Third party audit passed successfully"); - } else { - logForbiddenAPIsOutput(forbiddenApisOutput); - if (missingClasses.isEmpty() == false) { - getLogger().error("Missing classes:\n{}", formatClassList(missingClasses)); - } - if (violationsClasses.isEmpty() == false) { - getLogger().error("Classes with violations:\n{}", formatClassList(violationsClasses)); - } - throw new IllegalStateException("Audit of third party dependencies failed"); - } - - assertNoJarHell(jdkJarHellClasses); - - // Mark successful third party audit check - getSuccessMarker().getParentFile().mkdirs(); - Files.write(getSuccessMarker().toPath(), new byte[] {}); - } - - private void logForbiddenAPIsOutput(String forbiddenApisOutput) { - getLogger().error("Forbidden APIs output:\n{}==end of forbidden APIs==", forbiddenApisOutput); - } - - private void throwNotConfiguredCorrectlyException() { - throw new IllegalArgumentException("Audit of third party dependencies is not configured correctly"); - } - - private void extractJars(Set jars) { - File jarExpandDir = getJarExpandDir(); - // We need to clean up to make sure old dependencies don't linger - getProject().delete(jarExpandDir); - - jars.forEach(jar -> { - FileTree jarFiles = getProject().zipTree(jar); - getProject().copy(spec -> { - spec.from(jarFiles); - spec.into(jarExpandDir); - // exclude classes from multi release jars - spec.exclude("META-INF/versions/**"); - }); - // Deal with multi release jars: - // The order is important, we iterate here so we don't depend on the order in which Gradle executes the spec - // We extract multi release jar classes ( if these exist ) going from 9 - the first to support them, to the - // current `targetCompatibility` version. - // Each extract will overwrite the top level classes that existed before it, the result is that we end up - // with a single version of the class in `jarExpandDir`. - // This will be the closes version to `targetCompatibility`, the same class that would be loaded in a JVM - // that has `targetCompatibility` version. - // This means we only scan classes that would be loaded into `targetCompatibility`, and don't look at any - // pther version specific implementation of said classes. - IntStream.rangeClosed( - Integer.parseInt(JavaVersion.VERSION_1_9.getMajorVersion()), - Integer.parseInt(targetCompatibility.get().getMajorVersion()) - ).forEach(majorVersion -> getProject().copy(spec -> { - spec.from(getProject().zipTree(jar)); - spec.into(jarExpandDir); - String metaInfPrefix = "META-INF/versions/" + majorVersion; - spec.include(metaInfPrefix + "/**"); - // Drop the version specific prefix - spec.eachFile(details -> details.setPath(details.getPath().replace(metaInfPrefix, ""))); - spec.setIncludeEmptyDirs(false); - })); - }); - } - - private void assertNoJarHell(Set jdkJarHellClasses) { - jdkJarHellClasses.removeAll(jdkJarHellExcludes); - if (jdkJarHellClasses.isEmpty() == false) { - throw new IllegalStateException( - "Audit of third party dependencies failed:\n" + " Jar Hell with the JDK:\n" + formatClassList(jdkJarHellClasses) - ); - } - } - - private void assertNoPointlessExclusions(String specifics, Set excludes, Set problematic) { - String notMissing = excludes.stream() - .filter(each -> problematic.contains(each) == false) - .map(each -> " * " + each) - .collect(Collectors.joining("\n")); - if (notMissing.isEmpty() == false) { - getLogger().error("Unnecessary exclusions, following classes " + specifics + ":\n {}", notMissing); - throw new IllegalStateException("Third party audit task is not configured correctly"); - } - } - - private String formatClassList(Set classList) { - return classList.stream().map(name -> " * " + name).sorted().collect(Collectors.joining("\n")); - } - - private String runForbiddenAPIsCli() throws IOException { - ByteArrayOutputStream errorOut = new ByteArrayOutputStream(); - ExecResult result = getProject().javaexec(spec -> { - if (javaHome != null) { - spec.setExecutable(javaHome + "/bin/java"); - } - spec.classpath( - getForbiddenAPIsConfiguration(), - getRuntimeConfiguration(), - getProject().getConfigurations().getByName(CompileOnlyResolvePlugin.RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME) - ); - spec.jvmArgs("-Xmx1g"); - spec.jvmArgs(LoggedExec.shortLivedArgs()); - spec.setMain("de.thetaphi.forbiddenapis.cli.CliMain"); - spec.args("-f", getSignatureFile().getAbsolutePath(), "-d", getJarExpandDir(), "--allowmissingclasses"); - spec.setErrorOutput(errorOut); - if (getLogger().isInfoEnabled() == false) { - spec.setStandardOutput(new NullOutputStream()); - } - spec.setIgnoreExitValue(true); - }); - if (OS.current().equals(OS.LINUX) && result.getExitValue() == SIG_KILL_EXIT_VALUE) { - throw new IllegalStateException("Third party audit was killed buy SIGKILL, could be a victim of the Linux OOM killer"); - } - final String forbiddenApisOutput; - try (ByteArrayOutputStream outputStream = errorOut) { - forbiddenApisOutput = outputStream.toString(StandardCharsets.UTF_8.name()); - } - if (EXPECTED_EXIT_CODES.contains(result.getExitValue()) == false) { - throw new IllegalStateException("Forbidden APIs cli failed: " + forbiddenApisOutput); - } - return forbiddenApisOutput; - } - - private Set runJdkJarHellCheck() throws IOException { - ByteArrayOutputStream standardOut = new ByteArrayOutputStream(); - ExecResult execResult = getProject().javaexec(spec -> { - spec.classpath( - jdkJarHellClasspath, - getRuntimeConfiguration(), - getProject().getConfigurations().getByName(CompileOnlyResolvePlugin.RESOLVEABLE_COMPILE_ONLY_CONFIGURATION_NAME) - ); - - spec.setMain(JDK_JAR_HELL_MAIN_CLASS); - spec.args(getJarExpandDir()); - spec.setIgnoreExitValue(true); - if (javaHome != null) { - spec.setExecutable(javaHome + "/bin/java"); - } - spec.setStandardOutput(standardOut); - }); - if (execResult.getExitValue() == 0) { - return Collections.emptySet(); - } - final String jdkJarHellCheckList; - try (ByteArrayOutputStream outputStream = standardOut) { - jdkJarHellCheckList = outputStream.toString(StandardCharsets.UTF_8.name()); - } - return new TreeSet<>(Arrays.asList(jdkJarHellCheckList.split("\\r?\\n"))); - } - - private Configuration getRuntimeConfiguration() { - Configuration runtime = getProject().getConfigurations().findByName("runtimeClasspath"); - if (runtime == null) { - return getProject().getConfigurations().getByName("testCompileClasspath"); - } - return runtime; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/UpdateShasTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/UpdateShasTask.java deleted file mode 100644 index 3fe08888afb09..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/UpdateShasTask.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.gradle.api.DefaultTask; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.tasks.Internal; -import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.TaskProvider; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; -import java.security.NoSuchAlgorithmException; -import java.util.Set; - -/** - * A task to update shas used by {@code DependencyLicensesCheck} - */ -public class UpdateShasTask extends DefaultTask { - - private final Logger logger = Logging.getLogger(getClass()); - - /** The parent dependency licenses task to use configuration from */ - private TaskProvider parentTask; - - public UpdateShasTask() { - setDescription("Updates the sha files for the dependencyLicenses check"); - setOnlyIf(element -> parentTask.get().getLicensesDir() != null); - } - - @TaskAction - public void updateShas() throws NoSuchAlgorithmException, IOException { - Set shaFiles = parentTask.get().getShaFiles(); - - for (File dependency : parentTask.get().getDependencies()) { - String jarName = dependency.getName(); - File shaFile = parentTask.get().getShaFile(jarName); - - if (shaFile.exists() == false) { - createSha(dependency, jarName, shaFile); - } else { - shaFiles.remove(shaFile); - } - } - - for (File shaFile : shaFiles) { - logger.lifecycle("Removing unused sha " + shaFile.getName()); - shaFile.delete(); - } - } - - private void createSha(File dependency, String jarName, File shaFile) throws IOException, NoSuchAlgorithmException { - logger.lifecycle("Adding sha for " + jarName); - - String sha = parentTask.get().getSha1(dependency); - - Files.write(shaFile.toPath(), sha.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE); - } - - @Internal - public DependencyLicensesTask getParentTask() { - return parentTask.get(); - } - - public void setParentTask(TaskProvider parentTask) { - this.parentTask = parentTask; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonAgainstSchemaTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonAgainstSchemaTask.java deleted file mode 100644 index ff28197feb02b..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonAgainstSchemaTask.java +++ /dev/null @@ -1,153 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.networknt.schema.JsonSchema; -import com.networknt.schema.JsonSchemaException; -import com.networknt.schema.JsonSchemaFactory; -import com.networknt.schema.SchemaValidatorsConfig; -import com.networknt.schema.SpecVersion; -import com.networknt.schema.ValidationMessage; -import org.gradle.api.DefaultTask; -import org.gradle.api.UncheckedIOException; -import org.gradle.api.file.FileCollection; -import org.gradle.api.tasks.InputFile; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.TaskAction; -import org.gradle.work.ChangeType; -import org.gradle.work.Incremental; -import org.gradle.work.InputChanges; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.Map; -import java.util.Set; -import java.util.stream.StreamSupport; - -/** - * Incremental task to validate a set of JSON files against against a schema. - */ -public class ValidateJsonAgainstSchemaTask extends DefaultTask { - - private final ObjectMapper mapper = new ObjectMapper(); - private File jsonSchema; - private File report; - private FileCollection inputFiles; - - @Incremental - @InputFiles - public FileCollection getInputFiles() { - return inputFiles; - } - - public void setInputFiles(FileCollection inputFiles) { - this.inputFiles = inputFiles; - } - - @InputFile - public File getJsonSchema() { - return jsonSchema; - } - - public void setJsonSchema(File jsonSchema) { - this.jsonSchema = jsonSchema; - } - - public void setReport(File report) { - this.report = report; - } - - @OutputFile - public File getReport() { - return this.report; - } - - @TaskAction - public void validate(InputChanges inputChanges) throws IOException { - File jsonSchemaOnDisk = getJsonSchema(); - getLogger().debug("JSON schema : [{}]", jsonSchemaOnDisk.getAbsolutePath()); - SchemaValidatorsConfig config = new SchemaValidatorsConfig(); - JsonSchemaFactory factory = JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7); - JsonSchema jsonSchema = factory.getSchema(mapper.readTree(jsonSchemaOnDisk), config); - Map> errors = new LinkedHashMap<>(); - // incrementally evaluate input files - StreamSupport.stream(inputChanges.getFileChanges(getInputFiles()).spliterator(), false) - .filter(f -> f.getChangeType() != ChangeType.REMOVED) - .forEach(fileChange -> { - File file = fileChange.getFile(); - if (file.isDirectory() == false) { - // validate all files and hold on to errors for a complete report if there are failures - getLogger().debug("Validating JSON [{}]", file.getName()); - try { - Set validationMessages = jsonSchema.validate(mapper.readTree(file)); - maybeLogAndCollectError(validationMessages, errors, file); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - }); - if (errors.isEmpty()) { - try (PrintWriter printWriter = new PrintWriter(getReport())) { - printWriter.println("Success! No validation errors found."); - } - } else { - try (PrintWriter printWriter = new PrintWriter(getReport())) { - printWriter.printf("Schema: %s%n", jsonSchemaOnDisk); - printWriter.println("----------Validation Errors-----------"); - errors.values().stream().flatMap(Collection::stream).forEach(printWriter::println); - } - StringBuilder sb = new StringBuilder(); - sb.append("Error validating JSON. See the report at: "); - sb.append(getReport().toURI().toASCIIString()); - sb.append(System.lineSeparator()); - sb.append( - String.format("JSON validation failed: %d files contained %d violations", errors.keySet().size(), errors.values().size()) - ); - throw new JsonSchemaException(sb.toString()); - } - } - - private void maybeLogAndCollectError(Set messages, Map> errors, File file) { - for (ValidationMessage message : messages) { - getLogger().error("[validate JSON][ERROR][{}][{}]", file.getName(), message.toString()); - errors.computeIfAbsent(file, k -> new LinkedHashSet<>()) - .add(String.format("%s: %s", file.getAbsolutePath(), message.toString())); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonNoKeywordsTask.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonNoKeywordsTask.java deleted file mode 100644 index b3ac804566e29..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateJsonNoKeywordsTask.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import org.gradle.api.DefaultTask; -import org.gradle.api.GradleException; -import org.gradle.api.file.FileCollection; -import org.gradle.api.tasks.InputFile; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.OutputFile; -import org.gradle.api.tasks.TaskAction; -import org.gradle.work.ChangeType; -import org.gradle.work.Incremental; -import org.gradle.work.InputChanges; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.stream.StreamSupport; - -/** - * Incremental task to validate that the API names in set of JSON files do not contain - * programming language keywords. - *

    - * The keywords are defined in a JSON file, although it's worth noting that what is and isn't a - * keyword depends on the language and sometimes the context in which a keyword is used. For example, - * `delete` is an operator in JavaScript, but it isn't in the keywords list for JavaScript or - * TypeScript because it's OK to use `delete` as a method name. - */ -public class ValidateJsonNoKeywordsTask extends DefaultTask { - - private final ObjectMapper mapper = new ObjectMapper().configure(JsonParser.Feature.ALLOW_COMMENTS, true); - private File jsonKeywords; - private File report; - private FileCollection inputFiles; - - @Incremental - @InputFiles - public FileCollection getInputFiles() { - return inputFiles; - } - - public void setInputFiles(FileCollection inputFiles) { - this.inputFiles = inputFiles; - } - - @InputFile - public File getJsonKeywords() { - return jsonKeywords; - } - - public void setJsonKeywords(File jsonKeywords) { - this.jsonKeywords = jsonKeywords; - } - - public void setReport(File report) { - this.report = report; - } - - @OutputFile - public File getReport() { - return report; - } - - @TaskAction - public void validate(InputChanges inputChanges) { - final Map> errors = new LinkedHashMap<>(); - - getLogger().debug("Loading keywords from {}", jsonKeywords.getName()); - - final Map> languagesByKeyword = loadKeywords(); - - // incrementally evaluate input files - StreamSupport.stream(inputChanges.getFileChanges(getInputFiles()).spliterator(), false) - .filter(f -> f.getChangeType() != ChangeType.REMOVED) - .forEach(fileChange -> { - File file = fileChange.getFile(); - if (file.isDirectory()) { - return; - } - - getLogger().debug("Checking {}", file.getName()); - - try { - final JsonNode jsonNode = mapper.readTree(file); - - if (jsonNode.isObject() == false) { - errors.put(file, new HashSet<>(Arrays.asList("Expected an object, but found: " + jsonNode.getNodeType()))); - return; - } - - final ObjectNode rootNode = (ObjectNode) jsonNode; - - if (rootNode.size() != 1) { - errors.put( - file, - new HashSet<>(Arrays.asList("Expected an object with exactly 1 key, but found " + rootNode.size() + " keys")) - ); - return; - } - - final String apiName = rootNode.fieldNames().next(); - - for (String component : apiName.split("\\.")) { - if (languagesByKeyword.containsKey(component)) { - final Set errorsForFile = errors.computeIfAbsent(file, _file -> new HashSet<>()); - errorsForFile.add( - component + " is a reserved keyword in these languages: " + languagesByKeyword.get(component) - ); - } - } - } catch (IOException e) { - errors.put(file, new HashSet<>(Arrays.asList("Failed to load file: " + e.getMessage()))); - } - }); - - if (errors.isEmpty()) { - return; - } - - try { - try (PrintWriter pw = new PrintWriter(getReport())) { - pw.println("---------- Validation Report -----------"); - pw.println("Some API names were found that, when client code is generated for these APIS,"); - pw.println("could conflict with the reserved words in some programming languages. It may"); - pw.println("still be possible to use these API names, but you will need to verify whether"); - pw.println("the API name (and its components) can be used as method names, and update the"); - pw.println("list of keywords below. The safest action is to rename the API to avoid conflicts."); - pw.println(); - pw.printf("Keywords source: %s%n", getJsonKeywords()); - pw.println(); - pw.println("---------- Validation Errors -----------"); - pw.println(); - errors.forEach((file, errorsForFile) -> { - pw.printf("File: %s%n", file); - errorsForFile.forEach(err -> pw.printf("\t%s%n", err)); - pw.println(); - }); - } - } catch (FileNotFoundException e) { - throw new GradleException("Failed to write keywords report", e); - } - - String message = String.format( - Locale.ROOT, - "Error validating JSON. See the report at: %s%s%s", - getReport().toURI().toASCIIString(), - System.lineSeparator(), - String.format("JSON validation failed: %d files contained %d violations", errors.keySet().size(), errors.values().size()) - ); - throw new GradleException(message); - } - - /** - * Loads the known keywords. Although the JSON on disk maps from language to keywords, this method - * inverts this to map from keyword to languages. This is because the same keywords are found in - * multiple languages, so it is easier and more useful to have a single map of keywords. - * - * @return a mapping from keyword to languages. - */ - private Map> loadKeywords() { - Map> languagesByKeyword = new HashMap<>(); - - try { - final ObjectNode keywordsNode = ((ObjectNode) mapper.readTree(this.jsonKeywords)); - - keywordsNode.fieldNames().forEachRemaining(eachLanguage -> { - keywordsNode.get(eachLanguage).elements().forEachRemaining(e -> { - final String eachKeyword = e.textValue(); - final Set languages = languagesByKeyword.computeIfAbsent(eachKeyword, _keyword -> new HashSet<>()); - languages.add(eachLanguage); - }); - }); - } catch (IOException e) { - throw new GradleException("Failed to load keywords JSON from " + jsonKeywords.getName() + " - " + e.getMessage(), e); - } - - return languagesByKeyword; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateRestSpecPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateRestSpecPlugin.java deleted file mode 100644 index 5d51e2ef994d4..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/precommit/ValidateRestSpecPlugin.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.util.Util; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.provider.Provider; - -import java.io.File; - -public class ValidateRestSpecPlugin implements Plugin { - private static final String DOUBLE_STAR = "**"; // checkstyle thinks these are javadocs :( - - @Override - public void apply(Project project) { - Provider validateRestSpecTask = project.getTasks() - .register("validateRestSpec", ValidateJsonAgainstSchemaTask.class, task -> { - task.setInputFiles(Util.getJavaTestAndMainSourceResources(project, filter -> { - filter.include(DOUBLE_STAR + "/rest-api-spec/api/" + DOUBLE_STAR + "/*.json"); - filter.exclude(DOUBLE_STAR + "/_common.json"); - })); - // This must always be specified precisely, so that - // projects other than `rest-api-spec` can use this task. - task.setJsonSchema(new File(project.getRootDir(), "rest-api-spec/src/main/resources/schema.json")); - task.setReport(new File(project.getBuildDir(), "reports/validateJson.txt")); - }); - - Provider validateNoKeywordsTask = project.getTasks() - .register("validateNoKeywords", ValidateJsonNoKeywordsTask.class, task -> { - task.setInputFiles(Util.getJavaTestAndMainSourceResources(project, filter -> { - filter.include(DOUBLE_STAR + "/rest-api-spec/api/" + DOUBLE_STAR + "/*.json"); - filter.exclude(DOUBLE_STAR + "/_common.json"); - })); - task.setJsonKeywords(new File(project.getRootDir(), "rest-api-spec/keywords.json")); - task.setReport(new File(project.getBuildDir(), "reports/validateKeywords.txt")); - // There's no point running this task if the schema validation fails - task.mustRunAfter(validateRestSpecTask); - }); - - project.getTasks().named("precommit").configure(t -> t.dependsOn(validateRestSpecTask, validateNoKeywordsTask)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTar.java b/buildSrc/src/main/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTar.java deleted file mode 100644 index 7b8e9c9c925ba..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/tar/SymbolicLinkPreservingTar.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.tar; - -import org.apache.commons.compress.archivers.tar.TarArchiveEntry; -import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; -import org.apache.commons.compress.archivers.tar.TarConstants; -import org.apache.commons.compress.archivers.zip.UnixStat; -import org.gradle.api.GradleException; -import org.gradle.api.file.FileCopyDetails; -import org.gradle.api.file.RegularFile; -import org.gradle.api.internal.file.CopyActionProcessingStreamAction; -import org.gradle.api.internal.file.archive.compression.ArchiveOutputStreamFactory; -import org.gradle.api.internal.file.archive.compression.Bzip2Archiver; -import org.gradle.api.internal.file.archive.compression.GzipArchiver; -import org.gradle.api.internal.file.archive.compression.SimpleCompressor; -import org.gradle.api.internal.file.copy.CopyAction; -import org.gradle.api.internal.file.copy.CopyActionProcessingStream; -import org.gradle.api.internal.file.copy.FileCopyDetailsInternal; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.WorkResult; -import org.gradle.api.tasks.WorkResults; -import org.gradle.api.tasks.bundling.Tar; - -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.file.Files; -import java.util.HashSet; -import java.util.Set; - -/** - * A custom archive task that assembles a tar archive that preserves symbolic links. - * - * This task is necessary because the built-in task {@link org.gradle.api.tasks.bundling.Tar} does not preserve symbolic links. - */ -public class SymbolicLinkPreservingTar extends Tar { - - @Override - protected CopyAction createCopyAction() { - final ArchiveOutputStreamFactory compressor; - switch (getCompression()) { - case BZIP2: - compressor = Bzip2Archiver.getCompressor(); - break; - case GZIP: - compressor = GzipArchiver.getCompressor(); - break; - default: - compressor = new SimpleCompressor(); - break; - } - return new SymbolicLinkPreservingTarCopyAction(getArchiveFile(), compressor, isPreserveFileTimestamps()); - } - - private static class SymbolicLinkPreservingTarCopyAction implements CopyAction { - - private final Provider tarFile; - private final ArchiveOutputStreamFactory compressor; - private final boolean isPreserveFileTimestamps; - - SymbolicLinkPreservingTarCopyAction( - final Provider tarFile, - final ArchiveOutputStreamFactory compressor, - final boolean isPreserveFileTimestamps - ) { - this.tarFile = tarFile; - this.compressor = compressor; - this.isPreserveFileTimestamps = isPreserveFileTimestamps; - } - - @Override - public WorkResult execute(final CopyActionProcessingStream stream) { - try ( - OutputStream out = compressor.createArchiveOutputStream(tarFile.get().getAsFile()); - TarArchiveOutputStream tar = new TarArchiveOutputStream(out) - ) { - tar.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU); - stream.process(new SymbolicLinkPreservingTarStreamAction(tar)); - } catch (final IOException e) { - throw new GradleException("failed writing tar file [" + tarFile + "]", e); - } - - return WorkResults.didWork(true); - } - - private class SymbolicLinkPreservingTarStreamAction implements CopyActionProcessingStreamAction { - - private final TarArchiveOutputStream tar; - - /* - * When Gradle walks the file tree, it will follow symbolic links. This means that if there is a symbolic link to a directory - * in the source file tree, we could otherwise end up duplicating the entries below that directory in the resulting tar archive. - * To avoid this, we track which symbolic links we have visited, and skip files that are children of symbolic links that we have - * already visited. - */ - private final Set visitedSymbolicLinks = new HashSet<>(); - - SymbolicLinkPreservingTarStreamAction(final TarArchiveOutputStream tar) { - this.tar = tar; - } - - @Override - public void processFile(final FileCopyDetailsInternal details) { - if (isChildOfVisitedSymbolicLink(details) == false) { - if (isSymbolicLink(details)) { - visitSymbolicLink(details); - } else if (details.isDirectory()) { - visitDirectory(details); - } else { - visitFile(details); - } - } - } - - private boolean isChildOfVisitedSymbolicLink(final FileCopyDetailsInternal details) { - final File file; - try { - file = details.getFile(); - } catch (final UnsupportedOperationException e) { - // we get invoked with stubbed details, there is no way to introspect this other than catching this exception - return false; - } - for (final File symbolicLink : visitedSymbolicLinks) { - if (isChildOf(symbolicLink, file)) return true; - } - return false; - } - - private boolean isChildOf(final File directory, final File file) { - return file.toPath().startsWith(directory.toPath()); - } - - private boolean isSymbolicLink(final FileCopyDetailsInternal details) { - final File file; - try { - file = details.getFile(); - } catch (final UnsupportedOperationException e) { - // we get invoked with stubbed details, there is no way to introspect this other than catching this exception - return false; - } - return Files.isSymbolicLink(file.toPath()); - } - - private void visitSymbolicLink(final FileCopyDetailsInternal details) { - visitedSymbolicLinks.add(details.getFile()); - final TarArchiveEntry entry = new TarArchiveEntry(details.getRelativePath().getPathString(), TarConstants.LF_SYMLINK); - entry.setModTime(getModTime(details)); - entry.setMode(UnixStat.LINK_FLAG | details.getMode()); - try { - entry.setLinkName(Files.readSymbolicLink(details.getFile().toPath()).toString()); - tar.putArchiveEntry(entry); - tar.closeArchiveEntry(); - } catch (final IOException e) { - handleProcessingException(details, e); - } - } - - private void visitDirectory(final FileCopyDetailsInternal details) { - final TarArchiveEntry entry = new TarArchiveEntry(details.getRelativePath().getPathString() + "/"); - entry.setModTime(getModTime(details)); - entry.setMode(UnixStat.DIR_FLAG | details.getMode()); - try { - tar.putArchiveEntry(entry); - tar.closeArchiveEntry(); - } catch (final IOException e) { - handleProcessingException(details, e); - } - } - - private void visitFile(final FileCopyDetailsInternal details) { - final TarArchiveEntry entry = new TarArchiveEntry(details.getRelativePath().getPathString()); - entry.setModTime(getModTime(details)); - entry.setMode(UnixStat.FILE_FLAG | details.getMode()); - entry.setSize(details.getSize()); - try { - tar.putArchiveEntry(entry); - details.copyTo(tar); - tar.closeArchiveEntry(); - } catch (final IOException e) { - handleProcessingException(details, e); - } - } - - private void handleProcessingException(final FileCopyDetailsInternal details, final IOException e) { - throw new GradleException("could not add [" + details + "] to tar file [" + tarFile + "]", e); - } - - } - - private long getModTime(final FileCopyDetails details) { - return isPreserveFileTimestamps ? details.getLastModified() : 0; - } - - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/tar/SymoblicLinkPreservingTarPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/tar/SymoblicLinkPreservingTarPlugin.java deleted file mode 100644 index 4dd27f148e290..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/tar/SymoblicLinkPreservingTarPlugin.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.tar; - -import org.gradle.api.Plugin; -import org.gradle.api.Project; - -public class SymoblicLinkPreservingTarPlugin implements Plugin { - - @Override - public void apply(final Project target) { - - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/DistroTestPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/test/DistroTestPlugin.java deleted file mode 100644 index 7d8d888723bf0..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/DistroTestPlugin.java +++ /dev/null @@ -1,499 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.opensearch.gradle.Architecture; -import org.opensearch.gradle.DistributionDownloadPlugin; -import org.opensearch.gradle.OpenSearchDistribution; -import org.opensearch.gradle.Jdk; -import org.opensearch.gradle.JdkDownloadPlugin; -import org.opensearch.gradle.SystemPropertyCommandLineArgumentProvider; -import org.opensearch.gradle.Version; -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.docker.DockerSupportPlugin; -import org.opensearch.gradle.docker.DockerSupportService; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.internal.InternalDistributionDownloadPlugin; -import org.opensearch.gradle.util.GradleUtils; -import org.opensearch.gradle.util.Util; -import org.opensearch.gradle.vagrant.VagrantBasePlugin; -import org.opensearch.gradle.vagrant.VagrantExtension; -import org.gradle.api.Action; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.dsl.DependencyHandler; -import org.gradle.api.plugins.JavaBasePlugin; -import org.gradle.api.provider.Provider; -import org.gradle.api.specs.Specs; -import org.gradle.api.tasks.Copy; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.testing.Test; -import org.opensearch.gradle.vagrant.VagrantMachine; - -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Map.Entry; -import java.util.function.Supplier; -import java.util.stream.Stream; - -public class DistroTestPlugin implements Plugin { - private static final String SYSTEM_JDK_VERSION = "8u432-b06"; - private static final String SYSTEM_JDK_VENDOR = "adoptium"; - private static final String GRADLE_JDK_VERSION = "11.0.25+9"; - private static final String GRADLE_JDK_VENDOR = "adoptium"; - - // all distributions used by distro tests. this is temporary until tests are per distribution - private static final String EXAMPLE_PLUGIN_CONFIGURATION = "examplePlugin"; - private static final String IN_VM_SYSPROP = "tests.inVM"; - private static final String DISTRIBUTION_SYSPROP = "tests.distribution"; - private static final String BWC_DISTRIBUTION_SYSPROP = "tests.bwc-distribution"; - private static final String EXAMPLE_PLUGIN_SYSPROP = "tests.example-plugin"; - - @Override - public void apply(Project project) { - project.getRootProject().getPluginManager().apply(DockerSupportPlugin.class); - project.getPlugins().apply(InternalDistributionDownloadPlugin.class); - project.getPlugins().apply(JdkDownloadPlugin.class); - project.getPluginManager().apply("opensearch.build"); - - Provider dockerSupport = GradleUtils.getBuildService( - project.getGradle().getSharedServices(), - DockerSupportPlugin.DOCKER_SUPPORT_SERVICE_NAME - ); - - // TODO: it would be useful to also have the SYSTEM_JAVA_HOME setup in the root project, so that running from GCP only needs - // a java for gradle to run, and the tests are self sufficient and consistent with the java they use - NamedDomainObjectContainer allDistributions = DistributionDownloadPlugin.getContainer(project); - List testDistributions = configureDistributions(project); - - Map> lifecycleTasks = lifecycleTasks(project, "destructiveDistroTest"); - Map> versionTasks = versionTasks(project, "destructiveDistroUpgradeTest"); - TaskProvider destructiveDistroTest = project.getTasks().register("destructiveDistroTest"); - - Configuration examplePlugin = configureExamplePlugin(project); - - List> windowsTestTasks = new ArrayList<>(); - Map>> linuxTestTasks = new HashMap<>(); - Map>> upgradeTestTasks = new HashMap<>(); - Map> depsTasks = new HashMap<>(); - for (OpenSearchDistribution distribution : testDistributions) { - String taskname = destructiveDistroTestTaskName(distribution); - TaskProvider depsTask = project.getTasks().register(taskname + "#deps"); - depsTask.configure(t -> t.dependsOn(distribution, examplePlugin)); - depsTasks.put(taskname, depsTask); - // TODO - suppressing failure temporarily where duplicate tasks are created for docker. - try { - TaskProvider destructiveTask = configureTestTask(project, taskname, distribution, t -> { - t.onlyIf(t2 -> distribution.isDocker() == false || dockerSupport.get().getDockerAvailability().isAvailable); - addSysprop(t, DISTRIBUTION_SYSPROP, distribution::getFilepath); - addSysprop(t, EXAMPLE_PLUGIN_SYSPROP, () -> examplePlugin.getSingleFile().toString()); - t.exclude("**/PackageUpgradeTests.class"); - }, depsTask); - if (distribution.getPlatform() == OpenSearchDistribution.Platform.WINDOWS) { - windowsTestTasks.add(destructiveTask); - } else { - linuxTestTasks.computeIfAbsent(distribution.getType(), k -> new ArrayList<>()).add(destructiveTask); - } - destructiveDistroTest.configure(t -> t.dependsOn(destructiveTask)); - lifecycleTasks.get(distribution.getType()).configure(t -> t.dependsOn(destructiveTask)); - } catch (Exception ex) { - System.out.println(ex.getMessage()); - } - - if ((distribution.getType() == OpenSearchDistribution.Type.DEB || distribution.getType() == OpenSearchDistribution.Type.RPM) - && distribution.getBundledJdk()) { - for (Version version : BuildParams.getBwcVersions().getIndexCompatible()) { - if (version.before("6.3.0")) { - continue; // before opening xpack - } - final OpenSearchDistribution bwcDistro; - if (version.equals(Version.fromString(distribution.getVersion()))) { - // this is the same as the distribution we are testing - bwcDistro = distribution; - } else { - bwcDistro = createDistro( - allDistributions, - distribution.getArchitecture(), - distribution.getType(), - distribution.getPlatform(), - distribution.getBundledJdk(), - version.toString() - ); - - } - String upgradeTaskname = destructiveDistroUpgradeTestTaskName(distribution, version.toString()); - TaskProvider upgradeDepsTask = project.getTasks().register(upgradeTaskname + "#deps"); - upgradeDepsTask.configure(t -> t.dependsOn(distribution, bwcDistro)); - depsTasks.put(upgradeTaskname, upgradeDepsTask); - TaskProvider upgradeTest = configureTestTask(project, upgradeTaskname, distribution, t -> { - addSysprop(t, DISTRIBUTION_SYSPROP, distribution::getFilepath); - addSysprop(t, BWC_DISTRIBUTION_SYSPROP, bwcDistro::getFilepath); - t.include("**/PackageUpgradeTests.class"); - }, upgradeDepsTask); - versionTasks.get(version.toString()).configure(t -> t.dependsOn(upgradeTest)); - upgradeTestTasks.computeIfAbsent(version.toString(), k -> new ArrayList<>()).add(upgradeTest); - } - } - } - - // setup jdks used by no-jdk tests, and by gradle executing - TaskProvider linuxGradleJdk = createJdk(project, "gradle", GRADLE_JDK_VENDOR, GRADLE_JDK_VERSION, "linux", "x64"); - TaskProvider linuxSystemJdk = createJdk(project, "system", SYSTEM_JDK_VENDOR, SYSTEM_JDK_VERSION, "linux", "x64"); - TaskProvider windowsGradleJdk = createJdk(project, "gradle", GRADLE_JDK_VENDOR, GRADLE_JDK_VERSION, "windows", "x64"); - TaskProvider windowsSystemJdk = createJdk(project, "system", SYSTEM_JDK_VENDOR, SYSTEM_JDK_VERSION, "windows", "x64"); - - project.subprojects(vmProject -> { - vmProject.getPluginManager().apply(VagrantBasePlugin.class); - TaskProvider gradleJdk = isWindows(vmProject) ? windowsGradleJdk : linuxGradleJdk; - TaskProvider systemJdk = isWindows(vmProject) ? windowsSystemJdk : linuxSystemJdk; - configureVM(vmProject, gradleJdk, systemJdk); - List vmDependencies = Arrays.asList( - gradleJdk, - systemJdk, - project.getConfigurations().getByName("testRuntimeClasspath") - ); - - Map> vmLifecyleTasks = lifecycleTasks(vmProject, "distroTest"); - Map> vmVersionTasks = versionTasks(vmProject, "distroUpgradeTest"); - TaskProvider distroTest = vmProject.getTasks().register("distroTest"); - - // windows boxes get windows distributions, and linux boxes get linux distributions - if (isWindows(vmProject)) { - configureVMWrapperTasks( - vmProject, - windowsTestTasks, - depsTasks, - wrapperTask -> { vmLifecyleTasks.get(OpenSearchDistribution.Type.ARCHIVE).configure(t -> t.dependsOn(wrapperTask)); }, - vmDependencies - ); - } else { - for (Entry>> entry : linuxTestTasks.entrySet()) { - OpenSearchDistribution.Type type = entry.getKey(); - TaskProvider vmLifecycleTask = vmLifecyleTasks.get(type); - configureVMWrapperTasks(vmProject, entry.getValue(), depsTasks, wrapperTask -> { - vmLifecycleTask.configure(t -> t.dependsOn(wrapperTask)); - - // Only VM sub-projects that are specifically opted-in to testing Docker should - // have the Docker task added as a dependency. Although we control whether Docker - // is installed in the VM via `Vagrantfile` and we could auto-detect its presence - // in the VM, the test tasks e.g. `destructiveDistroTest.default-docker` are defined - // on the host during Gradle's configuration phase and not in the VM, so - // auto-detection doesn't work. - // - // The shouldTestDocker property could be null, hence we use Boolean.TRUE.equals() - boolean shouldExecute = (type != OpenSearchDistribution.Type.DOCKER) - || Boolean.TRUE.equals(vmProject.findProperty("shouldTestDocker")); - - if (shouldExecute) { - distroTest.configure(t -> t.dependsOn(wrapperTask)); - } - }, vmDependencies); - } - - for (Entry>> entry : upgradeTestTasks.entrySet()) { - String version = entry.getKey(); - TaskProvider vmVersionTask = vmVersionTasks.get(version); - configureVMWrapperTasks( - vmProject, - entry.getValue(), - depsTasks, - wrapperTask -> { vmVersionTask.configure(t -> t.dependsOn(wrapperTask)); }, - vmDependencies - ); - } - } - }); - } - - private static Map> lifecycleTasks(Project project, String taskPrefix) { - Map> lifecyleTasks = new HashMap<>(); - - lifecyleTasks.put(OpenSearchDistribution.Type.DOCKER, project.getTasks().register(taskPrefix + ".docker")); - lifecyleTasks.put(OpenSearchDistribution.Type.ARCHIVE, project.getTasks().register(taskPrefix + ".archives")); - lifecyleTasks.put(OpenSearchDistribution.Type.DEB, project.getTasks().register(taskPrefix + ".packages")); - lifecyleTasks.put(OpenSearchDistribution.Type.RPM, lifecyleTasks.get(OpenSearchDistribution.Type.DEB)); - - return lifecyleTasks; - } - - private static Map> versionTasks(Project project, String taskPrefix) { - Map> versionTasks = new HashMap<>(); - - for (Version version : BuildParams.getBwcVersions().getIndexCompatible()) { - versionTasks.put(version.toString(), project.getTasks().register(taskPrefix + ".v" + version)); - } - - return versionTasks; - } - - private static TaskProvider createJdk( - Project project, - String purpose, - String vendor, - String version, - String platform, - String architecture - ) { - Jdk jdk = JdkDownloadPlugin.getContainer(project).create(platform + "-" + purpose); - jdk.setVendor(vendor); - jdk.setVersion(version); - jdk.setPlatform(platform); - jdk.setArchitecture(architecture); - - String taskname = "copy" + Util.capitalize(platform) + Util.capitalize(purpose) + "Jdk"; - TaskProvider copyTask = project.getTasks().register(taskname, Copy.class); - copyTask.configure(t -> { - t.from(jdk); - t.into(new File(project.getBuildDir(), "jdks/" + platform + "-" + architecture + "-" + vendor + "-" + version)); - }); - return copyTask; - } - - private static void configureVM(Project project, TaskProvider gradleJdkProvider, TaskProvider systemJdkProvider) { - String box = project.getName(); - - // setup VM used by these tests - VagrantExtension vagrant = project.getExtensions().getByType(VagrantExtension.class); - vagrant.setBox(box); - vagrant.vmEnv("SYSTEM_JAVA_HOME", convertPath(project, vagrant, systemJdkProvider, "", "")); - // set java home for gradle to use. package tests will overwrite/remove this for each test case - vagrant.vmEnv("JAVA_HOME", convertPath(project, vagrant, gradleJdkProvider, "", "")); - if (System.getenv("JENKINS_URL") != null) { - Stream.of("JOB_NAME", "JENKINS_URL", "BUILD_NUMBER", "BUILD_URL").forEach(name -> vagrant.vmEnv(name, System.getenv(name))); - } - vagrant.setIsWindowsVM(isWindows(project)); - } - - private static Object convertPath( - Project project, - VagrantExtension vagrant, - TaskProvider jdkProvider, - String additionaLinux, - String additionalWindows - ) { - return Util.toStringable(() -> { - String hostPath = jdkProvider.get().getDestinationDir().toString(); - if (vagrant.isWindowsVM()) { - return VagrantMachine.convertWindowsPath(project, hostPath) + additionalWindows; - } else { - return VagrantMachine.convertLinuxPath(project, hostPath) + additionaLinux; - } - }); - } - - private static Configuration configureExamplePlugin(Project project) { - Configuration examplePlugin = project.getConfigurations().create(EXAMPLE_PLUGIN_CONFIGURATION); - DependencyHandler deps = project.getDependencies(); - Map examplePluginProject = new HashMap() { - { - put("path", ":example-plugins:custom-settings"); - put("configuration", "zip"); - } - }; - deps.add(EXAMPLE_PLUGIN_CONFIGURATION, deps.project(examplePluginProject)); - return examplePlugin; - } - - private static void configureVMWrapperTasks( - Project project, - List> destructiveTasks, - Map> depsTasks, - Action> configure, - Object... additionalDeps - ) { - for (TaskProvider destructiveTask : destructiveTasks) { - String destructiveTaskName = destructiveTask.getName(); - String taskname = destructiveTaskName.substring("destructive".length()); - taskname = taskname.substring(0, 1).toLowerCase(Locale.ROOT) + taskname.substring(1); - TaskProvider vmTask = project.getTasks().register(taskname, GradleDistroTestTask.class, t -> { - t.setGroup(JavaBasePlugin.VERIFICATION_GROUP); - t.setDescription("Runs " + destructiveTaskName.split("\\.", 2)[1] + " tests within vagrant"); - t.setTaskName(destructiveTaskName); - t.extraArg("-D'" + IN_VM_SYSPROP + "'"); - t.dependsOn(depsTasks.get(destructiveTaskName)); - t.dependsOn(additionalDeps); - }); - configure.execute(vmTask); - } - } - - private static TaskProvider configureTestTask( - Project project, - String taskname, - OpenSearchDistribution distribution, - Action configure, - Object... deps - ) { - return project.getTasks().register(taskname, Test.class, t -> { - // Only run tests for the current architecture - t.onlyIf(t3 -> distribution.getArchitecture() == Architecture.current()); - t.getOutputs().doNotCacheIf("Build cache is disabled for packaging tests", Specs.satisfyAll()); - t.setMaxParallelForks(1); - t.setWorkingDir(project.getProjectDir()); - if (System.getProperty(IN_VM_SYSPROP) == null) { - t.dependsOn(deps); - } - configure.execute(t); - }); - } - - private List configureDistributions(Project project) { - NamedDomainObjectContainer distributions = DistributionDownloadPlugin.getContainer(project); - List currentDistros = new ArrayList<>(); - - for (Architecture architecture : Architecture.values()) { - for (OpenSearchDistribution.Type type : Arrays.asList( - OpenSearchDistribution.Type.DEB, - OpenSearchDistribution.Type.RPM, - OpenSearchDistribution.Type.DOCKER - )) { - for (boolean bundledJdk : Arrays.asList(true, false)) { - if (bundledJdk == false) { - // We'll never publish an ARM (arm64) build without a bundled JDK. - if (architecture == Architecture.ARM64) { - continue; - } - // All our Docker images include a bundled JDK so it doesn't make sense to test without one. - if (type == OpenSearchDistribution.Type.DOCKER) { - continue; - } - } - - currentDistros.add( - createDistro(distributions, architecture, type, null, bundledJdk, VersionProperties.getOpenSearch()) - ); - } - } - } - - for (Architecture architecture : Architecture.values()) { - for (OpenSearchDistribution.Platform platform : Arrays.asList( - OpenSearchDistribution.Platform.LINUX, - OpenSearchDistribution.Platform.WINDOWS - )) { - for (boolean bundledJdk : Arrays.asList(true, false)) { - if (bundledJdk == false && architecture != Architecture.X64) { - // We will never publish distributions for non-x86 (amd64) platforms - // without a bundled JDK - continue; - } - - currentDistros.add( - createDistro( - distributions, - architecture, - OpenSearchDistribution.Type.ARCHIVE, - platform, - bundledJdk, - VersionProperties.getOpenSearch() - ) - ); - } - } - } - - return currentDistros; - } - - private static OpenSearchDistribution createDistro( - NamedDomainObjectContainer distributions, - Architecture architecture, - OpenSearchDistribution.Type type, - OpenSearchDistribution.Platform platform, - boolean bundledJdk, - String version - ) { - String name = distroId(type, platform, bundledJdk, architecture) + "-" + version; - boolean isDocker = type == OpenSearchDistribution.Type.DOCKER; - OpenSearchDistribution distro = distributions.create(name, d -> { - d.setArchitecture(architecture); - d.setType(type); - if (type == OpenSearchDistribution.Type.ARCHIVE) { - d.setPlatform(platform); - } - if (isDocker == false) { - d.setBundledJdk(bundledJdk); - } - d.setVersion(version); - }); - - // Allow us to gracefully omit building Docker distributions if Docker is not available on the system. - // In such a case as we can't build the Docker images we'll simply skip the corresponding tests. - if (isDocker) { - distro.setFailIfUnavailable(false); - } - - return distro; - } - - // return true if the project is for a windows VM, false otherwise - private static boolean isWindows(Project project) { - return project.getName().contains("windows"); - } - - private static String distroId( - OpenSearchDistribution.Type type, - OpenSearchDistribution.Platform platform, - boolean bundledJdk, - Architecture architecture - ) { - return (type == OpenSearchDistribution.Type.ARCHIVE ? platform + "-" : "") + type + (bundledJdk ? "" : "-no-jdk") - + (architecture == Architecture.X64 ? "" : "-" + architecture.toString().toLowerCase()); - } - - private static String destructiveDistroTestTaskName(OpenSearchDistribution distro) { - OpenSearchDistribution.Type type = distro.getType(); - return "destructiveDistroTest." + distroId(type, distro.getPlatform(), distro.getBundledJdk(), distro.getArchitecture()); - } - - private static String destructiveDistroUpgradeTestTaskName(OpenSearchDistribution distro, String bwcVersion) { - OpenSearchDistribution.Type type = distro.getType(); - return "destructiveDistroUpgradeTest.v" - + bwcVersion - + "." - + distroId(type, distro.getPlatform(), distro.getBundledJdk(), distro.getArchitecture()); - } - - private static void addSysprop(Test task, String sysprop, Supplier valueSupplier) { - SystemPropertyCommandLineArgumentProvider props = task.getExtensions().getByType(SystemPropertyCommandLineArgumentProvider.class); - props.systemProperty(sysprop, valueSupplier); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/ErrorReportingTestListener.java b/buildSrc/src/main/java/org/opensearch/gradle/test/ErrorReportingTestListener.java deleted file mode 100644 index aff9198e15772..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/ErrorReportingTestListener.java +++ /dev/null @@ -1,308 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.gradle.api.internal.tasks.testing.logging.FullExceptionFormatter; -import org.gradle.api.internal.tasks.testing.logging.TestExceptionFormatter; -import org.gradle.api.logging.Logger; -import org.gradle.api.tasks.testing.TestDescriptor; -import org.gradle.api.tasks.testing.TestListener; -import org.gradle.api.tasks.testing.TestOutputEvent; -import org.gradle.api.tasks.testing.TestOutputListener; -import org.gradle.api.tasks.testing.TestResult; -import org.gradle.api.tasks.testing.logging.TestLogging; - -import java.io.BufferedOutputStream; -import java.io.BufferedReader; -import java.io.Closeable; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.PrintStream; -import java.io.PrintWriter; -import java.io.UncheckedIOException; -import java.io.Writer; -import java.util.Deque; -import java.util.LinkedHashSet; -import java.util.LinkedList; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -public class ErrorReportingTestListener implements TestOutputListener, TestListener { - private static final String REPRODUCE_WITH_PREFIX = "REPRODUCE WITH"; - - private final TestExceptionFormatter formatter; - private final File outputDirectory; - private final Logger taskLogger; - private Map eventWriters = new ConcurrentHashMap<>(); - private Map> reproductionLines = new ConcurrentHashMap<>(); - private Set failedTests = new LinkedHashSet<>(); - - public ErrorReportingTestListener(TestLogging testLogging, Logger taskLogger, File outputDirectory) { - this.formatter = new FullExceptionFormatter(testLogging); - this.taskLogger = taskLogger; - this.outputDirectory = outputDirectory; - } - - @Override - public void onOutput(TestDescriptor testDescriptor, TestOutputEvent outputEvent) { - TestDescriptor suite = testDescriptor.getParent(); - - // Check if this is output from the test suite itself (e.g. afterTest or beforeTest) - if (testDescriptor.isComposite()) { - suite = testDescriptor; - } - - // Hold on to any repro messages so we can report them immediately on test case failure - if (outputEvent.getMessage().startsWith(REPRODUCE_WITH_PREFIX)) { - Deque lines = reproductionLines.computeIfAbsent(Descriptor.of(suite), d -> new LinkedList<>()); - lines.add(outputEvent.getMessage()); - } - - EventWriter eventWriter = eventWriters.computeIfAbsent(Descriptor.of(suite), EventWriter::new); - eventWriter.write(outputEvent); - } - - @Override - public void beforeSuite(TestDescriptor suite) { - - } - - @Override - public void afterSuite(final TestDescriptor suite, TestResult result) { - Descriptor descriptor = Descriptor.of(suite); - - try { - // if the test suite failed, report all captured output - if (result.getResultType().equals(TestResult.ResultType.FAILURE)) { - EventWriter eventWriter = eventWriters.get(descriptor); - - if (eventWriter != null) { - // It's not explicit what the threading guarantees are for TestListener method execution so we'll - // be explicitly safe here to avoid interleaving output from multiple test suites - synchronized (this) { - // make sure we've flushed everything to disk before reading - eventWriter.flush(); - - System.err.println("\n\nSuite: " + suite); - - try (BufferedReader reader = eventWriter.reader()) { - PrintStream out = System.out; - for (String message = reader.readLine(); message != null; message = reader.readLine()) { - if (message.startsWith(" 1> ")) { - out = System.out; - } else if (message.startsWith(" 2> ")) { - out = System.err; - } - - out.println(message); - } - } - } - } - } - if (suite.getParent() == null) { - // per test task top level gradle test run suite finished - if (getFailedTests().size() > 0) { - taskLogger.lifecycle("\nTests with failures:"); - for (ErrorReportingTestListener.Descriptor failure : getFailedTests()) { - taskLogger.lifecycle(" - " + failure.getFullName()); - } - } - } - } catch (IOException e) { - throw new UncheckedIOException("Error reading test suite output", e); - } finally { - reproductionLines.remove(descriptor); - EventWriter writer = eventWriters.remove(descriptor); - if (writer != null) { - try { - writer.close(); - } catch (IOException e) { - taskLogger.error("Failed to close test suite output stream", e); - } - } - } - } - - @Override - public void beforeTest(TestDescriptor testDescriptor) { - - } - - @Override - public void afterTest(TestDescriptor testDescriptor, TestResult result) { - if (result.getResultType() == TestResult.ResultType.FAILURE) { - failedTests.add(Descriptor.of(testDescriptor)); - - if (testDescriptor.getParent() != null) { - // go back and fetch the reproduction line for this test failure - Deque lines = reproductionLines.get(Descriptor.of(testDescriptor.getParent())); - if (lines != null) { - String line = lines.getLast(); - if (line != null) { - System.err.print('\n' + line); - } - } - - // include test failure exception stacktraces in test suite output log - if (result.getExceptions().size() > 0) { - String message = formatter.format(testDescriptor, result.getExceptions()).substring(4); - EventWriter eventWriter = eventWriters.computeIfAbsent(Descriptor.of(testDescriptor.getParent()), EventWriter::new); - - eventWriter.write(new TestOutputEvent() { - @Override - public Destination getDestination() { - return Destination.StdErr; - } - - @Override - public String getMessage() { - return message; - } - }); - } - } - } - } - - public Set getFailedTests() { - return failedTests; - } - - /** - * Class for identifying test output sources. We use this rather than Gradle's {@link TestDescriptor} as we want - * to avoid any nasty memory leak issues that come from keeping Gradle implementation types in memory. Since we - * use this a the key for our HashMap, it's best to control the implementation as there's no guarantee that Gradle's - * various {@link TestDescriptor} implementations reliably implement equals and hashCode. - */ - public static class Descriptor { - private final String name; - private final String className; - private final String parent; - - private Descriptor(String name, String className, String parent) { - this.name = name; - this.className = className; - this.parent = parent; - } - - public static Descriptor of(TestDescriptor d) { - return new Descriptor(d.getName(), d.getClassName(), d.getParent() == null ? null : d.getParent().toString()); - } - - public String getClassName() { - return className; - } - - public String getFullName() { - return className + "." + name; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Descriptor that = (Descriptor) o; - return Objects.equals(name, that.name) && Objects.equals(className, that.className) && Objects.equals(parent, that.parent); - } - - @Override - public int hashCode() { - return Objects.hash(name, className, parent); - } - } - - private class EventWriter implements Closeable { - private final File outputFile; - private final Writer writer; - - EventWriter(Descriptor descriptor) { - this.outputFile = new File(outputDirectory, descriptor.getClassName() + ".out"); - - FileOutputStream fos; - try { - fos = new FileOutputStream(this.outputFile); - } catch (IOException e) { - throw new UncheckedIOException("Unable to create test suite output file", e); - } - - this.writer = new PrintWriter(new BufferedOutputStream(fos)); - } - - public void write(TestOutputEvent event) { - String prefix; - if (event.getDestination() == TestOutputEvent.Destination.StdOut) { - prefix = " 1> "; - } else { - prefix = " 2> "; - } - - try { - if (event.getMessage().equals("\n")) { - writer.write(event.getMessage()); - } else { - writer.write(prefix + event.getMessage()); - } - } catch (IOException e) { - throw new UncheckedIOException("Unable to write test suite output", e); - } - } - - public void flush() throws IOException { - writer.flush(); - } - - public BufferedReader reader() { - try { - return new BufferedReader(new FileReader(outputFile)); - } catch (IOException e) { - throw new UncheckedIOException("Unable to read test suite output file", e); - } - } - - @Override - public void close() throws IOException { - writer.close(); - - // there's no need to keep this stuff on disk after suite execution - outputFile.delete(); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/Fixture.java b/buildSrc/src/main/java/org/opensearch/gradle/test/Fixture.java deleted file mode 100644 index daa7ab637f32e..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/Fixture.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -/** - * Any object that can produce an accompanying stop task, meant to tear down - * a previously instantiated service. - */ -public interface Fixture { - - /** A task which will stop this fixture. This should be used as a finalizedBy for any tasks that use the fixture. */ - Object getStopTask(); - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/GradleDistroTestTask.java b/buildSrc/src/main/java/org/opensearch/gradle/test/GradleDistroTestTask.java deleted file mode 100644 index 2443a30fc05fb..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/GradleDistroTestTask.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.opensearch.gradle.vagrant.VagrantShellTask; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.options.Option; -import org.opensearch.gradle.vagrant.VagrantMachine; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Run a gradle task of the current build, within the configured vagrant VM. - */ -public class GradleDistroTestTask extends VagrantShellTask { - - private String taskName; - private String testClass; - private List extraArgs = new ArrayList<>(); - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - @Input - public String getTaskName() { - return taskName; - } - - @Option(option = "tests", description = "Sets test class or method name to be included, '*' is supported.") - public void setTestClass(String testClass) { - this.testClass = testClass; - } - - @Input - public List getExtraArgs() { - return extraArgs; - } - - public void extraArg(String arg) { - this.extraArgs.add(arg); - } - - @Override - protected List getWindowsScript() { - return getScript(true); - } - - @Override - protected List getLinuxScript() { - return getScript(false); - } - - private List getScript(boolean isWindows) { - String cacheDir = getProject().getBuildDir() + "/gradle-cache"; - StringBuilder line = new StringBuilder(); - line.append(isWindows ? "& .\\gradlew " : "./gradlew "); - line.append(taskName); - line.append(" --project-cache-dir "); - line.append( - isWindows ? VagrantMachine.convertWindowsPath(getProject(), cacheDir) : VagrantMachine.convertLinuxPath(getProject(), cacheDir) - ); - line.append(" -S"); - line.append(" --parallel"); - line.append(" -D'org.gradle.logging.level'=" + getProject().getGradle().getStartParameter().getLogLevel()); - if (testClass != null) { - line.append(" --tests="); - line.append(testClass); - } - extraArgs.stream().map(s -> " " + s).forEach(line::append); - return Collections.singletonList(line.toString()); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/InternalClusterTestPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/test/InternalClusterTestPlugin.java deleted file mode 100644 index ee18fe44961fd..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/InternalClusterTestPlugin.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.tasks.SourceSet; - -public class InternalClusterTestPlugin implements Plugin { - - public static final String SOURCE_SET_NAME = "internalClusterTest"; - - @Override - public void apply(Project project) { - GradleUtils.addTestSourceSet(project, SOURCE_SET_NAME); - - // TODO: fix usages of IT tests depending on Tests methods so this extension is not necessary - GradleUtils.extendSourceSet(project, SourceSet.TEST_SOURCE_SET_NAME, SOURCE_SET_NAME); - - // add alias task that is easier to type - project.getTasks().register("icTest").configure(alias -> alias.dependsOn(SOURCE_SET_NAME)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/JNAKernel32Library.java b/buildSrc/src/main/java/org/opensearch/gradle/test/JNAKernel32Library.java deleted file mode 100644 index 9d575364f5546..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/JNAKernel32Library.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import com.sun.jna.Native; -import com.sun.jna.WString; -import org.apache.tools.ant.taskdefs.condition.Os; - -public class JNAKernel32Library { - - private static final class Holder { - private static final JNAKernel32Library instance = new JNAKernel32Library(); - } - - static JNAKernel32Library getInstance() { - return Holder.instance; - } - - private JNAKernel32Library() { - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - Native.register("kernel32"); - } - } - - native int GetShortPathNameW(WString lpszLongPath, char[] lpszShortPath, int cchBuffer); - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/RestIntegTestTask.java b/buildSrc/src/main/java/org/opensearch/gradle/test/RestIntegTestTask.java deleted file mode 100644 index d1671146d0b77..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/RestIntegTestTask.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.opensearch.gradle.testclusters.StandaloneRestIntegTestTask; -import org.gradle.api.tasks.CacheableTask; - -/** - * Sub typed version of {@link StandaloneRestIntegTestTask} that is used to differentiate between plain standalone - * integ test tasks based on {@link StandaloneRestIntegTestTask} and - * conventional configured tasks of {@link RestIntegTestTask} - */ -@CacheableTask -public class RestIntegTestTask extends StandaloneRestIntegTestTask {} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/RestTestBasePlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/test/RestTestBasePlugin.java deleted file mode 100644 index ce5210482c055..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/RestTestBasePlugin.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.opensearch.gradle.OpenSearchTestBasePlugin; -import org.opensearch.gradle.SystemPropertyCommandLineArgumentProvider; -import org.opensearch.gradle.testclusters.OpenSearchCluster; -import org.opensearch.gradle.testclusters.TestClustersPlugin; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; - -public class RestTestBasePlugin implements Plugin { - private static final String TESTS_REST_CLUSTER = "tests.rest.cluster"; - private static final String TESTS_CLUSTER = "tests.cluster"; - private static final String TESTS_CLUSTER_NAME = "tests.clustername"; - - @Override - public void apply(Project project) { - project.getPluginManager().apply(TestClustersPlugin.class); - project.getPluginManager().apply(OpenSearchTestBasePlugin.class); - project.getTasks().withType(RestIntegTestTask.class).configureEach(restIntegTestTask -> { - @SuppressWarnings("unchecked") - NamedDomainObjectContainer testClusters = (NamedDomainObjectContainer) project - .getExtensions() - .getByName(TestClustersPlugin.EXTENSION_NAME); - OpenSearchCluster cluster = testClusters.maybeCreate(restIntegTestTask.getName()); - restIntegTestTask.useCluster(cluster); - restIntegTestTask.include("**/*IT.class"); - restIntegTestTask.systemProperty("tests.rest.load_packaged", Boolean.FALSE.toString()); - if (System.getProperty(TESTS_REST_CLUSTER) == null) { - if (System.getProperty(TESTS_CLUSTER) != null || System.getProperty(TESTS_CLUSTER_NAME) != null) { - throw new IllegalArgumentException( - String.format("%s, %s, and %s must all be null or non-null", TESTS_REST_CLUSTER, TESTS_CLUSTER, TESTS_CLUSTER_NAME) - ); - } - SystemPropertyCommandLineArgumentProvider runnerNonInputProperties = - (SystemPropertyCommandLineArgumentProvider) restIntegTestTask.getExtensions().getByName("nonInputProperties"); - runnerNonInputProperties.systemProperty(TESTS_REST_CLUSTER, () -> String.join(",", cluster.getAllHttpSocketURI())); - runnerNonInputProperties.systemProperty(TESTS_CLUSTER, () -> String.join(",", cluster.getAllTransportPortURI())); - runnerNonInputProperties.systemProperty(TESTS_CLUSTER_NAME, cluster::getName); - } else { - if (System.getProperty(TESTS_CLUSTER) == null || System.getProperty(TESTS_CLUSTER_NAME) == null) { - throw new IllegalArgumentException( - String.format("%s, %s, and %s must all be null or non-null", TESTS_REST_CLUSTER, TESTS_CLUSTER, TESTS_CLUSTER_NAME) - ); - } - } - }); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestApiTask.java b/buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestApiTask.java deleted file mode 100644 index 399cd39d236d7..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestApiTask.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test.rest; - -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.DefaultTask; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.file.ArchiveOperations; -import org.gradle.api.file.ConfigurableFileCollection; -import org.gradle.api.file.FileSystemOperations; -import org.gradle.api.file.FileTree; -import org.gradle.api.plugins.JavaPluginConvention; -import org.gradle.api.provider.ListProperty; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.OutputDirectory; -import org.gradle.api.tasks.SkipWhenEmpty; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.util.PatternFilterable; -import org.gradle.api.tasks.util.PatternSet; -import org.gradle.internal.Factory; - -import javax.inject.Inject; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.util.Objects; -import java.util.Optional; -import java.util.Set; -import java.util.stream.Collectors; - -/** - * Copies the files needed for the Rest YAML specs to the current projects test resources output directory. - * This is intended to be be used from {@link RestResourcesPlugin} since the plugin wires up the needed - * configurations and custom extensions. - * @see RestResourcesPlugin - */ -public class CopyRestApiTask extends DefaultTask { - private static final String REST_API_PREFIX = "rest-api-spec/api"; - final ListProperty includeCore = getProject().getObjects().listProperty(String.class); - String sourceSetName; - boolean skipHasRestTestCheck; - Configuration coreConfig; - Configuration additionalConfig; - - private final PatternFilterable corePatternSet; - - public CopyRestApiTask() { - corePatternSet = getPatternSetFactory().create(); - } - - @Inject - protected Factory getPatternSetFactory() { - throw new UnsupportedOperationException(); - } - - @Inject - protected FileSystemOperations getFileSystemOperations() { - throw new UnsupportedOperationException(); - } - - @Inject - protected ArchiveOperations getArchiveOperations() { - throw new UnsupportedOperationException(); - } - - @Input - public ListProperty getIncludeCore() { - return includeCore; - } - - @Input - String getSourceSetName() { - return sourceSetName; - } - - @Input - public boolean isSkipHasRestTestCheck() { - return skipHasRestTestCheck; - } - - @SkipWhenEmpty - @InputFiles - public FileTree getInputDir() { - FileTree coreFileTree = null; - boolean projectHasYamlRestTests = skipHasRestTestCheck || projectHasYamlRestTests(); - if (includeCore.get().isEmpty() == false || projectHasYamlRestTests) { - if (BuildParams.isInternal()) { - corePatternSet.setIncludes(includeCore.get().stream().map(prefix -> prefix + "*/**").collect(Collectors.toList())); - coreFileTree = coreConfig.getAsFileTree().matching(corePatternSet); // directory on disk - } else { - coreFileTree = coreConfig.getAsFileTree(); // jar file - } - } - - ConfigurableFileCollection fileCollection = additionalConfig == null - ? getProject().files(coreFileTree) - : getProject().files(coreFileTree, additionalConfig.getAsFileTree()); - - // if project has rest tests or the includes are explicitly configured execute the task, else NO-SOURCE due to the null input - return projectHasYamlRestTests || includeCore.get().isEmpty() == false ? fileCollection.getAsFileTree() : null; - } - - @OutputDirectory - public File getOutputDir() { - return new File( - getSourceSet().orElseThrow(() -> new IllegalArgumentException("could not find source set [" + sourceSetName + "]")) - .getOutput() - .getResourcesDir(), - REST_API_PREFIX - ); - } - - @TaskAction - void copy() { - // always copy the core specs if the task executes - String projectPath = GradleUtils.getProjectPathFromTask(getPath()); - if (BuildParams.isInternal()) { - getLogger().debug("Rest specs for project [{}] will be copied to the test resources.", projectPath); - getFileSystemOperations().copy(c -> { - c.from(coreConfig.getAsFileTree()); - c.into(getOutputDir()); - c.include(corePatternSet.getIncludes()); - }); - } else { - getLogger().debug( - "Rest specs for project [{}] will be copied to the test resources from the published jar (version: [{}]).", - projectPath, - VersionProperties.getOpenSearch() - ); - getFileSystemOperations().copy(c -> { - c.from(getArchiveOperations().zipTree(coreConfig.getSingleFile())); - // this ends up as the same dir as outputDir - c.into(Objects.requireNonNull(getSourceSet().get().getOutput().getResourcesDir())); - if (includeCore.get().isEmpty()) { - c.include(REST_API_PREFIX + "/**"); - } else { - c.include( - includeCore.get().stream().map(prefix -> REST_API_PREFIX + "/" + prefix + "*/**").collect(Collectors.toList()) - ); - } - }); - } - // TODO: once https://github.com/elastic/elasticsearch/pull/62968 lands ensure that this uses `getFileSystemOperations()` - // copy any additional config - if (additionalConfig != null) { - getFileSystemOperations().copy(c -> { - c.from(additionalConfig.getAsFileTree()); - c.into(getOutputDir()); - }); - } - } - - /** - * Returns true if any files with a .yml extension exist the test resources rest-api-spec/test directory (from source or output dir) - */ - private boolean projectHasYamlRestTests() { - File testSourceResourceDir = getTestSourceResourceDir(); - File testOutputResourceDir = getTestOutputResourceDir(); // check output for cases where tests are copied programmatically - - if (testSourceResourceDir == null && testOutputResourceDir == null) { - return false; - } - try { - if (testSourceResourceDir != null && new File(testSourceResourceDir, "rest-api-spec/test").exists()) { - return Files.walk(testSourceResourceDir.toPath().resolve("rest-api-spec/test")) - .anyMatch(p -> p.getFileName().toString().endsWith("yml")); - } - if (testOutputResourceDir != null && new File(testOutputResourceDir, "rest-api-spec/test").exists()) { - return Files.walk(testOutputResourceDir.toPath().resolve("rest-api-spec/test")) - .anyMatch(p -> p.getFileName().toString().endsWith("yml")); - } - } catch (IOException e) { - throw new IllegalStateException(String.format("Error determining if this project [%s] has rest tests.", getProject()), e); - } - return false; - } - - private File getTestSourceResourceDir() { - Optional testSourceSet = getSourceSet(); - if (testSourceSet.isPresent()) { - SourceSet testSources = testSourceSet.get(); - Set resourceDir = testSources.getResources() - .getSrcDirs() - .stream() - .filter(f -> f.isDirectory() && f.getParentFile().getName().equals(getSourceSetName()) && f.getName().equals("resources")) - .collect(Collectors.toSet()); - assert resourceDir.size() <= 1; - if (resourceDir.size() == 0) { - return null; - } - return resourceDir.iterator().next(); - } else { - return null; - } - } - - private File getTestOutputResourceDir() { - Optional testSourceSet = getSourceSet(); - return testSourceSet.map(sourceSet -> sourceSet.getOutput().getResourcesDir()).orElse(null); - } - - private Optional getSourceSet() { - Project project = getProject(); - return project.getConvention().findPlugin(JavaPluginConvention.class) == null - ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(getSourceSetName())); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestTestsTask.java b/buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestTestsTask.java deleted file mode 100644 index 56ce449f4cf6f..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/CopyRestTestsTask.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test.rest; - -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.DefaultTask; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.file.ArchiveOperations; -import org.gradle.api.file.ConfigurableFileCollection; -import org.gradle.api.file.FileSystemOperations; -import org.gradle.api.file.FileTree; -import org.gradle.api.plugins.JavaPluginConvention; -import org.gradle.api.provider.ListProperty; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.OutputDirectory; -import org.gradle.api.tasks.SkipWhenEmpty; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.util.PatternFilterable; -import org.gradle.api.tasks.util.PatternSet; -import org.gradle.internal.Factory; - -import javax.inject.Inject; -import java.io.File; -import java.util.Objects; -import java.util.Optional; -import java.util.stream.Collectors; - -/** - * Copies the Rest YAML test to the current projects test resources output directory. - * This is intended to be be used from {@link RestResourcesPlugin} since the plugin wires up the needed - * configurations and custom extensions. - * @see RestResourcesPlugin - */ -public class CopyRestTestsTask extends DefaultTask { - private static final String REST_TEST_PREFIX = "rest-api-spec/test"; - final ListProperty includeCore = getProject().getObjects().listProperty(String.class); - - String sourceSetName; - Configuration coreConfig; - Configuration additionalConfig; - - private final PatternFilterable corePatternSet; - - public CopyRestTestsTask() { - corePatternSet = getPatternSetFactory().create(); - } - - @Inject - protected Factory getPatternSetFactory() { - throw new UnsupportedOperationException(); - } - - @Inject - protected FileSystemOperations getFileSystemOperations() { - throw new UnsupportedOperationException(); - } - - @Inject - protected ArchiveOperations getArchiveOperations() { - throw new UnsupportedOperationException(); - } - - @Input - public ListProperty getIncludeCore() { - return includeCore; - } - - @Input - String getSourceSetName() { - return sourceSetName; - } - - @SkipWhenEmpty - @InputFiles - public FileTree getInputDir() { - FileTree coreFileTree = null; - if (includeCore.get().isEmpty() == false) { - if (BuildParams.isInternal()) { - corePatternSet.setIncludes(includeCore.get().stream().map(prefix -> prefix + "*/**").collect(Collectors.toList())); - coreFileTree = coreConfig.getAsFileTree().matching(corePatternSet); // directory on disk - } else { - coreFileTree = coreConfig.getAsFileTree(); // jar file - } - } - ConfigurableFileCollection fileCollection = additionalConfig == null - ? getProject().files(coreFileTree) - : getProject().files(coreFileTree, additionalConfig.getAsFileTree()); - - // copy tests only if explicitly requested - return includeCore.get().isEmpty() == false || additionalConfig != null ? fileCollection.getAsFileTree() : null; - } - - @OutputDirectory - public File getOutputDir() { - return new File( - getSourceSet().orElseThrow(() -> new IllegalArgumentException("could not find source set [" + sourceSetName + "]")) - .getOutput() - .getResourcesDir(), - REST_TEST_PREFIX - ); - } - - @TaskAction - void copy() { - String projectPath = GradleUtils.getProjectPathFromTask(getPath()); - // only copy core tests if explicitly instructed - if (includeCore.get().isEmpty() == false) { - if (BuildParams.isInternal()) { - getLogger().debug("Rest tests for project [{}] will be copied to the test resources.", projectPath); - getFileSystemOperations().copy(c -> { - c.from(coreConfig.getAsFileTree()); - c.into(getOutputDir()); - c.include(corePatternSet.getIncludes()); - }); - } else { - getLogger().debug( - "Rest tests for project [{}] will be copied to the test resources from the published jar (version: [{}]).", - projectPath, - VersionProperties.getOpenSearch() - ); - getFileSystemOperations().copy(c -> { - c.from(getArchiveOperations().zipTree(coreConfig.getSingleFile())); - // this ends up as the same dir as outputDir - c.into(Objects.requireNonNull(getSourceSet().get().getOutput().getResourcesDir())); - c.include( - includeCore.get().stream().map(prefix -> REST_TEST_PREFIX + "/" + prefix + "*/**").collect(Collectors.toList()) - ); - }); - } - } - // copy any additional config - if (additionalConfig != null) { - getFileSystemOperations().copy(c -> { - c.from(additionalConfig.getAsFileTree()); - c.into(getOutputDir()); - }); - } - } - - private Optional getSourceSet() { - Project project = getProject(); - return project.getConvention().findPlugin(JavaPluginConvention.class) == null - ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(getSourceSetName())); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/JavaRestTestPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/test/rest/JavaRestTestPlugin.java deleted file mode 100644 index f59eda3d4b982..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/JavaRestTestPlugin.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test.rest; - -import org.opensearch.gradle.OpenSearchJavaPlugin; -import org.opensearch.gradle.test.RestIntegTestTask; -import org.opensearch.gradle.test.RestTestBasePlugin; -import org.opensearch.gradle.testclusters.TestClustersPlugin; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.plugins.JavaBasePlugin; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.SourceSetContainer; - -import static org.opensearch.gradle.test.rest.RestTestUtil.createTestCluster; -import static org.opensearch.gradle.test.rest.RestTestUtil.registerTask; -import static org.opensearch.gradle.test.rest.RestTestUtil.setupDependencies; - -/** - * Apply this plugin to run the Java based REST tests. - */ -public class JavaRestTestPlugin implements Plugin { - - public static final String SOURCE_SET_NAME = "javaRestTest"; - - @Override - public void apply(Project project) { - - project.getPluginManager().apply(OpenSearchJavaPlugin.class); - project.getPluginManager().apply(RestTestBasePlugin.class); - project.getPluginManager().apply(TestClustersPlugin.class); - - // create source set - SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); - SourceSet javaTestSourceSet = sourceSets.create(SOURCE_SET_NAME); - - // create the test cluster container - createTestCluster(project, javaTestSourceSet); - - // setup the javaRestTest task - Provider javaRestTestTask = registerTask(project, javaTestSourceSet); - - // setup dependencies - setupDependencies(project, javaTestSourceSet); - - // setup IDE - GradleUtils.setupIdeForTestSourceSet(project, javaTestSourceSet); - - // wire this task into check - project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME).configure(check -> check.dependsOn(javaRestTestTask)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesExtension.java b/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesExtension.java deleted file mode 100644 index 0fe2dfd7f68a2..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesExtension.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test.rest; - -import org.gradle.api.Action; -import org.gradle.api.model.ObjectFactory; -import org.gradle.api.provider.ListProperty; - -import javax.inject.Inject; - -/** - * Custom extension to configure the {@link CopyRestApiTask} - */ -public class RestResourcesExtension { - - final RestResourcesSpec restApi; - final RestResourcesSpec restTests; - - @Inject - public RestResourcesExtension(ObjectFactory objects) { - restApi = new RestResourcesSpec(objects); - restTests = new RestResourcesSpec(objects); - } - - void restApi(Action spec) { - spec.execute(restApi); - } - - void restTests(Action spec) { - spec.execute(restTests); - } - - static class RestResourcesSpec { - - private final ListProperty includeCore; - - RestResourcesSpec(ObjectFactory objects) { - includeCore = objects.listProperty(String.class); - } - - public void includeCore(String... include) { - this.includeCore.addAll(include); - } - - public ListProperty getIncludeCore() { - return includeCore; - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesPlugin.java deleted file mode 100644 index 728e36ce98bff..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestResourcesPlugin.java +++ /dev/null @@ -1,139 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test.rest; - -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.info.BuildParams; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.Dependency; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.SourceSetContainer; - -import java.util.HashMap; - -/** - *

    - * Gradle plugin to help configure {@link CopyRestApiTask}'s and {@link CopyRestTestsTask} that copies the artifacts needed for the Rest API - * spec and YAML based rest tests. - *

    - * Rest API specification:
    - * When the {@link RestResourcesPlugin} has been applied the {@link CopyRestApiTask} will automatically copy the core Rest API specification - * if there are any Rest YAML tests present in source, or copied from {@link CopyRestTestsTask} output. - * It is recommended (but not required) to also explicitly declare which core specs your project depends on to help optimize the caching - * behavior. - * For example: - *
    - * restResources {
    - *   restApi {
    - *     includeCore 'index', 'cat'
    - *   }
    - * }
    - * 
    - *
    - * Rest YAML tests :
    - * When the {@link RestResourcesPlugin} has been applied the {@link CopyRestTestsTask} will copy the Rest YAML tests if explicitly - * configured with `includeCore` through the `restResources.restTests` extension. - * - * Additionally you can specify which sourceSetName resources should be copied to. The default is the yamlRestTest source set. - * @see CopyRestApiTask - * @see CopyRestTestsTask - */ -public class RestResourcesPlugin implements Plugin { - - private static final String EXTENSION_NAME = "restResources"; - - @Override - public void apply(Project project) { - RestResourcesExtension extension = project.getExtensions().create(EXTENSION_NAME, RestResourcesExtension.class); - - // tests - Configuration testConfig = project.getConfigurations().create("restTestConfig"); - project.getConfigurations().create("restTests"); - Provider copyRestYamlTestTask = project.getTasks() - .register("copyYamlTestsTask", CopyRestTestsTask.class, task -> { - task.includeCore.set(extension.restTests.getIncludeCore()); - task.coreConfig = testConfig; - task.sourceSetName = SourceSet.TEST_SOURCE_SET_NAME; - if (BuildParams.isInternal()) { - // core - Dependency restTestdependency = project.getDependencies().project(new HashMap() { - { - put("path", ":rest-api-spec"); - put("configuration", "restTests"); - } - }); - project.getDependencies().add(task.coreConfig.getName(), restTestdependency); - } else { - Dependency dependency = project.getDependencies() - .create("org.opensearch:rest-api-spec:" + VersionProperties.getOpenSearch()); - project.getDependencies().add(task.coreConfig.getName(), dependency); - } - task.dependsOn(task.coreConfig); - }); - - // api - Configuration specConfig = project.getConfigurations().create("restSpec"); // name chosen for passivity - project.getConfigurations().create("restSpecs"); - Provider copyRestYamlSpecTask = project.getTasks() - .register("copyRestApiSpecsTask", CopyRestApiTask.class, task -> { - task.includeCore.set(extension.restApi.getIncludeCore()); - task.dependsOn(copyRestYamlTestTask); - task.coreConfig = specConfig; - task.sourceSetName = SourceSet.TEST_SOURCE_SET_NAME; - if (BuildParams.isInternal()) { - Dependency restSpecDependency = project.getDependencies().project(new HashMap() { - { - put("path", ":rest-api-spec"); - put("configuration", "restSpecs"); - } - }); - project.getDependencies().add(task.coreConfig.getName(), restSpecDependency); - } else { - Dependency dependency = project.getDependencies() - .create("org.opensearch:rest-api-spec:" + VersionProperties.getOpenSearch()); - project.getDependencies().add(task.coreConfig.getName(), dependency); - } - task.dependsOn(task.coreConfig); - }); - - project.afterEvaluate(p -> { - SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); - SourceSet testSourceSet = sourceSets.findByName(SourceSet.TEST_SOURCE_SET_NAME); - if (testSourceSet != null) { - project.getTasks().named(testSourceSet.getProcessResourcesTaskName()).configure(t -> t.dependsOn(copyRestYamlSpecTask)); - } - }); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestTestUtil.java b/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestTestUtil.java deleted file mode 100644 index 061c477fab086..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/RestTestUtil.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test.rest; - -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.test.RestIntegTestTask; -import org.opensearch.gradle.testclusters.OpenSearchCluster; -import org.opensearch.gradle.testclusters.TestClustersPlugin; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Project; -import org.gradle.api.plugins.JavaBasePlugin; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.bundling.Zip; - -/** - * Utility class to configure the necessary tasks and dependencies. - */ -public class RestTestUtil { - - private RestTestUtil() {} - - static OpenSearchCluster createTestCluster(Project project, SourceSet sourceSet) { - // eagerly create the testCluster container so it is easily available for configuration - @SuppressWarnings("unchecked") - NamedDomainObjectContainer testClusters = (NamedDomainObjectContainer) project.getExtensions() - .getByName(TestClustersPlugin.EXTENSION_NAME); - return testClusters.create(sourceSet.getName()); - } - - /** - * Creates a task with the source set name of type {@link RestIntegTestTask} - */ - static Provider registerTask(Project project, SourceSet sourceSet) { - // lazily create the test task - Provider testProvider = project.getTasks().register(sourceSet.getName(), RestIntegTestTask.class, testTask -> { - testTask.setGroup(JavaBasePlugin.VERIFICATION_GROUP); - testTask.setDescription("Runs the REST tests against an external cluster"); - testTask.mustRunAfter(project.getTasks().named("test")); - testTask.setTestClassesDirs(sourceSet.getOutput().getClassesDirs()); - testTask.setClasspath(sourceSet.getRuntimeClasspath()); - // if this a module or plugin, it may have an associated zip file with it's contents, add that to the test cluster - project.getPluginManager().withPlugin("opensearch.opensearchplugin", plugin -> { - Zip bundle = (Zip) project.getTasks().getByName("bundlePlugin"); - testTask.dependsOn(bundle); - if (project.getPath().contains("modules:")) { - testTask.getClusters().forEach(c -> c.module(bundle.getArchiveFile())); - } else { - testTask.getClusters().forEach(c -> c.plugin(project.getObjects().fileProperty().value(bundle.getArchiveFile()))); - } - }); - }); - - return testProvider; - } - - /** - * Setup the dependencies needed for the REST tests. - */ - static void setupDependencies(Project project, SourceSet sourceSet) { - if (BuildParams.isInternal()) { - project.getDependencies().add(sourceSet.getImplementationConfigurationName(), project.project(":test:framework")); - } else { - project.getDependencies() - .add(sourceSet.getImplementationConfigurationName(), "org.opensearch.test:framework:" + VersionProperties.getOpenSearch()); - // The log4j-core is optional dependency of the org.opensearch.test:framework. needs explicit introduction - project.getDependencies() - .add( - sourceSet.getImplementationConfigurationName(), - "org.apache.logging.log4j:log4j-core:" + VersionProperties.getVersions().get("log4j") - ); - } - - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/YamlRestTestPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/test/rest/YamlRestTestPlugin.java deleted file mode 100644 index e35365ee9105b..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/test/rest/YamlRestTestPlugin.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test.rest; - -import org.opensearch.gradle.OpenSearchJavaPlugin; -import org.opensearch.gradle.test.RestIntegTestTask; -import org.opensearch.gradle.test.RestTestBasePlugin; -import org.opensearch.gradle.testclusters.TestClustersPlugin; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.plugins.JavaBasePlugin; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.SourceSetContainer; - -/** - * Apply this plugin to run the YAML based REST tests. - */ -public class YamlRestTestPlugin implements Plugin { - - public static final String SOURCE_SET_NAME = "yamlRestTest"; - - @Override - public void apply(Project project) { - - project.getPluginManager().apply(OpenSearchJavaPlugin.class); - project.getPluginManager().apply(TestClustersPlugin.class); - project.getPluginManager().apply(RestTestBasePlugin.class); - project.getPluginManager().apply(RestResourcesPlugin.class); - - // create source set - SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); - SourceSet yamlTestSourceSet = sourceSets.create(SOURCE_SET_NAME); - - // create the test cluster container - RestTestUtil.createTestCluster(project, yamlTestSourceSet); - - // setup the yamlRestTest task - Provider yamlRestTestTask = RestTestUtil.registerTask(project, yamlTestSourceSet); - - // setup the dependencies - RestTestUtil.setupDependencies(project, yamlTestSourceSet); - - // setup the copy for the rest resources - project.getTasks().withType(CopyRestApiTask.class, copyRestApiTask -> { - copyRestApiTask.sourceSetName = SOURCE_SET_NAME; - project.getTasks().named(yamlTestSourceSet.getProcessResourcesTaskName()).configure(t -> t.dependsOn(copyRestApiTask)); - }); - project.getTasks().withType(CopyRestTestsTask.class, copyRestTestTask -> { copyRestTestTask.sourceSetName = SOURCE_SET_NAME; }); - - // setup IDE - GradleUtils.setupIdeForTestSourceSet(project, yamlTestSourceSet); - - // wire this task into check - project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME).configure(check -> check.dependsOn(yamlRestTestTask)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/DefaultTestClustersTask.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/DefaultTestClustersTask.java deleted file mode 100644 index df0b84fcd14dd..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/DefaultTestClustersTask.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.gradle.api.DefaultTask; - -import java.util.Collection; -import java.util.HashSet; - -public class DefaultTestClustersTask extends DefaultTask implements TestClustersAware { - - private Collection clusters = new HashSet<>(); - - @Override - public Collection getClusters() { - return clusters; - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchCluster.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchCluster.java deleted file mode 100644 index 1e3d714fe186b..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchCluster.java +++ /dev/null @@ -1,568 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.opensearch.gradle.FileSupplier; -import org.opensearch.gradle.Jdk; -import org.opensearch.gradle.PropertyNormalization; -import org.opensearch.gradle.ReaperService; -import org.opensearch.gradle.http.WaitForHttpResource; -import org.gradle.api.Named; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Project; -import org.gradle.api.file.ArchiveOperations; -import org.gradle.api.file.FileSystemOperations; -import org.gradle.api.file.RegularFile; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.Internal; -import org.gradle.api.tasks.Nested; - -import java.io.File; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.security.GeneralSecurityException; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -public class OpenSearchCluster implements TestClusterConfiguration, Named { - - private static final Logger LOGGER = Logging.getLogger(OpenSearchNode.class); - private static final int CLUSTER_UP_TIMEOUT = 40; - private static final TimeUnit CLUSTER_UP_TIMEOUT_UNIT = TimeUnit.SECONDS; - - private final AtomicBoolean configurationFrozen = new AtomicBoolean(false); - private final String path; - private final String clusterName; - private final NamedDomainObjectContainer nodes; - private final Jdk bwcJdk; - private final File workingDirBase; - private final LinkedHashMap> waitConditions = new LinkedHashMap<>(); - private final Project project; - private final ReaperService reaper; - private final FileSystemOperations fileSystemOperations; - private final ArchiveOperations archiveOperations; - private int nodeIndex = 0; - - public OpenSearchCluster( - String clusterName, - Project project, - ReaperService reaper, - File workingDirBase, - FileSystemOperations fileSystemOperations, - ArchiveOperations archiveOperations, - Jdk bwcJdk - ) { - this.path = project.getPath(); - this.clusterName = clusterName; - this.project = project; - this.reaper = reaper; - this.fileSystemOperations = fileSystemOperations; - this.archiveOperations = archiveOperations; - this.workingDirBase = workingDirBase; - this.nodes = project.container(OpenSearchNode.class); - this.bwcJdk = bwcJdk; - - this.nodes.add( - new OpenSearchNode(path, clusterName + "-0", project, reaper, fileSystemOperations, archiveOperations, workingDirBase, bwcJdk) - ); - // configure the cluster name eagerly so nodes know about it - this.nodes.all((node) -> node.defaultConfig.put("cluster.name", safeName(clusterName))); - - addWaitForClusterHealth(); - } - - public void setNumberOfNodes(int numberOfNodes) { - checkFrozen(); - - if (numberOfNodes < 1) { - throw new IllegalArgumentException("Number of nodes should be >= 1 but was " + numberOfNodes + " for " + this); - } - - if (numberOfNodes <= nodes.size()) { - throw new IllegalArgumentException( - "Cannot shrink " + this + " to have " + numberOfNodes + " nodes as it already has " + getNumberOfNodes() - ); - } - - for (int i = nodes.size(); i < numberOfNodes; i++) { - this.nodes.add( - new OpenSearchNode( - path, - clusterName + "-" + i, - project, - reaper, - fileSystemOperations, - archiveOperations, - workingDirBase, - bwcJdk - ) - ); - } - } - - @Internal - OpenSearchNode getFirstNode() { - return nodes.getAt(clusterName + "-0"); - } - - @Internal - public int getNumberOfNodes() { - return nodes.size(); - } - - @Internal - public String getName() { - return clusterName; - } - - @Internal - public String getPath() { - return path; - } - - @Override - public void setVersion(String version) { - nodes.all(each -> each.setVersion(version)); - } - - @Override - public void setVersions(List version) { - nodes.all(each -> each.setVersions(version)); - } - - @Override - public void setTestDistribution(TestDistribution distribution) { - nodes.all(each -> each.setTestDistribution(distribution)); - } - - @Override - public void plugin(Provider plugin) { - nodes.all(each -> each.plugin(plugin)); - } - - @Override - public void plugin(String pluginProjectPath) { - nodes.all(each -> each.plugin(pluginProjectPath)); - } - - @Override - public void upgradePlugin(List> plugins) { - nodes.all(each -> each.upgradePlugin(plugins)); - } - - @Override - public void module(Provider module) { - nodes.all(each -> each.module(module)); - } - - @Override - public void module(String moduleProjectPath) { - nodes.all(each -> each.module(moduleProjectPath)); - } - - @Override - public void keystore(String key, String value) { - nodes.all(each -> each.keystore(key, value)); - } - - @Override - public void keystore(String key, Supplier valueSupplier) { - nodes.all(each -> each.keystore(key, valueSupplier)); - } - - @Override - public void keystore(String key, File value) { - nodes.all(each -> each.keystore(key, value)); - } - - @Override - public void keystore(String key, File value, PropertyNormalization normalization) { - nodes.all(each -> each.keystore(key, value, normalization)); - } - - @Override - public void keystore(String key, FileSupplier valueSupplier) { - nodes.all(each -> each.keystore(key, valueSupplier)); - } - - @Override - public void keystorePassword(String password) { - nodes.all(each -> each.keystorePassword(password)); - } - - @Override - public void cliSetup(String binTool, CharSequence... args) { - nodes.all(each -> each.cliSetup(binTool, args)); - } - - @Override - public void setting(String key, String value) { - nodes.all(each -> each.setting(key, value)); - } - - @Override - public void setting(String key, String value, PropertyNormalization normalization) { - nodes.all(each -> each.setting(key, value, normalization)); - } - - @Override - public void setting(String key, Supplier valueSupplier) { - nodes.all(each -> each.setting(key, valueSupplier)); - } - - @Override - public void setting(String key, Supplier valueSupplier, PropertyNormalization normalization) { - nodes.all(each -> each.setting(key, valueSupplier, normalization)); - } - - @Override - public void systemProperty(String key, String value) { - nodes.all(each -> each.systemProperty(key, value)); - } - - @Override - public void systemProperty(String key, Supplier valueSupplier) { - nodes.all(each -> each.systemProperty(key, valueSupplier)); - } - - @Override - public void systemProperty(String key, Supplier valueSupplier, PropertyNormalization normalization) { - nodes.all(each -> each.systemProperty(key, valueSupplier, normalization)); - } - - @Override - public void environment(String key, String value) { - nodes.all(each -> each.environment(key, value)); - } - - @Override - public void environment(String key, Supplier valueSupplier) { - nodes.all(each -> each.environment(key, valueSupplier)); - } - - @Override - public void environment(String key, Supplier valueSupplier, PropertyNormalization normalization) { - nodes.all(each -> each.environment(key, valueSupplier, normalization)); - } - - @Override - public void jvmArgs(String... values) { - nodes.all(each -> each.jvmArgs(values)); - } - - @Internal - public boolean isPreserveDataDir() { - return nodes.stream().anyMatch(node -> node.isPreserveDataDir()); - } - - @Override - public void setPreserveDataDir(boolean preserveDataDir) { - nodes.all(each -> each.setPreserveDataDir(preserveDataDir)); - } - - @Override - public void freeze() { - nodes.forEach(OpenSearchNode::freeze); - configurationFrozen.set(true); - } - - private void checkFrozen() { - if (configurationFrozen.get()) { - throw new IllegalStateException("Configuration for " + this + " can not be altered, already locked"); - } - } - - @Override - public void start() { - commonNodeConfig(); - nodes.stream().filter(node -> { - if (node.getVersion().onOrAfter("6.5.0")) { - return true; - } else { - // We already started it to set seed nodes - return node.equals(nodes.iterator().next()) == false; - } - }).forEach(OpenSearchNode::start); - } - - private void commonNodeConfig() { - final String nodeNames; - if (nodes.stream().map(OpenSearchNode::getName).anyMatch(name -> name == null)) { - nodeNames = null; - } else { - nodeNames = nodes.stream().map(OpenSearchNode::getName).map(this::safeName).collect(Collectors.joining(",")); - } - OpenSearchNode firstNode = null; - for (OpenSearchNode node : nodes) { - // Can only configure master nodes if we have node names defined - if (nodeNames != null) { - commonNodeConfig(node, nodeNames, firstNode); - } - if (firstNode == null) { - firstNode = node; - if (node.getVersion().before("6.5.0")) { - // We need to start the first node early to be able to provide unicast.hosts - firstNode.start(); - } - } - } - } - - private void commonNodeConfig(OpenSearchNode node, String nodeNames, OpenSearchNode firstNode) { - if (node.getVersion().onOrAfter("7.0.0")) { - node.defaultConfig.keySet() - .stream() - .filter(name -> name.startsWith("discovery.zen.")) - .collect(Collectors.toList()) - .forEach(node.defaultConfig::remove); - if (nodeNames != null && node.settings.getOrDefault("discovery.type", "anything").equals("single-node") == false) { - node.defaultConfig.put("cluster.initial_master_nodes", "[" + nodeNames + "]"); - } - node.defaultConfig.put("discovery.seed_providers", "file"); - node.defaultConfig.put("discovery.seed_hosts", "[]"); - } else { - node.defaultConfig.put("discovery.zen.master_election.wait_for_joins_timeout", "5s"); - if (nodes.size() > 1) { - node.defaultConfig.put("discovery.zen.minimum_master_nodes", Integer.toString(nodes.size() / 2 + 1)); - } - if (node.getVersion().onOrAfter("6.5.0")) { - node.defaultConfig.put("discovery.zen.hosts_provider", "file"); - node.defaultConfig.put("discovery.zen.ping.unicast.hosts", "[]"); - } else { - if (firstNode == null) { - node.defaultConfig.put("discovery.zen.ping.unicast.hosts", "[]"); - } else { - firstNode.waitForAllConditions(); - node.defaultConfig.put("discovery.zen.ping.unicast.hosts", "[\"" + firstNode.getTransportPortURI() + "\"]"); - } - } - } - } - - @Override - public void restart() { - nodes.forEach(OpenSearchNode::restart); - } - - public void goToNextVersion() { - stop(false); - nodes.all(OpenSearchNode::goToNextVersion); - start(); - writeUnicastHostsFiles(); - } - - public void upgradeAllNodesAndPluginsToNextVersion(List> plugins) { - stop(false); - nodes.all(OpenSearchNode::goToNextVersion); - upgradePlugin(plugins); - start(); - writeUnicastHostsFiles(); - } - - public void fullRestart() { - stop(false); - start(); - } - - public void nextNodeToNextVersion() { - OpenSearchNode node = upgradeNodeToNextVersion(); - node.start(); - } - - public void upgradeNodeAndPluginToNextVersion(List> plugins) { - OpenSearchNode node = upgradeNodeToNextVersion(); - node.upgradePlugin(plugins); - node.start(); - } - - @Override - public void extraConfigFile(String destination, File from) { - nodes.all(node -> node.extraConfigFile(destination, from)); - } - - @Override - public void extraConfigFile(String destination, File from, PropertyNormalization normalization) { - nodes.all(node -> node.extraConfigFile(destination, from, normalization)); - } - - @Override - public void extraJarFile(File from) { - nodes.all(node -> node.extraJarFile(from)); - } - - @Override - public void user(Map userSpec) { - nodes.all(node -> node.user(userSpec)); - } - - private void writeUnicastHostsFiles() { - String unicastUris = nodes.stream().flatMap(node -> node.getAllTransportPortURI().stream()).collect(Collectors.joining("\n")); - nodes.forEach(node -> { - try { - Files.write(node.getConfigDir().resolve("unicast_hosts.txt"), unicastUris.getBytes(StandardCharsets.UTF_8)); - } catch (IOException e) { - throw new UncheckedIOException("Failed to write unicast_hosts for " + this, e); - } - }); - } - - private OpenSearchNode upgradeNodeToNextVersion() { - if (nodeIndex + 1 > nodes.size()) { - throw new TestClustersException("Ran out of nodes to take to the next version"); - } - OpenSearchNode node = nodes.getByName(clusterName + "-" + nodeIndex); - node.stop(false); - node.goToNextVersion(); - commonNodeConfig(node, null, null); - nodeIndex += 1; - return node; - } - - @Override - @Internal - public String getHttpSocketURI() { - waitForAllConditions(); - return getFirstNode().getHttpSocketURI(); - } - - @Override - @Internal - public String getTransportPortURI() { - waitForAllConditions(); - return getFirstNode().getTransportPortURI(); - } - - @Override - @Internal - public List getAllHttpSocketURI() { - waitForAllConditions(); - return nodes.stream().flatMap(each -> each.getAllHttpSocketURI().stream()).collect(Collectors.toList()); - } - - @Override - @Internal - public List getAllTransportPortURI() { - waitForAllConditions(); - return nodes.stream().flatMap(each -> each.getAllTransportPortURI().stream()).collect(Collectors.toList()); - } - - public void waitForAllConditions() { - writeUnicastHostsFiles(); - - LOGGER.info("Starting to wait for cluster to form"); - waitForConditions(waitConditions, System.currentTimeMillis(), CLUSTER_UP_TIMEOUT, CLUSTER_UP_TIMEOUT_UNIT, this); - } - - @Override - public void stop(boolean tailLogs) { - nodes.forEach(each -> each.stop(tailLogs)); - } - - @Override - public void setNameCustomization(Function nameCustomization) { - nodes.all(each -> each.setNameCustomization(nameCustomization)); - } - - @Override - @Internal - public boolean isProcessAlive() { - return nodes.stream().noneMatch(node -> node.isProcessAlive() == false); - } - - public OpenSearchNode singleNode() { - if (nodes.size() != 1) { - throw new IllegalStateException("Can't treat " + this + " as single node as it has " + nodes.size() + " nodes"); - } - return getFirstNode(); - } - - private void addWaitForClusterHealth() { - waitConditions.put("cluster health yellow", (node) -> { - try { - WaitForHttpResource wait = new WaitForHttpResource("http", getFirstNode().getHttpSocketURI(), nodes.size()); - - List> credentials = getFirstNode().getCredentials(); - if (getFirstNode().getCredentials().isEmpty() == false) { - wait.setUsername(credentials.get(0).get("useradd")); - wait.setPassword(credentials.get(0).get("-p")); - } - return wait.wait(500); - } catch (IOException e) { - throw new UncheckedIOException("IO error while waiting cluster", e); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new TestClustersException("Interrupted while waiting for " + this, e); - } catch (GeneralSecurityException e) { - throw new RuntimeException("security exception", e); - } - }); - } - - @Nested - public NamedDomainObjectContainer getNodes() { - return nodes; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OpenSearchCluster that = (OpenSearchCluster) o; - return Objects.equals(clusterName, that.clusterName) && Objects.equals(path, that.path); - } - - @Override - public int hashCode() { - return Objects.hash(clusterName, path); - } - - @Override - public String toString() { - return "cluster{" + path + ":" + clusterName + "}"; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java deleted file mode 100644 index ec4cbe484c40e..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java +++ /dev/null @@ -1,1597 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.apache.commons.io.FileUtils; -import org.opensearch.gradle.Architecture; -import org.opensearch.gradle.DistributionDownloadPlugin; -import org.opensearch.gradle.OpenSearchDistribution; -import org.opensearch.gradle.FileSupplier; -import org.opensearch.gradle.Jdk; -import org.opensearch.gradle.LazyPropertyList; -import org.opensearch.gradle.LazyPropertyMap; -import org.opensearch.gradle.LoggedExec; -import org.opensearch.gradle.OS; -import org.opensearch.gradle.PropertyNormalization; -import org.opensearch.gradle.ReaperService; -import org.opensearch.gradle.Version; -import org.opensearch.gradle.VersionProperties; -import org.opensearch.gradle.info.BuildParams; -import org.gradle.api.Action; -import org.gradle.api.Named; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.file.ArchiveOperations; -import org.gradle.api.file.FileSystemOperations; -import org.gradle.api.file.FileTree; -import org.gradle.api.file.RegularFile; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.Classpath; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.InputFile; -import org.gradle.api.tasks.InputFiles; -import org.gradle.api.tasks.Internal; -import org.gradle.api.tasks.Nested; -import org.gradle.api.tasks.Optional; -import org.gradle.api.tasks.PathSensitive; -import org.gradle.api.tasks.PathSensitivity; -import org.gradle.api.tasks.util.PatternFilterable; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.LineNumberReader; -import java.io.UncheckedIOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.nio.file.StandardOpenOption; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static java.util.Objects.requireNonNull; - -public class OpenSearchNode implements TestClusterConfiguration { - - private static final Logger LOGGER = Logging.getLogger(OpenSearchNode.class); - private static final int OPENSEARCH_DESTROY_TIMEOUT = 20; - private static final TimeUnit OPENSEARCH_DESTROY_TIMEOUT_UNIT = TimeUnit.SECONDS; - - private static final int NODE_UP_TIMEOUT = 2; - private static final TimeUnit NODE_UP_TIMEOUT_UNIT = TimeUnit.MINUTES; - private static final int ADDITIONAL_CONFIG_TIMEOUT = 15; - private static final TimeUnit ADDITIONAL_CONFIG_TIMEOUT_UNIT = TimeUnit.SECONDS; - private static final List OVERRIDABLE_SETTINGS = Arrays.asList( - "path.repo", - "discovery.seed_providers" - - ); - - private static final int TAIL_LOG_MESSAGES_COUNT = 40; - private static final List MESSAGES_WE_DONT_CARE_ABOUT = Arrays.asList( - "Option UseConcMarkSweepGC was deprecated", - "is a pre-release version of OpenSearch", - "max virtual memory areas vm.max_map_count" - ); - private static final String HOSTNAME_OVERRIDE = "LinuxDarwinHostname"; - private static final String COMPUTERNAME_OVERRIDE = "WindowsComputername"; - - private final String path; - private final String name; - private final Project project; - private final ReaperService reaper; - private final Jdk bwcJdk; - private final FileSystemOperations fileSystemOperations; - private final ArchiveOperations archiveOperations; - - private final AtomicBoolean configurationFrozen = new AtomicBoolean(false); - private final Path workingDir; - - private final LinkedHashMap> waitConditions = new LinkedHashMap<>(); - private final Map pluginAndModuleConfigurations = new HashMap<>(); - private final List> plugins = new ArrayList<>(); - private final List> modules = new ArrayList<>(); - final LazyPropertyMap settings = new LazyPropertyMap<>("Settings", this); - private final LazyPropertyMap keystoreSettings = new LazyPropertyMap<>("Keystore", this); - private final LazyPropertyMap keystoreFiles = new LazyPropertyMap<>("Keystore files", this, FileEntry::new); - private final LazyPropertyList cliSetup = new LazyPropertyList<>("CLI setup commands", this); - private final LazyPropertyMap systemProperties = new LazyPropertyMap<>("System properties", this); - private final LazyPropertyMap environment = new LazyPropertyMap<>("Environment", this); - private final LazyPropertyList jvmArgs = new LazyPropertyList<>("JVM arguments", this); - private final LazyPropertyMap extraConfigFiles = new LazyPropertyMap<>("Extra config files", this, FileEntry::new); - private final LazyPropertyList extraJarFiles = new LazyPropertyList<>("Extra jar files", this); - private final List> credentials = new ArrayList<>(); - final LinkedHashMap defaultConfig = new LinkedHashMap<>(); - - private final Path confPathRepo; - private final Path confPathLogs; - private final Path transportPortFile; - private final Path httpPortsFile; - private final Path tmpDir; - - private int currentDistro = 0; - private TestDistribution testDistribution; - private List distributions = new ArrayList<>(); - private volatile Process opensearchProcess; - private Function nameCustomization = Function.identity(); - private boolean isWorkingDirConfigured = false; - private String httpPort = "0"; - private String transportPort = "0"; - private Path confPathData; - private String keystorePassword = ""; - private boolean preserveDataDir = false; - private final Config opensearchConfig; - private final Config legacyESConfig; - private Config currentConfig; - - OpenSearchNode( - String path, - String name, - Project project, - ReaperService reaper, - FileSystemOperations fileSystemOperations, - ArchiveOperations archiveOperations, - File workingDirBase, - Jdk bwcJdk - ) { - this.path = path; - this.name = name; - this.project = project; - this.reaper = reaper; - this.fileSystemOperations = fileSystemOperations; - this.archiveOperations = archiveOperations; - this.bwcJdk = bwcJdk; - workingDir = workingDirBase.toPath().resolve(safeName(name)).toAbsolutePath(); - confPathRepo = workingDir.resolve("repo"); - confPathData = workingDir.resolve("data"); - confPathLogs = workingDir.resolve("logs"); - transportPortFile = confPathLogs.resolve("transport.ports"); - httpPortsFile = confPathLogs.resolve("http.ports"); - tmpDir = workingDir.resolve("tmp"); - waitConditions.put("ports files", this::checkPortsFilesExistWithDelay); - setTestDistribution(TestDistribution.INTEG_TEST); - setVersion(VersionProperties.getOpenSearch()); - opensearchConfig = Config.getOpenSearchConfig(workingDir); - legacyESConfig = Config.getLegacyESConfig(workingDir); - currentConfig = opensearchConfig; - } - - /* - * An object to contain the configuration needed to install - * either an OpenSearch or an elasticsearch distribution on - * this test node. - * - * This is added to be able to run BWC testing against a - * cluster running elasticsearch. - * - * legacyESConfig will be removed in a future release. - */ - private static class Config { - final String distroName; - final String command; - final String keystoreTool; - final String pluginTool; - final String envTempDir; - final String envJavaOpts; - final String envPathConf; - final Path configFile; - final Path stdoutFile; - final Path stderrFile; - final Path stdinFile; - - Config( - String distroName, - String command, - String keystoreTool, - String pluginTool, - String envTempDir, - String envJavaOpts, - String envPathConf, - Path configFile, - Path stdoutFile, - Path stderrFile, - Path stdinFile - ) { - this.distroName = distroName; - this.command = command; - this.keystoreTool = keystoreTool; - this.pluginTool = pluginTool; - this.envTempDir = envTempDir; - this.envJavaOpts = envJavaOpts; - this.envPathConf = envPathConf; - this.configFile = configFile; - this.stdoutFile = stdoutFile; - this.stderrFile = stderrFile; - this.stdinFile = stdinFile; - } - - static Config getOpenSearchConfig(Path workingDir) { - Path confPathLogs = workingDir.resolve("logs"); - return new Config( - "OpenSearch", - "opensearch", - "opensearch-keystore", - "opensearch-plugin", - "OPENSEARCH_TMPDIR", - "OPENSEARCH_JAVA_OPTS", - "OPENSEARCH_PATH_CONF", - workingDir.resolve("config/opensearch.yml"), - confPathLogs.resolve("opensearch.stdout.log"), - confPathLogs.resolve("opensearch.stderr.log"), - workingDir.resolve("opensearch.stdin") - ); - } - - static Config getLegacyESConfig(Path workingDir) { - Path confPathLogs = workingDir.resolve("logs"); - return new Config( - "Elasticsearch", - "elasticsearch", - "elasticsearch-keystore", - "elasticsearch-plugin", - "ES_TMPDIR", - "ES_JAVA_OPTS", - "ES_PATH_CONF", - workingDir.resolve("config/elasticsearch.yml"), - confPathLogs.resolve("es.stdout.log"), - confPathLogs.resolve("es.stderr.log"), - workingDir.resolve("es.stdin") - ); - } - } - - private void applyConfig() { - if (getVersion().onOrAfter("1.0.0")) { - currentConfig = opensearchConfig; - } else { - currentConfig = legacyESConfig; - } - } - - @Input - @Optional - public String getName() { - return nameCustomization.apply(name); - } - - @Internal - public Version getVersion() { - return Version.fromString(distributions.get(currentDistro).getVersion()); - } - - @Override - public void setVersion(String version) { - requireNonNull(version, "null version passed when configuring test cluster `" + this + "`"); - checkFrozen(); - distributions.clear(); - doSetVersion(version); - applyConfig(); - } - - @Override - public void setVersions(List versions) { - requireNonNull(versions, "null version list passed when configuring test cluster `" + this + "`"); - distributions.clear(); - for (String version : versions) { - doSetVersion(version); - } - applyConfig(); - } - - private void doSetVersion(String version) { - String distroName = "testclusters" + path.replace(":", "-") + "-" + this.name + "-" + version + "-"; - NamedDomainObjectContainer container = DistributionDownloadPlugin.getContainer(project); - if (container.findByName(distroName) == null) { - container.create(distroName); - } - OpenSearchDistribution distro = container.getByName(distroName); - distro.setVersion(version); - distro.setArchitecture(Architecture.current()); - setDistributionType(distro, testDistribution); - distributions.add(distro); - } - - @Internal - public TestDistribution getTestDistribution() { - return testDistribution; - } - - // package private just so test clusters plugin can access to wire up task dependencies - @Internal - List getDistributions() { - return distributions; - } - - @Override - public void setTestDistribution(TestDistribution testDistribution) { - requireNonNull(testDistribution, "null distribution passed when configuring test cluster `" + this + "`"); - checkFrozen(); - this.testDistribution = testDistribution; - for (OpenSearchDistribution distribution : distributions) { - setDistributionType(distribution, testDistribution); - } - } - - private void setDistributionType(OpenSearchDistribution distribution, TestDistribution testDistribution) { - if (testDistribution == TestDistribution.INTEG_TEST) { - distribution.setType(OpenSearchDistribution.Type.INTEG_TEST_ZIP); - // we change the underlying distribution when changing the test distribution of the cluster. - distribution.setPlatform(null); - distribution.setBundledJdk(null); - } else { - distribution.setType(OpenSearchDistribution.Type.ARCHIVE); - } - } - - // package protected so only TestClustersAware can access - @Internal - Collection getPluginAndModuleConfigurations() { - return pluginAndModuleConfigurations.values(); - } - - // creates a configuration to depend on the given plugin project, then wraps that configuration - // to grab the zip as a file provider - private Provider maybeCreatePluginOrModuleDependency(String path) { - Configuration configuration = pluginAndModuleConfigurations.computeIfAbsent( - path, - key -> project.getConfigurations().detachedConfiguration(project.getDependencies().project(new HashMap() { - { - put("path", path); - put("configuration", "zip"); - } - })) - ); - Provider fileProvider = configuration.getElements() - .map( - s -> s.stream() - .findFirst() - .orElseThrow(() -> new IllegalStateException("zip configuration of project " + path + " had no files")) - .getAsFile() - ); - return project.getLayout().file(fileProvider); - } - - @Override - public void plugin(Provider plugin) { - checkFrozen(); - this.plugins.add(plugin.map(RegularFile::getAsFile)); - } - - @Override - public void upgradePlugin(List> plugins) { - this.plugins.clear(); - for (Provider plugin : plugins) { - this.plugins.add(plugin.map(RegularFile::getAsFile)); - } - } - - @Override - public void plugin(String pluginProjectPath) { - plugin(maybeCreatePluginOrModuleDependency(pluginProjectPath)); - } - - @Override - public void module(Provider module) { - checkFrozen(); - this.modules.add(module.map(RegularFile::getAsFile)); - } - - @Override - public void module(String moduleProjectPath) { - module(maybeCreatePluginOrModuleDependency(moduleProjectPath)); - } - - @Override - public void keystore(String key, String value) { - keystoreSettings.put(key, value); - } - - @Override - public void keystore(String key, Supplier valueSupplier) { - keystoreSettings.put(key, valueSupplier); - } - - @Override - public void keystore(String key, File value) { - keystoreFiles.put(key, value); - } - - @Override - public void keystore(String key, File value, PropertyNormalization normalization) { - keystoreFiles.put(key, value, normalization); - } - - @Override - public void keystore(String key, FileSupplier valueSupplier) { - keystoreFiles.put(key, valueSupplier); - } - - @Override - public void keystorePassword(String password) { - keystorePassword = password; - } - - @Override - public void cliSetup(String binTool, CharSequence... args) { - cliSetup.add(new CliEntry(binTool, args)); - } - - @Override - public void setting(String key, String value) { - settings.put(key, value); - } - - @Override - public void setting(String key, String value, PropertyNormalization normalization) { - settings.put(key, value, normalization); - } - - @Override - public void setting(String key, Supplier valueSupplier) { - settings.put(key, valueSupplier); - } - - @Override - public void setting(String key, Supplier valueSupplier, PropertyNormalization normalization) { - settings.put(key, valueSupplier, normalization); - } - - @Override - public void systemProperty(String key, String value) { - systemProperties.put(key, value); - } - - @Override - public void systemProperty(String key, Supplier valueSupplier) { - systemProperties.put(key, valueSupplier); - } - - @Override - public void systemProperty(String key, Supplier valueSupplier, PropertyNormalization normalization) { - systemProperties.put(key, valueSupplier, normalization); - } - - @Override - public void environment(String key, String value) { - environment.put(key, value); - } - - @Override - public void environment(String key, Supplier valueSupplier) { - environment.put(key, valueSupplier); - } - - @Override - public void environment(String key, Supplier valueSupplier, PropertyNormalization normalization) { - environment.put(key, valueSupplier, normalization); - } - - public void jvmArgs(String... values) { - jvmArgs.addAll(Arrays.asList(values)); - } - - @Internal - public Path getConfigDir() { - return currentConfig.configFile.getParent(); - } - - @Override - @Input - public boolean isPreserveDataDir() { - return preserveDataDir; - } - - @Override - public void setPreserveDataDir(boolean preserveDataDir) { - this.preserveDataDir = preserveDataDir; - } - - @Override - public void freeze() { - requireNonNull(testDistribution, "null testDistribution passed when configuring test cluster `" + this + "`"); - LOGGER.info("Locking configuration of `{}`", this); - configurationFrozen.set(true); - } - - /** - * Returns a stream of lines in the generated logs similar to Files.lines - * - * @return stream of log lines - */ - public Stream logLines() throws IOException { - return Files.lines(currentConfig.stdoutFile, StandardCharsets.UTF_8); - } - - @Override - public synchronized void start() { - LOGGER.info("Starting `{}`", this); - if (Files.exists(getExtractedDistributionDir()) == false) { - throw new TestClustersException("Can not start " + this + ", missing: " + getExtractedDistributionDir()); - } - if (Files.isDirectory(getExtractedDistributionDir()) == false) { - throw new TestClustersException("Can not start " + this + ", is not a directory: " + getExtractedDistributionDir()); - } - - try { - if (isWorkingDirConfigured == false) { - logToProcessStdout("Configuring working directory: " + workingDir); - // make sure we always start fresh - if (Files.exists(workingDir)) { - if (preserveDataDir) { - Files.list(workingDir) - .filter(path -> path.equals(confPathData) == false) - .forEach(path -> fileSystemOperations.delete(d -> d.delete(path))); - } else { - fileSystemOperations.delete(d -> d.delete(workingDir)); - } - } - isWorkingDirConfigured = true; - } - setupNodeDistribution(getExtractedDistributionDir()); - createWorkingDir(); - } catch (IOException e) { - throw new UncheckedIOException("Failed to create working directory for " + this, e); - } - - copyExtraJars(); - - copyExtraConfigFiles(); - - createConfiguration(); - - final List pluginsToInstall = new ArrayList<>(); - if (plugins.isEmpty() == false) { - pluginsToInstall.addAll(plugins.stream().map(Provider::get).map(p -> p.toURI().toString()).collect(Collectors.toList())); - } - - if (pluginsToInstall.isEmpty() == false) { - if (getVersion().onOrAfter("7.6.0")) { - logToProcessStdout("installing " + pluginsToInstall.size() + " plugins in a single transaction"); - final String[] arguments = Stream.concat(Stream.of("install", "--batch"), pluginsToInstall.stream()).toArray(String[]::new); - runOpenSearchBinScript(currentConfig.pluginTool, arguments); - logToProcessStdout("installed plugins"); - } else { - logToProcessStdout("installing " + pluginsToInstall.size() + " plugins sequentially"); - pluginsToInstall.forEach(plugin -> runOpenSearchBinScript(currentConfig.pluginTool, "install", "--batch", plugin)); - logToProcessStdout("installed plugins"); - } - } - - logToProcessStdout("Creating " + currentConfig.command + " keystore with password set to [" + keystorePassword + "]"); - if (keystorePassword.length() > 0) { - runOpenSearchBinScriptWithInput(keystorePassword + "\n" + keystorePassword, currentConfig.keystoreTool, "create", "-p"); - } else { - runOpenSearchBinScript(currentConfig.keystoreTool, "-v", "create"); - } - - if (keystoreSettings.isEmpty() == false || keystoreFiles.isEmpty() == false) { - logToProcessStdout("Adding " + keystoreSettings.size() + " keystore settings and " + keystoreFiles.size() + " keystore files"); - - keystoreSettings.forEach((key, value) -> runKeystoreCommandWithPassword(keystorePassword, value.toString(), "add", "-x", key)); - - for (Map.Entry entry : keystoreFiles.entrySet()) { - File file = entry.getValue(); - requireNonNull(file, "supplied keystoreFile was null when configuring " + this); - if (file.exists() == false) { - throw new TestClustersException("supplied keystore file " + file + " does not exist, require for " + this); - } - runKeystoreCommandWithPassword(keystorePassword, "", "add-file", entry.getKey(), file.getAbsolutePath()); - } - } - - installModules(); - - if (cliSetup.isEmpty() == false) { - logToProcessStdout("Running " + cliSetup.size() + " setup commands"); - - for (CliEntry entry : cliSetup) { - runOpenSearchBinScript(entry.executable, entry.args); - } - } - - logToProcessStdout("Starting " + currentConfig.distroName + " process"); - startOpenSearchProcess(); - } - - private boolean canUseSharedDistribution() { - // using original location can be too long due to MAX_PATH restrictions on windows CI - // TODO revisit when moving to shorter paths on CI by using Teamcity - return OS.current() != OS.WINDOWS && extraJarFiles.size() == 0 && modules.size() == 0 && plugins.size() == 0; - } - - private void logToProcessStdout(String message) { - try { - if (Files.exists(currentConfig.stdoutFile.getParent()) == false) { - Files.createDirectories(currentConfig.stdoutFile.getParent()); - } - Files.write( - currentConfig.stdoutFile, - ("[" + Instant.now().toString() + "] [BUILD] " + message + "\n").getBytes(StandardCharsets.UTF_8), - StandardOpenOption.CREATE, - StandardOpenOption.APPEND - ); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - @Override - public void restart() { - LOGGER.info("Restarting {}", this); - stop(false); - start(); - } - - void goToNextVersion() { - if (currentDistro + 1 >= distributions.size()) { - throw new TestClustersException("Ran out of versions to go to for " + this); - } - logToProcessStdout("Switch version from " + getVersion() + " to " + distributions.get(currentDistro + 1).getVersion()); - currentDistro += 1; - applyConfig(); - setting("node.attr.upgraded", "true"); - } - - private void copyExtraConfigFiles() { - if (extraConfigFiles.isEmpty() == false) { - logToProcessStdout("Setting up " + extraConfigFiles.size() + " additional config files"); - } - extraConfigFiles.forEach((destination, from) -> { - if (Files.exists(from.toPath()) == false) { - throw new TestClustersException("Can't create extra config file from " + from + " for " + this + " as it does not exist"); - } - Path dst = currentConfig.configFile.getParent().resolve(destination); - try { - Files.createDirectories(dst.getParent()); - Files.copy(from.toPath(), dst, StandardCopyOption.REPLACE_EXISTING); - LOGGER.info("Added extra config file {} for {}", destination, this); - } catch (IOException e) { - throw new UncheckedIOException("Can't create extra config file for", e); - } - }); - } - - /** - * Copies extra jars to the `/lib` directory. - * //TODO: Remove this when system modules are available - */ - private void copyExtraJars() { - if (extraJarFiles.isEmpty() == false) { - logToProcessStdout("Setting up " + extraJarFiles.size() + " additional jar dependencies"); - } - extraJarFiles.forEach(from -> { - Path destination = getDistroDir().resolve("lib").resolve(from.getName()); - try { - Files.copy(from.toPath(), destination, StandardCopyOption.REPLACE_EXISTING); - LOGGER.info("Added extra jar {} to {}", from.getName(), destination); - } catch (IOException e) { - throw new UncheckedIOException("Can't copy extra jar dependency " + from.getName() + " to " + destination.toString(), e); - } - }); - } - - private void installModules() { - if (testDistribution == TestDistribution.INTEG_TEST) { - logToProcessStdout("Installing " + modules.size() + "modules"); - for (Provider module : modules) { - Path destination = getDistroDir().resolve("modules") - .resolve(module.get().getName().replace(".zip", "").replace("-" + getVersion(), "").replace("-SNAPSHOT", "")); - // only install modules that are not already bundled with the integ-test distribution - if (Files.exists(destination) == false) { - fileSystemOperations.copy(spec -> { - if (module.get().getName().toLowerCase().endsWith(".zip")) { - spec.from(archiveOperations.zipTree(module)); - } else if (module.get().isDirectory()) { - spec.from(module); - } else { - throw new IllegalArgumentException("Not a valid module " + module + " for " + this); - } - spec.into(destination); - }); - } - } - } else { - LOGGER.info("Not installing " + modules.size() + "(s) since the " + distributions + " distribution already " + "has them"); - } - } - - @Override - public void extraConfigFile(String destination, File from) { - if (destination.contains("..")) { - throw new IllegalArgumentException("extra config file destination can't be relative, was " + destination + " for " + this); - } - extraConfigFiles.put(destination, from); - } - - @Override - public void extraConfigFile(String destination, File from, PropertyNormalization normalization) { - if (destination.contains("..")) { - throw new IllegalArgumentException("extra config file destination can't be relative, was " + destination + " for " + this); - } - extraConfigFiles.put(destination, from, normalization); - } - - @Override - public void extraJarFile(File from) { - if (from.toString().endsWith(".jar") == false) { - throw new IllegalArgumentException("extra jar file " + from.toString() + " doesn't appear to be a JAR"); - } - extraJarFiles.add(from); - } - - @Override - public void user(Map userSpec) {} - - private void runOpenSearchBinScriptWithInput(String input, String tool, CharSequence... args) { - if (Files.exists(getDistroDir().resolve("bin").resolve(tool)) == false - && Files.exists(getDistroDir().resolve("bin").resolve(tool + ".bat")) == false) { - throw new TestClustersException( - "Can't run bin script: `" + tool + "` does not exist. Is this the distribution you expect it to be ?" - ); - } - try (InputStream byteArrayInputStream = new ByteArrayInputStream(input.getBytes(StandardCharsets.UTF_8))) { - LoggedExec.exec(project, spec -> { - spec.setEnvironment(getOpenSearchEnvironment()); - spec.workingDir(getDistroDir()); - spec.executable(OS.conditionalString().onUnix(() -> "./bin/" + tool).onWindows(() -> "cmd").supply()); - spec.args(OS.>conditional().onWindows(() -> { - ArrayList result = new ArrayList<>(); - result.add("/c"); - result.add("bin\\" + tool + ".bat"); - for (CharSequence arg : args) { - result.add(arg); - } - return result; - }).onUnix(() -> Arrays.asList(args)).supply()); - spec.setStandardInput(byteArrayInputStream); - - }); - } catch (IOException e) { - throw new UncheckedIOException("Failed to run " + tool + " for " + this, e); - } - } - - private void runKeystoreCommandWithPassword(String keystorePassword, String input, CharSequence... args) { - final String actualInput = keystorePassword.length() > 0 ? keystorePassword + "\n" + input : input; - runOpenSearchBinScriptWithInput(actualInput, currentConfig.keystoreTool, args); - } - - private void runOpenSearchBinScript(String tool, CharSequence... args) { - runOpenSearchBinScriptWithInput("", tool, args); - } - - private Map getOpenSearchEnvironment() { - Map defaultEnv = new HashMap<>(); - getRequiredJavaHome().ifPresent(javaHome -> defaultEnv.put("JAVA_HOME", javaHome)); - defaultEnv.put(currentConfig.envPathConf, currentConfig.configFile.getParent().toString()); - String systemPropertiesString = ""; - if (systemProperties.isEmpty() == false) { - systemPropertiesString = " " - + systemProperties.entrySet() - .stream() - .map(entry -> "-D" + entry.getKey() + "=" + entry.getValue()) - // OPENSEARCH_PATH_CONF is also set as an environment variable and for a reference to ${OPENSEARCH_PATH_CONF} - // to work OPENSEARCH_JAVA_OPTS, we need to make sure that OPENSEARCH_PATH_CONF before OPENSEARCH_JAVA_OPTS. Instead, - // we replace the reference with the actual value in other environment variables - .map(p -> p.replace("${" + currentConfig.envPathConf + "}", currentConfig.configFile.getParent().toString())) - .collect(Collectors.joining(" ")); - } - String jvmArgsString = ""; - if (jvmArgs.isEmpty() == false) { - jvmArgsString = " " + jvmArgs.stream().peek(argument -> { - if (argument.toString().startsWith("-D")) { - throw new TestClustersException( - "Invalid jvm argument `" + argument + "` configure as systemProperty instead for " + this - ); - } - }).collect(Collectors.joining(" ")); - } - String heapSize = System.getProperty("tests.heap.size", "512m"); - defaultEnv.put( - currentConfig.envJavaOpts, - "-Xms" + heapSize + " -Xmx" + heapSize + " -ea -esa " + systemPropertiesString + " " + jvmArgsString + " " + - // Support passing in additional JVM arguments - System.getProperty("tests.jvm.argline", "") - ); - defaultEnv.put(currentConfig.envTempDir, tmpDir.toString()); - // Windows requires this as it defaults to `c:\windows` despite OPENSEARCH_TMPDIR - defaultEnv.put("TMP", tmpDir.toString()); - - // Override the system hostname variables for testing - defaultEnv.put("HOSTNAME", HOSTNAME_OVERRIDE); - defaultEnv.put("COMPUTERNAME", COMPUTERNAME_OVERRIDE); - - Set commonKeys = new HashSet<>(environment.keySet()); - commonKeys.retainAll(defaultEnv.keySet()); - if (commonKeys.isEmpty() == false) { - throw new IllegalStateException("testcluster does not allow overwriting the following env vars " + commonKeys + " for " + this); - } - - environment.forEach((key, value) -> defaultEnv.put(key, value.toString())); - return defaultEnv; - } - - private java.util.Optional getRequiredJavaHome() { - // If we are testing the current version of Elasticsearch, use the configured runtime Java - if (getTestDistribution() == TestDistribution.INTEG_TEST || getVersion().equals(VersionProperties.getOpenSearchVersion())) { - return java.util.Optional.of(BuildParams.getRuntimeJavaHome()).map(File::getAbsolutePath); - } else if (getVersion().before("7.0.0")) { - return java.util.Optional.of(bwcJdk.getJavaHomePath().toString()); - } else { // otherwise use the bundled JDK - return java.util.Optional.empty(); - } - } - - @Internal - Jdk getBwcJdk() { - return getVersion().before("7.0.0") ? bwcJdk : null; - } - - private void startOpenSearchProcess() { - final ProcessBuilder processBuilder = new ProcessBuilder(); - Path effectiveDistroDir = getDistroDir(); - List command = OS.>conditional() - .onUnix(() -> Arrays.asList(effectiveDistroDir.resolve("./bin/" + currentConfig.command).toString())) - .onWindows(() -> Arrays.asList("cmd", "/c", effectiveDistroDir.resolve("bin\\" + currentConfig.command + ".bat").toString())) - .supply(); - processBuilder.command(command); - processBuilder.directory(workingDir.toFile()); - Map environment = processBuilder.environment(); - // Don't inherit anything from the environment for as that would lack reproducibility - environment.clear(); - environment.putAll(getOpenSearchEnvironment()); - - // don't buffer all in memory, make sure we don't block on the default pipes - processBuilder.redirectError(ProcessBuilder.Redirect.appendTo(currentConfig.stderrFile.toFile())); - processBuilder.redirectOutput(ProcessBuilder.Redirect.appendTo(currentConfig.stdoutFile.toFile())); - - if (keystorePassword != null && keystorePassword.length() > 0) { - try { - Files.write(currentConfig.stdinFile, (keystorePassword + "\n").getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE); - processBuilder.redirectInput(currentConfig.stdinFile.toFile()); - } catch (IOException e) { - throw new TestClustersException("Failed to set the keystore password for " + this, e); - } - } - LOGGER.info("Running `{}` in `{}` for {} env: {}", command, workingDir, this, environment); - try { - opensearchProcess = processBuilder.start(); - } catch (IOException e) { - throw new TestClustersException("Failed to start " + currentConfig.command + " process for " + this, e); - } - // reaper.registerPid(toString(), opensearchProcess.pid()); - } - - @Internal - public Path getDistroDir() { - return canUseSharedDistribution() - ? getExtractedDistributionDir().toFile().listFiles()[0].toPath() - : workingDir.resolve("distro").resolve(getVersion() + "-" + testDistribution); - } - - @Override - @Internal - public String getHttpSocketURI() { - return getHttpPortInternal().get(0); - } - - @Override - @Internal - public String getTransportPortURI() { - return getTransportPortInternal().get(0); - } - - @Override - @Internal - public List getAllHttpSocketURI() { - waitForAllConditions(); - return getHttpPortInternal(); - } - - @Override - @Internal - public List getAllTransportPortURI() { - waitForAllConditions(); - return getTransportPortInternal(); - } - - @Internal - public File getServerLog() { - return confPathLogs.resolve(defaultConfig.get("cluster.name") + "_server.json").toFile(); - } - - @Internal - public File getAuditLog() { - return confPathLogs.resolve(defaultConfig.get("cluster.name") + "_audit.json").toFile(); - } - - @Override - public synchronized void stop(boolean tailLogs) { - logToProcessStdout("Stopping node"); - try { - if (Files.exists(httpPortsFile)) { - Files.delete(httpPortsFile); - } - if (Files.exists(transportPortFile)) { - Files.delete(transportPortFile); - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } - if (opensearchProcess == null && tailLogs) { - // This is a special case. If start() throws an exception the plugin will still call stop - // Another exception here would eat the orriginal. - return; - } - LOGGER.info("Stopping `{}`, tailLogs: {}", this, tailLogs); - requireNonNull(opensearchProcess, "Can't stop `" + this + "` as it was not started or already stopped."); - // Test clusters are not reused, don't spend time on a graceful shutdown - stopHandle(opensearchProcess, true); - reaper.unregister(toString()); - if (tailLogs) { - logFileContents("Standard output of node", currentConfig.stdoutFile); - logFileContents("Standard error of node", currentConfig.stderrFile); - } - opensearchProcess = null; - // Clean up the ports file in case this is started again. - try { - if (Files.exists(httpPortsFile)) { - Files.delete(httpPortsFile); - } - if (Files.exists(transportPortFile)) { - Files.delete(transportPortFile); - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } - } - - @Override - public void setNameCustomization(Function nameCustomizer) { - this.nameCustomization = nameCustomizer; - } - - private void stopHandle(Process process, boolean forcibly) { - // No-op if the process has already exited by itself. - if (process.isAlive() == false) { - LOGGER.info("Process was not running when we tried to terminate it."); - return; - } - - // Stop all children last - if the ML processes are killed before the ES JVM then - // they'll be recorded as having failed and won't restart when the cluster restarts. - // ES could actually be a child when there's some wrapper process like on Windows, - // and in that case the ML processes will be grandchildren of the wrapper. - // List children = process.children().collect(Collectors.toList()); - try { - // logProcessInfo( - // "Terminating " + currentConfig.command + " process" + (forcibly ? " forcibly " : "gracefully") + ":", - // process.info() - // ); - - if (forcibly) { - process.destroyForcibly(); - } else { - process.destroy(); - waitForProcessToExit(process); - if (process.isAlive() == false) { - return; - } - LOGGER.info( - "process did not terminate after {} {}, stopping it forcefully", - OPENSEARCH_DESTROY_TIMEOUT, - OPENSEARCH_DESTROY_TIMEOUT_UNIT - ); - process.destroyForcibly(); - } - - waitForProcessToExit(process); - if (process.isAlive()) { - throw new TestClustersException("Was not able to terminate " + currentConfig.command + " process for " + this); - } - } finally { - // children.forEach(each -> stopHandle(each, forcibly)); - } - - // waitForProcessToExit(process); - // if (process.isAlive()) { - // throw new TestClustersException("Was not able to terminate " + currentConfig.command + " process for " + this); - // } - } - - /* - private void logProcessInfo(String prefix, Process info) { - LOGGER.info( - prefix + " commandLine:`{}` command:`{}` args:`{}`", - info.commandLine().orElse("-"), - info.command().orElse("-"), - Arrays.stream(info.arguments().orElse(new String[] {})).map(each -> "'" + each + "'").collect(Collectors.joining(" ")) - ); - } - */ - - private void logFileContents(String description, Path from) { - final Map errorsAndWarnings = new LinkedHashMap<>(); - LinkedList ring = new LinkedList<>(); - try (LineNumberReader reader = new LineNumberReader(Files.newBufferedReader(from))) { - for (String line = reader.readLine(); line != null; line = reader.readLine()) { - final String lineToAdd; - if (ring.isEmpty()) { - lineToAdd = line; - } else { - if (line.startsWith("[")) { - lineToAdd = line; - // check to see if the previous message (possibly combined from multiple lines) was an error or - // warning as we want to show all of them - String previousMessage = normalizeLogLine(ring.getLast()); - if (MESSAGES_WE_DONT_CARE_ABOUT.stream().noneMatch(previousMessage::contains) - && (previousMessage.contains("ERROR") || previousMessage.contains("WARN"))) { - errorsAndWarnings.put(previousMessage, errorsAndWarnings.getOrDefault(previousMessage, 0) + 1); - } - } else { - // We combine multi line log messages to make sure we never break exceptions apart - lineToAdd = ring.removeLast() + "\n" + line; - } - } - ring.add(lineToAdd); - if (ring.size() >= TAIL_LOG_MESSAGES_COUNT) { - ring.removeFirst(); - } - } - } catch (IOException e) { - throw new UncheckedIOException("Failed to tail log " + this, e); - } - - if (errorsAndWarnings.isEmpty() == false || ring.isEmpty() == false) { - LOGGER.error("\n=== {} `{}` ===", description, this); - } - if (errorsAndWarnings.isEmpty() == false) { - LOGGER.lifecycle("\n» ↓ errors and warnings from " + from + " ↓"); - errorsAndWarnings.forEach((message, count) -> { - LOGGER.lifecycle("» " + message.replace("\n", "\n» ")); - if (count > 1) { - LOGGER.lifecycle("» ↑ repeated " + count + " times ↑"); - } - }); - } - - ring.removeIf(line -> MESSAGES_WE_DONT_CARE_ABOUT.stream().anyMatch(line::contains)); - - if (ring.isEmpty() == false) { - LOGGER.lifecycle("» ↓ last " + TAIL_LOG_MESSAGES_COUNT + " non error or warning messages from " + from + " ↓"); - ring.forEach(message -> { - if (errorsAndWarnings.containsKey(normalizeLogLine(message)) == false) { - LOGGER.lifecycle("» " + message.replace("\n", "\n» ")); - } - }); - } - } - - private String normalizeLogLine(String line) { - if (line.contains("ERROR")) { - return line.substring(line.indexOf("ERROR")); - } - if (line.contains("WARN")) { - return line.substring(line.indexOf("WARN")); - } - return line; - } - - private void waitForProcessToExit(Process process) { - try { - process.waitFor(OPENSEARCH_DESTROY_TIMEOUT, OPENSEARCH_DESTROY_TIMEOUT_UNIT); - } catch (InterruptedException e) { - LOGGER.info("Interrupted while waiting for {} process", currentConfig.command, e); - Thread.currentThread().interrupt(); - } catch (NullPointerException e) { - LOGGER.info("Failure while waiting for process to exist", e); - } - } - - private void createWorkingDir() throws IOException { - // Start configuration from scratch in case of a restart - fileSystemOperations.delete(d -> d.delete(currentConfig.configFile.getParent())); - Files.createDirectories(currentConfig.configFile.getParent()); - Files.createDirectories(confPathRepo); - Files.createDirectories(confPathData); - Files.createDirectories(confPathLogs); - Files.createDirectories(tmpDir); - } - - private void setupNodeDistribution(Path distroExtractDir) throws IOException { - if (canUseSharedDistribution() == false) { - logToProcessStdout("Configuring custom cluster specific distro directory: " + getDistroDir()); - if (Files.exists(getDistroDir()) == false) { - try { - syncWithLinks(distroExtractDir, getDistroDir()); - } catch (LinkCreationException e) { - // Note does not work for network drives, e.g. Vagrant - LOGGER.info("Failed to create working dir using hard links. Falling back to copy", e); - // ensure we get a clean copy - FileUtils.deleteDirectory(getDistroDir().toFile()); - syncWithCopy(distroExtractDir, getDistroDir()); - } - } - } - } - - /** - * Does the equivalent of `cp -lr` and `chmod -r a-w` to save space and improve speed. - * We remove write permissions to make sure files are note mistakenly edited ( e.x. the config file ) and changes - * reflected across all copies. Permissions are retained to be able to replace the links. - * - * @param sourceRoot where to copy from - * @param destinationRoot destination to link to - */ - private void syncWithLinks(Path sourceRoot, Path destinationRoot) { - sync(sourceRoot, destinationRoot, (Path d, Path s) -> { - try { - Files.createLink(d, s); - } catch (IOException e) { - // Note does not work for network drives, e.g. Vagrant - throw new LinkCreationException("Failed to create hard link " + d + " pointing to " + s, e); - } - }); - } - - private void syncWithCopy(Path sourceRoot, Path destinationRoot) { - sync(sourceRoot, destinationRoot, (Path d, Path s) -> { - try { - Files.copy(s, d); - } catch (IOException e) { - throw new UncheckedIOException("Failed to copy " + s + " to " + d, e); - } - }); - } - - private void sync(Path sourceRoot, Path destinationRoot, BiConsumer syncMethod) { - assert Files.exists(destinationRoot) == false; - try (Stream stream = Files.walk(sourceRoot)) { - stream.forEach(source -> { - Path relativeDestination = sourceRoot.relativize(source); - if (relativeDestination.getNameCount() <= 1) { - return; - } - // Throw away the first name as the archives have everything in a single top level folder we are not interested in - relativeDestination = relativeDestination.subpath(1, relativeDestination.getNameCount()); - - Path destination = destinationRoot.resolve(relativeDestination); - if (Files.isDirectory(source)) { - try { - Files.createDirectories(destination); - } catch (IOException e) { - throw new UncheckedIOException("Can't create directory " + destination.getParent(), e); - } - } else { - try { - Files.createDirectories(destination.getParent()); - } catch (IOException e) { - throw new UncheckedIOException("Can't create directory " + destination.getParent(), e); - } - syncMethod.accept(destination, source); - - } - }); - } catch (IOException e) { - throw new UncheckedIOException("Can't walk source " + sourceRoot, e); - } - } - - private void createConfiguration() { - String nodeName = nameCustomization.apply(safeName(name)); - Map baseConfig = new HashMap<>(defaultConfig); - if (nodeName != null) { - baseConfig.put("node.name", nodeName); - } - baseConfig.put("path.repo", confPathRepo.toAbsolutePath().toString()); - baseConfig.put("path.data", confPathData.toAbsolutePath().toString()); - baseConfig.put("path.logs", confPathLogs.toAbsolutePath().toString()); - baseConfig.put("path.shared_data", workingDir.resolve("sharedData").toString()); - baseConfig.put("node.attr.testattr", "test"); - baseConfig.put("node.portsfile", "true"); - baseConfig.put("http.port", httpPort); - if (getVersion().onOrAfter(Version.fromString("6.7.0"))) { - baseConfig.put("transport.port", transportPort); - } else { - baseConfig.put("transport.tcp.port", transportPort); - } - // Default the watermarks to absurdly low to prevent the tests from failing on nodes without enough disk space - baseConfig.put("cluster.routing.allocation.disk.watermark.low", "1b"); - baseConfig.put("cluster.routing.allocation.disk.watermark.high", "1b"); - // increase script compilation limit since tests can rapid-fire script compilations - if (getVersion().onOrAfter(Version.fromString("7.9.0"))) { - baseConfig.put("script.disable_max_compilations_rate", "true"); - } else { - baseConfig.put("script.max_compilations_rate", "2048/1m"); - } - if (getVersion().onOrAfter("6.0.0")) { - baseConfig.put("cluster.routing.allocation.disk.watermark.flood_stage", "1b"); - } - // Temporarily disable the real memory usage circuit breaker. It depends on real memory usage which we have no full control - // over and the REST client will not retry on circuit breaking exceptions yet (see #31986 for details). Once the REST client - // can retry on circuit breaking exceptions, we can revert again to the default configuration. - if (getVersion().onOrAfter("7.0.0")) { - baseConfig.put("indices.breaker.total.use_real_memory", "false"); - } - // Don't wait for state, just start up quickly. This will also allow new and old nodes in the BWC case to become the master - baseConfig.put("discovery.initial_state_timeout", "0s"); - - // TODO: Remove these once https://github.com/elastic/elasticsearch/issues/46091 is fixed - if (getVersion().onOrAfter("1.0.0")) { - baseConfig.put("logger.org.opensearch.action.support.master", "DEBUG"); - baseConfig.put("logger.org.opensearch.cluster.coordination", "DEBUG"); - } else { - baseConfig.put("logger.org.elasticsearch.action.support.master", "DEBUG"); - baseConfig.put("logger.org.elasticsearch.cluster.coordination", "DEBUG"); - } - - HashSet overriden = new HashSet<>(baseConfig.keySet()); - overriden.retainAll(settings.keySet()); - overriden.removeAll(OVERRIDABLE_SETTINGS); - if (overriden.isEmpty() == false) { - throw new IllegalArgumentException( - "Testclusters does not allow the following settings to be changed:" + overriden + " for " + this - ); - } - // Make sure no duplicate config keys - settings.keySet().stream().filter(OVERRIDABLE_SETTINGS::contains).forEach(baseConfig::remove); - - final Path configFileRoot = currentConfig.configFile.getParent(); - try { - Files.write( - currentConfig.configFile, - Stream.concat(settings.entrySet().stream(), baseConfig.entrySet().stream()) - .map(entry -> entry.getKey() + ": " + entry.getValue()) - .collect(Collectors.joining("\n")) - .getBytes(StandardCharsets.UTF_8), - StandardOpenOption.TRUNCATE_EXISTING, - StandardOpenOption.CREATE - ); - - final List configFiles; - try (Stream stream = Files.list(getDistroDir().resolve("config"))) { - configFiles = stream.collect(Collectors.toList()); - } - logToProcessStdout("Copying additional config files from distro " + configFiles); - for (Path file : configFiles) { - Path dest = currentConfig.configFile.getParent().resolve(file.getFileName()); - if (Files.exists(dest) == false) { - Files.copy(file, dest); - } - } - } catch (IOException e) { - throw new UncheckedIOException("Could not write config file: " + currentConfig.configFile, e); - } - - tweakJvmOptions(configFileRoot); - LOGGER.info("Written config file:{} for {}", currentConfig.configFile, this); - } - - private void tweakJvmOptions(Path configFileRoot) { - LOGGER.info("Tweak jvm options {}.", configFileRoot.resolve("jvm.options")); - Path jvmOptions = configFileRoot.resolve("jvm.options"); - try { - String content = new String(Files.readAllBytes(jvmOptions)); - Map expansions = jvmOptionExpansions(); - for (String origin : expansions.keySet()) { - if (!content.contains(origin)) { - throw new IOException("template property " + origin + " not found in template."); - } - content = content.replace(origin, expansions.get(origin)); - } - Files.write(jvmOptions, content.getBytes()); - } catch (IOException ioException) { - throw new UncheckedIOException(ioException); - } - } - - private Map jvmOptionExpansions() { - Map expansions = new HashMap<>(); - Version version = getVersion(); - String heapDumpOrigin = getVersion().onOrAfter("6.3.0") ? "-XX:HeapDumpPath=data" : "-XX:HeapDumpPath=/heap/dump/path"; - Path relativeLogPath = workingDir.relativize(confPathLogs); - expansions.put(heapDumpOrigin, "-XX:HeapDumpPath=" + relativeLogPath.toString()); - if (version.onOrAfter("6.2.0")) { - expansions.put("logs/gc.log", relativeLogPath.resolve("gc.log").toString()); - } - if (getVersion().onOrAfter("7.0.0")) { - expansions.put( - "-XX:ErrorFile=logs/hs_err_pid%p.log", - "-XX:ErrorFile=" + relativeLogPath.resolve("hs_err_pid%p.log").toString() - ); - } - return expansions; - } - - private void checkFrozen() { - if (configurationFrozen.get()) { - throw new IllegalStateException("Configuration for " + this + " can not be altered, already locked"); - } - } - - private List getTransportPortInternal() { - try { - return readPortsFile(transportPortFile); - } catch (IOException e) { - throw new UncheckedIOException("Failed to read transport ports file: " + transportPortFile + " for " + this, e); - } - } - - private List getHttpPortInternal() { - try { - return readPortsFile(httpPortsFile); - } catch (IOException e) { - throw new UncheckedIOException("Failed to read http ports file: " + httpPortsFile + " for " + this, e); - } - } - - private List readPortsFile(Path file) throws IOException { - try (Stream lines = Files.lines(file, StandardCharsets.UTF_8)) { - return lines.map(String::trim).collect(Collectors.toList()); - } - } - - private Path getExtractedDistributionDir() { - return distributions.get(currentDistro).getExtracted().getSingleFile().toPath(); - } - - private List getInstalledFileSet(Action filter) { - return Stream.concat(plugins.stream().map(Provider::get), modules.stream().map(Provider::get)) - .filter(File::exists) - // TODO: We may be able to simplify this with Gradle 5.6 - // https://docs.gradle.org/nightly/release-notes.html#improved-handling-of-zip-archives-on-classpaths - .map(zipFile -> archiveOperations.zipTree(zipFile).matching(filter)) - .flatMap(tree -> tree.getFiles().stream()) - .sorted(Comparator.comparing(File::getName)) - .collect(Collectors.toList()); - } - - @Classpath - public List getInstalledClasspath() { - return getInstalledFileSet(filter -> filter.include("**/*.jar")); - } - - @InputFiles - @PathSensitive(PathSensitivity.RELATIVE) - public List getInstalledFiles() { - return getInstalledFileSet(filter -> filter.exclude("**/*.jar")); - } - - @Classpath - public List getDistributionClasspath() { - return getDistributionFiles(filter -> filter.include("**/*.jar")); - } - - @InputFiles - @PathSensitive(PathSensitivity.RELATIVE) - public List getDistributionFiles() { - return getDistributionFiles(filter -> filter.exclude("**/*.jar")); - } - - private List getDistributionFiles(Action patternFilter) { - List files = new ArrayList<>(); - for (OpenSearchDistribution distribution : distributions) { - files.add(distribution.getExtracted().getAsFileTree().matching(patternFilter)); - } - return files; - } - - @Nested - public List getKeystoreSettings() { - return keystoreSettings.getNormalizedCollection(); - } - - @Nested - public List getKeystoreFiles() { - return keystoreFiles.getNormalizedCollection(); - } - - @Nested - public List getCliSetup() { - return cliSetup.getFlatNormalizedCollection(); - } - - @Nested - public List getSettings() { - return settings.getNormalizedCollection(); - } - - @Nested - public List getSystemProperties() { - return systemProperties.getNormalizedCollection(); - } - - @Nested - public List getEnvironment() { - return environment.getNormalizedCollection(); - } - - @Nested - public List getJvmArgs() { - return jvmArgs.getNormalizedCollection(); - } - - @Nested - public List getExtraConfigFiles() { - return extraConfigFiles.getNormalizedCollection(); - } - - @Override - @Internal - public boolean isProcessAlive() { - requireNonNull(opensearchProcess, "Can't wait for `" + this + "` as it's not started. Does the task have `useCluster` ?"); - return opensearchProcess.isAlive(); - } - - void waitForAllConditions() { - waitForConditions(waitConditions, System.currentTimeMillis(), NODE_UP_TIMEOUT_UNIT.toMillis(NODE_UP_TIMEOUT) + - // Installing plugins at config time and loading them when nods start requires additional time we need to - // account for - ADDITIONAL_CONFIG_TIMEOUT_UNIT.toMillis( - ADDITIONAL_CONFIG_TIMEOUT * (plugins.size() + keystoreFiles.size() + keystoreSettings.size() + credentials.size()) - ), TimeUnit.MILLISECONDS, this); - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OpenSearchNode that = (OpenSearchNode) o; - return Objects.equals(name, that.name) && Objects.equals(path, that.path); - } - - @Override - public int hashCode() { - return Objects.hash(name, path); - } - - @Override - public String toString() { - return "node{" + path + ":" + name + "}"; - } - - @Input - List> getCredentials() { - return credentials; - } - - private boolean checkPortsFilesExistWithDelay(TestClusterConfiguration node) { - if (Files.exists(httpPortsFile) && Files.exists(transportPortFile)) { - return true; - } - try { - Thread.sleep(500); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw new TestClustersException("Interrupted while waiting for ports files", e); - } - return Files.exists(httpPortsFile) && Files.exists(transportPortFile); - } - - void setHttpPort(String httpPort) { - this.httpPort = httpPort; - } - - void setTransportPort(String transportPort) { - this.transportPort = transportPort; - } - - void setDataPath(Path dataPath) { - this.confPathData = dataPath; - } - - @Internal - Path getOpensearchStdoutFile() { - return currentConfig.stdoutFile; - } - - @Internal - Path getOpensearchStderrFile() { - return currentConfig.stderrFile; - } - - private static class FileEntry implements Named { - private String name; - private File file; - - FileEntry(String name, File file) { - this.name = name; - this.file = file; - } - - @Input - @Override - public String getName() { - return name; - } - - @InputFile - @PathSensitive(PathSensitivity.NONE) - public File getFile() { - return file; - } - } - - private static class CliEntry { - private String executable; - private CharSequence[] args; - - CliEntry(String executable, CharSequence[] args) { - this.executable = executable; - this.args = args; - } - - @Input - public String getExecutable() { - return executable; - } - - @Input - public CharSequence[] getArgs() { - return args; - } - } - - private static class LinkCreationException extends UncheckedIOException { - LinkCreationException(String message, IOException cause) { - super(message, cause); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java deleted file mode 100644 index af23fdce7dcd8..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.gradle.api.GradleException; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.Optional; -import org.gradle.api.tasks.TaskAction; -import org.gradle.api.tasks.options.Option; - -import java.io.BufferedReader; -import java.io.Closeable; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.BooleanSupplier; -import java.util.function.Function; -import java.util.stream.Collectors; - -public class RunTask extends DefaultTestClustersTask { - - private static final Logger logger = Logging.getLogger(RunTask.class); - public static final String CUSTOM_SETTINGS_PREFIX = "tests.opensearch."; - - private Boolean debug = false; - - private Boolean debugServer = false; - - private Boolean preserveData = false; - - private Path dataDir = null; - - private String keystorePassword = ""; - - @Option(option = "debug-jvm", description = "Run OpenSearch as a debug client, where it will try to connect to a debugging server at startup.") - public void setDebug(boolean enabled) { - if (debugServer != null && debugServer == true) { - throw new IllegalStateException("Either --debug-jvm or --debug-server-jvm option should be specified (but not both)"); - } - this.debug = enabled; - } - - @Option(option = "debug-server-jvm", description = "Run OpenSearch as a debug server that will accept connections from a debugging client.") - public void setDebugServer(boolean enabled) { - if (debug != null && debug == true) { - throw new IllegalStateException("Either --debug-jvm or --debug-server-jvm option should be specified (but not both)"); - } - this.debugServer = enabled; - } - - @Input - public Boolean getDebug() { - return debug; - } - - @Input - public Boolean getDebugServer() { - return debugServer; - } - - @Option(option = "data-dir", description = "Override the base data directory used by the testcluster") - public void setDataDir(String dataDirStr) { - dataDir = Paths.get(dataDirStr).toAbsolutePath(); - } - - @Input - public Boolean getPreserveData() { - return preserveData; - } - - @Option(option = "preserve-data", description = "Preserves data directory contents (path provided to --data-dir is always preserved)") - public void setPreserveData(Boolean preserveData) { - this.preserveData = preserveData; - } - - @Option(option = "keystore-password", description = "Set the opensearch keystore password") - public void setKeystorePassword(String password) { - keystorePassword = password; - } - - @Input - @Optional - public String getKeystorePassword() { - return keystorePassword; - } - - @Input - @Optional - public String getDataDir() { - if (dataDir == null) { - return null; - } - return dataDir.toString(); - } - - @Override - public void beforeStart() { - int debugPort = 5005; - int httpPort = 9200; - int transportPort = 9300; - Map additionalSettings = System.getProperties() - .entrySet() - .stream() - .filter(entry -> entry.getKey().toString().startsWith(CUSTOM_SETTINGS_PREFIX)) - .collect( - Collectors.toMap( - entry -> entry.getKey().toString().substring(CUSTOM_SETTINGS_PREFIX.length()), - entry -> entry.getValue().toString() - ) - ); - boolean singleNode = getClusters().stream().flatMap(c -> c.getNodes().stream()).count() == 1; - final Function getDataPath; - if (singleNode) { - getDataPath = n -> dataDir; - } else { - getDataPath = n -> dataDir.resolve(n.getName()); - } - - for (OpenSearchCluster cluster : getClusters()) { - cluster.getFirstNode().setHttpPort(String.valueOf(httpPort)); - httpPort++; - cluster.getFirstNode().setTransportPort(String.valueOf(transportPort)); - transportPort++; - cluster.setPreserveDataDir(preserveData); - for (OpenSearchNode node : cluster.getNodes()) { - additionalSettings.forEach(node::setting); - if (dataDir != null) { - node.setDataPath(getDataPath.apply(node)); - } - if (debug) { - logger.lifecycle( - "Running opensearch in debug mode (client), {} expecting running debug server on port {}", - node, - debugPort - ); - node.jvmArgs("-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=" + debugPort); - debugPort += 1; - } else if (debugServer) { - logger.lifecycle("Running opensearch in debug mode (server), {} running server with debug port {}", node, debugPort); - node.jvmArgs("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=" + debugPort); - debugPort += 1; - } - if (keystorePassword.length() > 0) { - node.keystorePassword(keystorePassword); - } - } - } - } - - @TaskAction - public void runAndWait() throws IOException { - List toRead = new ArrayList<>(); - List aliveChecks = new ArrayList<>(); - try { - for (OpenSearchCluster cluster : getClusters()) { - for (OpenSearchNode node : cluster.getNodes()) { - BufferedReader reader = Files.newBufferedReader(node.getOpensearchStdoutFile()); - toRead.add(reader); - aliveChecks.add(node::isProcessAlive); - } - } - - while (Thread.currentThread().isInterrupted() == false) { - boolean readData = false; - for (BufferedReader bufferedReader : toRead) { - if (bufferedReader.ready()) { - readData = true; - logger.lifecycle(bufferedReader.readLine()); - } - } - - if (aliveChecks.stream().allMatch(BooleanSupplier::getAsBoolean) == false) { - throw new GradleException("OpenSearch cluster died"); - } - - if (readData == false) { - // no data was ready to be consumed and rather than continuously spinning, pause - // for some time to avoid excessive CPU usage. Ideally we would use the JDK - // WatchService to receive change notifications but the WatchService does not have - // a native MacOS implementation and instead relies upon polling with possible - // delays up to 10s before a notification is received. See JDK-7133447. - try { - Thread.sleep(100L); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - return; - } - } - } - } finally { - Exception thrown = null; - for (Closeable closeable : toRead) { - try { - closeable.close(); - } catch (Exception e) { - if (thrown == null) { - thrown = e; - } else { - thrown.addSuppressed(e); - } - } - } - - if (thrown != null) { - logger.debug("exception occurred during close of stdout file readers", thrown); - } - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.java deleted file mode 100644 index bf17daa6e2e6f..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/StandaloneRestIntegTestTask.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import groovy.lang.Closure; -import org.opensearch.gradle.FileSystemOperationsAware; -import org.opensearch.gradle.test.Fixture; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.Task; -import org.gradle.api.provider.Provider; -import org.gradle.api.services.internal.BuildServiceRegistryInternal; -import org.gradle.api.tasks.CacheableTask; -import org.gradle.api.tasks.Internal; -import org.gradle.api.tasks.Nested; -import org.gradle.api.tasks.WorkResult; -import org.gradle.api.tasks.testing.Test; -import org.gradle.internal.resources.ResourceLock; -import org.gradle.internal.resources.SharedResource; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; - -/** - * Customized version of Gradle {@link Test} task which tracks a collection of {@link OpenSearchCluster} as a task input. We must do this - * as a custom task type because the current {@link org.gradle.api.tasks.TaskInputs} runtime API does not have a way to register - * {@link Nested} inputs. - */ -@CacheableTask -public class StandaloneRestIntegTestTask extends Test implements TestClustersAware, FileSystemOperationsAware { - - private Collection clusters = new HashSet<>(); - private Closure beforeStart; - - public StandaloneRestIntegTestTask() { - this.getOutputs() - .doNotCacheIf( - "Caching disabled for this task since it uses a cluster shared by other tasks", - /* - * Look for any other tasks which use the same cluster as this task. Since tests often have side effects for the cluster - * they execute against, this state can cause issues when trying to cache tests results of tasks that share a cluster. To - * avoid any undesired behavior we simply disable the cache if we detect that this task uses a cluster shared between - * multiple tasks. - */ - t -> getProject().getTasks() - .withType(StandaloneRestIntegTestTask.class) - .stream() - .filter(task -> task != this) - .anyMatch(task -> Collections.disjoint(task.getClusters(), getClusters()) == false) - ); - - this.getOutputs() - .doNotCacheIf( - "Caching disabled for this task since it is configured to preserve data directory", - // Don't cache the output of this task if it's not running from a clean data directory. - t -> getClusters().stream().anyMatch(cluster -> cluster.isPreserveDataDir()) - ); - } - - // Hook for executing any custom logic before starting the task. - public void setBeforeStart(Closure closure) { - beforeStart = closure; - } - - @Override - public void beforeStart() { - if (beforeStart != null) { - beforeStart.call(this); - } - } - - @Override - public int getMaxParallelForks() { - return 1; - } - - @Nested - @Override - public Collection getClusters() { - return clusters; - } - - @Override - @Internal - public List getSharedResources() { - List locks = new ArrayList<>(super.getSharedResources()); - BuildServiceRegistryInternal serviceRegistry = getServices().get(BuildServiceRegistryInternal.class); - Provider throttleProvider = GradleUtils.getBuildService( - serviceRegistry, - TestClustersPlugin.THROTTLE_SERVICE_NAME - ); - SharedResource resource = serviceRegistry.forService(throttleProvider); - - int nodeCount = clusters.stream().mapToInt(cluster -> cluster.getNodes().size()).sum(); - if (nodeCount > 0) { - locks.add(resource.getResourceLock(Math.min(nodeCount, resource.getMaxUsages()))); - } - - return Collections.unmodifiableList(locks); - } - - @Override - public Task dependsOn(Object... dependencies) { - super.dependsOn(dependencies); - for (Object dependency : dependencies) { - if (dependency instanceof Fixture) { - finalizedBy(((Fixture) dependency).getStopTask()); - } - } - return this; - } - - @Override - public void setDependsOn(Iterable dependencies) { - super.setDependsOn(dependencies); - for (Object dependency : dependencies) { - if (dependency instanceof Fixture) { - finalizedBy(((Fixture) dependency).getStopTask()); - } - } - } - - public WorkResult delete(Object... objects) { - return getFileSystemOperations().delete(d -> d.delete(objects)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClusterConfiguration.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClusterConfiguration.java deleted file mode 100644 index b27f205291269..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClusterConfiguration.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.opensearch.gradle.FileSupplier; -import org.opensearch.gradle.PropertyNormalization; -import org.gradle.api.file.RegularFile; -import org.gradle.api.logging.Logging; -import org.gradle.api.provider.Provider; -import org.slf4j.Logger; - -import java.io.File; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.TimeUnit; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; - -public interface TestClusterConfiguration { - - void setVersion(String version); - - void setVersions(List version); - - void setTestDistribution(TestDistribution distribution); - - void plugin(Provider plugin); - - void plugin(String pluginProjectPath); - - void upgradePlugin(List> plugins); - - void module(Provider module); - - void module(String moduleProjectPath); - - void keystore(String key, String value); - - void keystore(String key, Supplier valueSupplier); - - void keystore(String key, File value); - - void keystore(String key, File value, PropertyNormalization normalization); - - void keystore(String key, FileSupplier valueSupplier); - - void keystorePassword(String password); - - void cliSetup(String binTool, CharSequence... args); - - void setting(String key, String value); - - void setting(String key, String value, PropertyNormalization normalization); - - void setting(String key, Supplier valueSupplier); - - void setting(String key, Supplier valueSupplier, PropertyNormalization normalization); - - void systemProperty(String key, String value); - - void systemProperty(String key, Supplier valueSupplier); - - void systemProperty(String key, Supplier valueSupplier, PropertyNormalization normalization); - - void environment(String key, String value); - - void environment(String key, Supplier valueSupplier); - - void environment(String key, Supplier valueSupplier, PropertyNormalization normalization); - - void jvmArgs(String... values); - - boolean isPreserveDataDir(); - - void setPreserveDataDir(boolean preserveDataDir); - - void freeze(); - - void start(); - - void restart(); - - void extraConfigFile(String destination, File from); - - void extraConfigFile(String destination, File from, PropertyNormalization normalization); - - void extraJarFile(File from); - - void user(Map userSpec); - - String getHttpSocketURI(); - - String getTransportPortURI(); - - List getAllHttpSocketURI(); - - List getAllTransportPortURI(); - - void stop(boolean tailLogs); - - void setNameCustomization(Function nameSupplier); - - default void waitForConditions( - LinkedHashMap> waitConditions, - long startedAtMillis, - long nodeUpTimeout, - TimeUnit nodeUpTimeoutUnit, - TestClusterConfiguration context - ) { - Logger logger = Logging.getLogger(TestClusterConfiguration.class); - waitConditions.forEach((description, predicate) -> { - long thisConditionStartedAt = System.currentTimeMillis(); - boolean conditionMet = false; - Throwable lastException = null; - while (System.currentTimeMillis() - startedAtMillis < TimeUnit.MILLISECONDS.convert(nodeUpTimeout, nodeUpTimeoutUnit)) { - if (context.isProcessAlive() == false) { - throw new TestClustersException("process was found dead while waiting for " + description + ", " + this); - } - - try { - if (predicate.test(context)) { - conditionMet = true; - break; - } - } catch (TestClustersException e) { - throw e; - } catch (Exception e) { - lastException = e; - } - } - if (conditionMet == false) { - String message = String.format( - "`%s` failed to wait for %s after %d %s", - context, - description, - nodeUpTimeout, - nodeUpTimeoutUnit - ); - if (lastException == null) { - throw new TestClustersException(message); - } else { - String extraCause = ""; - Throwable cause = lastException; - while (cause != null) { - if (cause.getMessage() != null && cause.getMessage().isEmpty() == false) { - extraCause += "\n" + " " + cause.getMessage(); - } - cause = cause.getCause(); - } - throw new TestClustersException(message + extraCause, lastException); - } - } - logger.info("{}: {} took {} seconds", this, description, (System.currentTimeMillis() - thisConditionStartedAt) / 1000.0); - }); - } - - default String safeName(String name) { - return name.replaceAll("^[^a-zA-Z0-9]+", "").replaceAll("[^a-zA-Z0-9\\.]+", "-"); - } - - boolean isProcessAlive(); -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersAware.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersAware.java deleted file mode 100644 index e5d264121b0aa..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersAware.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.opensearch.gradle.Jdk; -import org.gradle.api.Task; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.tasks.Nested; - -import java.util.Collection; -import java.util.concurrent.Callable; - -public interface TestClustersAware extends Task { - - @Nested - Collection getClusters(); - - default void useCluster(OpenSearchCluster cluster) { - if (cluster.getPath().equals(getProject().getPath()) == false) { - throw new TestClustersException("Task " + getPath() + " can't use test cluster from" + " another project " + cluster); - } - - // Add configured distributions as task dependencies so they are built before starting the cluster - cluster.getNodes().stream().flatMap(node -> node.getDistributions().stream()).forEach(distro -> dependsOn(distro.getExtracted())); - - // Add legacy BWC JDK runtime as a dependency so it's downloaded before starting the cluster if necessary - cluster.getNodes().stream().map(node -> (Callable) node::getBwcJdk).forEach(this::dependsOn); - - cluster.getNodes().forEach(node -> dependsOn((Callable>) node::getPluginAndModuleConfigurations)); - getClusters().add(cluster); - } - - default void beforeStart() {} - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersException.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersException.java deleted file mode 100644 index 2aae205088191..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersException.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -class TestClustersException extends RuntimeException { - TestClustersException(String message) { - super(message); - } - - TestClustersException(String message, Throwable cause) { - super(message, cause); - } - - TestClustersException(Throwable cause) { - super(cause); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersPlugin.java deleted file mode 100644 index 2ef14a39b6669..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersPlugin.java +++ /dev/null @@ -1,236 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.opensearch.gradle.Architecture; -import org.opensearch.gradle.DistributionDownloadPlugin; -import org.opensearch.gradle.Jdk; -import org.opensearch.gradle.JdkDownloadPlugin; -import org.opensearch.gradle.OS; -import org.opensearch.gradle.ReaperPlugin; -import org.opensearch.gradle.ReaperService; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.opensearch.gradle.internal.InternalDistributionDownloadPlugin; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.execution.TaskActionListener; -import org.gradle.api.execution.TaskExecutionListener; -import org.gradle.api.file.ArchiveOperations; -import org.gradle.api.file.FileSystemOperations; -import org.gradle.api.invocation.Gradle; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.TaskState; - -import javax.inject.Inject; -import java.io.File; - -import static org.opensearch.gradle.util.GradleUtils.noop; - -public class TestClustersPlugin implements Plugin { - - public static final String EXTENSION_NAME = "testClusters"; - public static final String THROTTLE_SERVICE_NAME = "testClustersThrottle"; - - private static final String LIST_TASK_NAME = "listTestClusters"; - private static final String REGISTRY_SERVICE_NAME = "testClustersRegistry"; - private static final String LEGACY_JAVA_VENDOR = "adoptopenjdk"; - private static final String LEGACY_JAVA_VERSION = "8u242+b08"; - private static final Logger logger = Logging.getLogger(TestClustersPlugin.class); - - @Inject - protected FileSystemOperations getFileSystemOperations() { - throw new UnsupportedOperationException(); - } - - @Inject - protected ArchiveOperations getArchiveOperations() { - throw new UnsupportedOperationException(); - } - - @Override - public void apply(Project project) { - project.getPluginManager().apply(JdkDownloadPlugin.class); - project.getRootProject().getPluginManager().apply(GlobalBuildInfoPlugin.class); - if (BuildParams.isInternal()) { - project.getPlugins().apply(InternalDistributionDownloadPlugin.class); - } else { - project.getPlugins().apply(DistributionDownloadPlugin.class); - } - project.getRootProject().getPluginManager().apply(ReaperPlugin.class); - - ReaperService reaper = project.getRootProject().getExtensions().getByType(ReaperService.class); - - // register legacy jdk distribution for testing pre-7.0 BWC clusters - Jdk bwcJdk = JdkDownloadPlugin.getContainer(project).create("bwc_jdk", jdk -> { - jdk.setVendor(LEGACY_JAVA_VENDOR); - jdk.setVersion(LEGACY_JAVA_VERSION); - jdk.setPlatform(OS.current().name().toLowerCase()); - jdk.setArchitecture(Architecture.current().name().toLowerCase()); - }); - - // enable the DSL to describe clusters - NamedDomainObjectContainer container = createTestClustersContainerExtension(project, reaper, bwcJdk); - - // provide a task to be able to list defined clusters. - createListClustersTask(project, container); - - // register cluster registry as a global build service - project.getGradle().getSharedServices().registerIfAbsent(REGISTRY_SERVICE_NAME, TestClustersRegistry.class, noop()); - - // register throttle so we only run at most max-workers/2 nodes concurrently - project.getGradle() - .getSharedServices() - .registerIfAbsent( - THROTTLE_SERVICE_NAME, - TestClustersThrottle.class, - spec -> spec.getMaxParallelUsages().set(Math.max(1, project.getGradle().getStartParameter().getMaxWorkerCount() / 2)) - ); - - // register cluster hooks - project.getRootProject().getPluginManager().apply(TestClustersHookPlugin.class); - } - - private NamedDomainObjectContainer createTestClustersContainerExtension( - Project project, - ReaperService reaper, - Jdk bwcJdk - ) { - // Create an extensions that allows describing clusters - NamedDomainObjectContainer container = project.container( - OpenSearchCluster.class, - name -> new OpenSearchCluster( - name, - project, - reaper, - new File(project.getBuildDir(), "testclusters"), - getFileSystemOperations(), - getArchiveOperations(), - bwcJdk - ) - ); - project.getExtensions().add(EXTENSION_NAME, container); - return container; - } - - private void createListClustersTask(Project project, NamedDomainObjectContainer container) { - // Task is never up to date so we can pass an lambda for the task action - project.getTasks().register(LIST_TASK_NAME, task -> { - task.setGroup("OpenSearch cluster formation"); - task.setDescription("Lists all OpenSearch clusters configured for this project"); - task.doLast( - (Task t) -> container.forEach(cluster -> logger.lifecycle(" * {}: {}", cluster.getName(), cluster.getNumberOfNodes())) - ); - }); - - } - - static class TestClustersHookPlugin implements Plugin { - @Override - public void apply(Project project) { - if (project != project.getRootProject()) { - throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project."); - } - - Provider registryProvider = GradleUtils.getBuildService( - project.getGradle().getSharedServices(), - REGISTRY_SERVICE_NAME - ); - TestClustersRegistry registry = registryProvider.get(); - - // When we know what tasks will run, we claim the clusters of those task to differentiate between clusters - // that are defined in the build script and the ones that will actually be used in this invocation of gradle - // we use this information to determine when the last task that required the cluster executed so that we can - // terminate the cluster right away and free up resources. - configureClaimClustersHook(project.getGradle(), registry); - - // Before each task, we determine if a cluster needs to be started for that task. - configureStartClustersHook(project.getGradle(), registry); - - // After each task we determine if there are clusters that are no longer needed. - configureStopClustersHook(project.getGradle(), registry); - } - - private static void configureClaimClustersHook(Gradle gradle, TestClustersRegistry registry) { - // Once we know all the tasks that need to execute, we claim all the clusters that belong to those and count the - // claims so we'll know when it's safe to stop them. - gradle.getTaskGraph().whenReady(taskExecutionGraph -> { - taskExecutionGraph.getAllTasks() - .stream() - .filter(task -> task instanceof TestClustersAware) - .map(task -> (TestClustersAware) task) - .flatMap(task -> task.getClusters().stream()) - .forEach(registry::claimCluster); - }); - } - - private static void configureStartClustersHook(Gradle gradle, TestClustersRegistry registry) { - gradle.addListener(new TaskActionListener() { - @Override - public void beforeActions(Task task) { - if (task instanceof TestClustersAware == false) { - return; - } - // we only start the cluster before the actions, so we'll not start it if the task is up-to-date - TestClustersAware awareTask = (TestClustersAware) task; - awareTask.beforeStart(); - awareTask.getClusters().forEach(registry::maybeStartCluster); - } - - @Override - public void afterActions(Task task) {} - }); - } - - private static void configureStopClustersHook(Gradle gradle, TestClustersRegistry registry) { - gradle.addListener(new TaskExecutionListener() { - @Override - public void afterExecute(Task task, TaskState state) { - if (task instanceof TestClustersAware == false) { - return; - } - // always unclaim the cluster, even if _this_ task is up-to-date, as others might not have been - // and caused the cluster to start. - ((TestClustersAware) task).getClusters().forEach(cluster -> registry.stopCluster(cluster, state.getFailure() != null)); - } - - @Override - public void beforeExecute(Task task) {} - }); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersRegistry.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersRegistry.java deleted file mode 100644 index 73e0a84470ec9..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersRegistry.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.services.BuildService; -import org.gradle.api.services.BuildServiceParameters; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; - -public abstract class TestClustersRegistry implements BuildService { - private static final Logger logger = Logging.getLogger(TestClustersRegistry.class); - private static final String TESTCLUSTERS_INSPECT_FAILURE = "testclusters.inspect.failure"; - private final Boolean allowClusterToSurvive = Boolean.valueOf(System.getProperty(TESTCLUSTERS_INSPECT_FAILURE, "false")); - private final Map claimsInventory = new HashMap<>(); - private final Set runningClusters = new HashSet<>(); - - public void claimCluster(OpenSearchCluster cluster) { - cluster.freeze(); - claimsInventory.put(cluster, claimsInventory.getOrDefault(cluster, 0) + 1); - } - - public void maybeStartCluster(OpenSearchCluster cluster) { - if (runningClusters.contains(cluster)) { - return; - } - runningClusters.add(cluster); - cluster.start(); - } - - public void stopCluster(OpenSearchCluster cluster, boolean taskFailed) { - if (taskFailed) { - // If the task fails, and other tasks use this cluster, the other task will likely never be - // executed at all, so we will never be called again to un-claim and terminate it. - if (allowClusterToSurvive) { - logger.info("Not stopping clusters, disabled by property"); - // task failed or this is the last one to stop - for (int i = 1;; i += i) { - logger.lifecycle( - "No more test clusters left to run, going to sleep because {} was set," + " interrupt (^C) to stop clusters.", - TESTCLUSTERS_INSPECT_FAILURE - ); - try { - Thread.sleep(1000 * i); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - return; - } - } - } else { - cluster.stop(true); - runningClusters.remove(cluster); - } - } else { - int currentClaims = claimsInventory.getOrDefault(cluster, 0) - 1; - claimsInventory.put(cluster, currentClaims); - - if (currentClaims <= 0 && runningClusters.contains(cluster)) { - cluster.stop(false); - runningClusters.remove(cluster); - } - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersThrottle.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersThrottle.java deleted file mode 100644 index efb4eb4b075ae..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestClustersThrottle.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -import org.gradle.api.services.BuildService; -import org.gradle.api.services.BuildServiceParameters; - -public abstract class TestClustersThrottle implements BuildService {} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestDistribution.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestDistribution.java deleted file mode 100644 index 660d402ff6ffd..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/TestDistribution.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testclusters; - -/** - * An enumeration of the distributions that may be used in test clusters. - */ -public enum TestDistribution { - INTEG_TEST, - ARCHIVE -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/DockerComposeThrottle.java b/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/DockerComposeThrottle.java deleted file mode 100644 index afadc254fcbef..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/DockerComposeThrottle.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testfixtures; - -import org.gradle.api.services.BuildService; -import org.gradle.api.services.BuildServiceParameters; - -public abstract class DockerComposeThrottle implements BuildService {} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixtureExtension.java b/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixtureExtension.java deleted file mode 100644 index 57a74322774a1..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixtureExtension.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testfixtures; - -import org.gradle.api.GradleException; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Project; - -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -public class TestFixtureExtension { - - private final Project project; - final NamedDomainObjectContainer fixtures; - final Map serviceToProjectUseMap = new HashMap<>(); - - public TestFixtureExtension(Project project) { - this.project = project; - this.fixtures = project.container(Project.class); - } - - public void useFixture() { - useFixture(this.project.getPath()); - } - - public void useFixture(String path) { - addFixtureProject(path); - serviceToProjectUseMap.put(path, this.project.getPath()); - } - - public void useFixture(String path, String serviceName) { - addFixtureProject(path); - String key = getServiceNameKey(path, serviceName); - serviceToProjectUseMap.put(key, this.project.getPath()); - - Optional otherProject = this.findOtherProjectUsingService(key); - if (otherProject.isPresent()) { - String exceptionMessage = String.format( - "Projects %s and %s both claim the %s service defined in the docker-compose.yml of %s. This is not supported because it " - + "breaks running in parallel. Configure dedicated services for each project and use those instead.", - otherProject.get(), - this.project.getPath(), - serviceName, - path - ); - - throw new GradleException(exceptionMessage); - } - } - - private String getServiceNameKey(String fixtureProjectPath, String serviceName) { - return fixtureProjectPath + "::" + serviceName; - } - - private Optional findOtherProjectUsingService(String serviceName) { - return this.project.getRootProject() - .getAllprojects() - .stream() - .filter(p -> p.equals(this.project) == false) - .filter(p -> p.getExtensions().findByType(TestFixtureExtension.class) != null) - .map(project -> project.getExtensions().getByType(TestFixtureExtension.class)) - .flatMap(ext -> ext.serviceToProjectUseMap.entrySet().stream()) - .filter(entry -> entry.getKey().equals(serviceName)) - .map(Map.Entry::getValue) - .findAny(); - } - - private void addFixtureProject(String path) { - Project fixtureProject = this.project.findProject(path); - if (fixtureProject == null) { - throw new IllegalArgumentException("Could not find test fixture " + fixtureProject); - } - if (fixtureProject.file(TestFixturesPlugin.DOCKER_COMPOSE_YML).exists() == false) { - throw new IllegalArgumentException( - "Project " + path + " is not a valid test fixture: missing " + TestFixturesPlugin.DOCKER_COMPOSE_YML - ); - } - fixtures.add(fixtureProject); - // Check for exclusive access - Optional otherProject = this.findOtherProjectUsingService(path); - if (otherProject.isPresent()) { - final String exceptionMessage = String.format( - "Projects %s and %s both claim all services from %s. This is not supported because it breaks running in parallel. " - + "Configure specific services in docker-compose.yml for each and add the service name to `useFixture`", - otherProject.get(), - this.project.getPath(), - path - ); - - throw new GradleException(exceptionMessage); - } - } - - boolean isServiceRequired(String serviceName, String fixtureProject) { - if (serviceToProjectUseMap.containsKey(fixtureProject)) { - return true; - } - return serviceToProjectUseMap.containsKey(getServiceNameKey(fixtureProject, serviceName)); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixturesPlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixturesPlugin.java deleted file mode 100644 index 1902f673dc653..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/testfixtures/TestFixturesPlugin.java +++ /dev/null @@ -1,266 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testfixtures; - -import com.avast.gradle.dockercompose.ComposeExtension; -import com.avast.gradle.dockercompose.DockerComposePlugin; -import com.avast.gradle.dockercompose.ServiceInfo; -import com.avast.gradle.dockercompose.tasks.ComposeDown; -import com.avast.gradle.dockercompose.tasks.ComposePull; -import com.avast.gradle.dockercompose.tasks.ComposeUp; -import org.opensearch.gradle.SystemPropertyCommandLineArgumentProvider; -import org.opensearch.gradle.docker.DockerSupportPlugin; -import org.opensearch.gradle.docker.DockerSupportService; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.precommit.TestingConventionsTasks; -import org.opensearch.gradle.util.GradleUtils; -import org.gradle.api.Action; -import org.gradle.api.DefaultTask; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.file.FileSystemOperations; -import org.gradle.api.logging.Logger; -import org.gradle.api.logging.Logging; -import org.gradle.api.plugins.BasePlugin; -import org.gradle.api.plugins.ExtraPropertiesExtension; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.TaskContainer; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.testing.Test; -import org.apache.tools.ant.taskdefs.condition.Os; - -import javax.inject.Inject; -import java.io.File; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.nio.file.Files; -import java.util.Arrays; -import java.util.Collections; -import java.util.function.BiConsumer; -import java.util.Optional; - -public class TestFixturesPlugin implements Plugin { - - private static final Logger LOGGER = Logging.getLogger(TestFixturesPlugin.class); - private static final String DOCKER_COMPOSE_THROTTLE = "dockerComposeThrottle"; - static final String DOCKER_COMPOSE_YML = "docker-compose.yml"; - - private static String[] DOCKER_COMPOSE_BINARIES_UNIX = { "/usr/local/bin/docker-compose", "/usr/bin/docker-compose" }; - - private static String[] DOCKER_COMPOSE_BINARIES_WINDOWS = { - System.getenv("PROGRAMFILES") + "\\Docker\\Docker\\resources\\bin\\docker-compose.exe" }; - - private static String[] DOCKER_COMPOSE_BINARIES = Os.isFamily(Os.FAMILY_WINDOWS) - ? DOCKER_COMPOSE_BINARIES_WINDOWS - : DOCKER_COMPOSE_BINARIES_UNIX; - - @Inject - protected FileSystemOperations getFileSystemOperations() { - throw new UnsupportedOperationException(); - } - - @Override - public void apply(Project project) { - project.getRootProject().getPluginManager().apply(DockerSupportPlugin.class); - - TaskContainer tasks = project.getTasks(); - TestFixtureExtension extension = project.getExtensions().create("testFixtures", TestFixtureExtension.class, project); - Provider dockerComposeThrottle = project.getGradle() - .getSharedServices() - .registerIfAbsent(DOCKER_COMPOSE_THROTTLE, DockerComposeThrottle.class, spec -> spec.getMaxParallelUsages().set(1)); - - Provider dockerSupport = GradleUtils.getBuildService( - project.getGradle().getSharedServices(), - DockerSupportPlugin.DOCKER_SUPPORT_SERVICE_NAME - ); - - ExtraPropertiesExtension ext = project.getExtensions().getByType(ExtraPropertiesExtension.class); - File testfixturesDir = project.file("testfixtures_shared"); - ext.set("testFixturesDir", testfixturesDir); - - if (project.file(DOCKER_COMPOSE_YML).exists()) { - project.getPluginManager().apply(BasePlugin.class); - project.getPluginManager().apply(DockerComposePlugin.class); - - TaskProvider preProcessFixture = project.getTasks().register("preProcessFixture", t -> { - t.getOutputs().dir(testfixturesDir); - t.doFirst(t2 -> { - try { - Files.createDirectories(testfixturesDir.toPath()); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - }); - }); - TaskProvider buildFixture = project.getTasks() - .register("buildFixture", t -> t.dependsOn(preProcessFixture, tasks.named("composeUp"))); - - TaskProvider postProcessFixture = project.getTasks().register("postProcessFixture", task -> { - task.dependsOn(buildFixture); - configureServiceInfoForTask( - task, - project, - false, - (name, port) -> task.getExtensions().getByType(ExtraPropertiesExtension.class).set(name, port) - ); - }); - - maybeSkipTask(dockerSupport, preProcessFixture); - maybeSkipTask(dockerSupport, postProcessFixture); - maybeSkipTask(dockerSupport, buildFixture); - - ComposeExtension composeExtension = project.getExtensions().getByType(ComposeExtension.class); - composeExtension.getUseComposeFiles().set(Collections.singletonList(DOCKER_COMPOSE_YML)); - composeExtension.getRemoveContainers().set(true); - - Optional dockerCompose = Arrays.asList(DOCKER_COMPOSE_BINARIES) - .stream() - .filter(path -> project.file(path).exists()) - .findFirst(); - - composeExtension.getExecutable().set(dockerCompose.isPresent() ? dockerCompose.get() : "/usr/bin/docker"); - - tasks.named("composeUp").configure(t -> { - // Avoid running docker-compose tasks in parallel in CI due to some issues on certain Linux distributions - if (BuildParams.isCi()) { - t.usesService(dockerComposeThrottle); - } - t.mustRunAfter(preProcessFixture); - }); - tasks.named("composePull").configure(t -> t.mustRunAfter(preProcessFixture)); - tasks.named("composeDown").configure(t -> t.doLast(t2 -> getFileSystemOperations().delete(d -> d.delete(testfixturesDir)))); - } else { - project.afterEvaluate(spec -> { - if (extension.fixtures.isEmpty()) { - // if only one fixture is used, that's this one, but without a compose file that's not a valid configuration - throw new IllegalStateException( - "No " + DOCKER_COMPOSE_YML + " found for " + project.getPath() + " nor does it use other fixtures." - ); - } - }); - } - - extension.fixtures.matching(fixtureProject -> fixtureProject.equals(project) == false) - .all(fixtureProject -> project.evaluationDependsOn(fixtureProject.getPath())); - - // Skip docker compose tasks if it is unavailable - maybeSkipTasks(tasks, dockerSupport, Test.class); - maybeSkipTasks(tasks, dockerSupport, getTaskClass("org.opensearch.gradle.test.RestIntegTestTask")); - maybeSkipTasks(tasks, dockerSupport, TestingConventionsTasks.class); - maybeSkipTasks(tasks, dockerSupport, getTaskClass("org.opensearch.gradle.test.AntFixture")); - maybeSkipTasks(tasks, dockerSupport, ComposeUp.class); - maybeSkipTasks(tasks, dockerSupport, ComposePull.class); - maybeSkipTasks(tasks, dockerSupport, ComposeDown.class); - - tasks.withType(Test.class).configureEach(task -> extension.fixtures.all(fixtureProject -> { - task.dependsOn(fixtureProject.getTasks().named("postProcessFixture")); - task.finalizedBy(fixtureProject.getTasks().named("composeDown")); - configureServiceInfoForTask( - task, - fixtureProject, - true, - (name, host) -> task.getExtensions().getByType(SystemPropertyCommandLineArgumentProvider.class).systemProperty(name, host) - ); - })); - } - - private void maybeSkipTasks(TaskContainer tasks, Provider dockerSupport, Class taskClass) { - tasks.withType(taskClass).configureEach(t -> maybeSkipTask(dockerSupport, t)); - } - - private void maybeSkipTask(Provider dockerSupport, TaskProvider task) { - task.configure(t -> maybeSkipTask(dockerSupport, t)); - } - - private void maybeSkipTask(Provider dockerSupport, Task task) { - task.onlyIf(spec -> { - boolean isComposeAvailable = dockerSupport.get().getDockerAvailability().isComposeAvailable; - if (isComposeAvailable == false) { - LOGGER.info("Task {} requires docker-compose but it is unavailable. Task will be skipped.", task.getPath()); - } - return isComposeAvailable; - }); - } - - private void configureServiceInfoForTask( - Task task, - Project fixtureProject, - boolean enableFilter, - BiConsumer consumer - ) { - // Configure ports for the tests as system properties. - // We only know these at execution time so we need to do it in doFirst - task.doFirst(new Action() { - @Override - public void execute(Task theTask) { - TestFixtureExtension extension = theTask.getProject().getExtensions().getByType(TestFixtureExtension.class); - - fixtureProject.getExtensions() - .getByType(ComposeExtension.class) - .getServicesInfos() - .entrySet() - .stream() - .filter(entry -> enableFilter == false || extension.isServiceRequired(entry.getKey(), fixtureProject.getPath())) - .forEach(entry -> { - String service = entry.getKey(); - ServiceInfo infos = entry.getValue(); - infos.getTcpPorts().forEach((container, host) -> { - String name = "test.fixtures." + service + ".tcp." + container; - theTask.getLogger().info("port mapping property: {}={}", name, host); - consumer.accept(name, host); - }); - infos.getUdpPorts().forEach((container, host) -> { - String name = "test.fixtures." + service + ".udp." + container; - theTask.getLogger().info("port mapping property: {}={}", name, host); - consumer.accept(name, host); - }); - }); - } - }); - } - - @SuppressWarnings("unchecked") - private Class getTaskClass(String type) { - Class aClass; - try { - aClass = Class.forName(type); - if (DefaultTask.class.isAssignableFrom(aClass) == false) { - throw new IllegalArgumentException("Not a task type: " + type); - } - } catch (ClassNotFoundException e) { - throw new IllegalArgumentException("No such task: " + type); - } - return (Class) aClass; - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java b/buildSrc/src/main/java/org/opensearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java deleted file mode 100644 index 4b3e92e23925e..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/transform/SymbolicLinkPreservingUntarTransform.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.transform; - -import org.apache.commons.compress.archivers.tar.TarArchiveEntry; -import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; -import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; -import org.gradle.api.logging.Logging; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.function.Function; - -import static org.opensearch.gradle.util.PermissionUtils.chmod; - -public abstract class SymbolicLinkPreservingUntarTransform implements UnpackTransform { - - private static final Path CURRENT_DIR_PATH = Paths.get("."); - - public void unpack(File tarFile, File targetDir) throws IOException { - Logging.getLogger(SymbolicLinkPreservingUntarTransform.class) - .info("Unpacking " + tarFile.getName() + " using " + SymbolicLinkPreservingUntarTransform.class.getSimpleName() + "."); - Function pathModifier = pathResolver(); - - try ( - FileInputStream fis = new FileInputStream(tarFile); - GzipCompressorInputStream gzip = new GzipCompressorInputStream(fis); - TarArchiveInputStream tar = new TarArchiveInputStream(gzip) - ) { - final Path destinationPath = targetDir.toPath(); - TarArchiveEntry entry = tar.getNextTarEntry(); - while (entry != null) { - final Path relativePath = pathModifier.apply(entry.getName()); - if (relativePath == null || relativePath.getFileName().equals(CURRENT_DIR_PATH)) { - entry = tar.getNextTarEntry(); - continue; - } - - final Path destination = destinationPath.resolve(relativePath); - final Path parent = destination.getParent(); - if (Files.exists(parent) == false) { - Files.createDirectories(parent); - } - if (entry.isDirectory()) { - Files.createDirectory(destination); - } else if (entry.isSymbolicLink()) { - Files.createSymbolicLink(destination, Paths.get(entry.getLinkName())); - } else { - // copy the file from the archive using a small buffer to avoid heaping - Files.createFile(destination); - try (FileOutputStream fos = new FileOutputStream(destination.toFile())) { - byte[] buffer = new byte[4096]; - int len; - while ((len = tar.read(buffer)) > 0) { - fos.write(buffer, 0, len); - } - } - } - if (entry.isSymbolicLink() == false) { - // check if the underlying file system supports POSIX permissions - chmod(destination, entry.getMode()); - } - entry = tar.getNextTarEntry(); - } - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/transform/UnpackTransform.java b/buildSrc/src/main/java/org/opensearch/gradle/transform/UnpackTransform.java deleted file mode 100644 index ba654ab46f551..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/transform/UnpackTransform.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.transform; - -import org.gradle.api.artifacts.transform.InputArtifact; -import org.gradle.api.artifacts.transform.TransformAction; -import org.gradle.api.artifacts.transform.TransformOutputs; -import org.gradle.api.artifacts.transform.TransformParameters; -import org.gradle.api.file.FileSystemLocation; -import org.gradle.api.provider.Provider; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.Optional; -import org.gradle.api.tasks.PathSensitive; -import org.gradle.api.tasks.PathSensitivity; -import org.gradle.internal.UncheckedException; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.function.Function; - -public interface UnpackTransform extends TransformAction { - - interface Parameters extends TransformParameters { - @Input - @Optional - String getTrimmedPrefixPattern(); - - void setTrimmedPrefixPattern(String pattern); - } - - @PathSensitive(PathSensitivity.NAME_ONLY) - @InputArtifact - Provider getArchiveFile(); - - @Override - default void transform(TransformOutputs outputs) { - File archiveFile = getArchiveFile().get().getAsFile(); - File extractedDir = outputs.dir(archiveFile.getName()); - try { - unpack(archiveFile, extractedDir); - } catch (IOException e) { - throw UncheckedException.throwAsUncheckedException(e); - } - } - - void unpack(File archiveFile, File targetDir) throws IOException; - - default Function pathResolver() { - String trimmedPrefixPattern = getParameters().getTrimmedPrefixPattern(); - return trimmedPrefixPattern != null ? (i) -> trimArchiveExtractPath(trimmedPrefixPattern, i) : (i) -> Paths.get(i); - } - - /* - * We want to be able to trim off certain prefixes when transforming archives. - * - * E.g We want to remove up to the and including the jdk-.* relative paths. That is a JDK archive is structured as: - * jdk-12.0.1/ - * jdk-12.0.1/Contents - * ... - * - * and we want to remove the leading jdk-12.0.1. Note however that there could also be a leading ./ as in - * ./ - * ./jdk-12.0.1/ - * ./jdk-12.0.1/Contents - * - * so we account for this and search the path components until we find the jdk-12.0.1, and strip the leading components. - */ - static Path trimArchiveExtractPath(String ignoredPattern, String relativePath) { - final Path entryName = Paths.get(relativePath); - int index = 0; - for (; index < entryName.getNameCount(); index++) { - if (entryName.getName(index).toString().matches(ignoredPattern)) { - break; - } - } - if (index + 1 >= entryName.getNameCount()) { - // this happens on the top-level directories in the archive, which we are removing - return null; - } - // finally remove the top-level directories from the output path - return entryName.subpath(index + 1, entryName.getNameCount()); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/transform/UnzipTransform.java b/buildSrc/src/main/java/org/opensearch/gradle/transform/UnzipTransform.java deleted file mode 100644 index e4e090390ef7d..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/transform/UnzipTransform.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.transform; - -import org.apache.commons.io.IOUtils; -import org.apache.tools.zip.ZipEntry; -import org.apache.tools.zip.ZipFile; -import org.gradle.api.logging.Logging; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.nio.file.Path; -import java.util.Enumeration; -import java.util.function.Function; - -import static org.opensearch.gradle.util.PermissionUtils.chmod; - -public abstract class UnzipTransform implements UnpackTransform { - - public void unpack(File zipFile, File targetDir) throws IOException { - Logging.getLogger(UnzipTransform.class) - .info("Unpacking " + zipFile.getName() + " using " + UnzipTransform.class.getSimpleName() + "."); - Function pathModifier = pathResolver(); - ZipFile zip = new ZipFile(zipFile); - try { - Enumeration entries = zip.getEntries(); - while (entries.hasMoreElements()) { - ZipEntry zipEntry = entries.nextElement(); - Path child = pathModifier.apply(zipEntry.getName()); - if (child == null) { - continue; - } - Path outputPath = targetDir.toPath().resolve(child); - if (zipEntry.isDirectory()) { - outputPath.toFile().mkdirs(); - chmod(outputPath, zipEntry.getUnixMode()); - continue; - } - try (FileOutputStream outputStream = new FileOutputStream(outputPath.toFile())) { - IOUtils.copyLarge(zip.getInputStream(zipEntry), outputStream); - } - chmod(outputPath, zipEntry.getUnixMode()); - } - } finally { - zip.close(); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/util/FileUtils.java b/buildSrc/src/main/java/org/opensearch/gradle/util/FileUtils.java deleted file mode 100644 index 23cc670a4b021..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/util/FileUtils.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.util; - -import org.gradle.api.UncheckedIOException; - -import java.io.File; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -public final class FileUtils { - - /** - * Like {@link java.io.File#mkdirs()}, except throws an informative error if a dir cannot be created. - * - * @param dir The dir to create, including any non existent parent dirs. - */ - public static void mkdirs(File dir) { - dir = dir.getAbsoluteFile(); - if (dir.isDirectory()) { - return; - } - - if (dir.exists() && !dir.isDirectory()) { - throw new UncheckedIOException(String.format("Cannot create directory '%s' as it already exists, but is not a directory", dir)); - } - - List toCreate = new LinkedList(); - File parent = dir.getParentFile(); - while (!parent.exists()) { - toCreate.add(parent); - parent = parent.getParentFile(); - } - Collections.reverse(toCreate); - for (File parentDirToCreate : toCreate) { - if (parentDirToCreate.isDirectory()) { - continue; - } - File parentDirToCreateParent = parentDirToCreate.getParentFile(); - if (!parentDirToCreateParent.isDirectory()) { - throw new UncheckedIOException( - String.format( - "Cannot create parent directory '%s' when creating directory '%s' as '%s' is not a directory", - parentDirToCreate, - dir, - parentDirToCreateParent - ) - ); - } - if (!parentDirToCreate.mkdir() && !parentDirToCreate.isDirectory()) { - throw new UncheckedIOException( - String.format("Failed to create parent directory '%s' when creating directory '%s'", parentDirToCreate, dir) - ); - } - } - if (!dir.mkdir() && !dir.isDirectory()) { - throw new UncheckedIOException(String.format("Failed to create directory '%s'", dir)); - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/util/GradleUtils.java b/buildSrc/src/main/java/org/opensearch/gradle/util/GradleUtils.java deleted file mode 100644 index 91e37fc1de3ca..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/util/GradleUtils.java +++ /dev/null @@ -1,248 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.util; - -import org.opensearch.gradle.OpenSearchJavaPlugin; -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.UnknownTaskException; -import org.gradle.api.artifacts.Configuration; -import org.gradle.api.artifacts.Dependency; -import org.gradle.api.plugins.JavaBasePlugin; -import org.gradle.api.plugins.JavaPluginConvention; -import org.gradle.api.provider.Provider; -import org.gradle.api.services.BuildService; -import org.gradle.api.services.BuildServiceRegistration; -import org.gradle.api.services.BuildServiceRegistry; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.SourceSetContainer; -import org.gradle.api.tasks.TaskContainer; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.api.tasks.testing.Test; -import org.gradle.plugins.ide.eclipse.model.EclipseModel; -import org.gradle.plugins.ide.idea.model.IdeaModel; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -public abstract class GradleUtils { - - public static Action noop() { - return t -> {}; - } - - public static SourceSetContainer getJavaSourceSets(Project project) { - return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets(); - } - - public static TaskProvider maybeRegister(TaskContainer tasks, String name, Class clazz, Action action) { - try { - return tasks.named(name, clazz); - } catch (UnknownTaskException e) { - return tasks.register(name, clazz, action); - } - } - - public static void maybeConfigure(TaskContainer tasks, String name, Action config) { - TaskProvider task; - try { - task = tasks.named(name); - } catch (UnknownTaskException e) { - return; - } - - task.configure(config); - } - - public static void maybeConfigure( - TaskContainer tasks, - String name, - Class type, - Action config - ) { - tasks.withType(type).configureEach(task -> { - if (task.getName().equals(name)) { - config.execute(task); - } - }); - } - - public static TaskProvider findByName(TaskContainer tasks, String name) { - TaskProvider task; - try { - task = tasks.named(name); - } catch (UnknownTaskException e) { - return null; - } - - return task; - } - - @SuppressWarnings("unchecked") - public static > Provider getBuildService(BuildServiceRegistry registry, String name) { - BuildServiceRegistration registration = registry.getRegistrations().findByName(name); - if (registration == null) { - throw new GradleException("Unable to find build service with name '" + name + "'."); - } - - return (Provider) registration.getService(); - } - - /** - * Add a source set and task of the same name that runs tests. - *

    - * IDEs are also configured if setup, and the test task is added to check. The new test source - * set extends from the normal test source set to allow sharing of utilities. - * - * @return A task provider for the newly created test task - */ - public static TaskProvider addTestSourceSet(Project project, String sourceSetName) { - project.getPluginManager().apply(OpenSearchJavaPlugin.class); - - // create our test source set and task - SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); - SourceSet testSourceSet = sourceSets.create(sourceSetName); - TaskProvider testTask = project.getTasks().register(sourceSetName, Test.class); - testTask.configure(task -> { - task.setGroup(JavaBasePlugin.VERIFICATION_GROUP); - task.setTestClassesDirs(testSourceSet.getOutput().getClassesDirs()); - task.setClasspath(testSourceSet.getRuntimeClasspath()); - // make the new test run after unit tests - task.mustRunAfter(project.getTasks().named("test")); - }); - - Configuration testCompileConfig = project.getConfigurations().getByName(testSourceSet.getCompileClasspathConfigurationName()); - Configuration testRuntimeConfig = project.getConfigurations().getByName(testSourceSet.getRuntimeClasspathConfigurationName()); - testSourceSet.setCompileClasspath(testCompileConfig); - testSourceSet.setRuntimeClasspath(project.getObjects().fileCollection().from(testSourceSet.getOutput(), testRuntimeConfig)); - - extendSourceSet(project, SourceSet.MAIN_SOURCE_SET_NAME, sourceSetName); - - setupIdeForTestSourceSet(project, testSourceSet); - - // add to the check task - project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME).configure(check -> check.dependsOn(testTask)); - - return testTask; - } - - public static void setupIdeForTestSourceSet(Project project, SourceSet testSourceSet) { - // setup IDEs - String runtimeClasspathName = testSourceSet.getRuntimeClasspathConfigurationName(); - Configuration runtimeClasspathConfiguration = project.getConfigurations().getByName(runtimeClasspathName); - project.getPluginManager().withPlugin("idea", p -> { - IdeaModel idea = project.getExtensions().getByType(IdeaModel.class); - idea.getModule().setTestSourceDirs(testSourceSet.getJava().getSrcDirs()); - idea.getModule().getScopes().put(testSourceSet.getName(), new HashMap>() { - { - put("plus", Arrays.asList(runtimeClasspathConfiguration)); - } - }); - }); - project.getPluginManager().withPlugin("eclipse", p -> { - EclipseModel eclipse = project.getExtensions().getByType(EclipseModel.class); - List eclipseSourceSets = new ArrayList<>(); - for (SourceSet old : eclipse.getClasspath().getSourceSets()) { - eclipseSourceSets.add(old); - } - eclipseSourceSets.add(testSourceSet); - eclipse.getClasspath().setSourceSets(project.getExtensions().getByType(SourceSetContainer.class)); - eclipse.getClasspath().getPlusConfigurations().add(runtimeClasspathConfiguration); - }); - } - - /** - * Extend the configurations of one source set from another. - */ - public static void extendSourceSet(Project project, String parentSourceSetName, String childSourceSetName) { - final List> configNameFunctions = Arrays.asList( - SourceSet::getCompileConfigurationName, - SourceSet::getImplementationConfigurationName, - SourceSet::getRuntimeConfigurationName, - SourceSet::getRuntimeOnlyConfigurationName - ); - SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); - SourceSet parent = sourceSets.getByName(parentSourceSetName); - SourceSet child = sourceSets.getByName(childSourceSetName); - - for (Function configNameFunction : configNameFunctions) { - String parentConfigName = configNameFunction.apply(parent); - String childConfigName = configNameFunction.apply(child); - Configuration parentConfig = project.getConfigurations().getByName(parentConfigName); - Configuration childConfig = project.getConfigurations().getByName(childConfigName); - childConfig.extendsFrom(parentConfig); - } - - // tie this new test source set to the main and test source sets - child.setCompileClasspath(project.getObjects().fileCollection().from(child.getCompileClasspath(), parent.getOutput())); - child.setRuntimeClasspath(project.getObjects().fileCollection().from(child.getRuntimeClasspath(), parent.getOutput())); - } - - /** - * Extends one configuration from another and refreshes the classpath of a provided Test. - * The Test parameter is only needed for eagerly defined test tasks. - */ - public static void extendSourceSet(Project project, String parentSourceSetName, String childSourceSetName, Test test) { - extendSourceSet(project, parentSourceSetName, childSourceSetName); - if (test != null) { - SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); - SourceSet child = sourceSets.getByName(childSourceSetName); - test.setClasspath(child.getRuntimeClasspath()); - } - } - - public static Dependency projectDependency(Project project, String projectPath, String projectConfig) { - if (project.findProject(projectPath) == null) { - throw new GradleException("no project [" + projectPath + "], project names: " + project.getRootProject().getAllprojects()); - } - Map depConfig = new HashMap<>(); - depConfig.put("path", projectPath); - depConfig.put("configuration", projectConfig); - return project.getDependencies().project(depConfig); - } - - /** - * To calculate the project path from a task path without relying on Task#getProject() which is discouraged during - * task execution time. - */ - public static String getProjectPathFromTask(String taskPath) { - int lastDelimiterIndex = taskPath.lastIndexOf(":"); - return lastDelimiterIndex == 0 ? ":" : taskPath.substring(0, lastDelimiterIndex); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/util/JavaUtil.java b/buildSrc/src/main/java/org/opensearch/gradle/util/JavaUtil.java deleted file mode 100644 index 18001fb6b86ae..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/util/JavaUtil.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.util; - -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.info.JavaHome; -import org.gradle.api.GradleException; - -import java.util.List; -import java.util.Optional; - -public class JavaUtil { - - /** A convenience method for getting java home for a version of java and requiring that version for the given task to execute */ - public static String getJavaHome(final int version) { - List javaHomes = BuildParams.getJavaVersions(); - Optional java = javaHomes.stream().filter(j -> j.getVersion() == version).findFirst(); - return java.orElseThrow(() -> new GradleException("JAVA" + version + "_HOME required")).getJavaHome().get().getAbsolutePath(); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/util/PermissionUtils.java b/buildSrc/src/main/java/org/opensearch/gradle/util/PermissionUtils.java deleted file mode 100644 index 285e41fc7a24a..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/util/PermissionUtils.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.util; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.attribute.PosixFileAttributeView; -import java.nio.file.attribute.PosixFilePermission; -import java.nio.file.attribute.PosixFilePermissions; -import java.util.Set; - -public class PermissionUtils { - - public static void chmod(Path path, int mode) throws IOException { - final PosixFileAttributeView view = Files.getFileAttributeView(path, PosixFileAttributeView.class); - if (view != null && (mode != 0)) { - final Set permissions = permissionsFromInt(mode); - Files.setPosixFilePermissions(path, permissions); - } - } - - private static Set permissionsFromInt(int mode) { - return PosixFilePermissions.fromString( - permissions((mode >> 6) & 07) + permissions((mode >> 3) & 07) + permissions((mode >> 0) & 07) - ); - } - - private static String permissions(final int permissions) { - if (permissions < 0 || permissions > 7) { - throw new IllegalArgumentException("permissions [" + permissions + "] out of range"); - } - final StringBuilder sb = new StringBuilder(3); - if ((permissions & 4) == 4) { - sb.append('r'); - } else { - sb.append('-'); - } - if ((permissions & 2) == 2) { - sb.append('w'); - } else { - sb.append('-'); - } - if ((permissions & 1) == 1) { - sb.append('x'); - } else { - sb.append('-'); - } - return sb.toString(); - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/util/Util.java b/buildSrc/src/main/java/org/opensearch/gradle/util/Util.java deleted file mode 100644 index 71b1e5040340d..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/util/Util.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.util; - -import org.opensearch.gradle.info.GlobalBuildInfoPlugin; -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.file.FileTree; -import org.gradle.api.plugins.JavaPluginConvention; -import org.gradle.api.tasks.SourceSet; -import org.gradle.api.tasks.util.PatternFilterable; - -import javax.annotation.Nullable; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.UncheckedIOException; -import java.net.URI; -import java.net.URISyntaxException; -import java.time.Instant; -import java.time.ZoneOffset; -import java.time.ZonedDateTime; -import java.util.Locale; -import java.util.Optional; -import java.util.function.Supplier; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class Util { - - public static boolean getBooleanProperty(String property, boolean defaultValue) { - String propertyValue = System.getProperty(property); - if (propertyValue == null) { - return defaultValue; - } - if ("true".equals(propertyValue)) { - return true; - } else if ("false".equals(propertyValue)) { - return false; - } else { - throw new GradleException("Sysprop [" + property + "] must be [true] or [false] but was [" + propertyValue + "]"); - } - } - - public static String getResourceContents(String resourcePath) { - try ( - BufferedReader reader = new BufferedReader(new InputStreamReader(GlobalBuildInfoPlugin.class.getResourceAsStream(resourcePath))) - ) { - StringBuilder b = new StringBuilder(); - for (String line = reader.readLine(); line != null; line = reader.readLine()) { - if (b.length() != 0) { - b.append('\n'); - } - b.append(line); - } - - return b.toString(); - } catch (IOException e) { - throw new UncheckedIOException("Error trying to read classpath resource: " + resourcePath, e); - } - } - - public static String capitalize(String s) { - return s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1); - } - - public static URI getBuildSrcCodeSource() { - try { - return Util.class.getProtectionDomain().getCodeSource().getLocation().toURI(); - } catch (URISyntaxException e) { - throw new GradleException("Error determining build tools JAR location", e); - } - } - - /** - * @param project The project to look for resources. - * @param filter Optional filter function to filter the returned resources - * @return Returns the {@link FileTree} for main resources from Java projects. Returns null if no files exist. - */ - @Nullable - public static FileTree getJavaMainSourceResources(Project project, Action filter) { - final Optional mainFileTree = getJavaMainSourceSet(project).map(SourceSet::getResources).map(FileTree::getAsFileTree); - return mainFileTree.map(files -> files.matching(filter)).orElse(null); - } - - /** - * @param project The project to look for resources. - * @param filter Optional filter function to filter the returned resources - * @return Returns the {@link FileTree} for test resources from Java projects. Returns null if no files exist. - */ - @Nullable - public static FileTree getJavaTestSourceResources(Project project, Action filter) { - final Optional testFileTree = getJavaTestSourceSet(project).map(SourceSet::getResources).map(FileTree::getAsFileTree); - return testFileTree.map(files -> files.matching(filter)).orElse(null); - } - - /** - * @param project The project to look for resources. - * @param filter Optional filter function to filter the returned resources - * @return Returns the combined {@link FileTree} for test and main resources from Java projects. Returns null if no files exist. - */ - @Nullable - public static FileTree getJavaTestAndMainSourceResources(Project project, Action filter) { - final Optional testFileTree = getJavaTestSourceSet(project).map(SourceSet::getResources).map(FileTree::getAsFileTree); - final Optional mainFileTree = getJavaMainSourceSet(project).map(SourceSet::getResources).map(FileTree::getAsFileTree); - if (testFileTree.isPresent() && mainFileTree.isPresent()) { - return testFileTree.get().plus(mainFileTree.get()).matching(filter); - } else if (mainFileTree.isPresent()) { - return mainFileTree.get().matching(filter); - } else if (testFileTree.isPresent()) { - return testFileTree.get().matching(filter); - } - return null; - } - - /** - * @param project The project to look for test Java resources. - * @return An Optional that contains the Java test SourceSet if it exists. - */ - public static Optional getJavaTestSourceSet(Project project) { - return project.getConvention().findPlugin(JavaPluginConvention.class) == null - ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(SourceSet.TEST_SOURCE_SET_NAME)); - } - - /** - * @param project The project to look for main Java resources. - * @return An Optional that contains the Java main SourceSet if it exists. - */ - public static Optional getJavaMainSourceSet(Project project) { - return project.getConvention().findPlugin(JavaPluginConvention.class) == null - ? Optional.empty() - : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(SourceSet.MAIN_SOURCE_SET_NAME)); - } - - static final Pattern GIT_PATTERN = Pattern.compile("git@([^:]+):([^\\.]+)\\.git"); - - /** Find the reponame. */ - public static String urlFromOrigin(String origin) { - if (origin == null) { - return null; // best effort, the url doesnt really matter, it is just required by maven central - } - if (origin.startsWith("https")) { - return origin; - } - Matcher matcher = GIT_PATTERN.matcher(origin); - if (matcher.matches()) { - return String.format("https://%s/%s", matcher.group(1), matcher.group(2)); - } else { - return origin; // best effort, the url doesnt really matter, it is just required by maven central - } - } - - public static Object toStringable(Supplier getter) { - return new Object() { - @Override - public String toString() { - return getter.get(); - } - }; - } - - public static ZonedDateTime getBuildDate(ZonedDateTime defaultValue) { - final String sourceDateEpoch = System.getenv("SOURCE_DATE_EPOCH"); - if (sourceDateEpoch != null) { - try { - return ZonedDateTime.ofInstant(Instant.ofEpochSecond(Long.parseLong(sourceDateEpoch)), ZoneOffset.UTC); - } catch (NumberFormatException e) { - throw new GradleException("Sysprop [SOURCE_DATE_EPOCH] must be of type [long]", e); - } - } else { - return defaultValue; - } - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantBasePlugin.java b/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantBasePlugin.java deleted file mode 100644 index 4b918bb38e3c2..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantBasePlugin.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.vagrant; - -import org.opensearch.gradle.ReaperPlugin; -import org.opensearch.gradle.ReaperService; -import org.gradle.api.Plugin; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.execution.TaskActionListener; -import org.gradle.api.execution.TaskExecutionListener; -import org.gradle.api.tasks.TaskState; - -import java.io.ByteArrayOutputStream; -import java.util.List; -import java.util.function.Consumer; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -public class VagrantBasePlugin implements Plugin { - - @Override - public void apply(Project project) { - project.getRootProject().getPluginManager().apply(VagrantSetupCheckerPlugin.class); - project.getRootProject().getPluginManager().apply(VagrantManagerPlugin.class); - project.getRootProject().getPluginManager().apply(ReaperPlugin.class); - - ReaperService reaper = project.getRootProject().getExtensions().getByType(ReaperService.class); - VagrantExtension extension = project.getExtensions().create("vagrant", VagrantExtension.class, project); - VagrantMachine service = project.getExtensions().create("vagrantService", VagrantMachine.class, project, extension, reaper); - - project.getGradle() - .getTaskGraph() - .whenReady( - graph -> service.refs = graph.getAllTasks() - .stream() - .filter(t -> t instanceof VagrantShellTask) - .filter(t -> t.getProject() == project) - .count() - ); - } - - /** - * Check vagrant and virtualbox versions, if any vagrant test tasks will be run. - */ - static class VagrantSetupCheckerPlugin implements Plugin { - - private static final Pattern VAGRANT_VERSION = Pattern.compile("Vagrant (\\d+\\.\\d+\\.\\d+)"); - private static final Pattern VIRTUAL_BOX_VERSION = Pattern.compile("(\\d+\\.\\d+)"); - - @Override - public void apply(Project project) { - if (project != project.getRootProject()) { - throw new IllegalArgumentException("VagrantSetupCheckerPlugin can only be applied to the root project of a build"); - } - - project.getGradle().getTaskGraph().whenReady(graph -> { - boolean needsVagrant = graph.getAllTasks().stream().anyMatch(t -> t instanceof VagrantShellTask); - if (needsVagrant) { - checkVersion(project, "vagrant", VAGRANT_VERSION, 1, 8, 6); - checkVersion(project, "vboxmanage", VIRTUAL_BOX_VERSION, 5, 1); - } - }); - } - - void checkVersion(Project project, String tool, Pattern versionRegex, int... minVersion) { - ByteArrayOutputStream pipe = new ByteArrayOutputStream(); - project.exec(spec -> { - spec.setCommandLine(tool, "--version"); - spec.setStandardOutput(pipe); - }); - String output = pipe.toString().trim(); - Matcher matcher = versionRegex.matcher(output); - if (matcher.find() == false) { - throw new IllegalStateException( - tool + " version output [" + output + "] did not match regex [" + versionRegex.pattern() + "]" - ); - } - - String version = matcher.group(1); - List versionParts = Stream.of(version.split("\\.")).map(Integer::parseInt).collect(Collectors.toList()); - for (int i = 0; i < minVersion.length; ++i) { - int found = versionParts.get(i); - if (found > minVersion[i]) { - break; // most significant version is good - } else if (found < minVersion[i]) { - String exceptionMessage = String.format( - "Unsupported version of %s. Found [%s], expected [%s+", - tool, - version, - Stream.of(minVersion).map(String::valueOf).collect(Collectors.joining(".")) - ); - - throw new IllegalStateException(exceptionMessage); - } // else equal, so check next element - } - } - } - - /** - * Adds global hooks to manage destroying, starting and updating VMs. - */ - static class VagrantManagerPlugin implements Plugin, TaskActionListener, TaskExecutionListener { - - @Override - public void apply(Project project) { - if (project != project.getRootProject()) { - throw new IllegalArgumentException("VagrantManagerPlugin can only be applied to the root project of a build"); - } - project.getGradle().addListener(this); - } - - private void callIfVagrantTask(Task task, Consumer method) { - if (task instanceof VagrantShellTask) { - VagrantMachine service = task.getProject().getExtensions().getByType(VagrantMachine.class); - method.accept(service); - } - } - - @Override - public void beforeExecute(Task task) { /* nothing to do */} - - @Override - public void afterActions(Task task) { /* nothing to do */ } - - @Override - public void beforeActions(Task task) { - callIfVagrantTask(task, VagrantMachine::maybeStartVM); - } - - @Override - public void afterExecute(Task task, TaskState state) { - callIfVagrantTask(task, service -> service.maybeStopVM(state.getFailure() != null)); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantExtension.java b/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantExtension.java deleted file mode 100644 index 5f1b20f9eb917..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantExtension.java +++ /dev/null @@ -1,106 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.vagrant; - -import org.gradle.api.Project; -import org.gradle.api.file.RegularFileProperty; -import org.gradle.api.provider.MapProperty; -import org.gradle.api.provider.Property; -import org.gradle.api.tasks.Input; - -import java.io.File; -import java.util.Map; - -public class VagrantExtension { - - private final Property box; - private final MapProperty hostEnv; - private final MapProperty vmEnv; - private final RegularFileProperty vagrantfile; - private boolean isWindowsVM; - - public VagrantExtension(Project project) { - this.box = project.getObjects().property(String.class); - this.hostEnv = project.getObjects().mapProperty(String.class, Object.class); - this.vmEnv = project.getObjects().mapProperty(String.class, Object.class); - this.vagrantfile = project.getObjects().fileProperty(); - this.vagrantfile.convention(project.getRootProject().getLayout().getProjectDirectory().file("Vagrantfile")); - this.isWindowsVM = false; - } - - @Input - public String getBox() { - return box.get(); - } - - public void setBox(String box) { - // TODO: should verify this against the Vagrantfile, but would need to do so in afterEvaluate once vagrantfile is unmodifiable - this.box.set(box); - } - - @Input - public Map getHostEnv() { - return hostEnv.get(); - } - - public void hostEnv(String name, Object value) { - hostEnv.put(name, value); - } - - @Input - public Map getVmEnv() { - return vmEnv.get(); - } - - public void vmEnv(String name, Object value) { - vmEnv.put(name, value); - } - - @Input - public boolean isWindowsVM() { - return isWindowsVM; - } - - public void setIsWindowsVM(boolean isWindowsVM) { - this.isWindowsVM = isWindowsVM; - } - - @Input - public File getVagrantfile() { - return this.vagrantfile.get().getAsFile(); - } - - public void setVagrantfile(File file) { - vagrantfile.set(file); - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantMachine.java b/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantMachine.java deleted file mode 100644 index 75827922fa007..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantMachine.java +++ /dev/null @@ -1,221 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.vagrant; - -import org.apache.commons.io.output.TeeOutputStream; -import org.opensearch.gradle.LoggedExec; -import org.opensearch.gradle.LoggingOutputStream; -import org.opensearch.gradle.ReaperService; -import org.opensearch.gradle.util.Util; -import org.gradle.api.Action; -import org.gradle.api.Project; -import org.gradle.internal.logging.progress.ProgressLogger; -import org.gradle.internal.logging.progress.ProgressLoggerFactory; - -import javax.inject.Inject; -import java.io.File; -import java.io.OutputStream; -import java.nio.file.Paths; -import java.util.Arrays; -import java.util.Objects; -import java.util.function.UnaryOperator; - -/** - * An helper to manage a vagrant box. - * - * This is created alongside a {@link VagrantExtension} for a project to manage starting and - * stopping a single vagrant box. - */ -public class VagrantMachine { - - private final Project project; - private final VagrantExtension extension; - private final ReaperService reaper; - // pkg private so plugin can set this after construction - long refs; - private boolean isVMStarted = false; - - public VagrantMachine(Project project, VagrantExtension extension, ReaperService reaper) { - this.project = project; - this.extension = extension; - this.reaper = reaper; - } - - @Inject - protected ProgressLoggerFactory getProgressLoggerFactory() { - throw new UnsupportedOperationException(); - } - - public void execute(Action action) { - VagrantExecSpec vagrantSpec = new VagrantExecSpec(); - action.execute(vagrantSpec); - - Objects.requireNonNull(vagrantSpec.command); - - LoggedExec.exec(project, execSpec -> { - execSpec.setExecutable("vagrant"); - File vagrantfile = extension.getVagrantfile(); - execSpec.setEnvironment(System.getenv()); // pass through env - execSpec.environment("VAGRANT_CWD", vagrantfile.getParentFile().toString()); - execSpec.environment("VAGRANT_VAGRANTFILE", vagrantfile.getName()); - extension.getHostEnv().forEach(execSpec::environment); - - execSpec.args(vagrantSpec.command); - if (vagrantSpec.subcommand != null) { - execSpec.args(vagrantSpec.subcommand); - } - execSpec.args(extension.getBox()); - if (vagrantSpec.args != null) { - execSpec.args(Arrays.asList(vagrantSpec.args)); - } - - UnaryOperator progressHandler = vagrantSpec.progressHandler; - if (progressHandler == null) { - progressHandler = new VagrantProgressLogger("==> " + extension.getBox() + ": "); - } - OutputStream output = execSpec.getStandardOutput(); - // output from vagrant needs to be manually curated because --machine-readable isn't actually "readable" - OutputStream progressStream = new ProgressOutputStream(vagrantSpec.command, progressHandler); - execSpec.setStandardOutput(new TeeOutputStream(output, progressStream)); - }); - } - - // start the configuration VM if it hasn't been started yet - void maybeStartVM() { - if (isVMStarted) { - return; - } - - execute(spec -> { - spec.setCommand("box"); - spec.setSubcommand("update"); - }); - - // Destroying before every execution can be annoying while iterating on tests locally. Therefore, we provide a flag that defaults - // to true that can be used to control whether or not to destroy any test boxes before test execution. - boolean destroyVM = Util.getBooleanProperty("vagrant.destroy", true); - if (destroyVM) { - execute(spec -> { - spec.setCommand("destroy"); - spec.setArgs("--force"); - }); - } - - // register box to be shutdown if gradle dies - reaper.registerCommand(extension.getBox(), "vagrant", "halt", "-f", extension.getBox()); - - // We lock the provider to virtualbox because the Vagrantfile specifies lots of boxes that only work - // properly in virtualbox. Virtualbox is vagrant's default but its possible to change that default and folks do. - execute(spec -> { - spec.setCommand("up"); - spec.setArgs("--provision", "--provider", "virtualbox"); - }); - isVMStarted = true; - } - - // stops the VM if refs are down to 0, or force was called - void maybeStopVM(boolean force) { - assert refs >= 1; - this.refs--; - if ((refs == 0 || force) && isVMStarted) { - execute(spec -> spec.setCommand("halt")); - reaper.unregister(extension.getBox()); - } - } - - // convert the given path from an opensearch repo path to a VM path - public static String convertLinuxPath(Project project, String path) { - return "/opensearch/" + project.getRootDir().toPath().relativize(Paths.get(path)); - } - - public static String convertWindowsPath(Project project, String path) { - return "C:\\opensearch\\" + project.getRootDir().toPath().relativize(Paths.get(path)).toString().replace('/', '\\'); - } - - public static class VagrantExecSpec { - private String command; - private String subcommand; - private String[] args; - private UnaryOperator progressHandler; - - private VagrantExecSpec() {} - - public void setCommand(String command) { - this.command = command; - } - - public void setSubcommand(String subcommand) { - this.subcommand = subcommand; - } - - public void setArgs(String... args) { - this.args = args; - } - - /** - * A function to translate output from the vagrant command execution to the progress line. - * - * The function takes the current line of output from vagrant, and returns a new - * progress line, or {@code null} if there is no update. - */ - public void setProgressHandler(UnaryOperator progressHandler) { - this.progressHandler = progressHandler; - } - } - - private class ProgressOutputStream extends LoggingOutputStream { - - private ProgressLogger progressLogger; - private UnaryOperator progressHandler; - - ProgressOutputStream(String command, UnaryOperator progressHandler) { - this.progressHandler = progressHandler; - this.progressLogger = getProgressLoggerFactory().newOperation("vagrant"); - progressLogger.start(extension.getBox() + "> " + command, "hello"); - } - - @Override - protected void logLine(String line) { - String progress = progressHandler.apply(line); - if (progress != null) { - progressLogger.progress(progress); - } - } - - @Override - public void close() { - progressLogger.completed(); - } - } - -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantProgressLogger.java b/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantProgressLogger.java deleted file mode 100644 index 59e59b03e85f2..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantProgressLogger.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.vagrant; - -import java.util.function.UnaryOperator; - -public class VagrantProgressLogger implements UnaryOperator { - - private static final String HEADING_PREFIX = "==> "; - - private final String squashedPrefix; - private String lastLine = ""; - private String heading = ""; - private boolean inProgressReport = false; - - public VagrantProgressLogger(String squashedPrefix) { - this.squashedPrefix = squashedPrefix; - } - - @Override - public String apply(String line) { - if (line.startsWith("\r\u001b")) { - /* We don't want to try to be a full terminal emulator but we want to - keep the escape sequences from leaking and catch _some_ of the - meaning. */ - line = line.substring(2); - if ("[K".equals(line)) { - inProgressReport = true; - } - return null; - } - if (line.startsWith(squashedPrefix)) { - line = line.substring(squashedPrefix.length()); - inProgressReport = false; - lastLine = line; - if (line.startsWith(HEADING_PREFIX)) { - line = line.substring(HEADING_PREFIX.length()); - heading = line + " > "; - } else { - line = heading + line; - } - } else if (inProgressReport) { - inProgressReport = false; - line = lastLine + line; - } else { - return null; - } - return line; - } -} diff --git a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantShellTask.java b/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantShellTask.java deleted file mode 100644 index 85d3e340c50e7..0000000000000 --- a/buildSrc/src/main/java/org/opensearch/gradle/vagrant/VagrantShellTask.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.vagrant; - -import org.gradle.api.DefaultTask; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.TaskAction; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.function.UnaryOperator; -import java.util.stream.Collectors; - -import static org.opensearch.gradle.vagrant.VagrantMachine.convertLinuxPath; -import static org.opensearch.gradle.vagrant.VagrantMachine.convertWindowsPath; - -/** - * A shell script to run within a vagrant VM. - * - * The script is run as root within the VM. - */ -public abstract class VagrantShellTask extends DefaultTask { - - private final VagrantExtension extension; - private final VagrantMachine service; - private UnaryOperator progressHandler = UnaryOperator.identity(); - - public VagrantShellTask() { - extension = getProject().getExtensions().findByType(VagrantExtension.class); - if (extension == null) { - throw new IllegalStateException("opensearch.vagrant-base must be applied to create " + getClass().getName()); - } - service = getProject().getExtensions().getByType(VagrantMachine.class); - } - - @Input - protected abstract List getWindowsScript(); - - @Input - protected abstract List getLinuxScript(); - - @Input - public UnaryOperator getProgressHandler() { - return progressHandler; - } - - public void setProgressHandler(UnaryOperator progressHandler) { - this.progressHandler = progressHandler; - } - - @TaskAction - public void runScript() { - String rootDir = getProject().getRootDir().toString(); - if (extension.isWindowsVM()) { - service.execute(spec -> { - spec.setCommand("winrm"); - - List script = new ArrayList<>(); - script.add("try {"); - script.add("cd " + convertWindowsPath(getProject(), rootDir)); - extension.getVmEnv().forEach((k, v) -> script.add("$Env:" + k + " = \"" + v + "\"")); - script.addAll(getWindowsScript().stream().map(s -> " " + s).collect(Collectors.toList())); - script.addAll( - Arrays.asList( - " exit $LASTEXITCODE", - "} catch {", - // catch if we have a failure to even run the script at all above, equivalent to set -e, sort of - " echo $_.Exception.Message", - " exit 1", - "}" - ) - ); - spec.setArgs("--elevated", "--command", String.join("\n", script)); - spec.setProgressHandler(progressHandler); - }); - } else { - service.execute(spec -> { - spec.setCommand("ssh"); - - List script = new ArrayList<>(); - script.add("sudo bash -c '"); // start inline bash script - script.add("pwd"); - script.add("cd " + convertLinuxPath(getProject(), rootDir)); - extension.getVmEnv().forEach((k, v) -> script.add("export " + k + "=" + v)); - script.addAll(getLinuxScript()); - script.add("'"); // end inline bash script - spec.setArgs("--command", String.join("\n", script)); - spec.setProgressHandler(progressHandler); - }); - } - } - -} diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.build.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.build.properties deleted file mode 100644 index 3266dd46d125a..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.build.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.BuildPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distribution-download.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distribution-download.properties deleted file mode 100644 index d62eec2eb23a7..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distribution-download.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.DistributionDownloadPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distro-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distro-test.properties deleted file mode 100644 index 04ea82588f7ab..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.distro-test.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.DistroTestPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docker-support.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docker-support.properties deleted file mode 100644 index 85a84d7f59c0f..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docker-support.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.docker.DockerSupportPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docs-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docs-test.properties deleted file mode 100644 index cccd14290aa07..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.docs-test.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.doc.DocsTestPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.global-build-info.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.global-build-info.properties deleted file mode 100644 index 105bb6b7b4330..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.global-build-info.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.info.GlobalBuildInfoPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-cluster-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-cluster-test.properties deleted file mode 100644 index 530534769180d..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-cluster-test.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.InternalClusterTestPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-check.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-check.properties deleted file mode 100644 index 6ad5455e12b70..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-check.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.internal.InternalDistributionArchiveCheckPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-setup.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-setup.properties deleted file mode 100644 index 9d3f52eb56b6e..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-archive-setup.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.internal.InternalDistributionArchiveSetupPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-bwc-setup.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-bwc-setup.properties deleted file mode 100644 index 731307a1b3545..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-bwc-setup.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.internal.InternalDistributionBwcSetupPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-download.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-download.properties deleted file mode 100644 index 1ae2bc93cdb23..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.internal-distribution-download.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.internal.InternalDistributionDownloadPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java-rest-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java-rest-test.properties deleted file mode 100644 index d3c6952031a44..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java-rest-test.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.rest.JavaRestTestPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java.properties deleted file mode 100644 index 3ca8ae40beffb..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.java.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.OpenSearchJavaPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.jdk-download.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.jdk-download.properties deleted file mode 100644 index 9bf7fb7895a94..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.jdk-download.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.JdkDownloadPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.opensearchplugin.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.opensearchplugin.properties deleted file mode 100644 index 84d89b8bc28ce..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.opensearchplugin.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.plugin.PluginBuildPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.publish.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.publish.properties deleted file mode 100644 index 01aa629679594..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.publish.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.PublishPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.reaper.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.reaper.properties deleted file mode 100644 index 1117c0c4f815c..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.reaper.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.ReaperPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.repositories.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.repositories.properties deleted file mode 100644 index f0570c389f3c1..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.repositories.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.RepositoriesSetupPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-resources.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-resources.properties deleted file mode 100644 index c643a1a5217ba..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-resources.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.rest.RestResourcesPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-test.properties deleted file mode 100644 index 1a6188dcb74c2..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.rest-test.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.test.RestTestPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-rest-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-rest-test.properties deleted file mode 100644 index 60de7d014e041..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-rest-test.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.StandaloneRestTestPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-test.properties deleted file mode 100644 index d579f151df4ec..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.standalone-test.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.StandaloneTestPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.symbolic-link-preserving-tar.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.symbolic-link-preserving-tar.properties deleted file mode 100644 index 6753020f167fb..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.symbolic-link-preserving-tar.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.tar.SymoblicLinkPreservingTarPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-base.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-base.properties deleted file mode 100644 index ff3be7b30dbcb..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-base.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.OpenSearchTestBasePlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-dependencies.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-dependencies.properties deleted file mode 100644 index 6cb409a617224..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-dependencies.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.TestWithDependenciesPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-ssl.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-ssl.properties deleted file mode 100644 index 1dc88f71d40aa..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test-with-ssl.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.TestWithSslPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test.fixtures.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test.fixtures.properties deleted file mode 100644 index 00b9748f1f0cc..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.test.fixtures.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.testfixtures.TestFixturesPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.testclusters.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.testclusters.properties deleted file mode 100644 index 902e928c0e664..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.testclusters.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.testclusters.TestClustersPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.validate-rest-spec.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.validate-rest-spec.properties deleted file mode 100644 index 3c88abf9dc82f..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.validate-rest-spec.properties +++ /dev/null @@ -1,12 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -implementation-class=org.opensearch.gradle.precommit.ValidateRestSpecPlugin diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.yaml-rest-test.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.yaml-rest-test.properties deleted file mode 100644 index f4945114e3a57..0000000000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/opensearch.yaml-rest-test.properties +++ /dev/null @@ -1,31 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# - -implementation-class=org.opensearch.gradle.test.rest.YamlRestTestPlugin diff --git a/buildSrc/src/main/resources/buildSrc.marker b/buildSrc/src/main/resources/buildSrc.marker deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/main/resources/cacerts.bcfks b/buildSrc/src/main/resources/cacerts.bcfks deleted file mode 100644 index 9c3863eda60c51ca08b3a5eb73434b1af6508b5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103905 zcmV(*K;FMFg8`M?FoOY=9x#EF1_>&LNQU&LNQU&R|G&g z$@QPqz+fw9ASDQun{EE9+gFB9)}eY8-=Fuj-g2w67eG4I6yGBP0t5g80U$681_&yKNQUk1cL#Tf|(M)aDRZga$c>|CtbEA0ge__^=a&~8~X59dK+^G^2&kP zELWdfKCTvkNsy!cdGP%jcIt@eli)x=z^9{Ir{oQs!Z_@3%0%PiTwIfZTtYmZ)y4%%IeHodijv``GTH~qj^*sru zKi>8)GZ>K?u2dCbLgcJQViiyW8ooph;^5mdXoS9n56JqjD;uWK$-n=kr_R5Z8Rdd_aER}l9C#U=SgL`j0p z8*7ZTqVBDI8ep{H@}QsXXKey(KoOjjr`7Xo7PuZExoKQ`0&OV~*2Tr8dl4*BUqxUSJ*z#Y~XR(>58(Pwlk>l

    x#1KDo;&5Kbu!>#` zlp|a+3H@>XTuRTo{BkyCuyoW)?tN_gXA38pE@j&dn^-NJJ;1Q0YIP7O=;2(PZu`2k zH^l8PM|&QHYV^+c{>&fLYk<1wUvcP5gypPWE+f|9ip=D&+*`y+RA+ua@p_O;h>I~M zqMj#ftG=ejoV62ZZ=fRvyJIvp2;|$PO$=w1ABp!582$4m%NzO{II7&vT4!5rbHFBz zW3AiS$!fMNKBkGh8<8Y^sCJ``D6-arQOkgRU z;lP3;NXUcY=0SpR;P!C844CHvINM}NoeI1ozH$4ejDl>_t}}R8kzX;K-ebT9kPwxRS10rzWkAZyij+40{l02QKV}dnHL0b5 z*n!SXj#k`*XWKv_5j3>onV_03gFD$u)04)TkAG~bl79!hf2>ZPxTW=E zE5p}a1q)Ubu*q)bQWPl~7-r*JbL&!Y_@f8+e%36s2ewy!HDhaq0HNYr1}S3TyW4?= zHNAGW#aghD&MH?k@VaCjDBvBL1k4vCohU9k?*v?T$A3vafhE-G+=_&l97uO-%#JSc zs(^xwS!4PuPZ-zm!#}nZg}}AQD7Yci*%bFH2p{FV4sQ&{PbX2WQyAm&p5C{z@@7Bt zD}LCk-thU~NKA2VTv{o1Mh8U7^DRUpsTru;BiX6)O#3+GpApe&U>X&WQc&X5TnHa`{dGg$kDbtAFQe@hb zO+zE2?2w4%tIHj+dji z)*#1tht}8@+1WF=A`2G%-N5AvP{#zfhK{pX7$sKjd>qh#<~pz3uO_|;5;H&axCP1f z3NH6OSaUl^{rbjJhL=S|nzp?(ptc2I%nDeUtoJq$D^69yYiySWi$ zPj9#b;$I3FUu9-D-#Y)rQ*`bMKx}Ocarzhl()q}JV--|H$C4S3dmHrl+tverA zBulaYUV`5{mg1B7Wg18K+nCyz2p>I%xn!Y9v`g7dB%?Jwdb#UMvNpaBF?aoZu$>};$Q5;jF~2<_KfDOF z^Sg|($#?}JWGr@v&`xRZ2}e>^clB9ffl1IIvMu{%D}XPsLZN9)OQ-W8spWPZKIoR-)`|C znu>R+y(g$tUOAXi)3x=)`52VYu6)uQRY_8yni-67-`q8cX^kCa5x*8#;p?1nXfSav z^H5J~RGq-yXj=@gHEP3jvX0Az5cG%*BFGG?F;{%`vP>udpL>-S? zRSBwWeBeGEKm~&)w5G%cm|WcjcPx9pG|g#O1IaL)g4o<8T+pu&-tvTO--u3k`Zz=W zq+Hd8##2Gi)$p{RP95fv?Cg^kHKdnq+({{36+FQ2 z#!dVv{>aVwN{`(xUx(n$!4V#A#8yF9#_HwE#-L4?Trw!!-Z_l!?MP+?sDbFXP}vH& z`JDg)*vdMxqI4K(%7~%${dVmV^tAlDyF{_Xc{BWCQ(q!*Azo5VUZ=t18d* zsK57UGcYVE^9*&J@M}fQ$-q^3RD7;`UCKmBi5v}ve1~9on>4TfdZ0U;Vpdr94LNfr zjiI6EB2f`rJ35ih%z!t?Vb8zH8mjo9J_W>7(mH88_j7HzF3M6S{t#+(1l?t?o1VG4 zTdFXj7U`WWhRcN)W7zk=5rXTY);;AV3D zEh&u|>7{t3v*PWas`7OLvRaH)bHF={@k7v~2Z~X5*+*F?Clgw|UE#=J^kKs-!*0Ba zdYNyOjfLJ>Fxayt|A(WwRq$piNi4~hS-?KxXct62eq_Hf&z(IaQnLK9lLj89TQ8qY zb85F`xs|i^KwIiZCBJE-+aYRgp%sy<<_AnDzKcd>;QS9?4m`7TY`1nZbNqNlspcJx zHw@YhjWs=CX?^69`j48N34qM?vwmgFWu~`w^t!mU8@ei}KRS^N!2iU#2};o(gBW<3 zj9A`<6b*)NYebpKfVKOh1PtB(v@M%?Oz!KyIWSzFw6r!B>bCuvkDpC#QF~rjjo!5U)f+|K}*F^+~1k4!a+cpQhx8_hB3PEA43L*`x zo1iF5ZD7x-^JO|~Nm#erZbHfO3DoU6Yy2!)t`d{4G zB~%h*2WSKC()!Zva}bro zyOMx53$CEb9m)q zWZ=&q$1zxjPB5k4E@i)z1q;3twim#C8ICMkPR=&w7&eI~ zMs57>zL7@9cfc1bj^}}(9n8LV)+I|jO`aQqWT9=LN-~=LWFrWeu9Wjb^v9`)P3I)YVg??$Hyo2UCIDYYesmCfS0+X{rRk9uM#P-K80=gZJRk5^ zbm#B{r4wTN+;#PU+7cPyBXHfrHddK=uDUNaLNxn0EB?QYgy@vKy?dDeLgq!8K^@! zqw#mNLHB3#o~oc(jSR2SXaUZ>II1Lq;51z9b6?j?+%~wiQ=@J{2)sTn(+@Ud{HX@n ze%P_2(O=IJTBTcrjL=Vf^l;=F;JoXVvd4X z7_@uGegXo55?M!_+cZbX5vq@z_)r3)0{HFeHgz~^mj^RL7w)^L9g(OIM&ZvCmz$`| zd+2B)Iw`5zrnD`Iisbzl(Js&qibkip$wknK*DGgA~ zks-=TKmUO1z!mo5vRO`@U2l$6lMmw5n*=slq^=FSron(#ZtU~=r&&QG})5}V>$|;^K5Ee^wnLVZoXc(I$H(h&n6EiD0sbd^J zq+g`GKn;*ioXi^4%Td~g_u~hCgDd9e|5|Ey;+s><462GBA%Z|}7%C3a?;r1Qgp&M| ze@o!E^3Fr<-eo=b%;E!QgXx7elk8k(ZWVd73(>gSddBVsu-F=b_a;~!tqwK0X@#hY zto)+FP4lnf;-`IHo#{@2QAmAPwxto!P1!e>K8)E&^T~@5FIcR=ysHg#+?iV_^aRnkisW_T$xx-q?iAjr>FoRx zMg{jASV|I=tOa`H_4fqw;PBsvNkD0wZ^Q%zNctzBAVwqpeLttTx6>H9kY61MmJG#% zOVQ}U%GO!N27o!L7em`Af?skmi5Oj`5KE4fybE1qzy$XT;9zG#fsIg3JYa{OVaZ`_ zutmks*~iqjcowqiqb+|LKiMUYWLZ|QWxu*|ENz2a{80}eHH)6LxdDFg4LhV64ce5Q zK5W!-!?U$A#tunJ7vhf5&C{0smBY{($*h-IK+}3x<&k7Div3clfq(#AOmFC#1Pry~vr* z=YU-P+Ul^D>Eb7SS04;B0TL(r)e@X|JAs;F28(75utAeedjHPpUr`4zy*oHkSk^tM7 zr|=s?j(z0`r{0{@$F?SJ7#D+!K5V#C@d7UO4&4S!{nlDPUXV+Bu2LPI2$t)OLNC4B z_pIkwVzGA)W&jC!7Nf&mdVzr*rf_RAjniPs(&4|qv-Xg^S51>N6VRARtokIx779wQ zw^OTdC*in0uPyC$-p>&8Ph98cO3z`(I5X2gC{S;A@da~_061SLNBvCKbqvLbHmhDk zR}>_atZnNa`#iVES0agR=hbfYI`li*n(Cn+4HnoowY?fQ)D{q(TstNdz@m9(nAB39(hRGBw8eQ`0MQOP2_fWsu$qIg=n1#3Mx;qUckH070;@m!`KuQ17N7D z$Zb2U=&+ph`h`7*Va_UW)}8!E_4yZidcy|qvap-Bjkf7$mSfCDQAebAfYRSp*|2j_ z&cNqNorCe5k0)aRs9*3uo3L#vDZhCzX9T}^Zm*UvRwhv>WluQ(I(>JcE+EJ7sP*St zHJ}3;NFp>j0Al%Y6x63Or9+TDoPIX)&RCiM0_M&ciHl9-g~l+d;mYEUo=W7d8)@oK zIX6`5)gYU(PodGV7nqAtvnIh2>2N>Q0XD;E^^lx6%1^yKK!Av?*5a40yL4UHdONGD zqnrjo{y9Q5LGhikQ}t5$H4i{qTR|Jv(DR1?uW*oXs-r29j1%}?LT7@GPhCN7gOgNh zXG0bllnPQ(mQNU$uv?~J+iIb@F}AC*!;9H%+ioY(=}c~9dlrIxd=~@OWyof$3;sy+ zE{eqxse2Wd_r1cE4As+IXgXs+XAmPZ$8a^mfmL;VY0uFg5a?&2ZX>E23$D+0)7qcw zqhal5ZSHKflE&hJkU`*o-I>k4nFtO6o$wVwG$Tb+YuDmfDJ^pE{ERc<^TS?=5o!N>f2{^IA}Q#_aN+fk4x(+mEq=6?P=A6d zf)HAMZk6a~J+DZrfBh;Q{kXs^35iAfF$zR*|9usFb;FwH&-NJOtqK9!Wd(RSXeZT? z<@zWR4ASB~1O}yrg=OhiOu_s8WVy1d1aCShuoim?tgva!jKsOdLJ4$${1}`%zP;0K z#z9&k{0KRkP6IyfQS-}Or)eIpgt^N(l^h`ezFxl+7SR~H=F;zrEn?3Hki~5hd-}1Y zbUB{(dRM}#Fj$RFO{mX5pEFd-8bWjcW7grfY+I}--rN0hJX=g0sGq)0XS{AkIfPsh zkNpEJ1)4kMtPsqi|h|&4tn(M*GhR?axFOzw)NJ6B*Lvmp)czJR z(P=nSuU&%bSIQ z3@!dGLgkEAm=v`H)M|~ZOOvu#`XGx~W;%d^2`2}srvzOK5Fs{{7TNc^_7ZryOc{Vq z=7CSm_N?&U45j3+<}e>YPxZRo%j~PqQfBho((3uomc`>=@{B^g@(sI6=@gqcQuZzk zIPqUk4vG&%=LP#YwJ**W!+XFwp9|KM#O^9?BVMf|eXLyXijCG=6zPX^g?%s|^2_E2 z@AIYPVN6Uc87mP=WcY92(E_9K6_!GEeoEB@%IsY2Cyol`6?RUdB?|Cu^oEdvsDZ|W zG-Pam`n!e8`dM|@q+`Gn0UQl@@`G1Ltq(btBrpU^mM+Sc`!~d?K~aKSEm3Wv?%1Mm zbC(+1!;`#*iaUT3ayQ($ir=rkw#~H(!XJ&q{o+$0R&IV%-m*MEcr826qV`);AR2Pg?0C-KDx;?JKQ%x0pxDa~wjG9N#7&B4#QC2>Q+}#38a{Tze8$?AN@ssqY)ni?qa2aG=_PoPRc>X)4I>T}t zb^~ZP^Db-i+93JX1|Qw3v1r6~fn5KODP4>}>PPeCS^D{hnt#j7Dz#Cg;D0=0Z+pWT zm}yNR*uwXSdnmD2a$BQS-$79+iNZK@8Hynq_%Gb}h)d zzqWUc+G)_oYs=UXKVeNCP$5Lv1pHy40ybWo;POPcJTK&)38FY)jJR5HL1jE)^(w}> zjB@&~%+!2pk%))VaVgmVj^M^Gswr@puU0lZ9d43~w8&T&%aW0erSCdY?fVmV3FF~m zR}~I!Bd3h60^Ww$bMKQ$cgpa;F7h;=_=R_u6Q&>kYCaBB`;qmE7eXx3c7UXi!&T)N zCBm<1UYO$0sSy9De)zF5vj_SJP}#YXY{8~iT|EzT5cN6zlO8g7c3~xUce&=?+Tcz!6NgGcIG`H#|YG)NQSMjI? zji$ISXekC9mY@0?RR?Bbbx+JBsqM5qXl@U3+tAajTQ-ySkL%}9KUnL4ii_Z!g*Z(($;Ft<0^7YB7&mcoa=oPm zHJRm2Z!*7@iKJafnPlq9;z&_4T7jvl1Q5_cV83?q3_rm_J=dwtx?et@1IU&`)Uhc` zZPcLhRaNWF0BJAEj$u6mthH^n(#A~lyZ(sH=$NvBkQV8o;YNaUHI6Ked53-(;`vee z?0Yv*euZECNYR#jL3UOCl5R8Fi9eb?CnTh--`a{t2qBsEc)dWaM#Sap_o2gM+_Arf zmrC+$s1bd%4z`YlI_gyBk5r=ybyATRG?A+Z#7zT&t>;bfOfFBk983B+Ck@=;+P}(kUrQIwkP9_dBb) z4fXe*$ol_i+B6lA!Ct{=CU0k(*cxHOjCHFXE*L!UWUSZDY~bJ>a_dDvx1m#qW$j`c z=i0XPy;Sy+SI=^AouAPwF{p3W7=UVJN(6?lo|)GOq?)A^RcNsF@1>#YvUzX2kE#dX z$=wzT+wZz1c3NK+r`sHHKJVCcGH#mNmsy(L9hYPjlHlBl_5Yf}y0q)Hj8n|K_#!Cr zj97xGP{$n)jkG5v5($d__>UN=)f$w^zQOaCGUL_n32h!(ynBu4^Ic5m{?JKNlu{YfHjCbMQIx!oaCz}JthooDvnmrnPWv!DDIkc(Z>9FO3lMQ<@M+|w2@qrvjkW4kC$dzfsjBKSZlWG> z^TxvrPC+|iFm2n9o3RDt-9kIfkq%IzgtLWeA#iGYVAD2VCC}La##V8=L&HI&m5q8-Ye!1r%9-vRI=+rQ30>|eG;by#wUns#r)!K@ z%XBHRxAZl-f}n1P4yLIr1t5Zc)oHZB&_gITBg4Ynj%18cp;;*(9g#EM#~}Tp0v8OZ zpR~?m!(|y8dIyF9D@@Otv!@*(l?qt%LORddt;cuafK-M|&iI+zs7VDe*zGxn#p zRYbWDNfhghf=wMduTtd!E9A<7vrsx=%f&(G{XZDlg{6|o+)(-NfM=Fjd2mS?ip*Po zxyqhk^ci0iNJFrp)Cd;v4N{`1bE!sF0zX5={O12Rg@uG%Z_w4Y0`332c>_1JexK6zazy(HTIK6N>1I*aapIF#5&0fv9e-Yq#Mk_ z?N-8lG#CR)ZJX1B3sS!QPI&*IY zS35@TT{UqZ*1fRm9&e>ha$MysJWSxxT2-lHn@&VE)KmtKbhjX&3K($Up;X4y?yDt1 z@1bG)mL3CHS9|g3*S*2(O-KRGvbil}%^+fo6O=3-&o#`oO@e@g!EI9oUufGCkArR< zunETve0_4f*dC=)&SN5hQ%12z?Cuxj(tvsa+_N+l2C^V$*lY zcJ?OUa&y5jp0hk&XWUPOh2x!Sm4?id$$k~-SzF=uW~D-BWXAuB5ALn9nYO=#R8|x$ z1DS072!3c-|E;eD#(vL10`f8Uvp~^GD&Tv#WR3ooynk+(sGU1S`1uomDdPHDf98$#30ZU@%P^5heNHG+}H2IHN9(@@KZCK z3=)X)NApW(=QuO`29{6qkk2XCHxIP6QgA zXyGs+#aCE=ynmI)wz_BZ+i;v|*w5{*sH?fza_t^f2v7!*4CYs`!~HyeEbzB(MaVf4jX&bWl~k&TYma+QYYK<*ldZRB5Xe!g6>`f8=UdZ`RE4kveVS zVwNpA25y2a$M?lyzsr}*0JXxCYX+n7)qD5KO`fCEtQw(bYAbUIY5w9ujsxJ` z`pzfK13?O53AgyR27tt5QGKzTSZ&B;Xvdh^y8pNLA%t7F|r{LhJ*~_Kj#+qVRLvjn= zbD9=)-DvFowGT-A^h~~a-AyaY=s<<*Yl@@zC9B-Ai!B{5#9>`=wNvPS(X8=W7KMum zW+Cq|_^sLtWVOn4_h^6cA{;00V!VPnKK7S>cVS9@txsK9(S-2xpR#hF3ZD686gW^e zL*j-_EmHxXk_|>LFDvf@t}S(U?e#OxVsE;>v7Gtj+|4Qc>JCd+99P-ggrfB7x{JNg zC$IIOaRea;jt5i{s+F|2tE9pHWe(SG%hKt~t(;v&KHgg+Dk026Dj0Nb9cpGww7DHW z%wr!zq-JI3VkFCv{z=x{I^85=e9~E+BM&2(ft@sK1bB0Uw5dVMV6n`{ldlb~3Q`gG zQ7^}}>?=qmfvbt8rZod1$J(o@hJfk9Pn7~?bWkF`xC6He2EZ<6)CdnyPQxZ-^TA5WZ?02-EsvDQyr?ICnrkXX?fx}AXlCMtKPif1 zhY^;mRe&EGBF@euAN=uJ$#e`Za$CDsF!J{rxB2e5@MhDx?=FDKcI~vobqxFdo|u+Z z{8H7$TXK{AA5=LdNxb?4^vB)lsjU*EH|0Vk=01obBmYwMdwy^L{*-0Gho)tqI(pIf zxkj0k(*Qqx-~!i;Md|exm!pMp&d(R<3l1lH4K~xh-PW*saB1p3uMw9p2&{5pWXxy?^z0)*z~mv#1sVJ58%r!;F#r+C11m>OnUQqV~BY* zlu{;9)%J5BF7su)-5YZx=4*(i)v!1?gaM-e#OCg{$++Zg5#+zLfl^Y|a(mzir?*gm zfn}BZ9Z)PUpB_foU`nT@GO=h;VDRSNx>NGA`pBxZX=OF?_Da59PB`jb3DRK$S~)|o zc<(Dm|7=#|&2O-CE zQgy<;5N4D=2w)b7YmZFw@nGgg;R{R+(5zI6PG$2_>}OS!4*P8RfDHhV>FQtDr^aOq zProw-KUP$mKN?F*!MIXliJbY*9G~Q0(russ6{I=)XVwlHJ5~R=mii9Vm7lHKm3fU2 zq*p@f$rKmmcE^R!x}W`=Iao$iroQ#ar*JHn9SeD)-E zqPA0pb_g@K3I{k{4aapRU!Z&!9~L2UxFqCY2yAL$`xYzhf6_AHC}xG1qB=rk!1y@_HJpgN@Kpjc+hRi92`tC_7Efa>Kq{eNAT3sZdj*AEPu%8xe*P zL(878Sav)ir!gXPOX+2zyk_BrqqxzYvs$3Dge!pn0Ob3%Hvcj&55Aci2h?U3rD#k$VC3fox@BkNgG6rbjtZ)O`$s{V z0x`zkvv;&Ty+k=fDEH9NqKGP%(n%8+hSY%^k^HJyrP?7*0E4eaFTrtEE5rDRmuXyLbum$WJ zcs=M-n%pVSdTuFj5IK|7B=KS{9o%kkA!9^aIP`_`tao~OGrC9Ngkdtkt=Pjuk`qFd zhkHz_&ML&ggZ@jQTa?!mcm+~A*YKK`aqUvc!rN?^4leBIovKIoq0Lu#7hO4!KM@nU z|8rbY4Q=-2Zou$e!&LY^yH^yPukR=5`_FXA-nPYr30{|9^`eiCH={(UOc+0ZqWL}( z9yy0q;RdS(@T``^K*WTAZ&ixBKj{^3PY?wjNZcuD$ju8}Sd8{tSA@mT1!QC6IAwcTtdW&xAk0B8@7_Y~j(atI63b(D)HLYp= zTe#!2B#sdfl<`jDP-v*kNVBqy+%VXpx3=NiP_a=&s#wA;fzxYd&gg7mSKiAM(Hv=1b4eiZ9))rvKZ z>hfA20oNX;mH`Bv>%F#VEXp)8oj{{J>i85m!(xSO#I+o4gf8J{O{tfw%yUQ#tF9WR`@4=B{H>$IlDK_(CsYsBx5DG#alQsimx`ee_5!r8KH*!h;T z7^C;`0PS@7>JY?^8dUEya?mW1`Ns&fjPT3;#4sv+v^>6$0e6E@iSCjAt!W6@3odc3 zlcOVYy~~QcQ$x5~^ubsKRn$ff9V`~c6{Fhj#JN5&l}Acot%2OY!kQqH+lWY;&-=HD z=N%hSIK;@`!hyDx&y3dCff$`Wbnm|$`AY6NQ6Cs0_!d=7tmq&$C{>Q}$@NMxI~-n| zC$qCe-zUz2G>q^IDA0iMvvRT;{S@ty)PXtyg)hYhxSIrE(v5P(3z~v$h@y_M!TcBjZ9>tiGPwSR(iU?sBh6I72topHo0(SwPEUk@H#zi=iV zK>4c=cHX*(UE8>}Vqv!!T0u0nxSodSoC6XcZ+=WHC2yHZ*&8yj1`Tk+OGOHJVCiQk ztrkSAe1JF_fPtYHxsN}lLdX#Uo??rVb%)gHdkG%hdV#W+BbR>iG%upBPD>H$9amA3 zQFDSB;2;s(l0MXedp+&&OB2E^O|T4Zid!=8KA8JiN~FWz90Qr$tP%}{`SE5YXkq^{ z&l%Wz{0jI-e%;H92(iY9wzfF;NsZ5U5Huagx%UH}-|^7p*)crueO);Q*f%_Hco%1a zpc|bNNhwZP$+oThl3BO}{Z#yjwT}?F#x{Bu8qRXTSDV6mesbKxMCh_FwRui`BA)E>)zGhrqBr7YJkmijH%S!kZ6YK8zPdWa zz3e0}JF_G%%|56j=TBtSn{U+4+xZ{*4_{tl2;A@g-K#QqNCZ@^<(`Zgggn@!C1!-7 zPbP-T70Cpz85KfOhVR9(!Ib=QZTvg+OPN5LIu#SPjh&_07zk5eFAy<+pGj;PN(a&N z4;7EJDNE3#5rOGYC7hcg$nHWqwrg%t7#5aocKB+uqdxJRV$2*WX?*1iJ}fe~KTJA_y!u9=GyDB$>*Z zruDCM7%#vvRuZEYfM$lV1fAigO4{C^3<1#V{#ai@`l)x#qmjItOsh@>>@c8_ zxIM5Sw(cFUG%+!y0PTZ|& z&2kc1G(f3xcA~JVFo9h~snbj$N{&Qv7wiU(Hq#FgI+B{oGcaFN=7JHl?5UiJF6?*; zZCAyxCYK*67aK+KCNq$h69&%uAUVdwU7E^1UUrR2&7tU8ughXzF!mYlG1)pj!r16$ z$`A&_@pv&nNK#zhCjMAi1@!b@M6ki365L$2h41_>>cbIo=E1~Yq#rZc!LJW~aoq$6 z=CrnrRbXd{Mdk$f4)ue!-WAkR9g@^fUhSP=*Lqb$NT7iUeMByjbYhADjEV@VTb7&D z3E>q%cSQeQbF_GlJyn871(fg28Y!y_^{>)ZhdHecfx(%2x&<9Z0a(P+f1%TrN}CP@ zfnmr8<-GQ}l8o_j&%~zj>=K*!H#U?6cLp_(u!w2c$yGq`=tHmSTfH$U9{>6P0stBo zW*UwrZGPMDN!~Q4KcHpodZWo5{x`g4$=NDBUD=wb50n>pVxRAs_hJXlYn5?qUQkab zo|M)A<#7Qb-8yaU3%G0r4vq#7sitM4dLtMX8z|}}w)iB)daml?lD5YGPvncAnDF4> z*Zp%u@=8=P2rWq8y?1FQ~RN z(c>5poJ3EH0%~aD3kS~;+ut#++9emhT@u!!aCyyt4w=Br;@vhJ*`6Pt5{X3lwULi= zl+ej{gwU}HVoD7uVfmXIb)DulPFNnO+<2{E32JzgA%wmMZtYB7)}c+ah9Wb6;BLn( zV`cv)q&3T_9%CSnB`BaX{^i5PWUw|3_bdc#rgxdahY<;zA^{&^NDPcOu*-N%Udv*& zmtW^YH+1K_5t6|!Ou}3qb*BF~I^BR}>0=vD@)QI*Zc&qm*Tos{dNaH@uYIu=x{`IwTTG$Yql<>z9ViI={yGuHO7Lj1`W`-7;F#UepEAg+NM^923JS3&`1jVI z6|h|B=*>}^T+sifbSa3XyujX2edRP8$zSn{_G2r{!h!_8wG&4J<}k+DjOcW-T>IUB zmr)iNWf=`Q1iLVZGHuMwEoaKsUYJ5w1@dStGV~G04duE*{Lfg9-^Z>$9@sjMVrE;c z*i35!iOviTqF)0Oj}5l0ALQYjd28%=WwDbzx(7&X{ga-4)e7~Q=^LNZuN_m}N z=B9Ic8Zk-}2789hgO2#cV=0k?4$vz{$!3vm4^fVIG(-#ke)f3RjG_Df6im_L?NxM* zsUs10{a}F5fL&yr0?60ql>_rAtO7+ordxPP^AW5Vyf|!Mw4rahVln};UG9J*Yk{SY*D@0glB2ihDCc~Ah=1%FJl^0Cw9jNm_Fd*? zz==+XS!jSSc`RqgfMe;hH$Dg-L?*x|1O6Jc{Ab$!`#rfFO)j-2@%t+n+I_FgY_f3r zPK_G;8Pqp!mav;p(xjPgNI+?7&3S+^w4wGrHwwIp17`9=d*&);7+z|2ev`y zPEAjqBIfUd9lj)xQqLNfakbtGXo_r*msMhf$T%l!B@|xlR=HJX&7O)CrQZ_U0O0%c z_!O9XNhux^py$m(<*&yWH-Y?$P!}6C zp9q`mw*0gJdcS?)0(?=XT|~|;vP!HG=qh+56Pqg?>mD2*K0C=I2atobSI*B9-W0$f zbUYI1Me*jUUK{UkrGX&`*A1BUuOL2j|0TOB$M}=KJ=@ty!*ja{EGurAg6mMUm#>zU zX`U`^YFDVl?4b4d!LT-2XLz9asAZ?qV)5mA4a&E&FbC@35VV*Cl#u`VLe^tn+&TOE zoYjaYNyC-rJlu2O1^FwmaK=IKY*QGC?PL}8#A|ip|GcC`f0t_lv9{L4YaEIY6)U08 z_YJ+pTInlCtJWxT@sn;_Yi0O*N-K23BD7Q0=Tq}1P4YBt6&d9~01T_ET1aS|26AVp z=OA8Ie~bDEi)RhPc6tVHLZ#W%DW_f^H;V}pr4cQzHXRG6FDo&8)!C#^#-<{{`s};< z_T5C&O4=P|U0r(|+x`yB@rxuZLE9C$m(93@>qswg$VbvMdj~t$3(mdFE4Tky2N8|L z?ew8-1he#@J#WA!lVZ7I^`-qx^>L@Xw!Q{PV3+B8^jSTuG6IAqKO!(*757bqs{>p_ zfC<4F-UAohq{)3y7!bS76M*ZOOONVg1U^Mci4iT~9NNrG0sV5V#U@s`^$j}k1xwn` z$oaBT8M@ER>qlM8Az(Wobuc5d>ahg4q2ZNMpn{LQ*8ZsY!Fo&R!xxY3cf3+oRI{3B z7%lhM$Fsb={Y>^D6w;)22#En#Lx)iJ2KMM60V&LBW&dVz(056{oLW?w&v{MZw=c8Hn8=Z8{{2+cce$+A?rb3&9TOFjqbdoBgqPu~>f-_gB^^Jj35pB<5qrG>V zs;-f@JV}Z6E>v{*B=v$ZsC(bydcj}wF7^Z{9G+&?-=}Q%1Lvc!#6O(V63^+UgK{5? z)q>pHdXL8QhWG5FeVn<@!lWIBG>y*qD&GBKLOe8(n|FKh$L(0VOGA*gtA755=xQz! zFpxr-+sLh`7(TbA^;%gMPX0MpVi$+G%+V5syb zjNc{VT@^OP8sbXt^k0~Gb8h@aa2~f*gtPIK4HD^Edl+~6zX-nCO7uxGlA=S@+CUU~ zcrH#mrWjWgE&t@ zG<7HQd&GnwGHe>l#ZaPP()mc03-iH)d9drr+@6`H$~y%!a>Z=yw8~%g-NTKEDMMS9 zxbrq>!*t0_>Mt!>hq?3^!aSUxtz(oxpTJALhRVqcfNDKaQrH?NdTx)_iVK0&$a!(G zV>BN{_{tC#g{&Jl{;w%*`t= z^3(5{tT08dEnGWQzs=J__BiWZET#Wjp_#05d?$ze$94 z=c2K--;f+v=DVAO0xIi0om`Y@RF8PhTF*YEt_1{=0l-#=g8j$65?m*Tdb5Aq#ZhR*~<|Bdg4g++$aG=-7!PVODEn)i~(nzrZiaa$G%_ zb-m$k3+Cs2lpqYo8XKUh=w(ahXowxqi5u@8?$Q>g14-HOVF|jhrF;|Aziy0iykJqr zlnY%c#aXI;ivth3L)AU7Pq5~Vm{T%@?3?YE!rEh4Sg_F~cy8xki(5<7sq^k6>;c;JQE|@VTtZq=M($h2o47kw z&fNc2!wa*MVEUiPS4z0y8i-A>o(tKkCTmp7Rdi!+A~`M}c~ri>o$q9r;7*H`#mb`m z#Sa;b2krE($9S(@$M2m*1unxfZ=L6Vq2=*NpF58{A?aGLrh<~056+X>q--YYa7sM1 z3xpfT(2aB0+K>8;$%XMSMKp(#$8Zi-(KL~btU|2ps(>fmli3qxKbPWA8@ft%uv`v+ z-3R3EO~$jiR=|Kfs|nz-@>22@*eRJo2U^G@It3XYnc8k#a>sQsf%;H9! zSI23ttg1ccYC@-(?HY^&zO-GcE(l~E`FD{{r^_h&4vF}w{Cj-Nn-4g{diA|g)y5qt zle4fF_-yBdoBb;|W(`_F2&HN6JGv9t{&UW<;GU`sV)bn}K{?fTzBv*a&>WZ3J* zcnvYHF$-mwcW-=OTx53=8k{9UT@av*y55X?v4jRNUa$!Y4J0bOBnj+6JjYL{%#Nw! z;Glh^r(8JG42NrCiB%I(s|YIC6l`TKjoay_zg#Hi!VW!Rn^6$yjmD;*nn!eY#fpI9 zcyZLyASci?(0PAV+MZJI0}FCoZ$te`+NyYc)iV&b_Rk~Cyv!3n`KE;qbeEyroU&Jk z_tDm;fre#%6Yfe~)h}EGWFK2~Y^Ku3WlGZO`h$aSw*Rovqt{e^yqS@R)*8(D< zFUE+ZW()YUO^tNZc82W}Mg_&TM)eeX4K)TGUzBqvuHUC^fazCLA$H<}=Cw#7yo04S z0iLt(cb5|7aqJb1{InE0oOlbOVh*KDrq6>8R`zLxFxymApwhh)IshZ!*m2kkvAICM zVVS3mYVKCTGvIsx?pwoxB4yR|QiT1eU$M0#;-f>~)r8m01Fx8&#tBO$UhPMqVolFA z^{!xdCW2B-I5Qa(tCandzr)wy4@g!Q+6qD9Jk^crn(yG)qG9kd{j9#AN`qSKnkF6v zp3v11MtO)1L{(YF6?Q{x1;Dw`iR zXeHG5Gzkp1&MaYUDWF31lw|63Stm^zM^lcT)ZT1h7!=pW@xJek9!(rXdmT9t9n5jc zV1Ux$#p#J~FE%p(P6~BHc3GrdZ@8ZT{esMG1(nUPwDGGfWb21M4z%iPrfv;EgB9U#QN9vcjY1f-I*Z6+^q5Z0FHXRD4-r;DRlN) zAwEwEvGqz7*2RR63F2UD6B1h7;xq_clxp#L{57Y+h(U{j-Akg?=DfZ0m=1_S@(9;r zC>S#~YbS(@h*8*~f#}W0=?#rDGm{{V>fxkGV(?qPY0pI?Ge1Be7$f-wkjAFnXUI&n zGte-Q=Cy`ljf-y0$oGxMePXEwQs5=$ceV?yiGjH})kw4rLjb#J=GaA7z#J-a6N4eS zPe9dH4rb`;52@r%CW1Rk5yZVMYjhSyCkcJFH-&0QP<3{npB~{|gllN6&2OhP$wHHL zH}TG=5Y>x4MfO*#2N%Voc^`L40n&&*v3Rv=qNqZGVaMEx>W&VcAIq*&br30N;TOmx z8(cZPOHDs^71LB$9LAE&890sw;tVdDk2wNBC1jG;ykINHRj7xhJw0x6WQOS>vyEbk zHSy--@yRA)XdYW@+$u&tQyRhtP9Zc-CO#t}LuNX$DBb{RWJ=4Z-k`4c{Auo>>~;U) z++<<8h?F1$OKz0x6x@b9aeQ`5%q!ZzrVAElfpCRc^u?pJ*y%WSB>2j}3H~4b&wd)H zbnV-a9YZV}mkNC#yb5RTRb+3N@q0vB-X0}_ZIW7mu$^zgXHkNaRW~3@MpG4i+Nq48 z*+^qIWN(vr#wDaPNxaT5a0J|Gr5($Vn0<`^2ww=5=dyN=hck`?qVVX=Y4K|NTU_8q zDurM2u(j%+yiT!hu5lvIKIeeivK@M40`_Ww7z?ddRmC!oKgRs*_NE{eqF+j5?ShcU zA;oWPU{JI=M1ESNO2@Mzl`uOHf_8jToNi0o5C?6e$&%ag;OkJ8jXt~n zZ*u4FQlhMV&%Id=K$IYFQM=RxsWSFVQxlMF?PL2V))|)$&Dn=-d}8NAYrv9dp2uOQ zw)xjVOwBtQesN1FjXStdsjk6Zz=*b78?0_wToi#+`)fB!yKQ-@aLFH6bb;XopOT40 zuMjJX^h~=_G9O{1-HUcV^^7y?e?IVO(4yQ=4XuZ-FTSD@5Yk)=Ms%~*LoAPT?Md$h zY@3Ve#-_7Tn5fHcj;xc97s7?iN>?nmhA{1Cl!W($iTw@up^h|)Lq+@QkrGjpX$2oj z)e|&)PI?@ouDRT%t9QRo!X^GJRifIP_|8|Jc;kC%btydo2>bG;l+ya#F=Mlr&?pAu3Ei+s5N>0(w_@g%7D z8;9treKrhk6Nmk+>1l>L zd$^&ib!2CKS-!*Ye{Y^)*!ZX(O`sXLfmJw8zK~DWzMKB+MJ)Jqp*jcINT~#L(?pJ? zfGi@xe3=wO-hr_SehgnjNmth-FoCJKwY~J?DG)l?N^fUNdp?vf_}vf_tEEJc<=qm|YRRNL5; z4T6q}0m#R}^BR){a0kI^1-oHA4r>l;f4n>pj^nB-ARsDRKSJX~1lMD}NBszPpO*+Qfz_23q(D1#c(K@p zGz4Hv>Ty7TU`IXQ%*>dS@6K>(dlZ8QUl|Kb4PR*B73;x2ZkXNwHScJH8xozT1no0x zF@cMF&@)DQRSGdE!W4ictx+f33ijV$-mjz(j+;#9;M(5_1@jDqjif+yAVj+3;xJI? z35z(Al^7_7eZy))6)&KfiDqF?>wb%7clHjd4X3ola_S*j1d&lo_TD9VWTKUESPq7m zbUOP8DB;}HQ#dvy7kF+>%<*SmI_4O&XCG_5RMHIV@h1m2_bR2AD{L{u!)*ilPfN5k zDgvrjPk-rNm=uNfE^2P1Vmq?9i0kJf@27a3gg@o*fV5#8u3pEPKLlSnWCBepzI56h zvfe&mL7rw70ynps0EHiq*@qvFbyT&@Jg`Ru84s+=s?jRjSKVfSCb1kBzAeUw&+H-e z0_EhJ_Mquod=eFyst^P~$(BqjC@aQnn@UVEp#BDz6E4?C_ zx%jcwPrz#hUYIj(AfuLf!Q-5;EbV9??mH*JFh$Yr3oZSb-{Qg>omGljpKn6=qwZBS z1$PrlyHHAsD$G+fU7sc~iJiTY*jLTHw=qc_aF5-8N@)`H{;z=;S;Fow@UGPF)q_M% zjmDK%RltdMongy}5SZ4P;ZqU&Y?mB|E{cN{;~$*PN*7=|sO8A*KwdWtDh-;ZJTuBp zEP+|-owvH(ZStLsF+o2?{GY_Ayh?_%>i2R5Vrd{X$3EhIvtW;E&U-o2HxA+nhcv9r zOnLu)66?C5i(($pYGw%`Ik1@nXv$V>tPXvEF<~~At5FQ5=x*1cJ14}e3n*|_1;|7B zO?T`9ePtAYxBH=0t9Od=mU=;WDa2}0{3sKA{mShc*CvZ5K^GJ|(o0+>8itIkN<@hQ z-mZ=9X5f95y`||YiXnN}>eJvl<@8UWy5{d23|weBZs(#gc_oalTT0_kn^e3DW5o7r zH#`7Nv-f}QqK`~Vp<5|K-9xT4x{SY~p4UgOFWX;ev#7hZyFxOoxa1fcPgChWqI<2k zExH>K%~S(K6{;$E2_0dzPT1YUB6G<3ggty(5u@AIM4VFWstevxB}ANt1GHia$dWV` z*)HUW$kX=CBw$YM{~Dm)9F#y-CdB<*c8BI7e3{x>#GoZzwq!}#hVJr0idRNOy?Ud+ zV$wf+ZsIG%S&AonBmR4sx7D8fx!3{7%juK!XE4t2JfpEZ%3aub-<$)v~h zJB;Qjq~?LXc@?s5u?($Xr@lUZyd;4BYr?4#Erzun&fKUS^z=nTBXpQ8E}pm!AfahN zsQ~W<8@L3a7$F7INNvLjHD@-#wtMh*uqb4Y7WI^boI{)3*h2*oa(tWzIb2G-?Q8Fl z#)v}s?3)(xN{y41F2guKC2m@5lrbh(5Sz8Y?xQnA3aX_*=zNV>56mxlXHg(tR$rig z2xeAYg$ZLX7WaLy>quZ0HJo=mlFI9V&0dK>5WcG_=$`RhLXhnsBAHwJNc!lmP?_Js z@8$v);2;qRqAcFId227e{2-2(aCcbai9O5klq50_&|J$>4$&qzUV|ft5h+zS92=mI zOKNhQt8R|*jAikEH6crY7HfR>)~T=2zicSykQLGZ3ZN)cLMeq*>H6kD)Bq977rfgw zg0Tp~;SoGT2fKN3zZh8>MYD&pnZ2H_+qw*b;QBDUksL2t#v)p9VY6Rl??M=tQyjq| z8`z)aJpH4z?3lT0r3DhH+#POK#9@iF$A#8RW;=y0lS68yIJ``s+j=cAGElMu_M$Ol zGfM1xmk!ppZnQ~qN|pI`s0&?IR7!s1+0en{=5rSuw9Ef(4N!jS!|xRbrEsW|eiD{C zacFpkV_JY0e)eG>m5%yU1&JBbeENb)Vknvi9sPD05zL&%zyr}-OQqzdqS`Y`j+NWF z{}F}8C(NN&{8{2}osf!lG_zu<9<`Rp7_#M;Bl=tuGxS?|kEOWhYCYxj{aK`Qq@}z> zZ&NGTxK7CIO*rUiKCa5ShD+B}s}^EcD7vZ#t3eJ7$P)GdQD=LAJUWSf6oj6X2dcle z`P~#yd$`u-D(1rny4KJhOpF6WumSft=&mE$0Cy3lJgoKVXAf~=crU`B|Kq?{U^@5` zc>m3@d@I_pnVjYiw(Qu0whkp__Sq1~k(D(Rsdak_NR&NrhF`C$iru>i)J|3+!fA-U z7oxV$HqN!Je_3N7d}^n8FA%R2rU{h{ZHMLYw*2&|0e;oNyAV7UN5~K904!ICBR;W^ z=eBX%um~ZN5>T>uUp_ZOnyT4sbElXYMHJwl{J0$5(@LFR))38$a7&!z*to$7gfekf za|`j!FW$>FSS<^K_5fjnTp z*C~x1oM`oWfr&Xp^P2<6eSdMNXLaCAK`DE?`y|R!R3{>})SLmtRLGE5QgqJ>2E~IL zl-8$YZ@E5G$E?Qb!5rr#5;64zy)7dm2`kw{-jgA&As2COIX&3L_{Y>rBJEPMjX!yN z51P1eKyav=7)27}46DX809w-_203eDj7=sC>$3WF|F_X6VKj4M&ItvYWka;xB6e@4 zk+MvIxz9n6Ra8l*WVnz6V zR)R8ddZ>`U#f?5okLuz{fv8L+YYk+D%0uyjbXp z*SfP0g)UziF@*c|rl8#)mb5NjVy_QWkhV$K%Vo^|pqmq0ITq1{mB5k~kYRKr#s=lK zoFZ>bo68uq2zVEZ^kK|ApP1Ph)T_~E)}<+BO{NUHS$R0~ z24K79ib~)pclbP9kd^N#b*=qy$|yDBV?4z-6XlTm5>$~#;x4f*WyLH#HW?39NE+At*7laF*gICG%JZykf5o z3}{@aElLh%`yQlDK8*P|}Q38w#7qbcj%6 zcotbdVaiI%#p8QT?o>!{PUmxJOWb5}_Rye}?5QfHEJQD$Os19M;p&LQoVl`Z)}{ja zI>7GKTef$~D<}l-9OHTs%R5OP8IVqI3_H+SLGuJr?`l{6ZJ13x+tEk%rXFrnpEf*s z6o@>0)Oj_;bkl}0cg6SK`7LM}PEiKx_cRYTa zL+rMr$x#Z`X$HgOg~txE_1!GB{xkI%AP|)Xe|$Bc&e3Vx`|?P)nWi&6VzGD=$~qNQ+Pzat~Z%C;_BY*VyHnDL~k%#tIHO}lu~&?ZGx3*4Pl-;EFmh}fpJGnxgovsD$<}YS&bF0S;_Q>E6v39HZ|b-y^@f_ z!QRbW99F(mi%VVAVfDx(ZsCpTqGx0mwz(A1fREG3@I&!k)R+Qsgf1jR%INvw`D9ok z?=P4-wZb;Jn=)uU-R;7Zf*l!t;wMb|#Am+B3Z<)&9avOi&Yz)#;8(mtpx-JWa$0Qn zFrJXUt?x+!FDA>9XKNZ+7tEy=k<8+821M%QrWAq+rQ=+1%{AX|Cp5mW7l0Ua6 zDQF5kSMHj_-lS5$oUbYdA96d?@XqO&7bChA4cjtz|EQ-nPRZ)(Tq5+Gdnwu+Sk48a!~+I@&Z7M8Yf9xrRj}j5Yla_wUFBgl>w?_XNCK1&;k6W zF{9g<^eQNzzXN}|pOtt5iNH`y!`U+W%MWk!wYp!%aag<3yy+hlK*brx1rMvAZh5_pF78nq$|JLw82~lw7tAZb2&7A)=haY}F2y>L{;RtSQ%RBYr#|{#xjAUeq*iVSJGG25 z4MJ=b?WqAGc6P;)#(t3zMqA3=xZC-9o{04KR?%ViQdLXos#lm^UbnQLkM^Yf^nGFa z0C2`M){1V?59uL)PCuzOBcmZ8&9qU7u%=}N)>kX3Buv^-;%~q@ zci%Km2KU|=f-!56hLNbEm1fU|>-!a>Jz6~yp0(&goE{OOcO8t*T+~b{=421+w()z`m%QWFZ4aX!Id97G}Q?W^`!m@Th zFCnm&5$n%r1CFHm%tV)v>PM^tLe6w8&?dc)Ww@Y543>u3EFT*1mDj8N1~|HOlYdGu z55YHh+@|5iU${#43&i@jUxpL^(W*>D)az+2tCwUuh6=IViNA$2zDC85SG1s5_2GA6 z_T4r{T`i)!)$Lm?9^`SjmA-Pmo(W>P`Mo_T1yXliXcwSdN|<0lm(~h7jvrdl zkqpoYYhzZl1QjZUqMK{#ESvRrKF|LOSJn3tSl4}UM)s?&X#%}W9`roq5k>+FnmhfmASRb;yU{vz$=82S1Tkz4d%oqBf}upDucRt!lxRP8?z+ah@~v z!?#F_jc;RA5^Ok)d0pV1w2pWiTin7|@SvR$^8kHEURmFpJM>QT>HB`YGUZ)_N2}QE zjT@*7YBi5M^k~6)5n^py(0fv%F;BwFWDQB9b>-E0uT=59qXkN7xx9OSs)(Fo)G*Qf zi!Nk`(&MO=_Mtbl_=|9L?rK3lMoDyT;IqFF4GU+J%?OCm9GS(IcGm>m2DPBZ%lH&$ zjA}M=JNf6ZB4$*>cvNa&QD3L!o|Tf?k5962dJDebUP>}5e{sTt0@7x1!%+oWKdO0v zgFa|?OL}8jIOeGWCZm5ZukPRx#NYlMXiX%5qUP56jQJ*`tU9Jydj$vbbU72W!t_?8ExLA;jgSDJJKF( z6^JI(1Q!_4VANz1m`f+rN?;2GC~BtqLxu_Z1kJ(jBB=PU{})DaeF0A`M+jRacC$~! zAqeis8Bq50xNx5e>z2ben)1i1m@Whw$wBzJ*Kqi50Z*NvGlOWS4wMY( z>xAk6)N9zdDJQ7F9;*u}SU=O!(2u5^BUyFpewz%r=HXb5Y(|>wv`tlm$(=A~{xD8> z1dgA@bmw?gd=0s+T;v+uxNnnSMAEgYmv*G z#OO>=*Zc$(g7UG4Mr|8%EHIN#T)N13Panb_jE1^{EUH zNgUY!$4fP(6{S`Ps0##frHe>7Fv~==gBVOvt?ho1tH@(=I5kZU-|Btl8Yi=-<~wVY zpCwaH!69141N9ZjsC`~wy>=M?tw@4!jwp(Kjsoc0%+U1(zD_frbcGU&>D@}g%p@pZA8!-FBNVy7XM>nXEF+PE^m z9obWQpbkBq3VSMqKR&up*S$faM(T~Wf*cL*=Z`8}eoALJ`$})V=C9qqf+(rWka~8+JNr$p>dNxRJ5d2y90^qz32Ct`d-?JymaIzepy?G<&N;IaO!Pc zp7Zt;ML=52j3V7bIza2txZPieQd>B?oJy$qfMh0$qb`yh6{r z1@A!}5F&)Q+XMI1U*Xw74wQE^2-zpE>!Fg}K2gb;QVZC_m=iL>CgmJS%7zMH7w|AM+zrtbf^ z#!pqkz|&+9B5Y3?+Til~aCBG92?AwIUT7 zqqCWXdCP8`F}VvxCTw5o;n_*c`KLl^Rpq8eMGVAM;D9oWIF#n1%xDEN^RNt{soihHPdV@ZI%v zu|57g%R5ZQfysaN&&|?ARBhOprPrO0)EmG*_|8quuO|pt3muE-Xi%RJ!<5Dw1QxNd zhDg9i-c;ithQuYnf(mRMZGkT{lD_?j3pz;xO2nlYS3JgI%62hDeM~a{s;@;46(lS_ zbr-<0iLU8E4Kq8d$IJO9mA|R#;5|bpD)ZRnBsb$X)1S;}q;B}QcD?^tw2N8YAlZ8_ zLtUy-l<_uC?a2n6gO_mKyU|ivqH|tAo!gMnt{(-yG>1qpL?3#Dt)%Z+xbpH4y{)Pj zL5aAwBlW0f$8!RM6fR4=gjFk9TP^h$U!iZXF)KiX#Icuzury%}rbryu)Ha|@BPBcf zREu#d|8;Pocsc|2n+ZVfI=K2|@ll(C`6dmTLvOzKpG^$Q*Hh0^532)sy+R0x2&8|I zp@KnbQb@k10&05s@{AqBaeUOG^-A<;!-2z_l(Mw@`ohK6Y8SwA70}Lt+RVIvE19aN zuQ#jc&&1wZ%UhWtiTZz{e-=A#movOq7c$`2^e zMw)pjskus<7|xqyptCt1L6C7xF#K-)g(Mes3?W6G1w9b)NuLQ5kEDR?=i&>f&U^GM zA#QsgA?-`9%Xq}>2$u_IT$H8peYH!y5SDI$ZRxL`3CFZ}b%3_@Y1bZBadr(W?PYY( zFCvEj6gc)JGt?N9{aY2c&u^Ta0VW2+R~-$g>D`D~$4`{jmVl`y6<`_=)#7+a(Sbti z7*+iDn`fr!`q7^2msB|&$=V`~nZ4Kl@$hjmW7VVlHt8yAka7XB!h1q^KHRPv`|v`f zj=fHfSY#BL5CGyA=aM?BZMGV~y>4I9!vjHS$ewPS0<-qu%cMDe`d)&RUDAc(=o&E} zu0e(B03l-enJLBOuRgw!MZf6dgXhQOrY(r?Mq7{7X(J~!s|{(v+OoYF61T%mddNWb z1PBM4DsJIAYp;;@5dTp&Z5Ed)-R^vyZ7B9^~$S6uLXB_fe-#>r%*~g!AY+>t&3k8Wgpo94|cvJVfM&H$*)*Z zcskr?&EpLNk`&1cKILP zwVblqYSNyGgV&!w_jxl4x;m&cJ*532*WZdK8jhFM^k5JCiPugr{^WF8{Nw_<1^CyP zYxa{2N5aNFLH5^Ip%_6#qz>d^Ta5fx{6D2#sVVUd`O4Q87;MXrA}a%?9bA2(Om4c!&QBb_gHyOOs+ynsw0`C(IO#^@*dqbh;=36W*O|{FL14F z4&pGw4~JBpOvgskyFeB^e8k=dsR8xvdp4#?mf+O#q!Xsr zXMu2c!^8sK^vAR!F1FH!)Xf%`m1ybo@|PT;Bk4_?s&n7v=Qhke=iqc|AkCG@^CMH0 zGzGtSf)EiNg>@vqRHu8TW4f>S3j~n(DN&e_UkNKk>oU#7 zlDVGJ8$y*V=>t#5YRk=QFH75D^`$K6J{EtgpT_ie#DKIsxJbAm$Hce}!r+L+N)7f=S1n*md z#rJl91(MS^*_fD~4G7;ZBv*zg^0gk?zjqsjZWx=*^#;QBS_@(j(_O!p+qw6?L37Hk z_Wtb%zoW9=fqKCMLM>RB3wm^;{gVkU6a0dY>F&V#BxO#V&23I^B8sWBDZvTH6~PDN zRGv_u`toh4hh90U1MGnWR6lkg4avj#%Oe`9Sw6M-! zkQ6S9_Ztkrt6`RVTTrCgu>7%t6qOkh$(U>Cz-Qppz)zAvYDegrLo1NGm3u#B2$F4q zEQQEp$*ZX?&24~cW3N?l|08{Ga^%8!I*F1lid8~G-4(&-&DTmr(!2>7{BO>1vHbBA7^UnrDn5n-3Oi!VE5I{m~ zFc|JmxkQ%GB{L}C>_m6uBd5^n<=oo5e!cAFid0ash zeE;6zw5EG0ncEO}w|oo!VpqM=Q@@7HTXTnXK?OCYwgBbUPi8#7mogm!hVjC>+ao&5 zmgfy2{|eu561^9w1>Zn$A`X}<{qQgDBx{Vl#ml;WnhgKbPe2h5X9kI;+yyvjA;znS zyX$4{haFuFKs}h+Sf#2M;W(J1{ERy&782F6HjfSYrCdm5JKq9scKsC76*si~y7HLcU3Rnx&B?p?>^_G<2 zWrt8fYdIsT+Dd7S6L0Q|oj8X3pZ**XZ!r#O+f9Ji`6P(W=SEG*71*s$v92&EkZ2c% zXsm5>ifpuka0Vh>q8zSVM( zHd9oiRWolP*npJyv-=@y4XP1I8=4D$!Z_Kr!&+=P00@sATPn;0Pk|TZyVrU7>$Ddm z@W#eEsn%TD5ta>>8uz~c9F0G0kyST5b&`Gd2nj)3b9zm9?1R z>M(_;U_v6wG2_kz`06l7F;gm0S<;rMU;xTVO4xLB)L@pMvaECFb^3Lh-fEs?yA7>J zayI83nN^9B;KN=f0y=>Hz+ri&er)A29V z+cSgT@jmC^Ret#qquwjhAi>wf)x0dofKQ}vBEQO{f;E#kx38Om;UA*6+=BKI0_(}m zcxjuSZBIo#kR6X_e2N4=kv&DVGpe8O@GjaR2-f@kPRPrw{Z^_ypp{=Cxs-WGcfvk_ zUM~Zf!l1Oa=s#qb_MuM)b`r3(>IW*DuZ>mKZ>Uk)OrdhXVa|d#v?%V31U>fRu3284 zTh#GAe5GR2ZuJWuIT!=YWzX?ScX9P$*trp}#Br|^)Y;lcN(3D6%myG1nQF|NCQnB@ zRp{3R!~ImLw;ye(LwkJfQ()bcG!)Oi3E{R9CuAp?NX0}LA5(7}7v0g$UXxRZWa3kt3vCiPC-+4#zYmuqx!-8;g7Std zVAgCCLZ$9>>Uml&QFGTISb1*Hj466BQ6b?3I@hcsPK%NC96(M__-*k~1b$*Q zH^of_oG7yZ>3ic94X%a%B_Vdk&zbK>rNebNbtvt9KHhGN9z~eslse!92$KO&fw9+J zR_QOTj4q#6=1w-pmS@&q=ViIan&(4=`y!?fy>jildE4l&k_UucU$GZm$@+^VgFV*a zO~2Ih5lEUQ9b!RHvQ7LhnvLgqL8x0ts{uw^s=!3d>WluVbwM|H`uk8lGCK4LLsbD# z3XOX82vZBQB{^xxQUyu@Zio!y=g^TdW?@!60G5u=W^|h?1UqrDuVL!qG;r!m6;V>3 zI{l)p&dgZ~rbqD<2MqYoV9+u?8`g{k;v)ToZBGI&a}2=5N7lJSJLqOPyfZRYr5Bv$ z+q8$+rE%*C`D9SOZ&^uq*mQ8;9*lt*Anb0yMQ#x>2K*e_ndrU12#Xp)8D8D1z!*R4 zU4e>dLEXUtYg?l>kc4Bk)5K15zED?*Fjlu4iqcScTbqxvF4H5aGjq4DXWdeHZ*nc#2k#f4)@$EAfq-J|1t*zxQHNcMV0SCq>G*ZQ&V_2HbiV<2F_je3yE`;v81M+39iqo6L zuVqj=g7+EpyHTt%%Yk5ApV2QLXuMe+!@3oaALBJzWhX(h>_O7+KL_PtsUDQ8TD6oq zw87Oa`) z8@m9a`B{pQUb*04-CELh#%6&*jv6j8ESNN3Vdhpx)OS|ZK&wkr>J)0wxfC^E$r@LI zKgV#qdNub0FCGL9Siit5p;w#IjX`671?RnHV9z6jWVgPL_9n~@kNe8;z-zE4Jv@6U zmuFN3_-yd6kI~N_%4}Q@RG_&iW$%m+#p?l?8V}qhT!u9XAvq%g!3LhX@o)FZFECyH zawR4cg!J+b)pgg8Z21me$4MsNhXRL&9xgC?s z--3FTu7`sY@>FuWk~gHMP3PK;v$*d}qT76C?P&e+X{$kkECfmmJg^*?fg%syOhF*u z4ykMZOO}E)2I~g&9FNr61X^c`klWy0Xm?IHr zhbW@oJoMPp-{8(obktjClrUDc08MPr=f0k*L3#d}jr%3R2RU6@^^O&x@d_RE6rRuc zhF=IH%vR3QFZ>ggNI-zpp4mT`JxWfrarSc%ne&K|m z>!j<(WrY$UrhTeP-DEB|9fcO1 z9|_)a!et|O$$YSq#Ix_8I;G7>>=Vy7HuI6F!29Sv=t6X12O5J!>illpJ$|~$&&8f- zMkb%>04!QPusbx1ou?nUT~s+ixRNrt)B{*Ao(2N2nLz;J|5t-$8Q~2nBUy8`OSTaS z=S}>lmv`9sDh7A=pY53(Y5W9%*w-6m^}@DnQ(2nMa|@KYBouxHXyS~M`O^B-fc0>3 zuVTmbH?9YVk3(namNp)WL^yxUI}x$8J&eDl9RpCSQ~(17X7t;PuRg+XUt3DAXAp1@ z4m+1^Dh4zNB2fw=wO6_&yho|y9h7NGxIL#fAI-r%5MUsrk-=qg+)I$xMFio>Crpph zl>u)f-)%;QZm-)fqd^&(vy78vJtvs+1-$|ub1m*E^BlMczKV$T(Q0P+Qoea2Cc)tF zzZc(Q!6KJu=F?VL4*V1UA>;8{H_@BvgBE#PBSIllRj5J^lqXD1M{5uoteiT86UufJ zh=NI|v8WAyw`RoC@-s=>UnOQ`;`yKtkgtABox9mg20SA`Q~pDs=-vX)M%bTh3>dD9TA)*4$g?U_r->Qh7n#4#1{H9%Mjrt#q))3HNT|R(3qT7$dgVrG?eO=}fL&YN9(Z z_V3zO)34`wP75gxJF%w4hO2Xw({vicwyP+46KwAR72aJ1z(x zA`K~~n~PZ3su9SC)CERMK=|bK3_;wE-TkSKSFF8mvi&C&=|Ezs@qlPGu|*;0#$OiKyqz0;RMqL znN=%HF;1MhE@Er=Ai`L+6~5_86Z=?XE)j7^LBFHxIc%0qt=uH69P3}+WdcxWQ0%-N zU7bFo#xWA3bSp#NR)Uxg#3lQ()rlq}gkh_&S_rTIdD^Wi#xQvp6Mr){wL2>02%dVj zg?X_4+ZoLk9dXzGU`v4J1u#~D-1~**1#D^-M*cT4G`aIzY|`un7?Z_sfqjP=nn2X% zi+e)0@QR2tYRhraL)2|UOti&ikoDuY^W|Y-n{F&l?XBt=_;C*DKz}`MgxW5$y@<^G zUSgI?8S8`wgKZs+&6X2sXtE?{y0h_Amzm|ERy&M?CdcUhjoUg-(ITT|8(Hm#+?zv{ z3iteYQpt=5StVub8>-U{#=WKZu6Du-1xQ7N`vcYx)_++75x zT$7}QKi$6m#*Z7#(^-D*RQo3C9eJOZ)(sM5C18}_$nrEw9IPOW+#i>P zeQ}%B6E=2eYwoMd+;!8#sjr(LOx!L6J8+m=WewnQA0XDc**+Sa?UesH(JWfg_}*!6 zJGmqbz1=TAw&jl9?Z&5mhXEIl0G6F*y?SH^N|2)41r z1&{_*$OPs>#BUmz(G+H{vut)Hm#ZGWdff2qJg@UkbDww|axen5xh}GI3KGPa2fuVZ zptnvpNxB; zO7E=h^KrWF+eYx4Ge)ZGn7|R@8WhoR2ybISd@scRbfyE7i}%CS;IT!Bd$lE9{<4-b z*NR1H@#)jju3%3jK-|P(@SX9Q^;dcAS>^8KoLFgFnKzXEH7pX#78uCPEj2wF(V}b7 zqjemU+OhK={FS|#$;^g7^A75%$;QhpTaZqsnm`C=W|Zc}xzsb{8uI8WKCse@lRy(V zyvi6p*H)Jcyi;_mBB2XfruN6{nI;%KsFuf&g14m!;LM21v`D|;q(UtIMVL({uJem} z(zC#7%|ef={wNSCk;YlKkEaq=lh38_W7C9xbC$&+SlzE`IA2+~l)=q4HCG>Qm~o}_ z4<;lITEDRo#2ykC;LxHp|8!=EM`(1czSkj^V4!v#3VK>5zr~ z*+=+)ZcIK6W*`Qu4&sJ54AqA3R|+ar$L{0{>;ag*T4O4@@@|6nB7WFS{y` zZ3aKUZ!>ly8n>N-&ox>?x-1+{GeY_B-zsZPVH@k1ou3mu%5EQweUgX`PE%CH4S&$* z04+e$zs`H~k_U3#9auvqRK;Q^7s|}IuwvVRx}RF7YBP3rtb4}w&Gjy)xu!d6YdI;^ zdoah>@C)4a5?LSzFkyzNEe5WGTYTy0LiM)_ov2p-hQI)ByP2q1Wa2;n2`0i&Z;&=J z?<=;6dKpX8ur*|bE4lE_pDm%b(1?&|q$J~0Zf=)Y#myDZ(lGS+SM&iY(Lvz|AePeI zz3}zs^r9y_h&@7e*GynjAyQD4ib!MS!5GUp|=C{mP&@&*t zMs(YP0AFUBf)4hrU`gmTKVxnv!CRLRwrw+{?hbsW7|r`r;HWiN*zFinlyK#<;Oe{g zGeHu|Us`X(YL?CCLqeK3$I6A`K_=SDtog4|ECyu5_DwkhKl#^c;4KHxE_IrCsoaEuc{cTP6SOcj;nOb(VPn#wXyBpz$8&`nvSiOKIvxY+h$wVL9vZKeZ!{&ofn2l z*6j4_8mu@B2>E(~?eEuDtZBk@w%qUL;C1`PSN&ICs{9pGFO*q_7zNkm{!0KG?> z#bZY^B1q>Dw5fP2(8eX_{veBAYoy@N?^Ez21CW_nbq-nE9DQ)0Mj7JP%uS3h!uK@f z5y1pv9(^g&@!HRS$O-5}1)<0ElLbz(plttQBb%f+9VV_ z*(OCKKh?+9bv-RY?G8O9M*(7hLQGwp($j&a4%V_2&U@NbxasGZqlV%%;Xi9(V} z!}82M1T815F2wHiXJj%XoVUJDZQ^{oN~a>U*Ph7-G}%q>T^WsTSmu2ji;`j5iy7y? z$cO~2Z=sK|gX5^to>D56W&1#!8z9z&Uw|biFZMN9P(=T}Qlx?hhnsTUr3%jxCJe}5L>)XbxRYXj-i z!}FurK>U#H@TI@SCrd!)YODWxT?t~wU1~vxNZ_<#C(#$zl(YSW8Uh1nzg-AwsEuG0 zMKQdv*re?7dZhut(4lm_d5%ar5DBL?vcZQ&*-2dRWy~H|YX5cuHU*HoAuR*~3>b~- zB!oE(UcwD1CY1nXzKT!s0{k46E`U5-ieUZ)kh3XYd;Revz%}#<96nW29MC?n5~flD z;OoRS?G3?NEwp>7iU43U`X;7&J+y2UF1{4bb~YMY?vtjyf*Gy^ZzzWtlN7%>01h!G zvLQGIbR&ktHwSd7iyJ^?dvIMWpJeP5ti8!(56I(c!yN%ld?7UbJv-(&nByMQTKp`u zxUUswBEmi0`2XDcFMxQB&2}LJw?f)A8g?#=cS`mwu^Q;&R$@dOd@2fjk?=ecsH3{;pH|JedOd&`>tmM8hhyMO; z*Jv)BejRNz=UoZ90U zJ=HphM;D}lWfPT|@PK(a@Ibl*jiGI!egcz~|5!-^zVajNs;6XwnMC458zXA_`%onWgdvV#0>{EUxbOLeP6Avfk3|Noy_0V?(D=h~|zqeHx#-#6W+ zMMcX*I#DH!mv*RMB%DenGrE(I7k{Pitp+{chJiz2m$*RZ+KRt*P4)u-wrP7JC5Vn* zc&L_L%UIZIB-L$U5X|0uPy$d1pJomalE+xv1AR1SBo>~trV|5q1`xRzWIWM+p&r5I}nl*ODOa`=n_K3Yq4$~isR@JYag_YZs7fhZ+;`2^w27>1#Q8zu&>hpEfoG;&hKe1GLPzK)*tkYKviA$oTCFFore>T z=pQZR9AA1YLAsnSr=CT=<9kdm+mSOUk0Y+st16o(LK}S{M01GiCtxCrCJY4#dBwJP zC>i91+1hjPmG;J?(r!|ngGL%B#$;wOx{>~ozx{j?g668NmD9_y>Lejup(z?2E;r5g zI{s@y0W1APtGqN}|BZwMID9sVIe}eE0a}~ofi($8xzwAhjJm1$KRy3_E;BwH*JV@t z00itWlh)#&HAwH}Qd0?4Rr_gm1!PLzj0Y(~%=T^-j|@o)r9uoLC6Z_Ry~~6>*C>zi zqvN43k`$1u-K!SAfN=7A&BG9){-(JwV9O5k5Y7fmG?DXW1>6oDhK|5LXJ2%hn3o$z z@Fk&jk)NO*XubyTo9&2h^zT*oVO+urXFF8v>K}?$f=a3^kW`?BYyFrgvpvS#Y||;% z2|dI%-wnqPJ+FzdR?7h-#`u$wv5*K%`RSrxXw5dlrDW6mQs32L7TTMI`QQT4INOrG zW;gO;4e>jOg3szOLX)MLh>M1~rCLC`sWco(Q;!mKgj&f4IT3-5-Wcd5BkVrvhKTP~ zNmf%onuqHI3SfbW?&H$LtkNP>PkJVzzdmEA5g(sf28iF`_vzG&$)!r`5u$hlWB+b; z(?ZCWkNSE{aiQ34Dj-MRmT6w(|sMd#xam zM5z#n?QI?eqDL$LB%=t{4SpQoNWyHbTc~4Q?8_UlS9mqkbxCYD2Ic^rRPBMagQ%_4 zaGFF!r}q>_4s}c{3%SmDiV6jE zH7FxsFEv10jjhD|D3ODSmI0W+Gv@B{LW^0vAOxaG^X+nWjhD)TKeqmgTmxq!z?=Dm z#2WP-q~hj|$d<+GvhIZcjjlR`4?|3zyqOanzg$wDAEKhrv(sA{lgG0$tve5uK17E7 z>o>)l6}{ZEoI-(rIovLWq=q#~oVkfmI(x_!ZLn5F#dGit4F)l>x=HrsO5&98u^$jJ znI+k0#)b&*__xoZvBF^DfH<5Vl|Z=aFhN%U3wKW#-5|jU896B24|}rHR5ej5--OE&Yg^##Z;1YW`u+4e@1&2;RoS=JfnilEu~njXHnA*LZ8A*64e^-G>ob0!E0ycwB;3)37t)f0i0Yh{@_mHOizJRRY1 zqPu?x^jRQZh&^Z}x1bkFXTue9pqq$<`8w>?4={y zM3+pTr4soK*|8`7cBkoz<7K?8=Y69>FGn=Z_(L<&xYv3Qp+WB?Qo|@BhX2@IYpx2!BN8cMCS z8nTa|`X@AXZepgz0+yC-lQ*616O1a&+?whm`NpS%U1HT=YIs%F*{QXehTWi0sxH46 zO|53q+9CD2a54h0!e`HmSYNp;#}lrfg&4WOZ@ZGBmK}NNWCs?xi!h_#r2;dxE|yOX z2z|Nxb>c(y`(JvL(F5}7cc<@P;dN4WStj{dJzI{6!+X_y#i)awNTB}c5? zz1>KB&N)=$`ARn{H{6q9o)9AoTID)JJ2NRfyGAeqD`tmpKkLIT3*TF#!U zrF!n-<`&3Q=R|qeG7ce*9|UxMbeUikoiv--m{CBmnl0lMR`XD`>-e85#?3g5OnqI5 zxh!f>mz*Hr%6w5s?V4DR@vPJQKUf@cgns$R`!VoVShhlpo=Tee`a}VqThU~5<`d{> zQ&cFs{PO|e#8-!rQ$|pDB<}I)80JhPJ^HbJ?;1qp>PR*9(|ybuz&J-V2v9!!joEfA z%B6{2Ty%=`vPAH`%-+kGTP0Jn->Wjr?!W+|5I9Co{YO<=K-9J1u^fORz751kuitK2^7Yb^HVLZmEfjEZ2HGd`JNb z4@n#H@Kja(;*V8=? zU`3w?DWoL8i1QBzum-6=F{SPgoQ!gkC`}h5aTQfgcIQ^Kq3K>msv7o>zMdnIt%`F<^@a%XNfVG$mIDYqcub#WMyt}^OIWI-16|fl zx*IB62JXnIapgDO-jAz;pFXf8vbg#yx!{&3d3MikaFSwsTq7L_ftxPp@P@;$Lyf7n zKpc{hi1btkrj1^kW?s{`K>H9F!(jxJ=8S%+UmX%ArIj%1vX^H0tUW} zI;iJ6UVH<@&elEzlNdvFMN%}z)dg|Bc?j=?0m25X;Wi$i~U}gA0fAkShWj( z-vP;{uhPxm;W2e9QI%Sl_J`f|!1yBRds&t!95U=F+*eED*qKajGPlXtElWG{4MPHn zD)C(QseM%Ecyn%w>l46XLz)|*gPKBdsTA+^>MRlVgJ-TbFULz=8U}ps>;6Ho! z(s$#bGl-#!WD%7ms&uONO_$BOgow$!Nr42Z8bp6?@L@i^?p{7{{3q`CAy~yla1@h% zp_z0+bmu0Qrj=;BID zb(la3p1_Fh8(+;CNk}6B!wfbY-qn(BIjLxMu`KK8HS}d6Ux@?!QkqpL`<#o>E&Qw8#^&C-C5ul$*+hD#J zO7;QC>NzVE@wXGcv-QKol*!KB#Mt`$5KI3pqRH}QKC4E=1R;pRd}dkZR7XkC_T+DB z6}ATmTd(m}v{@2i2mf+Gnwn=J8Mp&O>9}{x>v~0m8b;*ld+HCN)?$@Dmr4~00KJnQ z@nEEj13@Z^uHgP7F5uzj>R~nO3sp%Mf>2POn=8lQQod<_WrnbyDRN4^mv=xc34Ltd z`0!P>wFQ9l9uWpZ{@DP=v<1twS|P7Eo@!Q+s;MO4LYI01hMb@ZEQbU#sPaNM75(yj6JZ6yM<{tl^dT3dp$LUPTLYJzA=lB6k6j|2n+%f zkneA2gDJ6%0_mg{L*x=O^3;_?a$v|c%ma((F;C@^`I4CR>S8waW&-krxJfKm#u;ue zIxev@`5*H8?Jcr2j~rIi_o>^aDqhUYT*={>(f?rPSJ$i@Y(BN0CIW@v9ifgr`Hd`-ln<+gkb806?eTZqnk zt3lNP!6lJ7l}9x@4IcQ^s;3ra3JDbI0}*K?W?=k&uGviv>a9y^Gnr(do%pQx#7+rspD zCyVyxy!L+Pp_SU3_&rn4CN{{;ND`tPkgSgwkja$4w?(MUN*uq$DX+2(AM4-OMGM#f zk1Kk$2$c5F^4gFLsWssVex7inzA2PbdGKypY6e01nq1+)GolE=XNWy7`i1b8NGIOp@a2ZKq zOQ-N^hhlocROJ8oZKv>j=FGLlyKvpapgZpXa?OTz?uYSzh1lN-uo{zPo4`nPiN|06 zr@+P~>Rg4-Pe9Y|0JLOU1qO2h6ClgI`6oYx{CR<_It$7~F(1MEW2#NOe^C+W`#l=p zt5vwRrW(5%OwYLXhVD_)L?s|IqO~h7DwR{DB6Ic1RCU6f7Y#uK6_^&b6CRUOb5e3d zIlfJG69)1@0IWaXl=W>mdnewic6;eob{`j&AY?R@BYoc<(d%F3lee3VJC)*qUa&a6H2Q}11~ix}8HE~O#$H-~H)FEns=w1Vo@qu)!j{tt_@5YsGYjO{h}-gwl3TnR4TUS(io{@CR=lx|t=IeEArX48$TV zXLDxtt?yL0j+!3P>5r3u5&c0VsdxgVAZK<|=$|gY8xSvEV?6sI z#tH@_IY_Kk0;z&fHLFe>#pqsaU`lE!8npQopfEBsBvPG>frlvRz7)apRJC=%wt3z# zt5F0*!&=03Jj;_t$y)j`{po6>@ss5YI(j1?4`IydOjn2KSz7N8)kgszkW+tN?wtZ`PUVtHx@ zYIv<^fTL9mp9koEkHyHtw}{w{tD?KUQf3ro0Y~LoSS?)5zkNzA!1lbFK)i}}e!F++ zeHx5xn5+!Zv-sV8AB={t755-rZ6dkp9(`R3dwfvgOb<*8L81p*xEPn9eTzUZAz~Ji z^p~G8&oEn)4&lSX`#cJRJW6>eJ+voaJ=mjSMNQ(~z^m4nc8<76;l;*oPm8H3`P>P7 zM&RbVx~7o!ZJXB@MaED3SGAubFRySI` ztsqw~BO695KOG?qm>?@=6}7f>RUkd?4}do{`#q%z*c2WA2b%eGZe+-<6r)>A&{+0f zft8JDciLU+Xk6bp;MT}+lx1NJ3mR`pu9-gVk3uqRX7rdwMo7hge*!9#dc4QisiS%S zr#h(`-#IakUX`IsxHg3bJZBCtu!wXd>r$5CWX%YnqPs$u(z~k<$x)k z)?B2%a<8%pv^BvDbEXFZ4C@0Oq@T*9Nc%m8cnT%Uyda&HY!PDZZ(*o^@+IpbY4~V=& z#bJ8Cdjw>adxMPF+6&D+yL_hoW`DOWtjD$ay0l>m2Mwtm!fMJ)vzM^qXz;GuHwqFL zW*9>Il4-$}OZn7*yZv^|r=aKDkB`eW|D2hefm^kVs;=)TfQ?ZOY3_otnet&QQ|BbFQ$TEXqloajFnijrux#0wah4>8NW_eh{+xQFOqW zQ7rA6mY7g+yfg1 z!Z~8;dGM7)hbj6mJ*X3nBg0^Nl;V>u)Sc*6AWbt8Prtd$Dz8TAuIy9-RgzXR3sK_O zVW5a2Km?`+kv*5lz;8+#GPSPAKQCz_okrhn((K=W|6166VMF8mFQ^+(ZHA`5ak5;C zt{%W=d{rORG=SZam!z;fzj-U5EIUj~OI3gc|65KR(rQg@pF4!nf00tOZEYnTlhB1VSy5#!zl$?o&a_ zFvH= zJdpby2bMP9H@8jlGevJ_VZu|sA86!ur%@Rixq!>YBp(qB&L2J#N+G^ue@{--1yKOQ z8e`R`?k^zWD`ttD?oc-L#yy&QCL%_1()uyJzOKDlsVPSR)jNzE5k82^6%_D43DKZ# zPUZKo;&2K3lhKKr++7EYT!b>P)tb}noO#9rZ!U~nY#s2aHc{m~hK(Vr@gnC)Z2JB% zZb{;r_0Fx>%l9%KO!;$qeI0J_jsl6VmQ3WLovxZ&;WigxXlcN&-BVmtaI4>A!Q+aF4v({i%#pi^O ztX<6cp-Gac=wk_L48JCUS%KD78^%<0ju{=%gGt8fDTfT+jftC{d(YXszmN&3=Qh6{ zF^rKx!Md;4l)D@G2`Xt~F(>#caWja?dsPzm^eyhDYuUbrsyx!SuxO`%WDGtE&5@{J z=+bOGlML{D?G&%xaR18dsWQE5>K%gPf+>%nT!GZL=`gUdURZfa&&`!fFj-d6d?Wk( zsy(Y{m*R;`%I>My?xppmvk7l5?I=clx=B61%Ha52Egf)?H|8(?`MwkeF^P*^Rbr}=1iYRWK1&?N?bCH&oi&R0^!$(3VVH(ysnH%+?%aYJ}i%(T$!A+vi2tyM&rdj;QZRO73tv;H2jaz z<{Csj&z1cYH5|~dtkgs6B;Qw6qnVZ8Nr(AA$<_0}mVJpcx!F-KNYu@YbDB*6%;Z@@ z%(7c0e6?i&rGlvNt96?xi^={u`FqQ4>e*@(Mhan)E&QBuTdbz5)fM4@-&k--w?Q}X z0fcx(c3%I&bJ2v-1`+~k87&W`?gpv3Va}7?(|{Br&3Kvx-Qw#KZwPlG#%}^g#c;1L z`x7ZgIvTj9-IN6OqpY#7h~{wdanqKe4q~87p#HL72wu6Prxr0#6rarHwj?VHt2=+{Iz*;R_$#IjQ8)~u%!mDh-} z{^uSApE*qw02G<8^Y_vEfbQ~PHk3m_xhpO{tb zZ<_A;pk{;!3qEvoL|wX9m@}+6o?z=eF`y|o!0p^5kzwf zani41<-wtP;wFOaI(E6I`;*D9_l+^D-TJrE`o=;v(oDgF<37tOehLf7Em+VJU1%<6 zy;zJvlVY5UWFdk?0#f-eP;2Vr9q;ZRF<^cOjqn(4gS`iY8uaN^7v8?yl2ZA=?pl(!~0uix_)++RhKzy zEk2QPLw}Ga`!~oPweM3o(~D49Wa`7nyHAqM#u-iJGi06>T=CQzFb%>=*qx}R=YU^@ zr&UXUb8Po2pfCPL1k(2_^X!NU7bBh?B zYP}%1q-0|d^*&dQiG)R)(l~CqEcZZtlW3@j8M+7)2_dr~geejM>LEqQAANL7v#+ac zTodUBG-5u@un8xpR1_cl5U4|rTkeeQd|RC{Mqs)f*WeVb--Bl7xu?S2$n5*c%FVcl zB1)9?)v>Mb{@}lcHG^epHUfION5gmxbNnS^9GcK2!0R+vmOtx|KjOe(Nm}Ba`gz4@ zd>RZz=?e8mxJDvfcepSV{#F>7hgANhC;71<&HI0lAZqaM3V%2vjsjt5HX?GHUsquU z-n%PL*R=<$7AG(zX$Sz7RgbSA>uL{VqAeiBwoxwgq(ENW6%VZ0kEETmR#?U^Z-rQ=e5;9XX}+6J{EK z%5;^VI#OdDwoTEXAs25FNrLk;Q|%LAc|>^>*pYmm)-963kmvm=fLMBsH0+^=)M%G~ z3JO`_8i`%Hne0HDF5*9Mki6^Gvi@$a)-BmHR|k=ANMes8bY^# zJWhInBES6tki};3Ex<_=!MY@1>0ZtV!UNoj2&W?M{yZECT+#$RS)`mThogc31^?7T z#U{Hg0Bw+k+S||YqVfM-8XXfHbmt=R65HA{38QMh$Cqx!SyQOBPAqrw%~q{)*TkU7 zA0Igfu1)L4ulE~~u&YWVRNV}et!~N%ZVN5|xeYi$khWn}ZpfL`?7{8~d?2=pwcT~EbnoP?H)5F$pLiqjJ(f^*zj+v+=t zP7n@lDipl<1!(q}FNvWHV+dPTY`Ii-+?8qTRCG6$jTTeT0L9x+T6*c~%GoOXA~_Yf z)wkT|*2adV#m#uJbuoBmBR02rxy%VU=*>4x`=r3gjNK|k5nXJe*fI=pCL*{Ra`zgz zN&>BlKpk`NkgqzxxbB=Q(@;!uo6Ea?L{T)S$yQ7qF&jeGVQ=@URK=lItgTRuGz)%! zE1*_xuV{Su{S>sOXOy=DSoER1)G|>_@dyO;36$lh5E(m5J^{nvAliUWS_r4(#aL!U z$eG_w{M0ZHV5BIIgAUH!O=WO78NT0|cm`expe;$D{DYSzktL|~+;|)BfNyKVcITDa zP6W(}5Z|nb_!4Qa$5cQT@9-#AK{TdP@U8ZjE~)5vRSTIUVlr%&A~l0Tu`EU4_r6om zFdR-ht%Uk}Vb$j}dMx9HvbmWBzvWYDZPxtIQ(*ggIL)f8$A;YAV#~4$E85EaW zSNqxIlbv8l+6fK%RyQr7MMMc*9wx(BSHC#}r*X;n*1 zgw!Yu`o?eOd@ST<#4rJRZp!}8={B%Opr&^FiB15=UUu}C(a2|%1rTb*{R6Rx>dp1A-pVJH2Cf8Z5cqt3=6b<-pgna}t&Ru|gq za@x?l$CC=4Qeiq`1r(4t%QAGbMeL6!!aEYwv@t`89`2or?8yU5p3%SiJ83iaNoFaj zC~pv*v(1fJP<@4?(2<;9Yk`(znbGSL|LsHrqpY2e7Wl6B#)$e0=YCGb2Yg^XF1fv0 zs|&ikfIH-I6jto6IDO3>Rwa_HQ6edSE7WG#)``jaSF6Sc7j`D{CAKXjc0rKE1?4Pf zahbVq^yXS;0VDFgh)*I-`a? zm76^)UuP5|!#F$4-|NZ(! zJLiHB@eLh(g3QpZq?2ikPm)jB5X`0A3ir>PFcw0;RFbZShAB1=LL{MYFMlkRU zzVsX_TM3FNP9 zXrB~+P$Z}YK{|Z`cg0BY8eN{VdXy76H>+vpBtPCrsP<3msdOhe6&)fprfmzYF=F^1 z9s6bBEz#agtTAEY@hNooSQCoTU)B(S_QqS#;;3#kv!tKia*0J>mUsn9-%K6bC?LKC z7gTV8>AGwiR&G+}P=6vD+qURT%Z}P!aAQI~AP3rC*Nd^*6 z_mgDeH^T6HXYh|;r`BVNTfAN}Y{iiip*gHc@U~76&0t|nM!W`t2de6ysQWBx&vv!C zXO18gR3TntD%$&z$ns!IV)Wa{f@=$^dW0afKv>X!h8^~b;b2_#*jOL8Y=8E(K_lr@HbS4?+-19t$_o&fxo|N~oP_Ix!X<5#msH|Hc;F48YtkapCzC za%`#Xj)WM|&C{&z++D$E){^abz4j(oS7Gra>x>m=ea>JEJKQtziFKzW{5BI(*9s{j z0ihRW;@ZM`S&8nz(M{Ht4sf`ycol>=lpjN1vuQ-Umz?4+Q9}sD(=x$`8L!VD#|0T$a%qlV$m?Sz-Q0oAjVO`>y!EB?Rz~zVm zT_2}@y##9D14|UVT$}oaGKX>jcsJhd8^R{Ej4n@RxgwP@&I9hKy~^J)4q8`OL;U~G z0>KY~!vy)}v8siyKmn`{Gy9LCYR2ZzyFAV65jEXL2k&8NXETmEd|7_Ma@UFt4;IFl zHim%1KGK4XYCV%2{Qo(496InaT~mu?B&asEAu4zZ>(S7|#LpTSan_H6j&LQY%0ipO ztvJ@FDL`|9H4pSXb~Q=z4JXOj#?}HHa!i;Uk1+H(lhIvmD}C9+LrF z7I(+PgtZ^~mXBS99ooa+DU1MjyWP+vx=RPxReRaB25{~gTlJ{9G2WJyE-Lis>X%&wDhW_;7q4%s))NYnDNtN63I5h4bZEzx)Qao-l% z-2XW7!>!`XH&|sKQLSB29iEdOq=H{v1RiGfY$)IyIIbb#IWR?p*I1U`R?>9=!N)xB z17{q@YM4 ziRY>vp6>XZ24V{rY+x57rFv4Uew=3Gm-aa8b$6|J$Rj>Cg~xcfY;ISDzjnpE2z zeV3BDkYuPGT>#3`X(N+U4d?ko@8~LNd$9A%ke6!q7ng_K#VThYQgMKok8+su{WA9w{x;LZ+sb_x736 z9)K{P3ffNlb*ci**rX9VMa!OB4x2b;+%UI0{ zGN3c)?HPX5Q@P(0c2{Z!*}qozIY?R|5DYj(M{dpgX-EoKmm{wKH_?EC$d#1G-Q@7u zcP+s&B;R{0h^d3KvT?d{AMfk4?@Gc7|35uRKC!1iK)&<2XZ8}_Qmc-fDMx%U)8!kA(Om91r%wb1k2b_n zG=T8;+`2?0QXMt;G#X*g1_n$vyzNo+!=ckmtYQzhJxDX@17dwW$a-6*#3H368HGcU zH%~UL&qP}xd1Mzci=3$8`uya(IrWUJb3@xOe08nR_DKBVkDJiK5&-1M$XUZZ9fRny z-w=X(5!uy)jm^fiDAiIfUw|=i`kD-FMPeq3^?RnF80WPC{QZ31AwPjhRFrZvJ3EOV-IKNJjY8?!{gq}9hUtlX$dS7Acz9&AJ9i@>IVuDT*gd!xVCGO$M zj=PqUP=uA#(WOc)&BKYMSsd)Mu=2o`b{~A-TKpRuk>6bzo_&Z{ZI1d=nP2uP7PEJkRi;KLl_6#b;%GlM4?d{!{%EB7fJNTK5Yr( z`kS9VUan>7*#}bfzwlR-gf1nPKk5=k4Vb#=v!YJfJktPEHWr>>iEDWqMTna>-JD9` zuFDyo`FFB(cb80$koZPpltKTPv9({XH(KaziFzxXVrdX({j#!|F@$%Pm&L9iY0*da zr~IE`!ESmk6#1Mm!N@lFJI4gwe;4dLL{~2~pL0u%I03l3Qk&^o>;{_)zNWvUH|+bP z0^qCnPN<@T^+cAyP$|c${B{?ulXffa(ih#G$aVtWq-&7zN=M? zB~P96!$w&%Iy;Su?Og3>NUtwGoK_4w8R$isjIzsZ*%6ic^4NE@0Y~vq5&h5o)2#%IBy1N=}pr*DfI<@DMrb)XAvFwJ2T~!tm~Vj=Tw0vw`X_y0)@b z7PR@oG^p*V85a8#>Jx3Or`EBmS)qW9kRU9wmcf+~9ymf4-9w!HSbEHDNqzuPEgfn-?8gvY%E^!9Cf=(w%jM{Lpl->qu6MAAEKQ9@5vG2*Ojr>rNxzUPs*Ag9F^un(l7KG90B5SO{+o; z&cIAlI|nnOcK_I8}uPR+HksmLDh!EtRC<9>I47)oOdYcv1*3p3~bEa*KhI>8)@jrodP_{ z2L8qoRwlunTc`gXigAeRAtL6S-pH*h>+QQcESDvnuH3l74%zlShy#4c981*^b%d<# z1L;n8*GUln3&`jgD@8of%b)_1!_FS4jyq`)tb z!5kD|=aH*(Q(A??atsBWsOEbFAC{0F!~;Gl?1HY8Pn-e|pTNXump|+`1x-?7*jBN$ zf+QRF<~!_K`&7Lu2Wo4dM!UJn2l3-H$bYoC zr;lO8$lc+L3!m{~!$m6ofQ{d@WKq_DSM!ac6O850xS6|;ZNsXcBtk7{PLK2EM}%j| zG5yJFSxTET@}R+jXV;7jS^S)o~v*SEsp zgt!LTNX?tU)k}s;w=&Erj){%UE);l$?E!Zj+nB;-MI-Gp1ner%DNsOW_`!`B9l)0nk><6k_*o3MjnQMdnjZRK$O*IcqbE7_0cl>f z+fo2OK)}CJy`mAE|J~^dCtx1RGSv2*Rr1cOI-Pa{hf&bqkqYi~%7Ne9M@Zeet|#x2 zW%coferJ!Wm*OfQ$pd@QjH9eHI6%V69h`&uet{W&X9?D#& z=DdA3HNezUPL;{u#|k>GDQo}A7;-PIFPMq@XiC|PnTZO2Mw6EHKaJ{2%NJ-^ymn8Iu8#M4kCLw?M0lw+2R8AzzB<3fPU6Ga z69I~>cpzWrnD-Ec=!>P@4nTY~L>25rjB-f15i=qi2l#2%AxL z@GFI_w*)PIC#{r>Z^y!mR37Y;gA^r|tbB{ewq=Shfm@&EF}WO_e@Nqr=Q!|I&1mv2 zN6F0&cbDD)&Bs8iuhu}K0Pn3(`bJfp2m-QRC( z<@+o8A>0fnk*EX7aVqIsf~ptwD3i1rZJmnqVBGY!+j#MV*J^KkVC!m!5VvqJhf4`2 z*{CxEsDZA;j!yT)z+0qsD@s~f!4dHIO`GBBjc$OHSr?uK$j`2a$&S)|qPT;%+Homm z5B6horCP^Mq(kpXu8uvNC3KMw7phDquEZ?Od4D&8iWvvx#_aYhmiRPEprA$b`#+V) zFN1yubuii&7MO7`kcT@WSHyS`bw+o+v+7ri9RK1BDDj^`)HEbpSo`rXP_AA){tj$_ z5Za2&!Xv&*Wzgl??iWJkUs`do6?8!zac72O(vOt^P^pbXd)alDZv3L0Bk0MBf*TYd z;4g~tnyV?UNC+)ZM+Jp{6%U#v(~U6F9Blve`?DZAEd_GZg$LGzbzCVVz93eh{^!bJ z0U+iEh|@H>c{*q0c1=XM2YYIO5C6z0Z0lF{o3tCjs&FX{;yD-t{&L)?Vi_aw9ijYd zMBD!BPMvy#ggZ#Y-D~dT`Bt}4gH1sj9iQx)OtQ2>O`uo_P3U{oRe5i|A<|##_+$jK zg7I$M^d$M46|Dbmk~qS&{^>)G=oLksKMI;S!O39$gE)bpx{_eL)Gy$ELE%}ClfF@> z&2@YS?nk~$a`81zq^n1nnbkUFAkOJ3EBmOZv&c2L2h)BzMr#v8cvU0@#m@{;kjP7l zeHsF}UK;&Q2yz5X9xUGZa5W2$R9$35pQ4olAq8T zQSBj*cGk~}82(Moe5jTY1V*|4=cHeUL$OU7gqKZh8XBFV1llx7t<%C&!`3>!+ASIA z3GF-gWM>pOZ^YRLA^ab(58Er6%mA+i$KGvGg&Zhj6z9`&i5~LGCaD{w(>yf?`t~N& z*52WW6%LNsd{F!%8NI-bw!0hWixOf zvxK>TJJq4|Yq8^Zr_Ls|{6AqtF0RhoMr{ zwsoY#z9+9Q^Zoo)Fru+39%ODlBrRuY)5sOQJidM(>HDFH^Mq0FDPd^p)Cg!3u2zDb1IHOCzhh`0SaLMRC9vOCX265*d>- zd>rykX2~}&!yR8ji?>`@iPH8mL#k;pbC8w1qW2iyppLKA3s7%Qz2i;wbjO|Qzk)1D zM`k%lu<$o_&t}N$C2N^bGh&rf>3t63}b!zARvgI{*=w^*`kWqv{miFDPN(FZHCzVktkA8{leEjwRZkQx_7)ZGOz8KfQQv&S=Gydh_%}X zeM~=BGSOw`s3NbafhzC1ygWJ}I+w)v9%;}9@l=PIc`cErfk28*w<+(|Wwr#cX-ur|ijzIv1y0}D+m+>KwL-rJ=M9#|vtyp#XVU$DsiT0b3W z(>&uUHlRfa;WVH5cvZ|DDzF4gi@n`9=V0-X$KUd(snS#ktQm_vv?_<+EDA#fiK(mS zby!Mv1vGj;J%Wes(onBh)>I)l)3Sck^a^L4YeEd4;7Si zQZ)1xCz4s5tr|ZyDKk4dpp<8OKOeqWZkq@b0+cj4&!Y-^R8Kcvv-FE*b-sH2T@)Oa@S^LmFjHS{1ly*F#FFP3S9R z8Gtjc!fj!qW0HuJuwSD{?F6N`77|MNn=E3(7h0$DK0RabUyV5{NxaeF(JFxUpF$XXZof8{B{#YbgG7w6Nd1<(5A3~sV< z6d!CXG|4`RiomKZ7fz!4>$+eR5p9qPWW-G+N@vj-a@I+zh(xjMV&hTP)Rk-5&CM~( zctg7(^rF-hMjE!N?dV|ZD9~MaX%o0s= zH+n>H>lFVThh(}%?AkyNU2XyL)GTd>%$+t`a1QnKYEzp5Y-7J1ZZERE@706U z1~vh4evKlegq-keZA$9~Zjq}42gqx?lsXC|#DbVVDwH7}xpNM*{c3pYZ9N#SqDG*A z*_zO|f}cTktSmNgkSX)xki0Qo5)mx! zt2jF^Nhn}oisP?dywceRxPR{#X2Ex>Bq!N!-%=3%7np)&3EBI;-7?UH`vsAtm=39{KeKjHbf~_RzY*91ZG9_m+WZ!YRVG%mb_^o z0|srxDRm-0wm%h07WUAEFiR-ytnEa9Pn9#p9Yz%thnLx5W&>OzH2DsCnm@I+?P(PR z-@*vZ4!<2K>+er)fHlUQpzD<xJSm*8)+PU8yM6)+3DWagC|FSdRYJ zO(%1k^Z5ARPPu75hWghPQ^SC_Fcnh_K9&eBSCk3<8Ias(;bwijj(tD!17H{~6}`aX zj?RIXtW>$7G$Pzi$zRYv8bbQjzzm6|56ubz_r$wWlkR0BR4-8ykB%)6RK?+){6D~D zDxDn()g1m_iO;(L$n9sVtZa)%X;cqt;kwDmxNcFunkSHN$68|Okd*?SCuLNb>JwqD zMlhl&N7oZD&gvCx?WHPi-&v_ee

    T+*0Qk9FXWS4Lp5$ExwhEHB&l-e1 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 %><%= file -%> -<% } %> diff --git a/buildSrc/src/main/resources/deb/postinst.ftl b/buildSrc/src/main/resources/deb/postinst.ftl deleted file mode 100644 index 9acfc0f084e06..0000000000000 --- a/buildSrc/src/main/resources/deb/postinst.ftl +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -e -<% commands.each {command -> %><%= command %><% } %> diff --git a/buildSrc/src/main/resources/deb/preinst.ftl b/buildSrc/src/main/resources/deb/preinst.ftl deleted file mode 100644 index 9acfc0f084e06..0000000000000 --- a/buildSrc/src/main/resources/deb/preinst.ftl +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -e -<% commands.each {command -> %><%= command %><% } %> diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs b/buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 6fd0a9aab1327..0000000000000 --- a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,6 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=UTF-8 -encoding//src/main/resources=UTF-8 -encoding//src/test/java=UTF-8 -encoding//src/test/resources=UTF-8 -encoding/=UTF-8 \ No newline at end of file diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs b/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index b310bac04c66b..0000000000000 --- a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,24 +0,0 @@ -eclipse.preferences.version=1 - -# this is merged with gradle's generated properties during 'gradle eclipse' - -# NOTE: null pointer analysis etc is not enabled currently, it seems very unstable -# (e.g. crashing eclipse etc) -# org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=enabled -# org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore -# org.eclipse.jdt.core.compiler.annotation.nullable=org.opensearch.common.Nullable -# org.eclipse.jdt.core.compiler.annotation.nullanalysis=enabled -# org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning -# org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning -# org.eclipse.jdt.core.compiler.problem.nullReference=warning -# org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning -# org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning -# org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning - -# We check this in Gradle. Eclipse fails this check because it doesn't have separate class-paths for -org.eclipse.jdt.core.circularClasspath=warning -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.formatter.comment.line_length=140 -org.eclipse.jdt.core.formatter.lineSplit=140 -org.eclipse.jdt.core.formatter.tabulation.char=space -org.eclipse.jdt.core.formatter.tabulation.size=4 diff --git a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs b/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs deleted file mode 100644 index 827a41bf634c9..0000000000000 --- a/buildSrc/src/main/resources/eclipse.settings/org.eclipse.jdt.ui.prefs +++ /dev/null @@ -1,6 +0,0 @@ -eclipse.preferences.version=1 -formatter_settings_version=12 -# Intellij IDEA import order -org.eclipse.jdt.ui.importorder=;com;org;java;javax;\#; -# License header -org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_11.policy b/buildSrc/src/main/resources/fips_java_bcjsse_11.policy deleted file mode 100644 index 10193f4eb385d..0000000000000 --- a/buildSrc/src/main/resources/fips_java_bcjsse_11.policy +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -// Security Policy for JDK 11 and higher, with BouncyCastle FIPS provider and BouncyCastleJsseProvider in FIPS mode - -grant { - permission java.security.SecurityPermission "putProviderProperty.BCFIPS"; - permission java.security.SecurityPermission "putProviderProperty.BCJSSE"; - permission java.lang.RuntimePermission "getProtectionDomain"; - permission java.util.PropertyPermission "java.runtime.name", "read"; - permission org.bouncycastle.crypto.CryptoServicesPermission "tlsAlgorithmsEnabled"; - //io.netty.handler.codec.DecoderException - permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.spec"; - //java.security.InvalidAlgorithmParameterException: Cannot process GCMParameterSpec - permission java.lang.RuntimePermission "accessDeclaredMembers"; - permission java.util.PropertyPermission "intellij.debug.agent", "read"; - permission java.util.PropertyPermission "intellij.debug.agent", "write"; - permission org.bouncycastle.crypto.CryptoServicesPermission "exportSecretKey"; - permission org.bouncycastle.crypto.CryptoServicesPermission "exportPrivateKey"; - permission java.io.FilePermission "${javax.net.ssl.trustStore}", "read"; -}; diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_11.security b/buildSrc/src/main/resources/fips_java_bcjsse_11.security deleted file mode 100644 index e6a025e7eb10d..0000000000000 --- a/buildSrc/src/main/resources/fips_java_bcjsse_11.security +++ /dev/null @@ -1,53 +0,0 @@ -# Security Properties for JDK 11 and higher, with BouncyCastle FIPS provider and BouncyCastleJsseProvider in FIPS mode - -security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider C:HYBRID;ENABLE{All}; -security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:BCFIPS -security.provider.3=SUN -security.provider.4=SunJGSS -securerandom.source=file:/dev/urandom -securerandom.strongAlgorithms=NativePRNGBlocking:SUN,DRBG:SUN -securerandom.drbg.config= -login.configuration.provider=sun.security.provider.ConfigFile -policy.provider=sun.security.provider.PolicyFile -policy.expandProperties=true -policy.allowSystemProperty=true -policy.ignoreIdentityScope=false -keystore.type=BCFKS -keystore.type.compat=true -package.access=sun.misc.,\ - sun.reflect. -package.definition=sun.misc.,\ - sun.reflect. -security.overridePropertiesFile=true -ssl.KeyManagerFactory.algorithm=PKIX -ssl.TrustManagerFactory.algorithm=PKIX -networkaddress.cache.negative.ttl=10 -krb5.kdc.bad.policy = tryLast -jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \ - RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224 -jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \ - DSA keySize < 1024 -jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ - EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC -jdk.tls.legacyAlgorithms= \ - K_NULL, C_NULL, M_NULL, \ - DH_anon, ECDH_anon, \ - RC4_128, RC4_40, DES_CBC, DES40_CBC, \ - 3DES_EDE_CBC -jdk.tls.keyLimits=AES/GCM/NoPadding KeyUpdate 2^37 -crypto.policy=unlimited -jdk.xml.dsig.secureValidationPolicy=\ - disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ - maxTransforms 5,\ - maxReferences 30,\ - disallowReferenceUriSchemes file http https,\ - minKeySize RSA 1024,\ - minKeySize DSA 1024,\ - minKeySize EC 224,\ - noDuplicateIds,\ - noRetrievalMethodLoops -jceks.key.serialFilter = java.base/java.lang.Enum;java.base/java.security.KeyRep;\ - java.base/java.security.KeyRep$Type;java.base/javax.crypto.spec.SecretKeySpec;!* diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_8.policy b/buildSrc/src/main/resources/fips_java_bcjsse_8.policy deleted file mode 100644 index 87dbe85c22ab5..0000000000000 --- a/buildSrc/src/main/resources/fips_java_bcjsse_8.policy +++ /dev/null @@ -1,34 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -// Security Policy for JDK 8, with BouncyCastle FIPS provider and BouncyCastleJsseProvider in FIPS mode - -grant codeBase "file:${java.home}/lib/ext/localedata.jar" { - // Allow resource bundles to be loaded for non root locales. See - // https://github.com/elastic/elasticsearch/issues/39981 - permission java.lang.RuntimePermission "accessClassInPackage.sun.util.*"; -}; -grant { - permission java.security.SecurityPermission "putProviderProperty.BCFIPS"; - permission java.security.SecurityPermission "putProviderProperty.BCJSSE"; - permission java.lang.RuntimePermission "getProtectionDomain"; - permission java.util.PropertyPermission "java.runtime.name", "read"; - permission org.bouncycastle.crypto.CryptoServicesPermission "tlsAlgorithmsEnabled"; - //io.netty.handler.codec.DecoderException - permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.spec"; - //java.security.InvalidAlgorithmParameterException: Cannot process GCMParameterSpec - permission java.lang.RuntimePermission "accessDeclaredMembers"; - permission java.util.PropertyPermission "intellij.debug.agent", "read"; - permission java.util.PropertyPermission "intellij.debug.agent", "write"; - permission org.bouncycastle.crypto.CryptoServicesPermission "exportSecretKey"; - permission org.bouncycastle.crypto.CryptoServicesPermission "exportPrivateKey"; - permission java.io.FilePermission "${javax.net.ssl.trustStore}", "read"; -}; diff --git a/buildSrc/src/main/resources/fips_java_bcjsse_8.security b/buildSrc/src/main/resources/fips_java_bcjsse_8.security deleted file mode 100644 index df21041f5191b..0000000000000 --- a/buildSrc/src/main/resources/fips_java_bcjsse_8.security +++ /dev/null @@ -1,134 +0,0 @@ -# Security Properties for JDK 8, with BouncyCastle FIPS provider and BouncyCastleJsseProvider in FIPS mode - -security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider C:HYBRID;ENABLE{All}; -security.provider.2=org.bouncycastle.jsse.provider.BouncyCastleJsseProvider fips:BCFIPS -security.provider.3=sun.security.provider.Sun -security.provider.4=sun.security.jgss.SunProvider -securerandom.source=file:/dev/urandom -securerandom.strongAlgorithms=NativePRNGBlocking:SUN -login.configuration.provider=sun.security.provider.ConfigFile -policy.provider=sun.security.provider.PolicyFile -policy.url.1=file:${java.home}/lib/security/java.policy -policy.url.2=file:${user.home}/.java.policy -policy.expandProperties=true -policy.allowSystemProperty=true -policy.ignoreIdentityScope=false -keystore.type=bcfks -keystore.type.compat=true -package.access=sun.,\ - org.GNOME.Accessibility.,\ - com.sun.xml.internal.,\ - com.sun.imageio.,\ - com.sun.istack.internal.,\ - com.sun.jmx.,\ - com.sun.media.sound.,\ - com.sun.naming.internal.,\ - com.sun.proxy.,\ - com.sun.corba.se.,\ - com.sun.org.apache.bcel.internal.,\ - com.sun.org.apache.regexp.internal.,\ - com.sun.org.apache.xerces.internal.,\ - com.sun.org.apache.xpath.internal.,\ - com.sun.org.apache.xalan.internal.extensions.,\ - com.sun.org.apache.xalan.internal.lib.,\ - com.sun.org.apache.xalan.internal.res.,\ - com.sun.org.apache.xalan.internal.templates.,\ - com.sun.org.apache.xalan.internal.utils.,\ - com.sun.org.apache.xalan.internal.xslt.,\ - com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ - com.sun.org.apache.xalan.internal.xsltc.compiler.,\ - com.sun.org.apache.xalan.internal.xsltc.trax.,\ - com.sun.org.apache.xalan.internal.xsltc.util.,\ - com.sun.org.apache.xml.internal.res.,\ - com.sun.org.apache.xml.internal.resolver.helpers.,\ - com.sun.org.apache.xml.internal.resolver.readers.,\ - com.sun.org.apache.xml.internal.security.,\ - com.sun.org.apache.xml.internal.serializer.utils.,\ - com.sun.org.apache.xml.internal.utils.,\ - com.sun.org.glassfish.,\ - com.oracle.xmlns.internal.,\ - com.oracle.webservices.internal.,\ - oracle.jrockit.jfr.,\ - org.jcp.xml.dsig.internal.,\ - jdk.internal.,\ - jdk.nashorn.internal.,\ - jdk.nashorn.tools.,\ - jdk.xml.internal.,\ - com.sun.activation.registries. - -package.definition=sun.,\ - com.sun.xml.internal.,\ - com.sun.imageio.,\ - com.sun.istack.internal.,\ - com.sun.jmx.,\ - com.sun.media.sound.,\ - com.sun.naming.internal.,\ - com.sun.proxy.,\ - com.sun.corba.se.,\ - com.sun.org.apache.bcel.internal.,\ - com.sun.org.apache.regexp.internal.,\ - com.sun.org.apache.xerces.internal.,\ - com.sun.org.apache.xpath.internal.,\ - com.sun.org.apache.xalan.internal.extensions.,\ - com.sun.org.apache.xalan.internal.lib.,\ - com.sun.org.apache.xalan.internal.res.,\ - com.sun.org.apache.xalan.internal.templates.,\ - com.sun.org.apache.xalan.internal.utils.,\ - com.sun.org.apache.xalan.internal.xslt.,\ - com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ - com.sun.org.apache.xalan.internal.xsltc.compiler.,\ - com.sun.org.apache.xalan.internal.xsltc.trax.,\ - com.sun.org.apache.xalan.internal.xsltc.util.,\ - com.sun.org.apache.xml.internal.res.,\ - com.sun.org.apache.xml.internal.resolver.helpers.,\ - com.sun.org.apache.xml.internal.resolver.readers.,\ - com.sun.org.apache.xml.internal.security.,\ - com.sun.org.apache.xml.internal.serializer.utils.,\ - com.sun.org.apache.xml.internal.utils.,\ - com.sun.org.glassfish.,\ - com.oracle.xmlns.internal.,\ - com.oracle.webservices.internal.,\ - oracle.jrockit.jfr.,\ - org.jcp.xml.dsig.internal.,\ - jdk.internal.,\ - jdk.nashorn.internal.,\ - jdk.nashorn.tools.,\ - jdk.xml.internal.,\ - com.sun.activation.registries. - -ssl.KeyManagerFactory.algorithm=PKIX -ssl.TrustManagerFactory.algorithm=PKIX -networkaddress.cache.negative.ttl=10 -krb5.kdc.bad.policy = tryLast -jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \ - RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224 - -jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024 - - -jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ - EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC - -jdk.tls.legacyAlgorithms= \ - K_NULL, C_NULL, M_NULL, \ - DH_anon, ECDH_anon, \ - RC4_128, RC4_40, DES_CBC, DES40_CBC, \ - 3DES_EDE_CBC -crypto.policy=unlimited - -jdk.xml.dsig.secureValidationPolicy=\ - disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ - maxTransforms 5,\ - maxReferences 30,\ - disallowReferenceUriSchemes file http https,\ - minKeySize RSA 1024,\ - minKeySize DSA 1024,\ - minKeySize EC 224,\ - noDuplicateIds,\ - noRetrievalMethodLoops - -jceks.key.serialFilter = java.lang.Enum;java.security.KeyRep;\ - java.security.KeyRep$Type;javax.crypto.spec.SecretKeySpec;!* diff --git a/buildSrc/src/main/resources/fips_java_sunjsse.policy b/buildSrc/src/main/resources/fips_java_sunjsse.policy deleted file mode 100644 index 1d2f06e3a1314..0000000000000 --- a/buildSrc/src/main/resources/fips_java_sunjsse.policy +++ /dev/null @@ -1,29 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -// Security Policy for JDK 8, with BouncyCastle FIPS provider and SunJSSE in FIPS mode - -grant codeBase "file:${java.home}/lib/ext/localedata.jar" { - // Allow resource bundles to be loaded for non root locales. See - // https://github.com/elastic/elasticsearch/issues/39981 - permission java.lang.RuntimePermission "accessClassInPackage.sun.util.*"; -}; -grant { - permission org.bouncycastle.crypto.CryptoServicesPermission "exportPrivateKey"; - permission org.bouncycastle.crypto.CryptoServicesPermission "exportSecretKey"; - permission java.lang.RuntimePermission "getProtectionDomain"; - permission java.util.PropertyPermission "java.runtime.name", "read"; - permission org.bouncycastle.crypto.CryptoServicesPermission "tlsAlgorithmsEnabled"; - //io.netty.handler.codec.DecoderException - permission java.lang.RuntimePermission "accessClassInPackage.sun.security.internal.spec"; - //java.security.InvalidAlgorithmParameterException: Cannot process GCMParameterSpec - permission java.lang.RuntimePermission "accessDeclaredMembers"; -}; diff --git a/buildSrc/src/main/resources/fips_java_sunjsse.security b/buildSrc/src/main/resources/fips_java_sunjsse.security deleted file mode 100644 index 2959bea3b8596..0000000000000 --- a/buildSrc/src/main/resources/fips_java_sunjsse.security +++ /dev/null @@ -1,134 +0,0 @@ -# Security Properties for JDK 8, with BouncyCastle FIPS provider and SunJSSE in FIPS mode - -security.provider.1=org.bouncycastle.jcajce.provider.BouncyCastleFipsProvider C:HYBRID;ENABLE{All}; -security.provider.2=com.sun.net.ssl.internal.ssl.Provider BCFIPS -security.provider.3=sun.security.provider.Sun -security.provider.4=sun.security.jgss.SunProvider -securerandom.source=file:/dev/urandom -securerandom.strongAlgorithms=NativePRNGBlocking:SUN -login.configuration.provider=sun.security.provider.ConfigFile -policy.provider=sun.security.provider.PolicyFile -policy.url.1=file:${java.home}/lib/security/java.policy -policy.url.2=file:${user.home}/.java.policy -policy.expandProperties=true -policy.allowSystemProperty=true -policy.ignoreIdentityScope=false -keystore.type=bcfks -keystore.type.compat=true -package.access=sun.,\ - org.GNOME.Accessibility.,\ - com.sun.xml.internal.,\ - com.sun.imageio.,\ - com.sun.istack.internal.,\ - com.sun.jmx.,\ - com.sun.media.sound.,\ - com.sun.naming.internal.,\ - com.sun.proxy.,\ - com.sun.corba.se.,\ - com.sun.org.apache.bcel.internal.,\ - com.sun.org.apache.regexp.internal.,\ - com.sun.org.apache.xerces.internal.,\ - com.sun.org.apache.xpath.internal.,\ - com.sun.org.apache.xalan.internal.extensions.,\ - com.sun.org.apache.xalan.internal.lib.,\ - com.sun.org.apache.xalan.internal.res.,\ - com.sun.org.apache.xalan.internal.templates.,\ - com.sun.org.apache.xalan.internal.utils.,\ - com.sun.org.apache.xalan.internal.xslt.,\ - com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ - com.sun.org.apache.xalan.internal.xsltc.compiler.,\ - com.sun.org.apache.xalan.internal.xsltc.trax.,\ - com.sun.org.apache.xalan.internal.xsltc.util.,\ - com.sun.org.apache.xml.internal.res.,\ - com.sun.org.apache.xml.internal.resolver.helpers.,\ - com.sun.org.apache.xml.internal.resolver.readers.,\ - com.sun.org.apache.xml.internal.security.,\ - com.sun.org.apache.xml.internal.serializer.utils.,\ - com.sun.org.apache.xml.internal.utils.,\ - com.sun.org.glassfish.,\ - com.oracle.xmlns.internal.,\ - com.oracle.webservices.internal.,\ - oracle.jrockit.jfr.,\ - org.jcp.xml.dsig.internal.,\ - jdk.internal.,\ - jdk.nashorn.internal.,\ - jdk.nashorn.tools.,\ - jdk.xml.internal.,\ - com.sun.activation.registries. - -package.definition=sun.,\ - com.sun.xml.internal.,\ - com.sun.imageio.,\ - com.sun.istack.internal.,\ - com.sun.jmx.,\ - com.sun.media.sound.,\ - com.sun.naming.internal.,\ - com.sun.proxy.,\ - com.sun.corba.se.,\ - com.sun.org.apache.bcel.internal.,\ - com.sun.org.apache.regexp.internal.,\ - com.sun.org.apache.xerces.internal.,\ - com.sun.org.apache.xpath.internal.,\ - com.sun.org.apache.xalan.internal.extensions.,\ - com.sun.org.apache.xalan.internal.lib.,\ - com.sun.org.apache.xalan.internal.res.,\ - com.sun.org.apache.xalan.internal.templates.,\ - com.sun.org.apache.xalan.internal.utils.,\ - com.sun.org.apache.xalan.internal.xslt.,\ - com.sun.org.apache.xalan.internal.xsltc.cmdline.,\ - com.sun.org.apache.xalan.internal.xsltc.compiler.,\ - com.sun.org.apache.xalan.internal.xsltc.trax.,\ - com.sun.org.apache.xalan.internal.xsltc.util.,\ - com.sun.org.apache.xml.internal.res.,\ - com.sun.org.apache.xml.internal.resolver.helpers.,\ - com.sun.org.apache.xml.internal.resolver.readers.,\ - com.sun.org.apache.xml.internal.security.,\ - com.sun.org.apache.xml.internal.serializer.utils.,\ - com.sun.org.apache.xml.internal.utils.,\ - com.sun.org.glassfish.,\ - com.oracle.xmlns.internal.,\ - com.oracle.webservices.internal.,\ - oracle.jrockit.jfr.,\ - org.jcp.xml.dsig.internal.,\ - jdk.internal.,\ - jdk.nashorn.internal.,\ - jdk.nashorn.tools.,\ - jdk.xml.internal.,\ - com.sun.activation.registries. - -ssl.KeyManagerFactory.algorithm=SunX509 -ssl.TrustManagerFactory.algorithm=PKIX -networkaddress.cache.negative.ttl=10 -krb5.kdc.bad.policy = tryLast -jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \ - RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224 - -jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024 - - -jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, \ - EC keySize < 224, DES40_CBC, RC4_40, 3DES_EDE_CBC - -jdk.tls.legacyAlgorithms= \ - K_NULL, C_NULL, M_NULL, \ - DH_anon, ECDH_anon, \ - RC4_128, RC4_40, DES_CBC, DES40_CBC, \ - 3DES_EDE_CBC -crypto.policy=unlimited - -jdk.xml.dsig.secureValidationPolicy=\ - disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ - disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ - maxTransforms 5,\ - maxReferences 30,\ - disallowReferenceUriSchemes file http https,\ - minKeySize RSA 1024,\ - minKeySize DSA 1024,\ - minKeySize EC 224,\ - noDuplicateIds,\ - noRetrievalMethodLoops - -jceks.key.serialFilter = java.lang.Enum;java.security.KeyRep;\ - java.security.KeyRep$Type;javax.crypto.spec.SecretKeySpec;!* diff --git a/buildSrc/src/main/resources/forbidden/http-signatures.txt b/buildSrc/src/main/resources/forbidden/http-signatures.txt deleted file mode 100644 index dcf20bbb09387..0000000000000 --- a/buildSrc/src/main/resources/forbidden/http-signatures.txt +++ /dev/null @@ -1,45 +0,0 @@ -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on -# an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -# either express or implied. See the License for the specific -# language governing permissions and limitations under the License. - -@defaultMessage Explicitly specify the ContentType of HTTP entities when creating -org.apache.http.entity.StringEntity#(java.lang.String) -org.apache.http.entity.StringEntity#(java.lang.String,java.lang.String) -org.apache.http.entity.StringEntity#(java.lang.String,java.nio.charset.Charset) -org.apache.http.entity.ByteArrayEntity#(byte[]) -org.apache.http.entity.ByteArrayEntity#(byte[],int,int) -org.apache.http.entity.FileEntity#(java.io.File) -org.apache.http.entity.InputStreamEntity#(java.io.InputStream) -org.apache.http.entity.InputStreamEntity#(java.io.InputStream,long) -org.apache.http.nio.entity.NByteArrayEntity#(byte[]) -org.apache.http.nio.entity.NByteArrayEntity#(byte[],int,int) -org.apache.http.nio.entity.NFileEntity#(java.io.File) -org.apache.http.nio.entity.NStringEntity#(java.lang.String) -org.apache.http.nio.entity.NStringEntity#(java.lang.String,java.lang.String) - -@defaultMessage Use non-deprecated constructors -org.apache.http.nio.entity.NFileEntity#(java.io.File,java.lang.String) -org.apache.http.nio.entity.NFileEntity#(java.io.File,java.lang.String,boolean) -org.apache.http.entity.FileEntity#(java.io.File,java.lang.String) -org.apache.http.entity.StringEntity#(java.lang.String,java.lang.String,java.lang.String) - -@defaultMessage BasicEntity is easy to mess up and forget to set content type -org.apache.http.entity.BasicHttpEntity#() - -@defaultMessage EntityTemplate is easy to mess up and forget to set content type -org.apache.http.entity.EntityTemplate#(org.apache.http.entity.ContentProducer) - -@defaultMessage SerializableEntity uses java serialization and makes it easy to forget to set content type -org.apache.http.entity.SerializableEntity#(java.io.Serializable) diff --git a/buildSrc/src/main/resources/forbidden/jdk-signatures.txt b/buildSrc/src/main/resources/forbidden/jdk-signatures.txt deleted file mode 100644 index b2fd479dce5ff..0000000000000 --- a/buildSrc/src/main/resources/forbidden/jdk-signatures.txt +++ /dev/null @@ -1,113 +0,0 @@ -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on -# an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -# either express or implied. See the License for the specific -# language governing permissions and limitations under the License. - -@defaultMessage Convert to URI -java.net.URL#getPath() -java.net.URL#getFile() - -@defaultMessage Usage of getLocalHost is discouraged -java.net.InetAddress#getLocalHost() - -@defaultMessage Use java.nio.file instead of java.io.File API -java.util.jar.JarFile -java.util.zip.ZipFile -java.io.File -java.io.FileInputStream -java.io.FileOutputStream -java.io.PrintStream#(java.lang.String,java.lang.String) -java.io.PrintWriter#(java.lang.String,java.lang.String) -java.util.Formatter#(java.lang.String,java.lang.String,java.util.Locale) -java.io.RandomAccessFile -java.nio.file.Path#toFile() - -@defaultMessage Specify a location for the temp file/directory instead. -java.nio.file.Files#createTempDirectory(java.lang.String,java.nio.file.attribute.FileAttribute[]) -java.nio.file.Files#createTempFile(java.lang.String,java.lang.String,java.nio.file.attribute.FileAttribute[]) - -@defaultMessage Don't use java serialization - this can break BWC without noticing it -java.io.ObjectOutputStream -java.io.ObjectOutput -java.io.ObjectInputStream -java.io.ObjectInput - -java.nio.file.Files#isHidden(java.nio.file.Path) @ Dependent on the operating system, use FileSystemUtils.isHidden instead - -@defaultMessage Resolve hosts explicitly to the address(es) you want with InetAddress. -java.net.InetSocketAddress#(java.lang.String,int) -java.net.Socket#(java.lang.String,int) -java.net.Socket#(java.lang.String,int,java.net.InetAddress,int) - -@defaultMessage Don't bind to wildcard addresses. Be specific. -java.net.DatagramSocket#() -java.net.DatagramSocket#(int) -java.net.InetSocketAddress#(int) -java.net.MulticastSocket#() -java.net.MulticastSocket#(int) -java.net.ServerSocket#(int) -java.net.ServerSocket#(int,int) - -@defaultMessage use NetworkAddress format() to print IP or IP+ports -java.net.InetAddress#toString() -java.net.InetAddress#getHostAddress() -java.net.Inet4Address#getHostAddress() -java.net.Inet6Address#getHostAddress() -java.net.InetSocketAddress#toString() - -@defaultMessage avoid DNS lookups by accident: if you have a valid reason, then @SuppressWarnings with that reason so its completely clear -java.net.InetAddress#getHostName() -java.net.InetAddress#getCanonicalHostName() - -java.net.InetSocketAddress#getHostName() @ Use getHostString() instead, which avoids a DNS lookup - -@defaultMessage Do not violate java's access system -java.lang.Class#getDeclaredClasses() @ Do not violate java's access system: Use getClasses() instead -java.lang.Class#getDeclaredConstructor(java.lang.Class[]) @ Do not violate java's access system: Use getConstructor() instead -java.lang.Class#getDeclaredConstructors() @ Do not violate java's access system: Use getConstructors() instead -java.lang.Class#getDeclaredField(java.lang.String) @ Do not violate java's access system: Use getField() instead -java.lang.Class#getDeclaredFields() @ Do not violate java's access system: Use getFields() instead -java.lang.Class#getDeclaredMethod(java.lang.String, java.lang.Class[]) @ Do not violate java's access system: Use getMethod() instead -java.lang.Class#getDeclaredMethods() @ Do not violate java's access system: Use getMethods() instead -java.lang.reflect.AccessibleObject#setAccessible(boolean) -java.lang.reflect.AccessibleObject#setAccessible(java.lang.reflect.AccessibleObject[], boolean) - -@defaultMessage this method needs special permission -java.lang.Thread#getAllStackTraces() - -@defaultMessage Stopping threads explicitly leads to inconsistent states. Use interrupt() instead. -java.lang.Thread#stop() -# uncomment when https://github.com/elastic/elasticsearch/issues/31715 is fixed -# java.lang.Thread#stop(java.lang.Throwable) - -@defaultMessage Please do not terminate the application -java.lang.System#exit(int) -java.lang.Runtime#exit(int) -java.lang.Runtime#halt(int) - -@defaultMessage Treat system properties as immutable -java.lang.System#setProperties(java.util.Properties) -java.lang.System#setProperty(java.lang.String,java.lang.String) -java.lang.System#clearProperty(java.lang.String) -java.lang.System#getProperties() @ Use BootstrapInfo.getSystemProperties for a read-only view - -@defaultMessage Avoid unchecked warnings by using Collections#empty(List|Map|Set) methods -java.util.Collections#EMPTY_LIST -java.util.Collections#EMPTY_MAP -java.util.Collections#EMPTY_SET - -java.util.Collections#shuffle(java.util.List) @ Use java.util.Collections#shuffle(java.util.List, java.util.Random) with a reproducible source of randomness - -@defaultMessage Avoid creating FilePermission objects directly, but use FilePermissionUtils instead -java.io.FilePermission#(java.lang.String,java.lang.String) diff --git a/buildSrc/src/main/resources/forbidden/opensearch-all-signatures.txt b/buildSrc/src/main/resources/forbidden/opensearch-all-signatures.txt deleted file mode 100644 index 1e4e669e4722f..0000000000000 --- a/buildSrc/src/main/resources/forbidden/opensearch-all-signatures.txt +++ /dev/null @@ -1,65 +0,0 @@ -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on -# an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -# either express or implied. See the License for the specific -# language governing permissions and limitations under the License. - -java.nio.file.Paths @ Use org.opensearch.common.io.PathUtils.get() instead. -java.nio.file.FileSystems#getDefault() @ use org.opensearch.common.io.PathUtils.getDefaultFileSystem() instead. - -java.nio.file.Files#getFileStore(java.nio.file.Path) @ Use org.opensearch.env.Environment.getFileStore() instead, impacted by JDK-8034057 -java.nio.file.Files#isWritable(java.nio.file.Path) @ Use org.opensearch.env.Environment.isWritable() instead, impacted by JDK-8034057 - -@defaultMessage Use org.opensearch.common.Randomness#get for reproducible sources of randomness -java.util.Random#() -java.util.concurrent.ThreadLocalRandom - -java.security.MessageDigest#clone() @ use org.opensearch.common.hash.MessageDigests - -@defaultMessage Don't use MethodHandles in slow ways, don't be lenient in tests. -java.lang.invoke.MethodHandle#invoke(java.lang.Object[]) -java.lang.invoke.MethodHandle#invokeWithArguments(java.lang.Object[]) -java.lang.invoke.MethodHandle#invokeWithArguments(java.util.List) - -@defaultMessage Don't open socket connections -java.net.URL#openStream() -java.net.URLConnection#connect() -java.net.URLConnection#getInputStream() -java.net.Socket#connect(java.net.SocketAddress) -java.net.Socket#connect(java.net.SocketAddress, int) -java.nio.channels.SocketChannel#open(java.net.SocketAddress) -java.nio.channels.SocketChannel#connect(java.net.SocketAddress) - -# This method is misleading, and uses lenient boolean parsing under the hood. If you intend to parse -# a system property as a boolean, use -# org.opensearch.common.Booleans#parseBoolean(java.lang.String) on the result of -# java.lang.SystemProperty#getProperty(java.lang.String) instead. If you were not intending to parse -# a system property as a boolean, but instead parse a string to a boolean, use -# org.opensearch.common.Booleans#parseBoolean(java.lang.String) directly on the string. -@defaultMessage use org.opensearch.common.Booleans#parseBoolean(java.lang.String) -java.lang.Boolean#getBoolean(java.lang.String) - -org.apache.lucene.util.IOUtils @ use @org.opensearch.core.internal.io instead - -@defaultMessage use executors from org.opensearch.common.util.concurrent.OpenSearchExecutors instead which will properly bubble up Errors -java.util.concurrent.AbstractExecutorService#() -java.util.concurrent.ThreadPoolExecutor#(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue) -java.util.concurrent.ThreadPoolExecutor#(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue, java.util.concurrent.ThreadFactory) -java.util.concurrent.ThreadPoolExecutor#(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue, java.util.concurrent.RejectedExecutionHandler) -java.util.concurrent.ThreadPoolExecutor#(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler) - -@defaultMessage extend org.opensearch.threadpool.Scheduler.SafeScheduledThreadPoolExecutor instead which will properly bubble up Errors -java.util.concurrent.ScheduledThreadPoolExecutor#(int) -java.util.concurrent.ScheduledThreadPoolExecutor#(int, java.util.concurrent.ThreadFactory) -java.util.concurrent.ScheduledThreadPoolExecutor#(int, java.util.concurrent.RejectedExecutionHandler) -java.util.concurrent.ScheduledThreadPoolExecutor#(int, java.util.concurrent.ThreadFactory, java.util.concurrent.RejectedExecutionHandler) diff --git a/buildSrc/src/main/resources/forbidden/opensearch-server-signatures.txt b/buildSrc/src/main/resources/forbidden/opensearch-server-signatures.txt deleted file mode 100644 index 27fba8069125d..0000000000000 --- a/buildSrc/src/main/resources/forbidden/opensearch-server-signatures.txt +++ /dev/null @@ -1,149 +0,0 @@ -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on -# an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -# either express or implied. See the License for the specific -# language governing permissions and limitations under the License. - -# For third-party dependencies, please put signatures in third-party.txt instead of here. - -@defaultMessage spawns threads with vague names; use a custom thread factory and name threads so that you can tell (by its name) which executor it is associated with - -java.util.concurrent.Executors#newFixedThreadPool(int) -java.util.concurrent.Executors#newSingleThreadExecutor() -java.util.concurrent.Executors#newCachedThreadPool() -java.util.concurrent.Executors#newSingleThreadScheduledExecutor() -java.util.concurrent.Executors#newScheduledThreadPool(int) -java.util.concurrent.Executors#defaultThreadFactory() -java.util.concurrent.Executors#privilegedThreadFactory() - -java.lang.Character#codePointBefore(char[],int) @ Implicit start offset is error-prone when the char[] is a buffer and the first chars are random chars -java.lang.Character#codePointAt(char[],int) @ Implicit end offset is error-prone when the char[] is a buffer and the last chars are random chars - -@defaultMessage Reference management is tricky, leave it to SearcherManager -org.apache.lucene.index.IndexReader#decRef() -org.apache.lucene.index.IndexReader#incRef() -org.apache.lucene.index.IndexReader#tryIncRef() - -@defaultMessage Only use wait / notify when really needed try to use concurrency primitives, latches or callbacks instead. -java.lang.Object#wait() -java.lang.Object#wait(long) -java.lang.Object#wait(long,int) -java.lang.Object#notify() -java.lang.Object#notifyAll() - -@defaultMessage Beware of the behavior of this method on MIN_VALUE -java.lang.Math#abs(int) -java.lang.Math#abs(long) - -@defaultMessage Please do not try to stop the world -java.lang.System#gc() - -@defaultMessage Use Channels.* methods to write to channels. Do not write directly. -java.nio.channels.WritableByteChannel#write(java.nio.ByteBuffer) -java.nio.channels.FileChannel#write(java.nio.ByteBuffer, long) -java.nio.channels.GatheringByteChannel#write(java.nio.ByteBuffer[], int, int) -java.nio.channels.GatheringByteChannel#write(java.nio.ByteBuffer[]) -java.nio.channels.ReadableByteChannel#read(java.nio.ByteBuffer) -java.nio.channels.ScatteringByteChannel#read(java.nio.ByteBuffer[]) -java.nio.channels.ScatteringByteChannel#read(java.nio.ByteBuffer[], int, int) -java.nio.channels.FileChannel#read(java.nio.ByteBuffer, long) - -@defaultMessage Use Lucene.parseLenient instead it strips off minor version -org.apache.lucene.util.Version#parseLeniently(java.lang.String) - -@defaultMessage Spawns a new thread which is solely under lucenes control use ThreadPool#relativeTimeInMillis instead -org.apache.lucene.search.TimeLimitingCollector#getGlobalTimerThread() -org.apache.lucene.search.TimeLimitingCollector#getGlobalCounter() - -@defaultMessage Don't interrupt threads use FutureUtils#cancel(Future) instead -java.util.concurrent.Future#cancel(boolean) - -@defaultMessage Don't try reading from paths that are not configured in Environment, resolve from Environment instead -org.opensearch.common.io.PathUtils#get(java.lang.String, java.lang.String[]) -org.opensearch.common.io.PathUtils#get(java.net.URI) - -@defaultMessage Constructing a DateTime without a time zone is dangerous -org.joda.time.DateTime#() -org.joda.time.DateTime#(long) -org.joda.time.DateTime#(int, int, int, int, int) -org.joda.time.DateTime#(int, int, int, int, int, int) -org.joda.time.DateTime#(int, int, int, int, int, int, int) -org.joda.time.DateTime#now() -org.joda.time.DateTimeZone#getDefault() - -@defaultMessage Local times may be ambiguous or nonexistent in a specific time zones. Use ZoneRules#getValidOffsets() instead. -java.time.LocalDateTime#atZone(java.time.ZoneId) -java.time.ZonedDateTime#of(int, int, int, int, int, int, int, java.time.ZoneId) -java.time.ZonedDateTime#of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneId) -java.time.ZonedDateTime#of(java.time.LocalDateTime, java.time.ZoneId) -java.time.ZonedDateTime#truncatedTo(java.time.temporal.TemporalUnit) -java.time.ZonedDateTime#of(int, int, int, int, int, int, int, java.time.ZoneId) -java.time.ZonedDateTime#of(java.time.LocalDate, java.time.LocalTime, java.time.ZoneId) -java.time.ZonedDateTime#of(java.time.LocalDateTime, java.time.ZoneId) -java.time.ZonedDateTime#ofLocal(java.time.LocalDateTime, java.time.ZoneId, java.time.ZoneOffset) -java.time.OffsetDateTime#atZoneSimilarLocal(java.time.ZoneId) -java.time.zone.ZoneRules#getOffset(java.time.LocalDateTime) - -@defaultMessage Manipulation of an OffsetDateTime may yield a time that is not valid in the desired time zone. Use ZonedDateTime instead. -java.time.OffsetDateTime#minus(long, java.time.temporal.TemporalUnit) -java.time.OffsetDateTime#minus(long, java.time.temporal.TemporalUnit) -java.time.OffsetDateTime#minus(java.time.temporal.TemporalAmount) -java.time.OffsetDateTime#minusDays(long) -java.time.OffsetDateTime#minusHours(long) -java.time.OffsetDateTime#minusMinutes(long) -java.time.OffsetDateTime#minusMonths(long) -java.time.OffsetDateTime#minusNanos(long) -java.time.OffsetDateTime#minusSeconds(long) -java.time.OffsetDateTime#minusWeeks(long) -java.time.OffsetDateTime#minusYears(long) -java.time.OffsetDateTime#plus(long, java.time.temporal.TemporalUnit) -java.time.OffsetDateTime#plus(java.time.temporal.TemporalAmount) -java.time.OffsetDateTime#plusDays(long) -java.time.OffsetDateTime#plusHours(long) -java.time.OffsetDateTime#plusMinutes(long) -java.time.OffsetDateTime#plusMonths(long) -java.time.OffsetDateTime#plusNanos(long) -java.time.OffsetDateTime#plusSeconds(long) -java.time.OffsetDateTime#plusWeeks(long) -java.time.OffsetDateTime#plusYears(long) -java.time.OffsetDateTime#with(java.time.temporal.TemporalAdjuster) -java.time.OffsetDateTime#with(java.time.temporal.TemporalField, long) -java.time.OffsetDateTime#withDayOfMonth(int) -java.time.OffsetDateTime#withDayOfYear(int) -java.time.OffsetDateTime#withHour(int) -java.time.OffsetDateTime#withMinute(int) -java.time.OffsetDateTime#withMonth(int) -java.time.OffsetDateTime#withNano(int) -java.time.OffsetDateTime#withOffsetSameInstant(java.time.ZoneOffset) -java.time.OffsetDateTime#withOffsetSameLocal(java.time.ZoneOffset) -java.time.OffsetDateTime#withSecond(int) -java.time.OffsetDateTime#withYear(int) - -@defaultMessage Daylight saving is not the only reason for a change in timezone offset. -java.time.zone.ZoneRules#getStandardOffset(java.time.Instant) -java.time.zone.ZoneRules#getDaylightSavings(java.time.Instant) -java.time.zone.ZoneRules#isDaylightSavings(java.time.Instant) - -@defaultMessage Use logger methods with non-Object parameter -org.apache.logging.log4j.Logger#trace(java.lang.Object) -org.apache.logging.log4j.Logger#trace(java.lang.Object, java.lang.Throwable) -org.apache.logging.log4j.Logger#debug(java.lang.Object) -org.apache.logging.log4j.Logger#debug(java.lang.Object, java.lang.Throwable) -org.apache.logging.log4j.Logger#info(java.lang.Object) -org.apache.logging.log4j.Logger#info(java.lang.Object, java.lang.Throwable) -org.apache.logging.log4j.Logger#warn(java.lang.Object) -org.apache.logging.log4j.Logger#warn(java.lang.Object, java.lang.Throwable) -org.apache.logging.log4j.Logger#error(java.lang.Object) -org.apache.logging.log4j.Logger#error(java.lang.Object, java.lang.Throwable) -org.apache.logging.log4j.Logger#fatal(java.lang.Object) -org.apache.logging.log4j.Logger#fatal(java.lang.Object, java.lang.Throwable) diff --git a/buildSrc/src/main/resources/forbidden/opensearch-test-signatures.txt b/buildSrc/src/main/resources/forbidden/opensearch-test-signatures.txt deleted file mode 100644 index 766e13878cc25..0000000000000 --- a/buildSrc/src/main/resources/forbidden/opensearch-test-signatures.txt +++ /dev/null @@ -1,29 +0,0 @@ -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on -# an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -# either express or implied. See the License for the specific -# language governing permissions and limitations under the License. - -com.carrotsearch.randomizedtesting.RandomizedTest#globalTempDir() @ Use newTempDirPath() instead -com.carrotsearch.randomizedtesting.annotations.Seed @ Don't commit hardcoded seeds -com.carrotsearch.randomizedtesting.annotations.Repeat @ Don't commit hardcoded repeats - -org.apache.lucene.codecs.Codec#setDefault(org.apache.lucene.codecs.Codec) @ Use the SuppressCodecs("*") annotation instead -org.apache.lucene.util.LuceneTestCase$Slow @ Don't write slow tests -org.junit.Ignore @ Use AwaitsFix instead -org.apache.lucene.util.LuceneTestCase$Nightly @ We don't run nightly tests at this point! -com.carrotsearch.randomizedtesting.annotations.Nightly @ We don't run nightly tests at this point! - -org.junit.Test @defaultMessage Just name your test method testFooBar - -java.lang.Math#random() @ Use one of the various randomization methods from LuceneTestCase or ESTestCase for reproducibility diff --git a/buildSrc/src/main/resources/forbidden/third-party-audit.txt b/buildSrc/src/main/resources/forbidden/third-party-audit.txt deleted file mode 100644 index 0346d6d8a583f..0000000000000 --- a/buildSrc/src/main/resources/forbidden/third-party-audit.txt +++ /dev/null @@ -1,98 +0,0 @@ -# Licensed to Elasticsearch under one or more contributor -# license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright -# ownership. Elasticsearch licenses this file to you under -# the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on -# an 'AS IS' BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -# either express or implied. See the License for the specific -# language governing permissions and limitations under the License. - -# Checks that we run against bytecode of third-party dependencies -# -# Be judicious about what is denied here: MANY classes will be subject -# to these rules, so please try to keep the false positive rate low! -# -# Each third party .class failing checks will need to be explicitly -# listed in the module's build.gradle file: -# -# thirdPartyAudit.excludes = [ -# // uses internal java api: sun.misc.Unsafe -# 'org.foo.Bar', -# // missing class! -# 'com.missing.dependency.WTF', -# // ... -# ] -# -# Wildcards are not allowed, excludes must be exact. The build also fails with -# the message "Invalid exclusions, nothing is wrong with these classes" if -# extraneous classes are in the excludes list, this ensures the list is -# up-to-date, and that each module accurately documents the evil things -# that its dependencies do. -# -# For more information, look at ThirdPartyAuditTask.groovy in buildSrc/ - -# -# Ruleset to fail on java internal apis, using this logic: -# http://docs.oracle.com/javase/8/docs/api/java/lang/SecurityManager.html#checkPackageAccess-java.lang.String- -# -# // The list may change at any time, regenerated with: -# for (String pkg : new TreeSet<>(Arrays.asList( -# Security.getProperty("package.access").split(",")))) { -# System.out.println(pkg + "**"); -# } -# -@defaultMessage non-public internal runtime class -com.oracle.webservices.internal.** -com.oracle.xmlns.internal.** -com.sun.activation.registries.** -com.sun.browser.** -com.sun.corba.se.** -com.sun.glass.** -com.sun.imageio.** -com.sun.istack.internal.** -com.sun.javafx.** -com.sun.jmx.** -com.sun.media.** -com.sun.media.sound.** -com.sun.naming.internal.** -com.sun.openpisces.** -com.sun.org.apache.bcel.internal.** -com.sun.org.apache.regexp.internal.** -com.sun.org.apache.xalan.internal.extensions.** -com.sun.org.apache.xalan.internal.lib.** -com.sun.org.apache.xalan.internal.res.** -com.sun.org.apache.xalan.internal.templates.** -com.sun.org.apache.xalan.internal.utils.** -com.sun.org.apache.xalan.internal.xslt.** -com.sun.org.apache.xalan.internal.xsltc.cmdline.** -com.sun.org.apache.xalan.internal.xsltc.compiler.** -com.sun.org.apache.xalan.internal.xsltc.trax.** -com.sun.org.apache.xalan.internal.xsltc.util.** -com.sun.org.apache.xerces.internal.** -com.sun.org.apache.xml.internal.res.** -com.sun.org.apache.xml.internal.security.** -com.sun.org.apache.xml.internal.serializer.utils.** -com.sun.org.apache.xml.internal.utils.** -com.sun.org.apache.xpath.internal.** -com.sun.org.glassfish.** -com.sun.pisces.** -com.sun.prism.** -com.sun.proxy.** -com.sun.scenario.** -com.sun.t2k.** -com.sun.webkit.** -com.sun.xml.internal.** -jdk.internal.** -jdk.management.resource.internal.** -jdk.nashorn.internal.** -jdk.nashorn.tools.** -oracle.jrockit.jfr.** -org.jcp.xml.dsig.internal.** -sun.** diff --git a/buildSrc/src/main/resources/license-headers/license-header.txt b/buildSrc/src/main/resources/license-headers/license-header.txt deleted file mode 100644 index b5b39ea4ed3cd..0000000000000 --- a/buildSrc/src/main/resources/license-headers/license-header.txt +++ /dev/null @@ -1,7 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ diff --git a/buildSrc/src/main/resources/minimumCompilerVersion b/buildSrc/src/main/resources/minimumCompilerVersion deleted file mode 100644 index b4de394767536..0000000000000 --- a/buildSrc/src/main/resources/minimumCompilerVersion +++ /dev/null @@ -1 +0,0 @@ -11 diff --git a/buildSrc/src/main/resources/minimumGradleVersion b/buildSrc/src/main/resources/minimumGradleVersion deleted file mode 100644 index ba92e72f5775b..0000000000000 --- a/buildSrc/src/main/resources/minimumGradleVersion +++ /dev/null @@ -1 +0,0 @@ -6.6.1 \ No newline at end of file diff --git a/buildSrc/src/main/resources/minimumRuntimeVersion b/buildSrc/src/main/resources/minimumRuntimeVersion deleted file mode 100644 index 468437494697b..0000000000000 --- a/buildSrc/src/main/resources/minimumRuntimeVersion +++ /dev/null @@ -1 +0,0 @@ -1.8 \ No newline at end of file diff --git a/buildSrc/src/main/resources/opensearch.properties b/buildSrc/src/main/resources/opensearch.properties deleted file mode 100644 index a2c3f37f8f027..0000000000000 --- a/buildSrc/src/main/resources/opensearch.properties +++ /dev/null @@ -1,13 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -version=@version@ -luceneVersion=@luceneVersion@ diff --git a/buildSrc/src/main/resources/plugin-descriptor.properties b/buildSrc/src/main/resources/plugin-descriptor.properties deleted file mode 100644 index ce1803bdb676b..0000000000000 --- a/buildSrc/src/main/resources/plugin-descriptor.properties +++ /dev/null @@ -1,59 +0,0 @@ -# -# SPDX-License-Identifier: Apache-2.0 -# -# The OpenSearch Contributors require contributions made to -# this file be licensed under the Apache-2.0 license or a -# compatible open source license. -# -# Modifications Copyright OpenSearch Contributors. See -# GitHub history for details. -# - -# OpenSearch plugin descriptor file -# This file must exist as 'plugin-descriptor.properties' inside a plugin. -# -### example plugin for "foo" -# -# foo.zip <-- zip file for the plugin, with this structure: -# |____ .jar <-- classes, resources, dependencies -# |____ .jar <-- any number of jars -# |____ plugin-descriptor.properties <-- example contents below: -# -# classname=foo.bar.BazPlugin -# description=My cool plugin -# version=6.0 -# opensearch.version=6.0 -# java.version=1.8 -# -### mandatory elements for all plugins: -# -# 'description': simple summary of the plugin -description=${description} -# -# 'version': plugin's version -version=${version} -# -# 'name': the plugin name -name=${name} -# -# 'classname': the name of the class to load, fully-qualified. -classname=${classname} -# -# 'java.version': version of java the code is built against -# use the system property java.specification.version -# version string must be a sequence of nonnegative decimal integers -# separated by "."'s and may have leading zeros -java.version=${javaVersion} -# -# 'opensearch.version': version of opensearch compiled against -opensearch.version=${opensearchVersion} -### optional elements for plugins: -# -# 'custom.foldername': the custom name of the folder in which the plugin is installed. -custom.foldername=${customFolderName} -# -# 'extended.plugins': other plugins this plugin extends through SPI -extended.plugins=${extendedPlugins} -# -# 'has.native.controller': whether or not the plugin has a native controller -has.native.controller=${hasNativeController} diff --git a/buildSrc/src/main/resources/test/ssl/README.md b/buildSrc/src/main/resources/test/ssl/README.md deleted file mode 100644 index 9d7d1427160bc..0000000000000 --- a/buildSrc/src/main/resources/test/ssl/README.md +++ /dev/null @@ -1,20 +0,0 @@ -This directory contains test certificates used for testing ssl handling. - -These keystores and certificates can be used via applying the `opensearch.test-with-ssl` plugin. - -The generated certificates are valid till 05. Jun 2030. - -The certificates are generated using catch-all SAN in the following procedure: - -1. Generate the node's keystore: - `keytool -genkey -alias test-node -keystore test-node.jks -keyalg RSA -keysize 2048 -validity 3654 -dname CN="OpenSearch Build Test Infrastructure" -keypass keypass -storepass keypass -ext san=dns:localhost,dns:localhost.localdomain,dns:localhost4,dns:localhost4.localdomain4,dns:localhost6,dns:localhost6.localdomain6,ip:127.0.0.1,ip:0:0:0:0:0:0:0:1` -2. Generate the client's keystore: - `keytool -genkey -alias test-client -keystore test-client.jks -keyalg RSA -keysize 2048 -validity 3654 -dname CN="OpenSearch Build Test Infrastructure" -keypass keypass -storepass keypass -ext san=dns:localhost,dns:localhost.localdomain,dns:localhost4,dns:localhost4.localdomain4,dns:localhost6,dns:localhost6.localdomain6,ip:127.0.0.1,ip:0:0:0:0:0:0:0:1` -3. Export the node's certificate: - `keytool -export -alias test-node -keystore test-node.jks -storepass keypass -file test-node.crt` -4. Import the node certificate in the client's keystore: - `keytool -import -alias test-node -keystore test-client.jks -storepass keypass -file test-node.crt -noprompt` -5. Export the client's certificate: - `keytool -export -alias test-client -keystore test-client.jks -storepass keypass -file test-client.crt` -6. Import the client certificate in the node's keystore: - `keytool -import -alias test-client -keystore test-node.jks -storepass keypass -file test-client.crt -noprompt` diff --git a/buildSrc/src/main/resources/test/ssl/test-client.crt b/buildSrc/src/main/resources/test/ssl/test-client.crt deleted file mode 100644 index 5459c2a0b0707268b8bd90243c5a345736f9e13c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 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 diff --git a/buildSrc/src/main/resources/test/ssl/test-node.crt b/buildSrc/src/main/resources/test/ssl/test-node.crt deleted file mode 100644 index c2a27e35448759b7492df14c353a8597e627164c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 927 zcmXqLVxDc##MHcinTe5!iNk6)&+qb7`=bWDY@Awc9&O)w85y}*84QdJ4Gi?ym_u2Z zh1Fei5{pYRlZ#Umi;^=GoJuouQWQc`i%S$d^U{idQbnc7C8b5F26E!OMg|6E2F8YF zrWVEqQR2MDAg(EtOO}~Uj7rE(V`ODuZerwTFlb`rVrpV!WN0e;qp~kzW5Tl9|I%-S zjh!MLIBuAxNowoV{5C#lQnW1O!fls4Cv5F5Rhgr(=dboebHP>A=w!jQnIQ(S}OUS*H&GdqQRQiRm{rg+?rA<8-4QmhY8UQUlL{%^XzWC%u z7dLJ(XxwNZ3yd#WJ{B<+k*ZDax2^wNHQ9G*@RRFS&wD2Rivz0Y2gwVvG`1Twwls0( zTQWaJl@G>O8QdSF&cer{rBUK1Bw*rZ7u!A4eNf~3d{Ns$?{BC~dudIko@b^!)d zz=#~Nz%&PpSVo4VbuZHoMlF?gw%p0t;QT-Hm7ef}nag#}HJ&!s?fuE3bN9~XDNK{U zC`+%Z^LZ(L>WSvAs?L|9ZK88dvZTe|sBYBp*m+){%75bTSLtUyOEW$DJ1^~`)MB}d zY@g371hZJjTz#jdUp{|_;If~~3Mw8?U-9zm?yau^e!RcKan#$!QO4m_|8E|3ohCkg zx7~LqC}dYGe{ja%?b+M=$96qB>7H5jC4l*CZs*jCXa2=B+`h-u=e13=v1d(i1LOX* z;tnnLs}~bo&Kb|2e^p4wvGTn8KePDVGr5=YG|%4occ<=&YknVe_FfU2ShVQfVOGWs aImW4He%!3xZpMB{KNP diff --git a/buildSrc/src/main/resources/test/ssl/test-node.jks b/buildSrc/src/main/resources/test/ssl/test-node.jks deleted file mode 100644 index 59e995321a94387e1d37d110092be90d1002cdaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3669 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 V{sr2#;TLoAk?>3c1O`Un{{^;@!B7AI diff --git a/buildSrc/src/test/java/org/opensearch/gradle/ArchitectureTests.java b/buildSrc/src/test/java/org/opensearch/gradle/ArchitectureTests.java deleted file mode 100644 index f13214420b434..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/ArchitectureTests.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.test.GradleUnitTestCase; - -public class ArchitectureTests extends GradleUnitTestCase { - - final String architecture = System.getProperty("os.arch", ""); - - public void testCurrentArchitecture() { - assertEquals(Architecture.X64, currentArchitecture("amd64")); - assertEquals(Architecture.X64, currentArchitecture("x86_64")); - assertEquals(Architecture.ARM64, currentArchitecture("aarch64")); - assertEquals(Architecture.PPC64LE, currentArchitecture("ppc64le")); - } - - public void testInvalidCurrentArchitecture() { - assertThrows("can not determine architecture from [", IllegalArgumentException.class, () -> currentArchitecture("fooBar64")); - } - - /** - * Determines the return value of {@link Architecture#current()} based on a string representing a potential OS Architecture. - * - * @param osArchToTest An expected value of the {@code os.arch} system property on another architecture. - * @return the value of the {@link Architecture} enum which would have resulted with the given value. - * @throws IllegalArgumentException if the string is not mapped to a value of the {@link Architecture} enum. - */ - private Architecture currentArchitecture(String osArchToTest) throws IllegalArgumentException { - // Test new architecture - System.setProperty("os.arch", osArchToTest); - try { - return Architecture.current(); - } finally { - // Restore actual architecture property value - System.setProperty("os.arch", this.architecture); - } - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/BwcOpenSearchVersionsTests.java b/buildSrc/src/test/java/org/opensearch/gradle/BwcOpenSearchVersionsTests.java deleted file mode 100644 index 28f116710e408..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/BwcOpenSearchVersionsTests.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.junit.Rule; -import org.junit.rules.ExpectedException; - -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import static java.util.Arrays.asList; - -/** - * Tests to specifically verify the OpenSearch version 1.x with Legacy ES versions. - * This supplements the tests in BwcVersionsTests. - * - * Currently the versioning logic doesn't work for OpenSearch 2.x as the masking - * is only applied specifically for 1.x. - */ -public class BwcOpenSearchVersionsTests extends GradleUnitTestCase { - - private static final Map> sampleVersions = new HashMap<>(); - - @Rule - public ExpectedException expectedEx = ExpectedException.none(); - - static { - sampleVersions.put("1.0.0", asList("5_6_13", "6_6_1", "6_8_15", "7_0_0", "7_9_1", "7_10_0", "7_10_1", "7_10_2", "1_0_0")); - sampleVersions.put("1.1.0", asList("5_6_13", "6_6_1", "6_8_15", "7_0_0", "7_9_1", "7_10_0", "7_10_1", "7_10_2", "1_0_0", "1_1_0")); - } - - public void testWireCompatible() { - assertVersionsEquals( - asList("6.8.15", "7.0.0", "7.9.1", "7.10.0", "7.10.1", "7.10.2"), - getVersionCollection("1.0.0").getWireCompatible() - ); - assertVersionsEquals( - asList("6.8.15", "7.0.0", "7.9.1", "7.10.0", "7.10.1", "7.10.2", "1.0.0"), - getVersionCollection("1.1.0").getWireCompatible() - ); - } - - public void testWireCompatibleUnreleased() { - assertVersionsEquals(Collections.emptyList(), getVersionCollection("1.0.0").getUnreleasedWireCompatible()); - } - - public void testIndexCompatible() { - assertVersionsEquals( - asList("6.6.1", "6.8.15", "7.0.0", "7.9.1", "7.10.0", "7.10.1", "7.10.2"), - getVersionCollection("1.0.0").getIndexCompatible() - ); - assertVersionsEquals( - asList("6.6.1", "6.8.15", "7.0.0", "7.9.1", "7.10.0", "7.10.1", "7.10.2", "1.0.0"), - getVersionCollection("1.1.0").getIndexCompatible() - ); - } - - public void testIndexCompatibleUnreleased() { - assertVersionsEquals(Collections.emptyList(), getVersionCollection("1.0.0").getUnreleasedIndexCompatible()); - } - - public void testGetUnreleased() { - assertVersionsEquals(Collections.singletonList("1.0.0"), getVersionCollection("1.0.0").getUnreleased()); - } - - private String formatVersionToLine(final String version) { - return " public static final Version V_" + version.replaceAll("\\.", "_") + " "; - } - - private void assertVersionsEquals(List expected, List actual) { - assertEquals(expected.stream().map(Version::fromString).collect(Collectors.toList()), actual); - } - - private BwcVersions getVersionCollection(String versionString) { - List versionMap = sampleVersions.get(versionString); - assertNotNull(versionMap); - Version version = Version.fromString(versionString); - assertNotNull(version); - return new BwcVersions(versionMap.stream().map(this::formatVersionToLine).collect(Collectors.toList()), version); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/BwcVersionsTests.java b/buildSrc/src/test/java/org/opensearch/gradle/BwcVersionsTests.java deleted file mode 100644 index 94c4e66726acd..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/BwcVersionsTests.java +++ /dev/null @@ -1,784 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; - -public class BwcVersionsTests extends GradleUnitTestCase { - - private static final Map> sampleVersions = new HashMap<>(); - - @Rule - public ExpectedException expectedEx = ExpectedException.none(); - - static { - // unreleased major and two unreleased minors ( minor in feature freeze ) - sampleVersions.put("8.0.0", asList("7_0_0", "7_0_1", "7_1_0", "7_1_1", "7_2_0", "7_3_0", "8.0.0")); - sampleVersions.put( - "7.0.0-alpha1", - asList( - "6_0_0_alpha1", - "6_0_0_alpha2", - "6_0_0_beta1", - "6_0_0_beta2", - "6_0_0_rc1", - "6_0_0_rc2", - "6_0_0", - "6_0_1", - "6_1_0", - "6_1_1", - "6_1_2", - "6_1_3", - "6_1_4", - "6_2_0", - "6_2_1", - "6_2_2", - "6_2_3", - "6_2_4", - "6_3_0", - "6_3_1", - "6_3_2", - "6_4_0", - "6_4_1", - "6_4_2", - "6_5_0", - "7_0_0_alpha1" - ) - ); - sampleVersions.put( - "6.5.0", - asList( - "5_0_0_alpha1", - "5_0_0_alpha2", - "5_0_0_alpha3", - "5_0_0_alpha4", - "5_0_0_alpha5", - "5_0_0_beta1", - "5_0_0_rc1", - "5_0_0", - "5_0_1", - "5_0_2", - "5_1_1", - "5_1_2", - "5_2_0", - "5_2_1", - "5_2_2", - "5_3_0", - "5_3_1", - "5_3_2", - "5_3_3", - "5_4_0", - "5_4_1", - "5_4_2", - "5_4_3", - "5_5_0", - "5_5_1", - "5_5_2", - "5_5_3", - "5_6_0", - "5_6_1", - "5_6_2", - "5_6_3", - "5_6_4", - "5_6_5", - "5_6_6", - "5_6_7", - "5_6_8", - "5_6_9", - "5_6_10", - "5_6_11", - "5_6_12", - "5_6_13", - "6_0_0_alpha1", - "6_0_0_alpha2", - "6_0_0_beta1", - "6_0_0_beta2", - "6_0_0_rc1", - "6_0_0_rc2", - "6_0_0", - "6_0_1", - "6_1_0", - "6_1_1", - "6_1_2", - "6_1_3", - "6_1_4", - "6_2_0", - "6_2_1", - "6_2_2", - "6_2_3", - "6_2_4", - "6_3_0", - "6_3_1", - "6_3_2", - "6_4_0", - "6_4_1", - "6_4_2", - "6_5_0" - ) - ); - sampleVersions.put( - "6.6.0", - asList( - "5_0_0_alpha1", - "5_0_0_alpha2", - "5_0_0_alpha3", - "5_0_0_alpha4", - "5_0_0_alpha5", - "5_0_0_beta1", - "5_0_0_rc1", - "5_0_0", - "5_0_1", - "5_0_2", - "5_1_1", - "5_1_2", - "5_2_0", - "5_2_1", - "5_2_2", - "5_3_0", - "5_3_1", - "5_3_2", - "5_3_3", - "5_4_0", - "5_4_1", - "5_4_2", - "5_4_3", - "5_5_0", - "5_5_1", - "5_5_2", - "5_5_3", - "5_6_0", - "5_6_1", - "5_6_2", - "5_6_3", - "5_6_4", - "5_6_5", - "5_6_6", - "5_6_7", - "5_6_8", - "5_6_9", - "5_6_10", - "5_6_11", - "5_6_12", - "5_6_13", - "6_0_0_alpha1", - "6_0_0_alpha2", - "6_0_0_beta1", - "6_0_0_beta2", - "6_0_0_rc1", - "6_0_0_rc2", - "6_0_0", - "6_0_1", - "6_1_0", - "6_1_1", - "6_1_2", - "6_1_3", - "6_1_4", - "6_2_0", - "6_2_1", - "6_2_2", - "6_2_3", - "6_2_4", - "6_3_0", - "6_3_1", - "6_3_2", - "6_4_0", - "6_4_1", - "6_4_2", - "6_5_0", - "6_6_0" - ) - ); - sampleVersions.put( - "6.4.2", - asList( - "5_0_0_alpha1", - "5_0_0_alpha2", - "5_0_0_alpha3", - "5_0_0_alpha4", - "5_0_0_alpha5", - "5_0_0_beta1", - "5_0_0_rc1", - "5_0_0", - "5_0_1", - "5_0_2", - "5_1_1", - "5_1_2", - "5_2_0", - "5_2_1", - "5_2_2", - "5_3_0", - "5_3_1", - "5_3_2", - "5_3_3", - "5_4_0", - "5_4_1", - "5_4_2", - "5_4_3", - "5_5_0", - "5_5_1", - "5_5_2", - "5_5_3", - "5_6_0", - "5_6_1", - "5_6_2", - "5_6_3", - "5_6_4", - "5_6_5", - "5_6_6", - "5_6_7", - "5_6_8", - "5_6_9", - "5_6_10", - "5_6_11", - "5_6_12", - "5_6_13", - "6_0_0_alpha1", - "6_0_0_alpha2", - "6_0_0_beta1", - "6_0_0_beta2", - "6_0_0_rc1", - "6_0_0_rc2", - "6_0_0", - "6_0_1", - "6_1_0", - "6_1_1", - "6_1_2", - "6_1_3", - "6_1_4", - "6_2_0", - "6_2_1", - "6_2_2", - "6_2_3", - "6_2_4", - "6_3_0", - "6_3_1", - "6_3_2", - "6_4_0", - "6_4_1", - "6_4_2" - ) - ); - sampleVersions.put("7.1.0", asList("7_1_0", "7_0_0", "6_7_0", "6_6_1", "6_6_0")); - } - - @Test(expected = IllegalArgumentException.class) - public void testExceptionOnEmpty() { - new BwcVersions(asList("foo", "bar"), Version.fromString("7.0.0")); - } - - @Test(expected = IllegalStateException.class) - public void testExceptionOnNonCurrent() { - new BwcVersions(singletonList(formatVersionToLine("6.5.0")), Version.fromString("7.0.0")); - } - - @Test(expected = IllegalStateException.class) - public void testExceptionOnTooManyMajors() { - new BwcVersions( - asList(formatVersionToLine("5.6.12"), formatVersionToLine("6.5.0"), formatVersionToLine("7.0.0")), - Version.fromString("6.5.0") - ); - } - - public void testWireCompatible() { - assertVersionsEquals(asList("6.5.0"), getVersionCollection("7.0.0-alpha1").getWireCompatible()); - assertVersionsEquals( - asList( - "5.6.0", - "5.6.1", - "5.6.2", - "5.6.3", - "5.6.4", - "5.6.5", - "5.6.6", - "5.6.7", - "5.6.8", - "5.6.9", - "5.6.10", - "5.6.11", - "5.6.12", - "5.6.13", - "6.0.0", - "6.0.1", - "6.1.0", - "6.1.1", - "6.1.2", - "6.1.3", - "6.1.4", - "6.2.0", - "6.2.1", - "6.2.2", - "6.2.3", - "6.2.4", - "6.3.0", - "6.3.1", - "6.3.2", - "6.4.0", - "6.4.1", - "6.4.2" - ), - getVersionCollection("6.5.0").getWireCompatible() - ); - - assertVersionsEquals( - asList( - "5.6.0", - "5.6.1", - "5.6.2", - "5.6.3", - "5.6.4", - "5.6.5", - "5.6.6", - "5.6.7", - "5.6.8", - "5.6.9", - "5.6.10", - "5.6.11", - "5.6.12", - "5.6.13", - "6.0.0", - "6.0.1", - "6.1.0", - "6.1.1", - "6.1.2", - "6.1.3", - "6.1.4", - "6.2.0", - "6.2.1", - "6.2.2", - "6.2.3", - "6.2.4", - "6.3.0", - "6.3.1", - "6.3.2", - "6.4.0", - "6.4.1" - ), - getVersionCollection("6.4.2").getWireCompatible() - ); - - assertVersionsEquals( - asList( - "5.6.0", - "5.6.1", - "5.6.2", - "5.6.3", - "5.6.4", - "5.6.5", - "5.6.6", - "5.6.7", - "5.6.8", - "5.6.9", - "5.6.10", - "5.6.11", - "5.6.12", - "5.6.13", - "6.0.0", - "6.0.1", - "6.1.0", - "6.1.1", - "6.1.2", - "6.1.3", - "6.1.4", - "6.2.0", - "6.2.1", - "6.2.2", - "6.2.3", - "6.2.4", - "6.3.0", - "6.3.1", - "6.3.2", - "6.4.0", - "6.4.1", - "6.4.2", - "6.5.0" - ), - getVersionCollection("6.6.0").getWireCompatible() - ); - - assertVersionsEquals(asList("7.3.0"), getVersionCollection("8.0.0").getWireCompatible()); - assertVersionsEquals(asList("6.7.0", "7.0.0"), getVersionCollection("7.1.0").getWireCompatible()); - - } - - public void testWireCompatibleUnreleased() { - assertVersionsEquals(asList("6.5.0"), getVersionCollection("7.0.0-alpha1").getUnreleasedWireCompatible()); - assertVersionsEquals(asList("5.6.13", "6.4.2"), getVersionCollection("6.5.0").getUnreleasedWireCompatible()); - - assertVersionsEquals(asList("5.6.13"), getVersionCollection("6.4.2").getUnreleasedWireCompatible()); - - assertVersionsEquals(asList("5.6.13", "6.4.2", "6.5.0"), getVersionCollection("6.6.0").getUnreleasedWireCompatible()); - - assertVersionsEquals(asList("7.3.0"), getVersionCollection("8.0.0").getUnreleasedWireCompatible()); - assertVersionsEquals(asList("6.7.0", "7.0.0"), getVersionCollection("7.1.0").getWireCompatible()); - } - - public void testIndexCompatible() { - assertVersionsEquals( - asList( - "6.0.0", - "6.0.1", - "6.1.0", - "6.1.1", - "6.1.2", - "6.1.3", - "6.1.4", - "6.2.0", - "6.2.1", - "6.2.2", - "6.2.3", - "6.2.4", - "6.3.0", - "6.3.1", - "6.3.2", - "6.4.0", - "6.4.1", - "6.4.2", - "6.5.0" - ), - getVersionCollection("7.0.0-alpha1").getIndexCompatible() - ); - - assertVersionsEquals( - asList( - "5.0.0", - "5.0.1", - "5.0.2", - "5.1.1", - "5.1.2", - "5.2.0", - "5.2.1", - "5.2.2", - "5.3.0", - "5.3.1", - "5.3.2", - "5.3.3", - "5.4.0", - "5.4.1", - "5.4.2", - "5.4.3", - "5.5.0", - "5.5.1", - "5.5.2", - "5.5.3", - "5.6.0", - "5.6.1", - "5.6.2", - "5.6.3", - "5.6.4", - "5.6.5", - "5.6.6", - "5.6.7", - "5.6.8", - "5.6.9", - "5.6.10", - "5.6.11", - "5.6.12", - "5.6.13", - "6.0.0", - "6.0.1", - "6.1.0", - "6.1.1", - "6.1.2", - "6.1.3", - "6.1.4", - "6.2.0", - "6.2.1", - "6.2.2", - "6.2.3", - "6.2.4", - "6.3.0", - "6.3.1", - "6.3.2", - "6.4.0", - "6.4.1", - "6.4.2" - ), - getVersionCollection("6.5.0").getIndexCompatible() - ); - - assertVersionsEquals( - asList( - "5.0.0", - "5.0.1", - "5.0.2", - "5.1.1", - "5.1.2", - "5.2.0", - "5.2.1", - "5.2.2", - "5.3.0", - "5.3.1", - "5.3.2", - "5.3.3", - "5.4.0", - "5.4.1", - "5.4.2", - "5.4.3", - "5.5.0", - "5.5.1", - "5.5.2", - "5.5.3", - "5.6.0", - "5.6.1", - "5.6.2", - "5.6.3", - "5.6.4", - "5.6.5", - "5.6.6", - "5.6.7", - "5.6.8", - "5.6.9", - "5.6.10", - "5.6.11", - "5.6.12", - "5.6.13", - "6.0.0", - "6.0.1", - "6.1.0", - "6.1.1", - "6.1.2", - "6.1.3", - "6.1.4", - "6.2.0", - "6.2.1", - "6.2.2", - "6.2.3", - "6.2.4", - "6.3.0", - "6.3.1", - "6.3.2", - "6.4.0", - "6.4.1" - ), - getVersionCollection("6.4.2").getIndexCompatible() - ); - - assertVersionsEquals( - asList( - "5.0.0", - "5.0.1", - "5.0.2", - "5.1.1", - "5.1.2", - "5.2.0", - "5.2.1", - "5.2.2", - "5.3.0", - "5.3.1", - "5.3.2", - "5.3.3", - "5.4.0", - "5.4.1", - "5.4.2", - "5.4.3", - "5.5.0", - "5.5.1", - "5.5.2", - "5.5.3", - "5.6.0", - "5.6.1", - "5.6.2", - "5.6.3", - "5.6.4", - "5.6.5", - "5.6.6", - "5.6.7", - "5.6.8", - "5.6.9", - "5.6.10", - "5.6.11", - "5.6.12", - "5.6.13", - "6.0.0", - "6.0.1", - "6.1.0", - "6.1.1", - "6.1.2", - "6.1.3", - "6.1.4", - "6.2.0", - "6.2.1", - "6.2.2", - "6.2.3", - "6.2.4", - "6.3.0", - "6.3.1", - "6.3.2", - "6.4.0", - "6.4.1", - "6.4.2", - "6.5.0" - ), - getVersionCollection("6.6.0").getIndexCompatible() - ); - - assertVersionsEquals( - asList("7.0.0", "7.0.1", "7.1.0", "7.1.1", "7.2.0", "7.3.0"), - getVersionCollection("8.0.0").getIndexCompatible() - ); - } - - public void testIndexCompatibleUnreleased() { - assertVersionsEquals(asList("6.4.2", "6.5.0"), getVersionCollection("7.0.0-alpha1").getUnreleasedIndexCompatible()); - - assertVersionsEquals(asList("5.6.13", "6.4.2"), getVersionCollection("6.5.0").getUnreleasedIndexCompatible()); - - assertVersionsEquals(asList("5.6.13"), getVersionCollection("6.4.2").getUnreleasedIndexCompatible()); - - assertVersionsEquals(asList("5.6.13", "6.4.2", "6.5.0"), getVersionCollection("6.6.0").getUnreleasedIndexCompatible()); - - assertVersionsEquals(asList("7.1.1", "7.2.0", "7.3.0"), getVersionCollection("8.0.0").getUnreleasedIndexCompatible()); - } - - public void testGetUnreleased() { - assertVersionsEquals(asList("6.4.2", "6.5.0", "7.0.0-alpha1"), getVersionCollection("7.0.0-alpha1").getUnreleased()); - assertVersionsEquals(asList("5.6.13", "6.4.2", "6.5.0"), getVersionCollection("6.5.0").getUnreleased()); - assertVersionsEquals(asList("5.6.13", "6.4.2"), getVersionCollection("6.4.2").getUnreleased()); - assertVersionsEquals(asList("5.6.13", "6.4.2", "6.5.0", "6.6.0"), getVersionCollection("6.6.0").getUnreleased()); - assertVersionsEquals(asList("7.1.1", "7.2.0", "7.3.0", "8.0.0"), getVersionCollection("8.0.0").getUnreleased()); - assertVersionsEquals(asList("6.6.1", "6.7.0", "7.0.0", "7.1.0"), getVersionCollection("7.1.0").getUnreleased()); - } - - public void testGetBranch() { - assertUnreleasedBranchNames(asList("6.4", "6.x"), getVersionCollection("7.0.0-alpha1")); - assertUnreleasedBranchNames(asList("5.6", "6.4"), getVersionCollection("6.5.0")); - assertUnreleasedBranchNames(singletonList("5.6"), getVersionCollection("6.4.2")); - assertUnreleasedBranchNames(asList("5.6", "6.4", "6.5"), getVersionCollection("6.6.0")); - assertUnreleasedBranchNames(asList("7.1", "7.2", "7.x"), getVersionCollection("8.0.0")); - assertUnreleasedBranchNames(asList("6.6", "6.7", "7.0"), getVersionCollection("7.1.0")); - } - - public void testGetGradleProjectPath() { - assertUnreleasedGradleProjectPaths( - asList(":distribution:bwc:bugfix", ":distribution:bwc:minor"), - getVersionCollection("7.0.0-alpha1") - ); - assertUnreleasedGradleProjectPaths( - asList(":distribution:bwc:maintenance", ":distribution:bwc:bugfix"), - getVersionCollection("6.5.0") - ); - assertUnreleasedGradleProjectPaths(singletonList(":distribution:bwc:maintenance"), getVersionCollection("6.4.2")); - assertUnreleasedGradleProjectPaths( - asList(":distribution:bwc:maintenance", ":distribution:bwc:bugfix", ":distribution:bwc:minor"), - getVersionCollection("6.6.0") - ); - assertUnreleasedGradleProjectPaths( - asList(":distribution:bwc:bugfix", ":distribution:bwc:staged", ":distribution:bwc:minor"), - getVersionCollection("8.0.0") - ); - assertUnreleasedGradleProjectPaths( - asList(":distribution:bwc:maintenance", ":distribution:bwc:staged", ":distribution:bwc:minor"), - getVersionCollection("7.1.0") - ); - } - - public void testCompareToAuthoritative() { - List listOfVersions = asList("7.0.0", "7.0.1", "7.1.0", "7.1.1", "7.2.0", "7.3.0", "8.0.0"); - List authoritativeReleasedVersions = Stream.of("7.0.0", "7.0.1", "7.1.0") - .map(Version::fromString) - .collect(Collectors.toList()); - - BwcVersions vc = new BwcVersions( - listOfVersions.stream().map(this::formatVersionToLine).collect(Collectors.toList()), - Version.fromString("8.0.0") - ); - vc.compareToAuthoritative(authoritativeReleasedVersions); - } - - public void testCompareToAuthoritativeUnreleasedActuallyReleased() { - List listOfVersions = asList("7.0.0", "7.0.1", "7.1.0", "7.1.1", "7.2.0", "7.3.0", "8.0.0"); - List authoritativeReleasedVersions = Stream.of("7.0.0", "7.0.1", "7.1.0", "7.1.1", "8.0.0") - .map(Version::fromString) - .collect(Collectors.toList()); - - BwcVersions vc = new BwcVersions( - listOfVersions.stream().map(this::formatVersionToLine).collect(Collectors.toList()), - Version.fromString("8.0.0") - ); - expectedEx.expect(IllegalStateException.class); - expectedEx.expectMessage("but they are released"); - vc.compareToAuthoritative(authoritativeReleasedVersions); - } - - public void testCompareToAuthoritativeNotReallyRelesed() { - List listOfVersions = asList("7.0.0", "7.0.1", "7.1.0", "7.1.1", "7.2.0", "7.3.0", "8.0.0"); - List authoritativeReleasedVersions = Stream.of("7.0.0", "7.0.1").map(Version::fromString).collect(Collectors.toList()); - BwcVersions vc = new BwcVersions( - listOfVersions.stream().map(this::formatVersionToLine).collect(Collectors.toList()), - Version.fromString("8.0.0") - ); - expectedEx.expect(IllegalStateException.class); - expectedEx.expectMessage("not really released"); - vc.compareToAuthoritative(authoritativeReleasedVersions); - } - - private void assertUnreleasedGradleProjectPaths(List expectedNAmes, BwcVersions bwcVersions) { - List actualNames = new ArrayList<>(); - bwcVersions.forPreviousUnreleased(unreleasedVersion -> actualNames.add(unreleasedVersion.gradleProjectPath)); - assertEquals(expectedNAmes, actualNames); - } - - private void assertUnreleasedBranchNames(List expectedBranches, BwcVersions bwcVersions) { - List actualBranches = new ArrayList<>(); - bwcVersions.forPreviousUnreleased(unreleasedVersionInfo -> actualBranches.add(unreleasedVersionInfo.branch)); - assertEquals(expectedBranches, actualBranches); - } - - private String formatVersionToLine(final String version) { - return " public static final Version V_" + version.replaceAll("\\.", "_") + " "; - } - - private void assertVersionsEquals(List expected, List actual) { - assertEquals(expected.stream().map(Version::fromString).collect(Collectors.toList()), actual); - } - - private BwcVersions getVersionCollection(String currentVersion) { - return new BwcVersions( - sampleVersions.get(currentVersion).stream().map(this::formatVersionToLine).collect(Collectors.toList()), - Version.fromString(currentVersion) - ); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/ConcatFilesTaskTests.java b/buildSrc/src/test/java/org/opensearch/gradle/ConcatFilesTaskTests.java deleted file mode 100644 index 3b9c1c81e0345..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/ConcatFilesTaskTests.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Arrays; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.Project; -import org.gradle.testfixtures.ProjectBuilder; - -public class ConcatFilesTaskTests extends GradleUnitTestCase { - - public void testHeaderAdded() throws IOException { - - Project project = createProject(); - ConcatFilesTask concatFilesTask = createTask(project); - - concatFilesTask.setHeaderLine("Header"); - - File file = new File(project.getProjectDir(), "src/main/java/Code.java"); - file.getParentFile().mkdirs(); - file.createNewFile(); - concatFilesTask.setTarget(file); - concatFilesTask.setFiles(project.fileTree("tmp/")); - - concatFilesTask.concatFiles(); - - assertEquals(Arrays.asList("Header"), Files.readAllLines(concatFilesTask.getTarget().toPath(), StandardCharsets.UTF_8)); - - file.delete(); - } - - public void testConcatenationWithUnique() throws IOException { - - Project project = createProject(); - ConcatFilesTask concatFilesTask = createTask(project); - - File file = new File(project.getProjectDir(), "src/main/java/Code.java"); - file.getParentFile().mkdirs(); - file.createNewFile(); - concatFilesTask.setTarget(file); - - File file1 = new File(project.getProjectDir(), "src/main/input/java/file1.java"); - File file2 = new File(project.getProjectDir(), "src/main/input/text/file2.txt"); - file1.getParentFile().mkdirs(); - file2.getParentFile().mkdirs(); - file1.createNewFile(); - file2.createNewFile(); - Files.write(file1.toPath(), ("Hello" + System.lineSeparator() + "Hello").getBytes(StandardCharsets.UTF_8)); - Files.write(file2.toPath(), ("Hello" + System.lineSeparator() + "नमस्ते").getBytes(StandardCharsets.UTF_8)); - - concatFilesTask.setFiles(project.fileTree(file1.getParentFile().getParentFile())); - - concatFilesTask.concatFiles(); - - assertEquals(Arrays.asList("Hello", "नमस्ते"), Files.readAllLines(concatFilesTask.getTarget().toPath(), StandardCharsets.UTF_8)); - - } - - private Project createProject() { - Project project = ProjectBuilder.builder().build(); - return project; - } - - private ConcatFilesTask createTask(Project project) { - return project.getTasks().create("concatFilesTask", ConcatFilesTask.class); - } - -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/DistributionDownloadPluginTests.java b/buildSrc/src/test/java/org/opensearch/gradle/DistributionDownloadPluginTests.java deleted file mode 100644 index 54660c4c69e68..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/DistributionDownloadPluginTests.java +++ /dev/null @@ -1,303 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.OpenSearchDistribution.Platform; -import org.opensearch.gradle.OpenSearchDistribution.Type; -import org.opensearch.gradle.info.BuildParams; -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Project; -import org.gradle.testfixtures.ProjectBuilder; - -import java.io.File; -import java.util.Arrays; -import java.util.TreeSet; - -import static org.hamcrest.core.StringContains.containsString; - -public class DistributionDownloadPluginTests extends GradleUnitTestCase { - private static Project rootProject; - private static Project archivesProject; - private static Project packagesProject; - private static Project bwcProject; - - private static final Version BWC_MAJOR_VERSION = Version.fromString("4.0.0"); - private static final Version BWC_MINOR_VERSION = Version.fromString("3.1.0"); - private static final Version BWC_STAGED_VERSION = Version.fromString("3.0.0"); - private static final Version BWC_BUGFIX_VERSION = Version.fromString("3.0.1"); - private static final Version BWC_MAINTENANCE_VERSION = Version.fromString("2.90.1"); - private static final BwcVersions BWC_MINOR = new BwcVersions( - new TreeSet<>(Arrays.asList(BWC_BUGFIX_VERSION, BWC_MINOR_VERSION, BWC_MAJOR_VERSION)), - BWC_MAJOR_VERSION - ); - private static final BwcVersions BWC_STAGED = new BwcVersions( - new TreeSet<>(Arrays.asList(BWC_STAGED_VERSION, BWC_MINOR_VERSION, BWC_MAJOR_VERSION)), - BWC_MAJOR_VERSION - ); - private static final BwcVersions BWC_BUGFIX = new BwcVersions( - new TreeSet<>(Arrays.asList(BWC_BUGFIX_VERSION, BWC_MINOR_VERSION, BWC_MAJOR_VERSION)), - BWC_MAJOR_VERSION - ); - private static final BwcVersions BWC_MAINTENANCE = new BwcVersions( - new TreeSet<>(Arrays.asList(BWC_MAINTENANCE_VERSION, BWC_STAGED_VERSION, BWC_MINOR_VERSION)), - BWC_MINOR_VERSION - ); - - public void testVersionDefault() { - OpenSearchDistribution distro = checkDistro(createProject(null, false), "testdistro", null, Type.ARCHIVE, Platform.LINUX, true); - assertEquals(distro.getVersion(), VersionProperties.getOpenSearch()); - } - - public void testBadVersionFormat() { - assertDistroError( - createProject(null, false), - "testdistro", - "badversion", - Type.ARCHIVE, - Platform.LINUX, - true, - "Invalid version format: 'badversion'" - ); - } - - public void testTypeDefault() { - OpenSearchDistribution distro = checkDistro(createProject(null, false), "testdistro", "5.0.0", null, Platform.LINUX, true); - assertEquals(distro.getType(), Type.ARCHIVE); - } - - public void testPlatformDefault() { - OpenSearchDistribution distro = checkDistro(createProject(null, false), "testdistro", "5.0.0", Type.ARCHIVE, null, true); - assertEquals(distro.getPlatform(), OpenSearchDistribution.CURRENT_PLATFORM); - } - - public void testPlatformForIntegTest() { - assertDistroError( - createProject(null, false), - "testdistro", - "5.0.0", - Type.INTEG_TEST_ZIP, - Platform.LINUX, - null, - "platform cannot be set on opensearch distribution [testdistro]" - ); - } - - public void testBundledJdkDefault() { - OpenSearchDistribution distro = checkDistro(createProject(null, false), "testdistro", "5.0.0", Type.ARCHIVE, Platform.LINUX, true); - assertTrue(distro.getBundledJdk()); - } - - public void testBundledJdkForIntegTest() { - assertDistroError( - createProject(null, false), - "testdistro", - "5.0.0", - Type.INTEG_TEST_ZIP, - null, - true, - "bundledJdk cannot be set on opensearch distribution [testdistro]" - ); - } - - public void testLocalCurrentVersionIntegTestZip() { - Project project = createProject(BWC_MINOR, true); - Project archiveProject = ProjectBuilder.builder().withParent(archivesProject).withName("integ-test-zip").build(); - archiveProject.getConfigurations().create("default"); - archiveProject.getArtifacts().add("default", new File("doesnotmatter")); - createDistro(project, "distro", VersionProperties.getOpenSearch(), Type.INTEG_TEST_ZIP, null, null); - checkPlugin(project); - } - - public void testLocalCurrentVersionArchives() { - for (Platform platform : Platform.values()) { - for (boolean bundledJdk : new boolean[] { true, false }) { - for (Architecture architecture : Architecture.values()) { - // create a new project in each iteration, so that we know we are resolving the only additional project being created - Project project = createProject(BWC_MINOR, true); - String projectName = projectName(platform.toString(), bundledJdk); - projectName += (platform == Platform.WINDOWS ? "-zip" : "-tar"); - Project archiveProject = ProjectBuilder.builder().withParent(archivesProject).withName(projectName).build(); - archiveProject.getConfigurations().create("default"); - archiveProject.getArtifacts().add("default", new File("doesnotmatter")); - final OpenSearchDistribution distro = createDistro( - project, - "distro", - VersionProperties.getOpenSearch(), - Type.ARCHIVE, - platform, - bundledJdk - ); - distro.setArchitecture(architecture); - checkPlugin(project); - } - } - } - } - - public void testLocalCurrentVersionPackages() { - for (Type packageType : new Type[] { Type.RPM, Type.DEB }) { - for (boolean bundledJdk : new boolean[] { true, false }) { - Project project = createProject(BWC_MINOR, true); - String projectName = projectName(packageType.toString(), bundledJdk); - Project packageProject = ProjectBuilder.builder().withParent(packagesProject).withName(projectName).build(); - packageProject.getConfigurations().create("default"); - packageProject.getArtifacts().add("default", new File("doesnotmatter")); - createDistro(project, "distro", VersionProperties.getOpenSearch(), packageType, null, bundledJdk); - checkPlugin(project); - } - } - } - - public void testLocalBwcArchives() { - for (Platform platform : Platform.values()) { - // note: no non bundled jdk for bwc - String configName = projectName(platform.toString(), true); - configName += (platform == Platform.WINDOWS ? "-zip" : "-tar"); - - checkBwc("minor", configName, BWC_MINOR_VERSION, Type.ARCHIVE, platform, BWC_MINOR, true); - checkBwc("staged", configName, BWC_STAGED_VERSION, Type.ARCHIVE, platform, BWC_STAGED, true); - checkBwc("bugfix", configName, BWC_BUGFIX_VERSION, Type.ARCHIVE, platform, BWC_BUGFIX, true); - checkBwc("maintenance", configName, BWC_MAINTENANCE_VERSION, Type.ARCHIVE, platform, BWC_MAINTENANCE, true); - } - } - - public void testLocalBwcPackages() { - for (Type packageType : new Type[] { Type.RPM, Type.DEB }) { - // note: no non bundled jdk for bwc - String configName = projectName(packageType.toString(), true); - - checkBwc("minor", configName, BWC_MINOR_VERSION, packageType, null, BWC_MINOR, true); - checkBwc("staged", configName, BWC_STAGED_VERSION, packageType, null, BWC_STAGED, true); - checkBwc("bugfix", configName, BWC_BUGFIX_VERSION, packageType, null, BWC_BUGFIX, true); - checkBwc("maintenance", configName, BWC_MAINTENANCE_VERSION, packageType, null, BWC_MAINTENANCE, true); - } - } - - private void assertDistroError( - Project project, - String name, - String version, - Type type, - Platform platform, - Boolean bundledJdk, - String message - ) { - IllegalArgumentException e = expectThrows( - IllegalArgumentException.class, - () -> checkDistro(project, name, version, type, platform, bundledJdk) - ); - assertThat(e.getMessage(), containsString(message)); - } - - private OpenSearchDistribution createDistro( - Project project, - String name, - String version, - Type type, - Platform platform, - Boolean bundledJdk - ) { - NamedDomainObjectContainer distros = DistributionDownloadPlugin.getContainer(project); - return distros.create(name, distro -> { - if (version != null) { - distro.setVersion(version); - } - if (type != null) { - distro.setType(type); - } - if (platform != null) { - distro.setPlatform(platform); - } - if (bundledJdk != null) { - distro.setBundledJdk(bundledJdk); - } - }); - } - - // create a distro and finalize its configuration - private OpenSearchDistribution checkDistro( - Project project, - String name, - String version, - Type type, - Platform platform, - Boolean bundledJdk - ) { - OpenSearchDistribution distribution = createDistro(project, name, version, type, platform, bundledJdk); - distribution.finalizeValues(); - return distribution; - } - - // check the download plugin can be fully configured - private void checkPlugin(Project project) { - DistributionDownloadPlugin plugin = project.getPlugins().getPlugin(DistributionDownloadPlugin.class); - plugin.setupDistributions(project); - } - - private void checkBwc( - String projectName, - String config, - Version version, - Type type, - Platform platform, - BwcVersions bwcVersions, - boolean isInternal - ) { - Project project = createProject(bwcVersions, isInternal); - Project archiveProject = ProjectBuilder.builder().withParent(bwcProject).withName(projectName).build(); - archiveProject.getConfigurations().create(config); - archiveProject.getArtifacts().add(config, new File("doesnotmatter")); - createDistro(project, "distro", version.toString(), type, platform, true); - checkPlugin(project); - } - - private Project createProject(BwcVersions bwcVersions, boolean isInternal) { - rootProject = ProjectBuilder.builder().build(); - BuildParams.init(params -> params.setIsInternal(isInternal)); - Project distributionProject = ProjectBuilder.builder().withParent(rootProject).withName("distribution").build(); - archivesProject = ProjectBuilder.builder().withParent(distributionProject).withName("archives").build(); - packagesProject = ProjectBuilder.builder().withParent(distributionProject).withName("packages").build(); - bwcProject = ProjectBuilder.builder().withParent(distributionProject).withName("bwc").build(); - Project project = ProjectBuilder.builder().withParent(rootProject).build(); - if (bwcVersions != null) { - project.getExtensions().getExtraProperties().set("bwcVersions", bwcVersions); - } - project.getPlugins().apply("opensearch.distribution-download"); - return project; - } - - private static String projectName(String base, boolean bundledJdk) { - return bundledJdk ? base : ("no-jdk-" + base); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/EmptyDirTaskTests.java b/buildSrc/src/test/java/org/opensearch/gradle/EmptyDirTaskTests.java deleted file mode 100644 index b4eae42c625ac..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/EmptyDirTaskTests.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import java.io.File; -import java.io.IOException; - -import com.carrotsearch.randomizedtesting.RandomizedTest; -import org.apache.tools.ant.taskdefs.condition.Os; -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.Project; -import org.gradle.testfixtures.ProjectBuilder; - -public class EmptyDirTaskTests extends GradleUnitTestCase { - - public void testCreateEmptyDir() throws Exception { - Project project = ProjectBuilder.builder().build(); - EmptyDirTask emptyDirTask = project.getTasks().create("emptyDirTask", EmptyDirTask.class); - assertEquals(0755, emptyDirTask.getDirMode()); - - // generate a new temporary folder and make sure it does not exists - File newEmptyFolder = getNewNonExistingTempFolderFile(project); - - emptyDirTask.setDir(newEmptyFolder); - emptyDirTask.create(); - - assertTrue(newEmptyFolder.exists()); - assertTrue(newEmptyFolder.isDirectory()); - assertTrue(newEmptyFolder.canExecute()); - assertTrue(newEmptyFolder.canRead()); - assertTrue(newEmptyFolder.canWrite()); - - // cleanup - newEmptyFolder.delete(); - } - - public void testCreateEmptyDirNoPermissions() throws Exception { - RandomizedTest.assumeFalse("Functionality is Unix specific", Os.isFamily(Os.FAMILY_WINDOWS)); - - Project project = ProjectBuilder.builder().build(); - EmptyDirTask emptyDirTask = project.getTasks().create("emptyDirTask", EmptyDirTask.class); - emptyDirTask.setDirMode(0000); - - // generate a new temporary folder and make sure it does not exists - File newEmptyFolder = getNewNonExistingTempFolderFile(project); - - emptyDirTask.setDir(newEmptyFolder); - emptyDirTask.create(); - - assertTrue(newEmptyFolder.exists()); - assertTrue(newEmptyFolder.isDirectory()); - assertFalse(newEmptyFolder.canExecute()); - assertFalse(newEmptyFolder.canRead()); - assertFalse(newEmptyFolder.canWrite()); - - // cleanup - newEmptyFolder.delete(); - } - - private File getNewNonExistingTempFolderFile(Project project) throws IOException { - File newEmptyFolder = new File(project.getBuildDir(), "empty-dir"); - assertFalse(newEmptyFolder.exists()); - return newEmptyFolder; - } - -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/JdkDownloadPluginTests.java b/buildSrc/src/test/java/org/opensearch/gradle/JdkDownloadPluginTests.java deleted file mode 100644 index 00af8b1fdff45..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/JdkDownloadPluginTests.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.NamedDomainObjectContainer; -import org.gradle.api.Project; -import org.gradle.testfixtures.ProjectBuilder; -import org.junit.BeforeClass; - -import static org.hamcrest.CoreMatchers.equalTo; - -public class JdkDownloadPluginTests extends GradleUnitTestCase { - private static Project rootProject; - - @BeforeClass - public static void setupRoot() { - rootProject = ProjectBuilder.builder().build(); - } - - public void testMissingVendor() { - assertJdkError(createProject(), "testjdk", null, "11.0.2+33", "linux", "x64", "vendor not specified for jdk [testjdk]"); - } - - public void testUnknownVendor() { - assertJdkError( - createProject(), - "testjdk", - "unknown", - "11.0.2+33", - "linux", - "x64", - "unknown vendor [unknown] for jdk [testjdk], must be one of [adoptium, adoptopenjdk, openjdk]" - ); - } - - public void testMissingVersion() { - assertJdkError(createProject(), "testjdk", "openjdk", null, "linux", "x64", "version not specified for jdk [testjdk]"); - } - - public void testBadVersionFormat() { - assertJdkError( - createProject(), - "testjdk", - "openjdk", - "badversion", - "linux", - "x64", - "malformed version [badversion] for jdk [testjdk]" - ); - } - - public void testMissingPlatform() { - assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", null, "x64", "platform not specified for jdk [testjdk]"); - } - - public void testUnknownPlatform() { - assertJdkError( - createProject(), - "testjdk", - "openjdk", - "11.0.2+33", - "unknown", - "x64", - "unknown platform [unknown] for jdk [testjdk], must be one of [darwin, freebsd, linux, mac, windows]" - ); - } - - public void testMissingArchitecture() { - assertJdkError(createProject(), "testjdk", "openjdk", "11.0.2+33", "linux", null, "architecture not specified for jdk [testjdk]"); - } - - public void testUnknownArchitecture() { - assertJdkError( - createProject(), - "testjdk", - "openjdk", - "11.0.2+33", - "linux", - "unknown", - "unknown architecture [unknown] for jdk [testjdk], must be one of [aarch64, x64, ppc64le]" - ); - } - - private void assertJdkError( - final Project project, - final String name, - final String vendor, - final String version, - final String platform, - final String architecture, - final String message - ) { - IllegalArgumentException e = expectThrows( - IllegalArgumentException.class, - () -> createJdk(project, name, vendor, version, platform, architecture) - ); - assertThat(e.getMessage(), equalTo(message)); - } - - private void createJdk(Project project, String name, String vendor, String version, String platform, String architecture) { - @SuppressWarnings("unchecked") - NamedDomainObjectContainer jdks = (NamedDomainObjectContainer) project.getExtensions().getByName("jdks"); - jdks.create(name, jdk -> { - if (vendor != null) { - jdk.setVendor(vendor); - } - if (version != null) { - jdk.setVersion(version); - } - if (platform != null) { - jdk.setPlatform(platform); - } - if (architecture != null) { - jdk.setArchitecture(architecture); - } - }).finalizeValues(); - } - - private Project createProject() { - Project project = ProjectBuilder.builder().withParent(rootProject).build(); - project.getPlugins().apply("opensearch.jdk-download"); - return project; - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/VersionTests.java b/buildSrc/src/test/java/org/opensearch/gradle/VersionTests.java deleted file mode 100644 index 40f9ffe7dfa8d..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/VersionTests.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.junit.Rule; -import org.junit.rules.ExpectedException; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -public class VersionTests extends GradleUnitTestCase { - - @Rule - public ExpectedException expectedEx = ExpectedException.none(); - - public void testVersionParsing() { - assertVersionEquals("7.0.1", 7, 0, 1); - assertVersionEquals("7.0.1-alpha2", 7, 0, 1); - assertVersionEquals("5.1.2-rc3", 5, 1, 2); - assertVersionEquals("6.1.2-SNAPSHOT", 6, 1, 2); - assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2); - assertVersionEquals("17.03.11", 17, 3, 11); - } - - public void testRelaxedVersionParsing() { - assertVersionEquals("6.1.2", 6, 1, 2, Version.Mode.RELAXED); - assertVersionEquals("6.1.2-SNAPSHOT", 6, 1, 2, Version.Mode.RELAXED); - assertVersionEquals("6.1.2-beta1-SNAPSHOT", 6, 1, 2, Version.Mode.RELAXED); - assertVersionEquals("6.1.2-foo", 6, 1, 2, Version.Mode.RELAXED); - assertVersionEquals("6.1.2-foo-bar", 6, 1, 2, Version.Mode.RELAXED); - assertVersionEquals("16.01.22", 16, 1, 22, Version.Mode.RELAXED); - } - - public void testCompareWithStringVersions() { - // 1.10.2 is now rebased to OpenSearch version; so this needs to report - assertTrue("OpenSearch 1.10.20 is not interpreted as after Legacy 2.0.0", Version.fromString("1.10.20").after("2.0.0")); - assertTrue( - "7.0.0-alpha1 should be equal to 7.0.0-alpha1", - Version.fromString("7.0.0-alpha1").equals(Version.fromString("7.0.0-alpha1")) - ); - assertTrue( - "7.0.0-SNAPSHOT should be equal to 7.0.0-SNAPSHOT", - Version.fromString("7.0.0-SNAPSHOT").equals(Version.fromString("7.0.0-SNAPSHOT")) - ); - } - - public void testCollections() { - assertTrue( - Arrays.asList( - Version.fromString("5.2.0"), - Version.fromString("5.2.1-SNAPSHOT"), - Version.fromString("6.0.0"), - Version.fromString("6.0.1"), - Version.fromString("6.1.0") - ).containsAll(Arrays.asList(Version.fromString("6.0.1"), Version.fromString("5.2.1-SNAPSHOT"))) - ); - Set versions = new HashSet<>(); - versions.addAll( - Arrays.asList( - Version.fromString("5.2.0"), - Version.fromString("5.2.1-SNAPSHOT"), - Version.fromString("6.0.0"), - Version.fromString("6.0.1"), - Version.fromString("6.1.0") - ) - ); - Set subset = new HashSet<>(); - subset.addAll(Arrays.asList(Version.fromString("6.0.1"), Version.fromString("5.2.1-SNAPSHOT"))); - assertTrue(versions.containsAll(subset)); - } - - public void testToString() { - assertEquals("7.0.1", new Version(7, 0, 1).toString()); - } - - public void testCompareVersions() { - assertEquals(0, new Version(7, 0, 0).compareTo(new Version(7, 0, 0))); - assertOrder(Version.fromString("19.0.1"), Version.fromString("20.0.3")); - } - - public void testExceptionEmpty() { - expectedEx.expect(IllegalArgumentException.class); - expectedEx.expectMessage("Invalid version format"); - Version.fromString(""); - } - - public void testExceptionSyntax() { - expectedEx.expect(IllegalArgumentException.class); - expectedEx.expectMessage("Invalid version format"); - Version.fromString("foo.bar.baz"); - } - - private void assertOrder(Version smaller, Version bigger) { - assertEquals(smaller + " should be smaller than " + bigger, -1, smaller.compareTo(bigger)); - } - - private void assertVersionEquals(String stringVersion, int major, int minor, int revision) { - assertVersionEquals(stringVersion, major, minor, revision, Version.Mode.STRICT); - } - - private void assertVersionEquals(String stringVersion, int major, int minor, int revision, Version.Mode mode) { - Version version = Version.fromString(stringVersion, mode); - assertEquals(major, version.getMajor()); - assertEquals(minor, version.getMinor()); - assertEquals(revision, version.getRevision()); - } - -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/doc/RestTestFromSnippetsTaskTests.java b/buildSrc/src/test/java/org/opensearch/gradle/doc/RestTestFromSnippetsTaskTests.java deleted file mode 100644 index 79b79f91c9363..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/doc/RestTestFromSnippetsTaskTests.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.doc; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.InvalidUserDataException; -import org.junit.Rule; -import org.junit.rules.ExpectedException; - -import static org.opensearch.gradle.doc.RestTestsFromSnippetsTask.replaceBlockQuote; - -public class RestTestFromSnippetsTaskTests extends GradleUnitTestCase { - @Rule - public ExpectedException expectedEx = ExpectedException.none(); - - public void testInvalidBlockQuote() { - String input = "\"foo\": \"\"\"bar\""; - expectedEx.expect(InvalidUserDataException.class); - expectedEx.expectMessage("Invalid block quote starting at 7 in:\n" + input); - replaceBlockQuote(input); - } - - public void testSimpleBlockQuote() { - assertEquals("\"foo\": \"bort baz\"", replaceBlockQuote("\"foo\": \"\"\"bort baz\"\"\"")); - } - - public void testMultipleBlockQuotes() { - assertEquals( - "\"foo\": \"bort baz\", \"bar\": \"other\"", - replaceBlockQuote("\"foo\": \"\"\"bort baz\"\"\", \"bar\": \"\"\"other\"\"\"") - ); - } - - public void testEscapingInBlockQuote() { - assertEquals("\"foo\": \"bort\\\" baz\"", replaceBlockQuote("\"foo\": \"\"\"bort\" baz\"\"\"")); - assertEquals("\"foo\": \"bort\\n baz\"", replaceBlockQuote("\"foo\": \"\"\"bort\n baz\"\"\"")); - } - - public void testIsDocWriteRequest() { - assertTrue((boolean) RestTestsFromSnippetsTask.shouldAddShardFailureCheck("doc-index/_search")); - assertFalse((boolean) RestTestsFromSnippetsTask.shouldAddShardFailureCheck("_cat")); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/docker/DockerSupportServiceTests.java b/buildSrc/src/test/java/org/opensearch/gradle/docker/DockerSupportServiceTests.java deleted file mode 100644 index e2acf3c087ecc..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/docker/DockerSupportServiceTests.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.docker; - -import org.opensearch.gradle.test.GradleIntegrationTestCase; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static org.opensearch.gradle.docker.DockerSupportService.deriveId; -import static org.opensearch.gradle.docker.DockerSupportService.parseOsRelease; -import static org.hamcrest.CoreMatchers.equalTo; - -public class DockerSupportServiceTests extends GradleIntegrationTestCase { - - public void testParseOsReleaseOnOracle() { - final List lines = Arrays.asList( - "NAME=\"Oracle Linux Server\"", - "VERSION=\"6.10\"", - "ID=\"ol\"", - "VERSION_ID=\"6.10\"", - "PRETTY_NAME=\"Oracle Linux Server 6.10\"", - "ANSI_COLOR=\"0;31\"", - "CPE_NAME=\"cpe:/o:oracle:linux:6:10:server\"", - "HOME_URL" + "=\"https://linux.oracle.com/\"", - "BUG_REPORT_URL=\"https://bugzilla.oracle.com/\"", - "", - "ORACLE_BUGZILLA_PRODUCT" + "=\"Oracle Linux 6\"", - "ORACLE_BUGZILLA_PRODUCT_VERSION=6.10", - "ORACLE_SUPPORT_PRODUCT=\"Oracle Linux\"", - "ORACLE_SUPPORT_PRODUCT_VERSION=6.10" - ); - - final Map results = parseOsRelease(lines); - - final Map expected = new HashMap<>(); - expected.put("ANSI_COLOR", "0;31"); - expected.put("BUG_REPORT_URL", "https://bugzilla.oracle.com/"); - expected.put("CPE_NAME", "cpe:/o:oracle:linux:6:10:server"); - expected.put("HOME_URL" + "", "https://linux.oracle.com/"); - expected.put("ID", "ol"); - expected.put("NAME", "oracle linux server"); - expected.put("ORACLE_BUGZILLA_PRODUCT" + "", "oracle linux 6"); - expected.put("ORACLE_BUGZILLA_PRODUCT_VERSION", "6.10"); - expected.put("ORACLE_SUPPORT_PRODUCT", "oracle linux"); - expected.put("ORACLE_SUPPORT_PRODUCT_VERSION", "6.10"); - expected.put("PRETTY_NAME", "oracle linux server 6.10"); - expected.put("VERSION", "6.10"); - expected.put("VERSION_ID", "6.10"); - - assertThat(expected, equalTo(results)); - } - - /** - * Trailing whitespace should be removed - */ - public void testRemoveTrailingWhitespace() { - final List lines = Arrays.asList("NAME=\"Oracle Linux Server\" "); - - final Map results = parseOsRelease(lines); - - final Map expected = new HashMap() { - { - put("NAME", "oracle linux server"); - } - }; - - assertThat(expected, equalTo(results)); - } - - /** - * Comments should be removed - */ - public void testRemoveComments() { - final List lines = Arrays.asList("# A comment", "NAME=\"Oracle Linux Server\""); - - final Map results = parseOsRelease(lines); - - final Map expected = new HashMap() { - { - put("NAME", "oracle linux server"); - } - }; - - assertThat(expected, equalTo(results)); - } - - public void testDeriveIdOnOracle() { - final Map osRelease = new HashMap<>(); - osRelease.put("ID", "ol"); - osRelease.put("VERSION_ID", "6.10"); - - assertThat("ol-6.10", equalTo(deriveId(osRelease))); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/http/WaitForHttpResourceTests.java b/buildSrc/src/test/java/org/opensearch/gradle/http/WaitForHttpResourceTests.java deleted file mode 100644 index 347d7f31f6382..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/http/WaitForHttpResourceTests.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.http; - -import org.opensearch.gradle.test.GradleUnitTestCase; - -import java.io.File; -import java.net.URL; -import java.security.KeyStore; -import java.security.cert.Certificate; -import java.security.cert.X509Certificate; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.notNullValue; - -public class WaitForHttpResourceTests extends GradleUnitTestCase { - - public void testBuildTrustStoreFromFile() throws Exception { - final WaitForHttpResource http = new WaitForHttpResource(new URL("https://localhost/")); - final URL ca = getClass().getResource("/ca.p12"); - assertThat(ca, notNullValue()); - http.setTrustStoreFile(new File(ca.getPath())); - http.setTrustStorePassword("password"); - final KeyStore store = http.buildTrustStore(); - final Certificate certificate = store.getCertificate("ca"); - assertThat(certificate, notNullValue()); - assertThat(certificate, instanceOf(X509Certificate.class)); - assertThat(((X509Certificate) certificate).getSubjectDN().toString(), equalTo("CN=Elastic Certificate Tool Autogenerated CA")); - } - - public void testBuildTrustStoreFromCA() throws Exception { - final WaitForHttpResource http = new WaitForHttpResource(new URL("https://localhost/")); - final URL ca = getClass().getResource("/ca.pem"); - assertThat(ca, notNullValue()); - http.setCertificateAuthorities(new File(ca.getPath())); - final KeyStore store = http.buildTrustStore(); - final Certificate certificate = store.getCertificate("cert-0"); - assertThat(certificate, notNullValue()); - assertThat(certificate, instanceOf(X509Certificate.class)); - assertThat(((X509Certificate) certificate).getSubjectDN().toString(), equalTo("CN=Elastic Certificate Tool Autogenerated CA")); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginBuildPluginTests.java b/buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginBuildPluginTests.java deleted file mode 100644 index 9ed0e3e494992..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginBuildPluginTests.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.plugin; - -import org.opensearch.gradle.BwcVersions; -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.Project; -import org.gradle.api.Task; -import org.gradle.api.internal.project.ProjectInternal; -import org.gradle.testfixtures.ProjectBuilder; -import org.junit.Before; -import org.junit.Ignore; -import org.mockito.Mockito; - -import java.util.stream.Collectors; - -public class PluginBuildPluginTests extends GradleUnitTestCase { - - private Project project; - - @Before - public void setUp() throws Exception { - project = ProjectBuilder.builder().withName(getClass().getName()).build(); - } - - public void testApply() { - // FIXME: distribution download plugin doesn't support running externally - project.getExtensions().getExtraProperties().set("bwcVersions", Mockito.mock(BwcVersions.class)); - project.getPlugins().apply(PluginBuildPlugin.class); - - assertNotNull( - "plugin extension created with the right name", - project.getExtensions().findByName(PluginBuildPlugin.PLUGIN_EXTENSION_NAME) - ); - assertNotNull("plugin extensions has the right type", project.getExtensions().findByType(PluginPropertiesExtension.class)); - - assertNull("plugin should not create the integTest task", project.getTasks().findByName("integTest")); - } - - @Ignore("https://github.com/elastic/elasticsearch/issues/47123") - public void testApplyWithAfterEvaluate() { - project.getExtensions().getExtraProperties().set("bwcVersions", Mockito.mock(BwcVersions.class)); - project.getPlugins().apply(PluginBuildPlugin.class); - PluginPropertiesExtension extension = project.getExtensions().getByType(PluginPropertiesExtension.class); - extension.setNoticeFile(project.file("test.notice")); - extension.setLicenseFile(project.file("test.license")); - extension.setDescription("just a test"); - extension.setClassname(getClass().getName()); - - ((ProjectInternal) project).evaluate(); - - assertNotNull( - "Task to generate notice not created: " + project.getTasks().stream().map(Task::getPath).collect(Collectors.joining(", ")), - project.getTasks().findByName("generateNotice") - ); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginPropertiesExtensionTests.java b/buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginPropertiesExtensionTests.java deleted file mode 100644 index 35d181b0e2154..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/plugin/PluginPropertiesExtensionTests.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.plugin; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.Project; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.testfixtures.ProjectBuilder; - -public class PluginPropertiesExtensionTests extends GradleUnitTestCase { - - public void testCreatingPluginPropertiesExtensionWithNameAndVersion() { - String projectName = "Test"; - String projectVersion = "5.0"; - - PluginPropertiesExtension pluginPropertiesExtension = new PluginPropertiesExtension( - this.createProject(projectName, projectVersion) - ); - - assertEquals(projectName, pluginPropertiesExtension.getName()); - assertEquals(projectVersion, pluginPropertiesExtension.getVersion()); - } - - public void testCreatingPluginPropertiesExtensionWithNameWithoutVersion() { - String projectName = "Test"; - - PluginPropertiesExtension pluginPropertiesExtension = new PluginPropertiesExtension(this.createProject(projectName, null)); - - assertEquals(projectName, pluginPropertiesExtension.getName()); - assertEquals("unspecified", pluginPropertiesExtension.getVersion()); - } - - private Project createProject(String projectName, String version) { - Project project = ProjectBuilder.builder().withName(projectName).build(); - project.setVersion(version); - - project.getPlugins().apply(JavaPlugin.class); - - return project; - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/precommit/DependencyLicensesTaskTests.java b/buildSrc/src/test/java/org/opensearch/gradle/precommit/DependencyLicensesTaskTests.java deleted file mode 100644 index 59f7a807476a0..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/precommit/DependencyLicensesTaskTests.java +++ /dev/null @@ -1,328 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Dependency; -import org.gradle.api.file.FileCollection; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.testfixtures.ProjectBuilder; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.security.NoSuchAlgorithmException; -import java.util.HashMap; -import java.util.Map; - -import static org.hamcrest.CoreMatchers.containsString; - -public class DependencyLicensesTaskTests extends GradleUnitTestCase { - - private static final String PERMISSIVE_LICENSE_TEXT = "Eclipse Public License - v 2.0"; - private static final String STRICT_LICENSE_TEXT = "GNU LESSER GENERAL PUBLIC LICENSE Version 3"; - - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - private UpdateShasTask updateShas; - - private TaskProvider task; - - private Project project; - - private Dependency dependency; - - @Before - public void prepare() { - project = createProject(); - task = createDependencyLicensesTask(project); - updateShas = createUpdateShasTask(project, task); - dependency = project.getDependencies().localGroovy(); - } - - @Test - public void givenProjectWithLicensesDirButNoDependenciesThenShouldThrowException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("exists, but there are no dependencies")); - - getLicensesDir(project).mkdir(); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithoutLicensesDirButWithDependenciesThenShouldThrowException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("does not exist, but there are dependencies")); - - project.getDependencies().add("compile", dependency); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithoutLicensesDirNorDependenciesThenShouldReturnSilently() throws Exception { - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithDependencyButNoShaFileThenShouldReturnException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("Missing SHA for ")); - - File licensesDir = getLicensesDir(project); - createFileIn(licensesDir, "groovy-all-LICENSE.txt", PERMISSIVE_LICENSE_TEXT); - createFileIn(licensesDir, "groovy-all-NOTICE.txt", ""); - - project.getDependencies().add("compile", project.getDependencies().localGroovy()); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithDependencyButNoLicenseFileThenShouldReturnException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("Missing LICENSE for ")); - - project.getDependencies().add("compile", project.getDependencies().localGroovy()); - - getLicensesDir(project).mkdir(); - updateShas.updateShas(); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithDependencyButNoNoticeFileThenShouldReturnException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("Missing NOTICE for ")); - - project.getDependencies().add("compile", dependency); - - createFileIn(getLicensesDir(project), "groovy-all-LICENSE.txt", PERMISSIVE_LICENSE_TEXT); - - updateShas.updateShas(); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithStrictDependencyButNoSourcesFileThenShouldReturnException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("Missing SOURCES for ")); - - project.getDependencies().add("compile", dependency); - - createFileIn(getLicensesDir(project), "groovy-all-LICENSE.txt", STRICT_LICENSE_TEXT); - createFileIn(getLicensesDir(project), "groovy-all-NOTICE.txt", ""); - - updateShas.updateShas(); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithStrictDependencyAndEverythingInOrderThenShouldReturnSilently() throws Exception { - project.getDependencies().add("compile", dependency); - - createFileIn(getLicensesDir(project), "groovy-all-LICENSE.txt", STRICT_LICENSE_TEXT); - createFileIn(getLicensesDir(project), "groovy-all-NOTICE.txt", ""); - createFileIn(getLicensesDir(project), "groovy-all-SOURCES.txt", ""); - - updateShas.updateShas(); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithDependencyAndEverythingInOrderThenShouldReturnSilently() throws Exception { - project.getDependencies().add("compile", dependency); - - File licensesDir = getLicensesDir(project); - - createAllDefaultDependencyFiles(licensesDir, "groovy-all"); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithALicenseButWithoutTheDependencyThenShouldThrowException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("Unused license ")); - - project.getDependencies().add("compile", dependency); - - File licensesDir = getLicensesDir(project); - createAllDefaultDependencyFiles(licensesDir, "groovy-all"); - createFileIn(licensesDir, "non-declared-LICENSE.txt", ""); - - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithANoticeButWithoutTheDependencyThenShouldThrowException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("Unused notice ")); - - project.getDependencies().add("compile", dependency); - - File licensesDir = getLicensesDir(project); - createAllDefaultDependencyFiles(licensesDir, "groovy-all"); - createFileIn(licensesDir, "non-declared-NOTICE.txt", ""); - - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithAShaButWithoutTheDependencyThenShouldThrowException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("Unused sha files found: \n")); - - project.getDependencies().add("compile", dependency); - - File licensesDir = getLicensesDir(project); - createAllDefaultDependencyFiles(licensesDir, "groovy-all"); - createFileIn(licensesDir, "non-declared.sha1", ""); - - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithADependencyWithWrongShaThenShouldThrowException() throws Exception { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("SHA has changed! Expected ")); - - project.getDependencies().add("compile", dependency); - - File licensesDir = getLicensesDir(project); - createAllDefaultDependencyFiles(licensesDir, "groovy-all"); - - Path groovySha = Files.list(licensesDir.toPath()).filter(file -> file.toFile().getName().contains("sha")).findFirst().get(); - - Files.write(groovySha, new byte[] { 1 }, StandardOpenOption.CREATE); - - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithADependencyMappingThenShouldReturnSilently() throws Exception { - project.getDependencies().add("compile", dependency); - - File licensesDir = getLicensesDir(project); - createAllDefaultDependencyFiles(licensesDir, "groovy"); - - Map mappings = new HashMap<>(); - mappings.put("from", "groovy-all"); - mappings.put("to", "groovy"); - - task.get().mapping(mappings); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithAIgnoreShaConfigurationAndNoShaFileThenShouldReturnSilently() throws Exception { - project.getDependencies().add("compile", dependency); - - File licensesDir = getLicensesDir(project); - createFileIn(licensesDir, "groovy-all-LICENSE.txt", PERMISSIVE_LICENSE_TEXT); - createFileIn(licensesDir, "groovy-all-NOTICE.txt", ""); - - task.get().ignoreSha("groovy-all"); - task.get().checkDependencies(); - } - - @Test - public void givenProjectWithoutLicensesDirWhenAskingForShaFilesThenShouldThrowException() { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("isn't a valid directory")); - - task.get().getShaFiles(); - } - - private Project createProject() { - Project project = ProjectBuilder.builder().build(); - project.getPlugins().apply(JavaPlugin.class); - - return project; - } - - private void createAllDefaultDependencyFiles(File licensesDir, String dependencyName) throws IOException, NoSuchAlgorithmException { - createFileIn(licensesDir, dependencyName + "-LICENSE.txt", PERMISSIVE_LICENSE_TEXT); - createFileIn(licensesDir, dependencyName + "-NOTICE.txt", ""); - - updateShas.updateShas(); - } - - private File getLicensesDir(Project project) { - return getFile(project, "licenses"); - } - - private File getFile(Project project, String fileName) { - return project.getProjectDir().toPath().resolve(fileName).toFile(); - } - - private void createFileIn(File parent, String name, String content) throws IOException { - parent.mkdir(); - - Path file = parent.toPath().resolve(name); - file.toFile().createNewFile(); - - Files.write(file, content.getBytes(StandardCharsets.UTF_8)); - } - - private UpdateShasTask createUpdateShasTask(Project project, TaskProvider dependencyLicensesTask) { - UpdateShasTask task = project.getTasks().register("updateShas", UpdateShasTask.class).get(); - - task.setParentTask(dependencyLicensesTask); - return task; - } - - private TaskProvider createDependencyLicensesTask(Project project) { - TaskProvider task = project.getTasks() - .register("dependencyLicenses", DependencyLicensesTask.class, new Action() { - @Override - public void execute(DependencyLicensesTask dependencyLicensesTask) { - dependencyLicensesTask.setDependencies(getDependencies(project)); - } - }); - - return task; - } - - private FileCollection getDependencies(Project project) { - return project.getConfigurations().getByName("compile"); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/precommit/FilePermissionsTaskTests.java b/buildSrc/src/test/java/org/opensearch/gradle/precommit/FilePermissionsTaskTests.java deleted file mode 100644 index f47964dd17a7a..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/precommit/FilePermissionsTaskTests.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import java.io.File; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.util.List; - -import com.carrotsearch.randomizedtesting.RandomizedTest; -import org.apache.tools.ant.taskdefs.condition.Os; -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.testfixtures.ProjectBuilder; -import org.junit.Assert; - -public class FilePermissionsTaskTests extends GradleUnitTestCase { - - public void testCheckPermissionsWhenAnExecutableFileExists() throws Exception { - RandomizedTest.assumeFalse("Functionality is Unix specific", Os.isFamily(Os.FAMILY_WINDOWS)); - - Project project = createProject(); - - FilePermissionsTask filePermissionsTask = createTask(project); - - File file = new File(project.getProjectDir(), "src/main/java/Code.java"); - file.getParentFile().mkdirs(); - file.createNewFile(); - file.setExecutable(true); - - try { - filePermissionsTask.checkInvalidPermissions(); - Assert.fail("the check should have failed because of the executable file permission"); - } catch (GradleException e) { - assertTrue(e.getMessage().startsWith("Found invalid file permissions")); - } - file.delete(); - } - - public void testCheckPermissionsWhenNoFileExists() throws Exception { - RandomizedTest.assumeFalse("Functionality is Unix specific", Os.isFamily(Os.FAMILY_WINDOWS)); - - Project project = createProject(); - - FilePermissionsTask filePermissionsTask = createTask(project); - - filePermissionsTask.checkInvalidPermissions(); - - File outputMarker = new File(project.getBuildDir(), "markers/filePermissions"); - List result = Files.readAllLines(outputMarker.toPath(), Charset.forName("UTF-8")); - assertEquals("done", result.get(0)); - } - - public void testCheckPermissionsWhenNoExecutableFileExists() throws Exception { - RandomizedTest.assumeFalse("Functionality is Unix specific", Os.isFamily(Os.FAMILY_WINDOWS)); - - Project project = createProject(); - - FilePermissionsTask filePermissionsTask = createTask(project); - - File file = new File(project.getProjectDir(), "src/main/java/Code.java"); - file.getParentFile().mkdirs(); - file.createNewFile(); - - filePermissionsTask.checkInvalidPermissions(); - - File outputMarker = new File(project.getBuildDir(), "markers/filePermissions"); - List result = Files.readAllLines(outputMarker.toPath(), Charset.forName("UTF-8")); - assertEquals("done", result.get(0)); - - file.delete(); - } - - private Project createProject() { - Project project = ProjectBuilder.builder().build(); - project.getPlugins().apply(JavaPlugin.class); - return project; - } - - private FilePermissionsTask createTask(Project project) { - return project.getTasks().create("filePermissionsTask", FilePermissionsTask.class); - } - -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/precommit/ForbiddenPatternsTaskTests.java b/buildSrc/src/test/java/org/opensearch/gradle/precommit/ForbiddenPatternsTaskTests.java deleted file mode 100644 index ea4db8954bca4..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/precommit/ForbiddenPatternsTaskTests.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.testfixtures.ProjectBuilder; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - -public class ForbiddenPatternsTaskTests extends GradleUnitTestCase { - - public void testCheckInvalidPatternsWhenNoSourceFilesExist() throws Exception { - Project project = createProject(); - ForbiddenPatternsTask task = createTask(project); - - checkAndAssertTaskSuccessful(task); - } - - public void testCheckInvalidPatternsWhenSourceFilesExistNoViolation() throws Exception { - Project project = createProject(); - ForbiddenPatternsTask task = createTask(project); - - writeSourceFile(project, "src/main/java/Foo.java", "public void bar() {}"); - checkAndAssertTaskSuccessful(task); - } - - public void testCheckInvalidPatternsWhenSourceFilesExistHavingTab() throws Exception { - Project project = createProject(); - ForbiddenPatternsTask task = createTask(project); - - writeSourceFile(project, "src/main/java/Bar.java", "\tpublic void bar() {}"); - checkAndAssertTaskThrowsException(task); - } - - public void testCheckInvalidPatternsWithCustomRule() throws Exception { - Map rule = new HashMap<>(); - rule.put("name", "TODO comments are not allowed"); - rule.put("pattern", "\\/\\/.*(?i)TODO"); - - Project project = createProject(); - ForbiddenPatternsTask task = createTask(project); - task.rule(rule); - - writeSourceFile(project, "src/main/java/Moot.java", "GOOD LINE", "//todo", "// some stuff, toDo"); - checkAndAssertTaskThrowsException(task); - } - - public void testCheckInvalidPatternsWhenExcludingFiles() throws Exception { - Project project = createProject(); - ForbiddenPatternsTask task = createTask(project); - task.exclude("**/*.java"); - - writeSourceFile(project, "src/main/java/FooBarMoot.java", "\t"); - checkAndAssertTaskSuccessful(task); - } - - private Project createProject() { - Project project = ProjectBuilder.builder().build(); - project.getPlugins().apply(JavaPlugin.class); - - return project; - } - - private ForbiddenPatternsTask createTask(Project project) { - return project.getTasks().create("forbiddenPatterns", ForbiddenPatternsTask.class); - } - - private ForbiddenPatternsTask createTask(Project project, String taskName) { - return project.getTasks().create(taskName, ForbiddenPatternsTask.class); - } - - private void writeSourceFile(Project project, String name, String... lines) throws IOException { - File file = new File(project.getProjectDir(), name); - file.getParentFile().mkdirs(); - file.createNewFile(); - - if (lines.length != 0) Files.write(file.toPath(), Arrays.asList(lines), StandardCharsets.UTF_8); - } - - private void checkAndAssertTaskSuccessful(ForbiddenPatternsTask task) throws IOException { - task.checkInvalidPatterns(); - assertTaskSuccessful(task.getProject(), task.getName()); - } - - private void checkAndAssertTaskThrowsException(ForbiddenPatternsTask task) throws IOException { - try { - task.checkInvalidPatterns(); - fail("GradleException was expected to be thrown in this case!"); - } catch (GradleException e) { - assertTrue(e.getMessage().startsWith("Found invalid patterns")); - } - } - - private void assertTaskSuccessful(Project project, String fileName) throws IOException { - File outputMarker = new File(project.getBuildDir(), "markers/" + fileName); - assertTrue(outputMarker.exists()); - - Optional result = Files.readAllLines(outputMarker.toPath(), StandardCharsets.UTF_8).stream().findFirst(); - assertTrue(result.isPresent()); - assertEquals("done", result.get()); - } -} diff --git a/buildSrc/src/test/java/org/opensearch/gradle/precommit/UpdateShasTaskTests.java b/buildSrc/src/test/java/org/opensearch/gradle/precommit/UpdateShasTaskTests.java deleted file mode 100644 index d1056f15ba8f5..0000000000000 --- a/buildSrc/src/test/java/org/opensearch/gradle/precommit/UpdateShasTaskTests.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.precommit; - -import org.apache.commons.io.FileUtils; -import org.opensearch.gradle.test.GradleUnitTestCase; -import org.gradle.api.Action; -import org.gradle.api.GradleException; -import org.gradle.api.Project; -import org.gradle.api.artifacts.Dependency; -import org.gradle.api.file.FileCollection; -import org.gradle.api.plugins.JavaPlugin; -import org.gradle.api.tasks.TaskProvider; -import org.gradle.testfixtures.ProjectBuilder; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardOpenOption; -import java.security.NoSuchAlgorithmException; - -import static org.hamcrest.CoreMatchers.containsString; -import static org.hamcrest.CoreMatchers.equalTo; - -public class UpdateShasTaskTests extends GradleUnitTestCase { - - @Rule - public ExpectedException expectedException = ExpectedException.none(); - - private UpdateShasTask task; - - private Project project; - - private Dependency dependency; - - @Before - public void prepare() throws IOException { - project = createProject(); - task = createUpdateShasTask(project); - dependency = project.getDependencies().localGroovy(); - - } - - @Test - public void whenDependencyDoesntExistThenShouldDeleteDependencySha() throws IOException, NoSuchAlgorithmException { - - File unusedSha = createFileIn(getLicensesDir(project), "test.sha1", ""); - task.updateShas(); - - assertFalse(unusedSha.exists()); - } - - @Test - public void whenDependencyExistsButShaNotThenShouldCreateNewShaFile() throws IOException, NoSuchAlgorithmException { - project.getDependencies().add("compile", dependency); - - getLicensesDir(project).mkdir(); - task.updateShas(); - - assertTrue( - "Expected a sha file to exist with a name prefix of 'groovy-", - Files.list(getLicensesDir(project).toPath()).anyMatch(sha -> sha.toFile().getName().startsWith("groovy-")) - ); - } - - @Test - public void whenDependencyAndWrongShaExistsThenShouldNotOverwriteShaFile() throws IOException, NoSuchAlgorithmException { - project.getDependencies().add("compile", dependency); - - File groovyJar = task.getParentTask().getDependencies().getFiles().iterator().next(); - String groovyShaName = groovyJar.getName() + ".sha1"; - - File groovySha = createFileIn(getLicensesDir(project), groovyShaName, "content"); - task.updateShas(); - - assertThat(FileUtils.readFileToString(groovySha), equalTo("content")); - } - - @Test - public void whenLicensesDirDoesntExistThenShouldThrowException() throws IOException, NoSuchAlgorithmException { - expectedException.expect(GradleException.class); - expectedException.expectMessage(containsString("isn't a valid directory")); - - task.updateShas(); - } - - private Project createProject() { - Project project = ProjectBuilder.builder().build(); - project.getPlugins().apply(JavaPlugin.class); - - return project; - } - - private File getLicensesDir(Project project) { - return getFile(project, "licenses"); - } - - private File getFile(Project project, String fileName) { - return project.getProjectDir().toPath().resolve(fileName).toFile(); - } - - private File createFileIn(File parent, String name, String content) throws IOException { - parent.mkdir(); - - Path path = parent.toPath().resolve(name); - File file = path.toFile(); - - Files.write(path, content.getBytes(), StandardOpenOption.CREATE); - - return file; - } - - private UpdateShasTask createUpdateShasTask(Project project) { - UpdateShasTask task = project.getTasks().register("updateShas", UpdateShasTask.class).get(); - - task.setParentTask(createDependencyLicensesTask(project)); - return task; - } - - private TaskProvider createDependencyLicensesTask(Project project) { - TaskProvider task = project.getTasks() - .register("dependencyLicenses", DependencyLicensesTask.class, new Action() { - @Override - public void execute(DependencyLicensesTask dependencyLicensesTask) { - dependencyLicensesTask.setDependencies(getDependencies(project)); - } - }); - - return task; - } - - private FileCollection getDependencies(Project project) { - return project.getConfigurations().getByName("compile"); - } -} diff --git a/buildSrc/src/test/resources/ca.p12 b/buildSrc/src/test/resources/ca.p12 deleted file mode 100644 index cc44494515b9f415b10e5a1680a351004f36336e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1130 zcmV-w1eN>`YKzq*P z3y>M9*-ScP?1G-yVrojUCy_ALnwg}ca60EThMM9YrH`bM(eT@AOI>a^M^U!^s2%az zrPQgnSOrO6=k;|gH>|m$R5&%)w(cY^zJv(c$#cHvXZYU5thBcru&BI=EIUFjS!R2>kujzOGMgd?)`w3RP8sF^jF`%@< zC2leR<(U!v>Vpdc8?^P?y(?yX7~Q-DK$zzh@9scpmNili{S9kae_0$UviHYUHkwLJ zmB?Aegqu!`e>iOJO$V(GPY3cW;(OU{aEwqk`_=&@JuX^W5mru5m3(VY7Tb;3A6u@` zCbt^A)%YsHuSwmuiPei=Mn}Nol$aR5>2V)0T03^>96pBgXxA=&LN&6=1Od0obZ$LC z9k%l=Yfq)jlH1>WEbj?#x$zugDT5=*d4VxyyaA_dOsL&leFbs~*rNJ?oM0wYZkr&w z6j~LIZ&XQ}1@b|m`}>cHOmLu&P?_lmlG+=S{-s-j%`4*sbZIPyxx&7YF8hH3n-8U( zw9AX*Box9=@bd~T;$T+ore@}|0#G=pwF&V8xg39DzX5|+&qEZDXfEu28LCl=;Ex@x zrafigSLJn#r{=ZBPV>`7Zx~&I7#)yO^EQGV0-p);N$^Vb$s3AC5D4`R$E{QTY@eJg zf<>EFC9d=ndoy%S{?q(;3d%t^IMHcoMyW$GwT5(SvR4$Zcn4QvX{R)AK1Sd(^PrI; zG_*Ji{3HO*z$bB>JOHvq$R%s=Qn9y6iu2C+7u7_TLNNrZog6HzS_KT!KkHE$65maB z-4#<)UeY2()Ai>Rv!54{y;tjU*s1ZNG~ z3#wsfdzy0zT5@hdR#AExpO_Hew~Mc!cZaYpHoW+dT!HPXW4RrM9RS}K&*K`=frAutIB1uG5%0vZJX1QZ{H wm_-g$!e*DmGljOO=GL*I@+JfnfnL+d3d7|K`}9pm4!>XT-tEOT0s{etpmUoKWB>pF diff --git a/buildSrc/src/test/resources/ca.pem b/buildSrc/src/test/resources/ca.pem deleted file mode 100644 index 8dda1767e4838..0000000000000 --- a/buildSrc/src/test/resources/ca.pem +++ /dev/null @@ -1,25 +0,0 @@ -Bag Attributes - friendlyName: ca - localKeyID: 54 69 6D 65 20 31 35 35 33 37 34 33 38 39 30 38 33 35 -subject=/CN=Elastic Certificate Tool Autogenerated CA -issuer=/CN=Elastic Certificate Tool Autogenerated CA ------BEGIN CERTIFICATE----- -MIIDSjCCAjKgAwIBAgIVAMQMmDRcXfXLaTp6ep1H8rC3tOrwMA0GCSqGSIb3DQEB -CwUAMDQxMjAwBgNVBAMTKUVsYXN0aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2Vu -ZXJhdGVkIENBMB4XDTE5MDMyODAzMzEyNloXDTIyMDMyNzAzMzEyNlowNDEyMDAG -A1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5lcmF0ZWQgQ0Ew -ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDT73N6JZeBPyzahc0aNcra -BpUROVGB9wXQqf8JeU4GtH+1qfqUKYKUJTe/DZWc+5Qz1WAKGZEvBySAlgbuncuq -VpLzWxpEui1vRW8JB3gjZgeY3vfErrEWWr95YM0e8rWu4AoAchzqsrG0/+po2eui -cN+8hI6jRKiBv/ZeQqja6KZ8y4Wt4VaNVL53+I7+eWA/aposu6/piUg2wZ/FNhVK -hypcJwDdp3fQaugtPj3y76303jTRgutgd3rtWFuy3MCDLfs3mSQUjO10s93zwLdC -XokyIywijS5CpO8mEuDRu9rb5J1DzwUpUfk+GMObb6rHjFKzSqnM3s+nasypQQ9L -AgMBAAGjUzBRMB0GA1UdDgQWBBQZEW88R95zSzO2tLseEWgI7ugvLzAfBgNVHSME -GDAWgBQZEW88R95zSzO2tLseEWgI7ugvLzAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBCwUAA4IBAQBEJN0UbL77usVnzIvxKa3GpLBgJQAZtD1ifZppC4w46Bul -1G7Fdc+XMbzZlI4K6cWEdd5dfEssKA8btEtRzdNOqgggBpqrUU0mNlQ+vC22XORU -ykHAu2TsRwoHmuxkd9Et/QyuTFXR4fTiU8rsJuLFOgn+RdEblA0J0gJeIqdWI5Z1 -z13OyZEl6BCQFyrntu2eERxaHEfsJOSBZE4RcecnLNGhIJBXE0Pk4iTiViJF/h7d -+kUUegKx0qewZif2eEZgrz12Vuen9a6bh2i2pNS95vABVVMr8uB+J1BGkNA5YT7J -qtZA2tN//Evng7YDiR+KkB1kvXVZVIi2WPDLD/zu ------END CERTIFICATE----- diff --git a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/BaseTestCase.java b/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/BaseTestCase.java deleted file mode 100644 index 8e06a1cad0241..0000000000000 --- a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/BaseTestCase.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import com.carrotsearch.randomizedtesting.JUnit4MethodProvider; -import com.carrotsearch.randomizedtesting.RandomizedRunner; -import com.carrotsearch.randomizedtesting.annotations.TestMethodProviders; -import com.carrotsearch.randomizedtesting.annotations.ThreadLeakLingering; -import junit.framework.AssertionFailedError; -import org.junit.Assert; -import org.junit.runner.RunWith; - -@RunWith(RandomizedRunner.class) -@TestMethodProviders({ JUnit4MethodProvider.class, JUnit3MethodProvider.class }) -@ThreadLeakLingering(linger = 5000) // wait for "Connection worker" to die -public abstract class BaseTestCase extends Assert { - - // add expectThrows from junit 5 - @FunctionalInterface - public interface ThrowingRunnable { - void run() throws Throwable; - } - - public static T expectThrows(Class expectedType, ThrowingRunnable runnable) { - try { - runnable.run(); - } catch (Throwable e) { - if (expectedType.isInstance(e)) { - return expectedType.cast(e); - } - AssertionFailedError assertion = new AssertionFailedError( - "Unexpected exception type, expected " + expectedType.getSimpleName() + " but got " + e - ); - assertion.initCause(e); - throw assertion; - } - throw new AssertionFailedError("Expected exception " + expectedType.getSimpleName() + " but no exception was thrown"); - } -} diff --git a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleIntegrationTestCase.java b/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleIntegrationTestCase.java deleted file mode 100644 index dfdee35e783fd..0000000000000 --- a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleIntegrationTestCase.java +++ /dev/null @@ -1,230 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.BuildTask; -import org.gradle.testkit.runner.GradleRunner; -import org.gradle.testkit.runner.TaskOutcome; -import org.junit.Rule; -import org.junit.rules.TemporaryFolder; - -import java.io.File; -import java.io.IOException; -import java.io.UncheckedIOException; -import java.lang.management.ManagementFactory; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.hamcrest.CoreMatchers.containsString; - -public abstract class GradleIntegrationTestCase extends GradleUnitTestCase { - - @Rule - public TemporaryFolder testkitTmpDir = new TemporaryFolder(); - - protected File getProjectDir(String name) { - File root = new File("src/testKit/"); - if (root.exists() == false) { - throw new RuntimeException( - "Could not find resources dir for integration tests. " - + "Note that these tests can only be ran by Gradle and are not currently supported by the IDE" - ); - } - return new File(root, name).getAbsoluteFile(); - } - - protected GradleRunner getGradleRunner(String sampleProject) { - File testkit; - try { - testkit = testkitTmpDir.newFolder(); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - return GradleRunner.create() - .withProjectDir(getProjectDir(sampleProject)) - .withPluginClasspath() - .withTestKitDir(testkit) - .withDebug(ManagementFactory.getRuntimeMXBean().getInputArguments().toString().indexOf("-agentlib:jdwp") > 0); - } - - protected File getBuildDir(String name) { - return new File(getProjectDir(name), "build"); - } - - protected void assertOutputContains(String output, String... lines) { - for (String line : lines) { - assertOutputContains(output, line); - } - List index = Stream.of(lines).map(line -> output.indexOf(line)).collect(Collectors.toList()); - if (index.equals(index.stream().sorted().collect(Collectors.toList())) == false) { - fail( - "Expected the following lines to appear in this order:\n" - + Stream.of(lines).map(line -> " - `" + line + "`").collect(Collectors.joining("\n")) - + "\nTBut the order was different. Output is:\n\n```" - + output - + "\n```\n" - ); - } - } - - protected void assertOutputContains(String output, Set lines) { - for (String line : lines) { - assertOutputContains(output, line); - } - } - - protected void assertOutputContains(String output, String line) { - assertThat("Expected the following line in output:\n\n" + line + "\n\nOutput is:\n" + output, output, containsString(line)); - } - - protected void assertOutputDoesNotContain(String output, String line) { - assertFalse("Expected the following line not to be in output:\n\n" + line + "\n\nOutput is:\n" + output, output.contains(line)); - } - - protected void assertOutputDoesNotContain(String output, String... lines) { - for (String line : lines) { - assertOutputDoesNotContain(line); - } - } - - protected void assertTaskFailed(BuildResult result, String taskName) { - assertTaskOutcome(result, taskName, TaskOutcome.FAILED); - } - - protected void assertTaskSuccessful(BuildResult result, String... taskNames) { - for (String taskName : taskNames) { - assertTaskOutcome(result, taskName, TaskOutcome.SUCCESS); - } - } - - protected void assertTaskSkipped(BuildResult result, String... taskNames) { - for (String taskName : taskNames) { - assertTaskOutcome(result, taskName, TaskOutcome.SKIPPED); - } - } - - protected void assertTaskNoSource(BuildResult result, String... taskNames) { - for (String taskName : taskNames) { - assertTaskOutcome(result, taskName, TaskOutcome.NO_SOURCE); - } - } - - private void assertTaskOutcome(BuildResult result, String taskName, TaskOutcome taskOutcome) { - BuildTask task = result.task(taskName); - if (task == null) { - fail( - "Expected task `" + taskName + "` to be " + taskOutcome + ", but it did not run" + "\n\nOutput is:\n" + result.getOutput() - ); - } - assertEquals( - "Expected task `" - + taskName - + "` to be " - + taskOutcome - + " but it was: " - + task.getOutcome() - + "\n\nOutput is:\n" - + result.getOutput(), - taskOutcome, - task.getOutcome() - ); - } - - protected void assertTaskUpToDate(BuildResult result, String... taskNames) { - for (String taskName : taskNames) { - BuildTask task = result.task(taskName); - if (task == null) { - fail("Expected task `" + taskName + "` to be up-to-date, but it did not run"); - } - assertEquals( - "Expected task to be up to date but it was: " + task.getOutcome() + "\n\nOutput is:\n" + result.getOutput(), - TaskOutcome.UP_TO_DATE, - task.getOutcome() - ); - } - } - - protected void assertNoDeprecationWarning(BuildResult result) { - assertOutputDoesNotContain(result.getOutput(), "Deprecated Gradle features were used in this build"); - } - - protected void assertBuildFileExists(BuildResult result, String projectName, String path) { - Path absPath = getBuildDir(projectName).toPath().resolve(path); - assertTrue( - result.getOutput() + "\n\nExpected `" + absPath + "` to exists but it did not" + "\n\nOutput is:\n" + result.getOutput(), - Files.exists(absPath) - ); - } - - protected void assertBuildFileDoesNotExists(BuildResult result, String projectName, String path) { - Path absPath = getBuildDir(projectName).toPath().resolve(path); - assertFalse( - result.getOutput() + "\n\nExpected `" + absPath + "` bo to exists but it did" + "\n\nOutput is:\n" + result.getOutput(), - Files.exists(absPath) - ); - } - - protected String getLocalTestDownloadsPath() { - return getLocalTestPath("test.local-test-downloads-path"); - } - - private String getLocalTestPath(String propertyName) { - String property = System.getProperty(propertyName); - Objects.requireNonNull(property, propertyName + " not passed to tests"); - File file = new File(property); - assertTrue("Expected " + property + " to exist, but it did not!", file.exists()); - if (File.separator.equals("\\")) { - // Use / on Windows too, the build script is not happy with \ - return file.getAbsolutePath().replace(File.separator, "/"); - } else { - return file.getAbsolutePath(); - } - } - - public void assertOutputOnlyOnce(String output, String... text) { - for (String each : text) { - int i = output.indexOf(each); - if (i == -1) { - fail("Expected \n```" + each + "```\nto appear at most once, but it didn't at all.\n\nOutout is:\n" + output); - } - if (output.indexOf(each) != output.lastIndexOf(each)) { - fail("Expected `" + each + "` to appear at most once, but it did multiple times.\n\nOutout is:\n" + output); - } - } - } -} diff --git a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleThreadsFilter.java b/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleThreadsFilter.java deleted file mode 100644 index 8f930bacdfa08..0000000000000 --- a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleThreadsFilter.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import com.carrotsearch.randomizedtesting.ThreadFilter; - -/** - * Filter out threads controlled by gradle that may be created during unit tests. - * - * Currently this includes pooled threads for Exec as well as file system event watcher threads. - */ -public class GradleThreadsFilter implements ThreadFilter { - - @Override - public boolean reject(Thread t) { - return t.getName().startsWith("Exec process") || t.getName().startsWith("File watcher consumer"); - } -} diff --git a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleUnitTestCase.java b/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleUnitTestCase.java deleted file mode 100644 index a50a14a0ea932..0000000000000 --- a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/GradleUnitTestCase.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import com.carrotsearch.randomizedtesting.JUnit4MethodProvider; -import com.carrotsearch.randomizedtesting.RandomizedRunner; -import com.carrotsearch.randomizedtesting.annotations.TestMethodProviders; -import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters; -import org.junit.runner.RunWith; - -@RunWith(RandomizedRunner.class) -@TestMethodProviders({ JUnit4MethodProvider.class, JUnit3MethodProvider.class }) -@ThreadLeakFilters(defaultFilters = true, filters = { GradleThreadsFilter.class }) -public abstract class GradleUnitTestCase extends BaseTestCase {} diff --git a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/JUnit3MethodProvider.java b/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/JUnit3MethodProvider.java deleted file mode 100644 index 0c01b6d519d62..0000000000000 --- a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/JUnit3MethodProvider.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import com.carrotsearch.randomizedtesting.ClassModel; -import com.carrotsearch.randomizedtesting.ClassModel.MethodModel; -import com.carrotsearch.randomizedtesting.TestMethodProvider; - -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Map; - -/** - * Backwards compatible test* method provider (public, non-static). - * - * copy of org.apache.lucene.util.LuceneJUnit3MethodProvider to avoid a dependency between build and test fw. - */ -public final class JUnit3MethodProvider implements TestMethodProvider { - @Override - public Collection getTestMethods(Class suiteClass, ClassModel classModel) { - Map methods = classModel.getMethods(); - ArrayList result = new ArrayList<>(); - for (MethodModel mm : methods.values()) { - // Skip any methods that have overrieds/ shadows. - if (mm.getDown() != null) continue; - - Method m = mm.element; - if (m.getName().startsWith("test") - && Modifier.isPublic(m.getModifiers()) - && !Modifier.isStatic(m.getModifiers()) - && m.getParameterTypes().length == 0) { - result.add(m); - } - } - return result; - } -} diff --git a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/TestClasspathUtils.java b/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/TestClasspathUtils.java deleted file mode 100644 index ec9a5fb157ccc..0000000000000 --- a/buildSrc/src/testFixtures/java/org/opensearch/gradle/test/TestClasspathUtils.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.test; - -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; - -import static org.junit.Assert.fail; - -public class TestClasspathUtils { - - public static void setupJarJdkClasspath(File projectRoot) { - try { - URL originLocation = TestClasspathUtils.class.getClassLoader() - .loadClass("org.opensearch.bootstrap.JdkJarHellCheck") - .getProtectionDomain() - .getCodeSource() - .getLocation(); - File targetFile = new File( - projectRoot, - "sample_jars/build/testrepo/org/opensearch/opensearch-core/current/opensearch-core-current.jar" - ); - targetFile.getParentFile().mkdirs(); - Path originalPath = Paths.get(originLocation.toURI()); - Files.copy(originalPath, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - } catch (ClassNotFoundException | URISyntaxException | IOException e) { - e.printStackTrace(); - fail("Cannot setup jdk jar hell classpath"); - } - } - -} diff --git a/buildSrc/src/testKit/opensearch-build-resources/build.gradle b/buildSrc/src/testKit/opensearch-build-resources/build.gradle deleted file mode 100644 index 3d939ccffc6e3..0000000000000 --- a/buildSrc/src/testKit/opensearch-build-resources/build.gradle +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import org.opensearch.gradle.ExportOpenSearchBuildResourcesTask - -plugins { - id 'base' - id 'opensearch.global-build-info' -} - -File buildResourcesDir = new File(project.getBuildDir(), 'build-tools-exported') -TaskProvider buildResourcesTask = tasks.register('buildResources', ExportOpenSearchBuildResourcesTask) { - outputDir = buildResourcesDir -} - -tasks.register("sampleCopy", Sync) { - /** Note: no explicit dependency. This works with tasks that use the Provider API a.k.a "Lazy Configuration" **/ - from buildResourcesTask - into "$buildDir/sampleCopy" -} - -tasks.register("noConfigAfterExecution") { - dependsOn buildResourcesTask - doLast { - buildResourcesTask.get().copy('foo') - } -} diff --git a/buildSrc/src/testKit/opensearch-build-resources/settings.gradle b/buildSrc/src/testKit/opensearch-build-resources/settings.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/testKit/opensearch.build/LICENSE b/buildSrc/src/testKit/opensearch.build/LICENSE deleted file mode 100644 index cf6ea07b18851..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/LICENSE +++ /dev/null @@ -1 +0,0 @@ -this is a test license file \ No newline at end of file diff --git a/buildSrc/src/testKit/opensearch.build/NOTICE b/buildSrc/src/testKit/opensearch.build/NOTICE deleted file mode 100644 index 0c070fe74242a..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/NOTICE +++ /dev/null @@ -1 +0,0 @@ -this is a test notice file \ No newline at end of file diff --git a/buildSrc/src/testKit/opensearch.build/build.gradle b/buildSrc/src/testKit/opensearch.build/build.gradle deleted file mode 100644 index a0093eb1d2cd1..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/build.gradle +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -plugins { - id 'java' - id 'opensearch.build' -} - -ext.licenseFile = file("LICENSE") -ext.noticeFile = file("NOTICE") - -dependencies { - api "junit:junit:${versions.junit}" - // missing classes in thirdparty audit - api 'org.hamcrest:hamcrest-core:1.3' - jdkJarHell 'org.opensearch:opensearch-core:current' -} - -repositories { - /** - * Local test repo contains dummy jars with different group names and versions. - * - broken-log4j creates a log4j logger but has no pom, so the class will be missing - * - dummy-io has a class that creates a new java.io.File ( something which third-party-audit-absurd.txt forbids ) - * - version 0.0.2 has the same class and one extra file just to make the jar different - * - used for propagating jar containing jdkjarhell jar from integ test runtime classpath - */ - maven { - name = "local-test" - url = file("sample_jars/build/testrepo") - metadataSources { - artifact() - } - } - mavenCentral() -} - -repositories { - /** - * Local test repo contains jdkjarhell jar from integ test runtime classpath propagated at runtime - */ - maven { - name = "local-test" - url = file("sample_jars/build/testrepo") - metadataSources { - artifact() - } - } - mavenCentral() -} - -// todo remove offending rules -tasks.named('forbiddenApisMain').configure { onlyIf { false } } -tasks.named('forbiddenApisTest').configure { onlyIf { false } } -// requires dependency on testing fw -jarHell.enabled = false -// we don't have tests for now -test.enabled = false -thirdPartyAudit.enabled = false -// This requires an additional Jar not part of build-tools -loggerUsageCheck.enabled = false - -// TODO: shouldn't be part of BuildPlugin, should be tested separately -validateNebulaPom.enabled = false - -tasks.register("hello") { - doFirst { - println "build plugin can be applied" - } -} diff --git a/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-1.3.jar.sha1 b/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-1.3.jar.sha1 deleted file mode 100644 index 1085ece454c99..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-1.3.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -42a25dc3219429f0e5d060061f71acb49bf010a0 \ No newline at end of file diff --git a/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-LICENSE.txt b/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-LICENSE.txt deleted file mode 100644 index 803baec32939c..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-NOTICE.txt b/buildSrc/src/testKit/opensearch.build/licenses/hamcrest-core-NOTICE.txt deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/testKit/opensearch.build/licenses/junit-4.13.2.jar.sha1 b/buildSrc/src/testKit/opensearch.build/licenses/junit-4.13.2.jar.sha1 deleted file mode 100644 index 7d065692bff1a..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/licenses/junit-4.13.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12 \ No newline at end of file diff --git a/buildSrc/src/testKit/opensearch.build/licenses/junit-LICENSE.txt b/buildSrc/src/testKit/opensearch.build/licenses/junit-LICENSE.txt deleted file mode 100644 index 803baec32939c..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/licenses/junit-LICENSE.txt +++ /dev/null @@ -1,22 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/buildSrc/src/testKit/opensearch.build/licenses/junit-NOTICE.txt b/buildSrc/src/testKit/opensearch.build/licenses/junit-NOTICE.txt deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/testKit/opensearch.build/settings.gradle b/buildSrc/src/testKit/opensearch.build/settings.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/testKit/opensearch.build/src/main/java/org/opensearch/SampleClass.java b/buildSrc/src/testKit/opensearch.build/src/main/java/org/opensearch/SampleClass.java deleted file mode 100644 index de51b76925f1d..0000000000000 --- a/buildSrc/src/testKit/opensearch.build/src/main/java/org/opensearch/SampleClass.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch; - -/** - * This is just a test class - */ -public class SampleClass { - -} diff --git a/buildSrc/src/testKit/reaper/build.gradle b/buildSrc/src/testKit/reaper/build.gradle deleted file mode 100644 index fdcf4dc2f2468..0000000000000 --- a/buildSrc/src/testKit/reaper/build.gradle +++ /dev/null @@ -1,22 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -plugins { - id 'opensearch.reaper' -} - -tasks.register("launchReaper") { - doLast { - def reaper = project.extensions.getByName('reaper') - reaper.registerCommand('test', 'true') - reaper.unregister('test') - } -} diff --git a/buildSrc/src/testKit/reaper/settings.gradle b/buildSrc/src/testKit/reaper/settings.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle b/buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle deleted file mode 100644 index 57f906d38582a..0000000000000 --- a/buildSrc/src/testKit/symbolic-link-preserving-tar/build.gradle +++ /dev/null @@ -1,64 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import org.opensearch.gradle.tar.SymbolicLinkPreservingTar - -plugins { - id 'base' - id 'distribution' - id 'opensearch.symbolic-link-preserving-tar' -} - -final String source = Objects.requireNonNull(System.getProperty('tests.symbolic_link_preserving_tar_source')) -boolean preserveFileTimestamps; -final String testPreserveFileTimestamps = - Objects.requireNonNull(System.getProperty('tests.symbolic_link_preserving_tar_preserve_file_timestamps')) -switch (testPreserveFileTimestamps) { - case "true": - preserveFileTimestamps = true - break - case "false": - preserveFileTimestamps = false - break - default: - throw new IllegalArgumentException( - "tests.symbolic_link_preserving_tar_preserve_file_timestamps must be [true] or [false] but was [" - + testPreserveFileTimestamps + "]") -} - -tasks.register("buildBZip2Tar", SymbolicLinkPreservingTar) { SymbolicLinkPreservingTar tar -> - tar.archiveExtension = 'tar.bz2' - tar.compression = Compression.BZIP2 - tar.preserveFileTimestamps = preserveFileTimestamps - from fileTree(source) - doLast { - println archiveFile.get().asFile.path - } -} - -tasks.register("buildGZipTar", SymbolicLinkPreservingTar) { SymbolicLinkPreservingTar tar -> - tar.archiveExtension = 'tar.gz' - tar.compression = Compression.GZIP - tar.preserveFileTimestamps = preserveFileTimestamps - from fileTree(source) - doLast { - println archiveFile.get().asFile.path - } -} - -tasks.register("buildTar", SymbolicLinkPreservingTar) { SymbolicLinkPreservingTar tar -> - tar.archiveExtension = 'tar' - tar.preserveFileTimestamps = preserveFileTimestamps - from fileTree(source) - doLast { - println archiveFile.get().asFile.path - } -} diff --git a/buildSrc/src/testKit/symbolic-link-preserving-tar/settings.gradle b/buildSrc/src/testKit/symbolic-link-preserving-tar/settings.gradle deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java b/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java deleted file mode 100644 index 0415db2568e75..0000000000000 --- a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionIT { - -} diff --git a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java b/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java deleted file mode 100644 index ca3d36692e62b..0000000000000 --- a/buildSrc/src/testKit/testingConventions/all_classes_in_tasks/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionTests { - -} diff --git a/buildSrc/src/testKit/testingConventions/build.gradle b/buildSrc/src/testKit/testingConventions/build.gradle deleted file mode 100644 index 418e833e8cb14..0000000000000 --- a/buildSrc/src/testKit/testingConventions/build.gradle +++ /dev/null @@ -1,93 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -plugins { - id 'opensearch.build' apply false -} - -allprojects { - apply plugin: 'java' - apply plugin: 'opensearch.build' - - repositories { - mavenCentral() - } - dependencies { - testImplementation "junit:junit:4.13.2" - } - - ext.licenseFile = file("$buildDir/dummy/license") - ext.noticeFile = file("$buildDir/dummy/notice") - - testingConventions.naming { - // Reset default to no baseClass checks - Tests { - baseClasses = [] - } - IT { - baseClasses = [] - } - } -} - -project(':empty_test_task') { - tasks.register("emptyTest", Test) -} - -project(':all_classes_in_tasks') { - test { - include "**/Convention*" - } -} - -project(':not_implementing_base') { - testingConventions.naming { - Tests { - baseClass 'org.opensearch.gradle.testkit.Unit' - } - IT { - baseClass 'org.opensearch.gradle.testkit.Integration' - } - } - test { - include "**/*IT.class" - include "**/*Tests.class" - } -} - -project(':valid_setup_no_base') { - test { - include "**/*IT.class" - include "**/*Tests.class" - } -} - -project(':tests_in_main') { - -} - -project(':valid_setup_with_base') { - test { - include "**/*IT.class" - include "**/*Tests.class" - } - testingConventions.naming { - Tests { - baseClass 'org.opensearch.gradle.testkit.Unit' - } - IT { - baseClass 'org.opensearch.gradle.testkit.Integration' - } - } -} - - - diff --git a/buildSrc/src/testKit/testingConventions/empty_test_task/.gitignore b/buildSrc/src/testKit/testingConventions/empty_test_task/.gitignore deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java b/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java deleted file mode 100644 index a0aae44518194..0000000000000 --- a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention1.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -import org.junit.Test; - -public class LooksLikeATestWithoutNamingConvention1 { - - @Test - public void annotatedTestMethod() { - - } - -} diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java b/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java deleted file mode 100644 index ea8da5c345ab5..0000000000000 --- a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention2.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -import org.junit.Assert; - -public class LooksLikeATestWithoutNamingConvention2 extends Assert { - -} diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java b/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java deleted file mode 100644 index 033a2b1828c59..0000000000000 --- a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeATestWithoutNamingConvention3.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class LooksLikeATestWithoutNamingConvention3 { - - public void testMethod() { - - } - -} diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeTestsButAbstract.java b/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeTestsButAbstract.java deleted file mode 100644 index 84a19ad5394f8..0000000000000 --- a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/LooksLikeTestsButAbstract.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public abstract class LooksLikeTestsButAbstract { - - public void testMethod() { - - } - -} diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java b/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java deleted file mode 100644 index 0415db2568e75..0000000000000 --- a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionIT { - -} diff --git a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java b/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java deleted file mode 100644 index ca3d36692e62b..0000000000000 --- a/buildSrc/src/testKit/testingConventions/incorrect_naming_conventions/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionTests { - -} diff --git a/buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/opensearch/gradle/testkit/NastyInnerClasses.java b/buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/opensearch/gradle/testkit/NastyInnerClasses.java deleted file mode 100644 index 07759ecbc6134..0000000000000 --- a/buildSrc/src/testKit/testingConventions/no_tests_in_inner_classes/src/test/java/org/opensearch/gradle/testkit/NastyInnerClasses.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -import org.junit.Assert; -import org.junit.Test; - -public class NastyInnerClasses { - - public static class NamingConventionTests { - - } - - public static class NamingConventionIT { - - } - - public static class LooksLikeATestWithoutNamingConvention1 { - @Test - public void annotatedTestMethod() { - - } - } - - public static class LooksLikeATestWithoutNamingConvention2 extends Assert { - - } - - public static class LooksLikeATestWithoutNamingConvention3 { - - public void testMethod() { - - } - - } - - static abstract public class NonOffendingAbstractTests { - - } - - private static class NonOffendingPrivateTests { - - } - - static class NonOffendingPackageTests { - - } -} diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/AbstractIT.java b/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/AbstractIT.java deleted file mode 100644 index 391da8891543c..0000000000000 --- a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/AbstractIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public abstract class AbstractIT { - -} diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Integration.java b/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Integration.java deleted file mode 100644 index 5df6cdaed0235..0000000000000 --- a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Integration.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class Integration { - -} diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java b/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java deleted file mode 100644 index 0415db2568e75..0000000000000 --- a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionIT { - -} diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchIT.java b/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchIT.java deleted file mode 100644 index 4bda4c81c70aa..0000000000000 --- a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionMissmatchIT extends Unit { - -} diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchTests.java b/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchTests.java deleted file mode 100644 index a810d4f83f946..0000000000000 --- a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionMissmatchTests.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionMissmatchTests extends Integration { - -} diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java b/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java deleted file mode 100644 index ca3d36692e62b..0000000000000 --- a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionTests { - -} diff --git a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Unit.java b/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Unit.java deleted file mode 100644 index c22b542def7b8..0000000000000 --- a/buildSrc/src/testKit/testingConventions/not_implementing_base/src/test/java/org/opensearch/gradle/testkit/Unit.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class Unit { - -} diff --git a/buildSrc/src/testKit/testingConventions/settings.gradle b/buildSrc/src/testKit/testingConventions/settings.gradle deleted file mode 100644 index c4206edd63ff7..0000000000000 --- a/buildSrc/src/testKit/testingConventions/settings.gradle +++ /dev/null @@ -1,19 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -include 'no_tests_in_inner_classes' -include 'incorrect_naming_conventions' -include 'empty_test_task' -include 'all_classes_in_tasks' -include 'not_implementing_base' -include 'valid_setup_no_base' -include 'valid_setup_with_base' -include 'tests_in_main' \ No newline at end of file diff --git a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionIT.java b/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionIT.java deleted file mode 100644 index 0415db2568e75..0000000000000 --- a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionIT { - -} diff --git a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionTests.java b/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionTests.java deleted file mode 100644 index ca3d36692e62b..0000000000000 --- a/buildSrc/src/testKit/testingConventions/tests_in_main/src/main/java/org/opensearch/gradle/testkit/NamingConventionTests.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionTests { - -} diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java b/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java deleted file mode 100644 index 0415db2568e75..0000000000000 --- a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionIT { - -} diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java b/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java deleted file mode 100644 index ca3d36692e62b..0000000000000 --- a/buildSrc/src/testKit/testingConventions/valid_setup_no_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionTests { - -} diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Integration.java b/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Integration.java deleted file mode 100644 index 5df6cdaed0235..0000000000000 --- a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Integration.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class Integration { - -} diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java b/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java deleted file mode 100644 index 5d08141fa94d2..0000000000000 --- a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionIT.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionIT extends Integration { - -} diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java b/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java deleted file mode 100644 index e0f94b33fb44b..0000000000000 --- a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/NamingConventionTests.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class NamingConventionTests extends Unit { - -} diff --git a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Unit.java b/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Unit.java deleted file mode 100644 index c22b542def7b8..0000000000000 --- a/buildSrc/src/testKit/testingConventions/valid_setup_with_base/src/test/java/org/opensearch/gradle/testkit/Unit.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -package org.opensearch.gradle.testkit; - -public class Unit { - -} diff --git a/buildSrc/src/testKit/thirdPartyAudit/build.gradle b/buildSrc/src/testKit/thirdPartyAudit/build.gradle deleted file mode 100644 index 41e699db94dcf..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/build.gradle +++ /dev/null @@ -1,57 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import org.opensearch.gradle.precommit.ThirdPartyAuditPrecommitPlugin -import org.opensearch.gradle.precommit.ThirdPartyAuditTask - - -plugins { - id 'java' - // bring in build-tools onto the classpath - id 'opensearch.global-build-info' -} - -plugins.apply(ThirdPartyAuditPrecommitPlugin) - -repositories { - /** - * Local test repo contains dummy jars with different group names and versions. - * - broken-log4j creates a log4j logger but has no pom, so the class will be missing - * - dummy-io has a class that creates a new java.io.File ( something which third-party-audit-absurd.txt forbids ) - * - version 0.0.2 has the same class and one extra file just to make the jar different - * - used for propagating jar containing jdkjarhell jar from integ test runtime classpath - */ - maven { - name = "local-test" - url = file("sample_jars/build/testrepo") - metadataSources { - artifact() - } - } - mavenCentral() -} - -dependencies { - forbiddenApisCliJar 'de.thetaphi:forbiddenapis:3.2' - jdkJarHell 'org.opensearch:opensearch-core:current' - compileOnly "org.${project.properties.compileOnlyGroup}:${project.properties.compileOnlyVersion}" - implementation "org.${project.properties.compileGroup}:${project.properties.compileVersion}" -} - -tasks.register("empty", ThirdPartyAuditTask) { - targetCompatibility = JavaVersion.VERSION_11 - signatureFile = file('third-party-audit-empty.txt') -} - -tasks.register("absurd", ThirdPartyAuditTask) { - targetCompatibility = JavaVersion.VERSION_11 - signatureFile = file('third-party-audit-absurd.txt') -} diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle b/buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle deleted file mode 100644 index c8c89fb5e4273..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/build.gradle +++ /dev/null @@ -1,60 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -plugins { - id 'java' -} -repositories { - mavenCentral() -} -dependencies { - implementation 'org.apache.logging.log4j:log4j-core:2.17.2' -} - -["0.0.1", "0.0.2"].forEach { v -> - ["opensearch", "other"].forEach { p -> - tasks.register("dummy-${p}-${v}", Jar) { - destinationDirectory = file("${buildDir}/testrepo/org/${p}/gradle/dummy-io/${v}/") - archiveFileName = "dummy-io-${v}.jar" - from sourceSets.main.output - include "**/TestingIO.class" - if (v == "0.0.2") { - manifest { - attributes( - "X-Different": "Different manifest, different jar" - ) - } - } - } - build.dependsOn("dummy-${p}-${v}") - } -} - -["0.0.1"].forEach { v -> - ["opensearch", "other"].forEach { p -> - tasks.register("broken-log4j-${p}-${v}", Jar) { - destinationDir = file("${buildDir}/testrepo/org/${p}/gradle/broken-log4j/${v}/") - archiveFileName = "broken-log4j-${v}.jar" - from sourceSets.main.output - include "**/TestingLog4j.class" - } - build.dependsOn("broken-log4j-${p}-${v}") - } -} - -tasks.register("jarhellJdk", Jar) { - destinationDir = file("${buildDir}/testrepo/org/other/gradle/jarhellJdk/0.0.1/") - archiveFileName = "jarhellJdk-0.0.1.jar" - from sourceSets.main.output - include "**/String.class" - into "java/lang" -} -build.dependsOn("jarhellJdk") diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java b/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java deleted file mode 100644 index 118e7dbc18312..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/String.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -class String { - -} diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java b/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java deleted file mode 100644 index 0d6d1762d2521..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingIO.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -import java.io.File; - -public class TestingIO { - public TestingIO() { - new File("foo"); - } -} diff --git a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java b/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java deleted file mode 100644 index efb873d1772c6..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/sample_jars/src/main/java/TestingLog4j.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -import org.apache.logging.log4j.LogManager; - -public class TestingLog4j { - public TestingLog4j() { - LogManager.getLogger(); - } -} diff --git a/buildSrc/src/testKit/thirdPartyAudit/settings.gradle b/buildSrc/src/testKit/thirdPartyAudit/settings.gradle deleted file mode 100644 index 582faadddaef1..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/settings.gradle +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -include 'sample_jars' \ No newline at end of file diff --git a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt b/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt deleted file mode 100644 index bac396aa809d3..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-absurd.txt +++ /dev/null @@ -1,2 +0,0 @@ -@defaultMessage non-public internal runtime class -java.io.** \ No newline at end of file diff --git a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt b/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt deleted file mode 100644 index c97de2d6468f6..0000000000000 --- a/buildSrc/src/testKit/thirdPartyAudit/third-party-audit-empty.txt +++ /dev/null @@ -1 +0,0 @@ -@defaultMessage non-public internal runtime class \ No newline at end of file diff --git a/buildSrc/version.properties b/buildSrc/version.properties deleted file mode 100644 index bd02287298fb4..0000000000000 --- a/buildSrc/version.properties +++ /dev/null @@ -1,54 +0,0 @@ -opensearch = 1.3.20 -lucene = 8.10.1 - -bundled_jdk_vendor = adoptium -bundled_jdk = 11.0.25+9 - -# optional dependencies -spatial4j = 0.7 -jts = 1.15.0 -jackson = 2.14.2 -jackson_databind = 2.14.2 -snakeyaml = 2.0 -icu4j = 62.2 -supercsv = 2.4.0 -log4j = 2.17.1 -slf4j = 1.6.2 -jdom2 = 2.0.6.1 -asm = 9.6 -jettison = 1.5.4 -asm = 9.5 -woodstox = 6.4.0 -kotlin = 1.7.10 -guava = 32.0.1-jre -protobuf = 3.25.5 - -# when updating the JNA version, also update the version in buildSrc/build.gradle -jna = 5.5.0 - -netty = 4.1.115.Final -reactor_netty = 1.0.39 -reactor = 3.4.34 -joda = 2.12.2 -jetty = 9.4.53.v20231009 - -# when updating this version, you need to ensure compatibility with: -# - plugins/ingest-attachment (transitive dependency, check the upstream POM) -# - distribution/tools/plugin-cli -bouncycastle=1.78.1 -# test dependencies -randomizedrunner = 2.7.1 -junit = 4.13.2 -httpclient = 4.5.13 -httpcore = 4.4.12 -httpasyncclient = 4.1.4 -commonslogging = 1.1.3 -commonscodec = 1.13 -hamcrest = 2.1 -mocksocket = 1.2 -mockito = 3.12.4 -objenesis = 3.2 -bytebuddy = 1.14.3 - -# benchmark dependencies -jmh = 1.19 diff --git a/plugins/repository-hdfs/build.gradle b/plugins/repository-hdfs/build.gradle index 67ca9671f4fb8..246fb0c3507e9 100644 --- a/plugins/repository-hdfs/build.gradle +++ b/plugins/repository-hdfs/build.gradle @@ -375,7 +375,6 @@ thirdPartyAudit { 'org.apache.hadoop.thirdparty.com.google.common.hash.LittleEndianByteArray$UnsafeByteArray', 'org.apache.hadoop.thirdparty.com.google.common.hash.LittleEndianByteArray$UnsafeByteArray$1', 'org.apache.hadoop.thirdparty.com.google.common.hash.LittleEndianByteArray$UnsafeByteArray$2', - 'org.apache.hadoop.thirdparty.com.google.common.hash.LittleEndianByteArray$UnsafeByteArray$3', 'org.apache.hadoop.thirdparty.com.google.common.hash.Striped64', 'org.apache.hadoop.thirdparty.com.google.common.hash.Striped64$1', 'org.apache.hadoop.thirdparty.com.google.common.hash.Striped64$Cell', @@ -383,8 +382,11 @@ thirdPartyAudit { 'org.apache.hadoop.thirdparty.com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1', 'org.apache.hadoop.thirdparty.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper', 'org.apache.hadoop.thirdparty.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper$1', + 'org.apache.hadoop.thirdparty.protobuf.MessageSchema', 'org.apache.hadoop.thirdparty.protobuf.UnsafeUtil', 'org.apache.hadoop.thirdparty.protobuf.UnsafeUtil$1', + 'org.apache.hadoop.thirdparty.protobuf.UnsafeUtil$Android32MemoryAccessor', + 'org.apache.hadoop.thirdparty.protobuf.UnsafeUtil$Android64MemoryAccessor', 'org.apache.hadoop.thirdparty.protobuf.UnsafeUtil$JvmMemoryAccessor', 'org.apache.hadoop.thirdparty.protobuf.UnsafeUtil$MemoryAccessor', @@ -429,10 +431,6 @@ thirdPartyAudit { 'org.apache.hadoop.shaded.org.apache.curator.shaded.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper', 'org.apache.hadoop.shaded.org.apache.curator.shaded.com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper$1', 'org.apache.hadoop.shaded.org.xbill.DNS.spi.DNSJavaNameServiceDescriptor', - 'org.apache.hadoop.shaded.org.xerial.snappy.pure.PureJavaSnappy', - 'org.apache.hadoop.shaded.org.xerial.snappy.pure.SnappyRawCompressor', - 'org.apache.hadoop.shaded.org.xerial.snappy.pure.SnappyRawDecompressor', - 'org.apache.hadoop.shaded.org.xerial.snappy.pure.UnsafeUtil', 'org.apache.avro.reflect.FieldAccessUnsafe', 'org.apache.avro.reflect.FieldAccessUnsafe$UnsafeBooleanField',

    8E?0hNt@&1ZpU_n2o6+ z(iGu>{Io?EUDg496`#VVqiDuwc)82WZ)&Z;sxk!3w2_L>;URhG&#PE~g)+5zSfIXa zKq-@kDtMG(qX0EXVz(A=Uts%k1u{SUBEA&GWB76)c6b4=!S^po&I2{h zm}EQ?#RdF8#R+^vTF{S}X-r3y5`8H6aTL$t9u?ogcO}Z7&T!ZGiT}^#++PS(>hjH@ z;#at94tM)C>77n;iyPGH^azv5>Bc$+r`cY;)KIG*?6eM>2G*@Rrqo@REa+zR-_(&# zolj-IJ-@@Wj6K6c{f3k8so5XU+HJZfr?gm>EnVKW_&8D9ExwC=9t}3<-(txOop&+~ ze9%r4X3`#ZQbwDZHL#YXg!w3_Lgj)A`Q!mu^TES9D*cr8-O#YeZZu8DR%#U4T3(~{NC5(WV!0lbELY+t zyqvZCT7g=Q$*))NtHS@1kff!p^g&6ejCH}*;tsxq!xR_d)}3*!z9}||SZ^#giq)~l zv1|-$C$KSuo=I%#4WB`CZ)g%*i^sPmE6-qiZ%Esb>R$>Udj z{9+WJD3KbKkR*@OsH3H*7liRiJQ$cKcI2hj(I7voRXmJHY#d)WaT1SotU8bRvUeO` z>Fqd$M^=sE>nHp}OBFJ*&3h4x6g);BWPHubJ3tLfw%TJ_z4k;hrnPBfEca^@EW5Qy zmc7~;mIK;TEDvknWI3emX6gDpNBy1=zvoWv+ezt*(#;th^IP2H2LoV<_B0)1H}QUN z5*K>4ir5%_C;`gp{97eIy)}=h{v@7#8VgyD;wR_0VE1`w)*3J&iW6mrHTEK_1{>B$&!k{^Q!{N FzX86Y^%DR9 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure48.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure48.class deleted file mode 100644 index 8819fb2f517fd208f9008f5944a15a65e9923e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3895 zcmcIn>w6Se9e&SllG!fP1cs23mR4wENH!a`iQG(}8X^#611%ep0>yRMJ=qLQW|o;* zYP?{z^-^0eZPki*d-e7KTcv6H)bhzbkAG7Y-!n6tY?=*5AN{ar&gFN0m-lx&`}cpo z^H%`-@JE41U9XaJtJ3kM>6PYk70)c&G8afc$c@`IKak!L*PAy3%XOwq|B~NREV<6C zRjGM$#avxjxOAlMgm&}cCJg+{%IYZxI2v&+@s@8 zwBNzo_v+|~W*-x13Fa(1v-=;j>_O+kLY;8f{tNq z*nlB?g5aq$9ebjUy#o8!=atpwD<=CD*H0=gZ$@ZCp;{Tlu`R6M%N9({dG6!p1zTz;tS~JKaSf*h9{f*BfQA`b#@Ii- zqGoQb=Rqy7?A*9($3>6Hx2;~60?%~(S+=I-cERJ$P~neU)9{!;I&!CSv%tRF2Vq!S zo0s^{p{StzJQ-4LW>HkZ@21AeuW|b{t5z;Pqf%YXPc)Q?u&Sknu=-ERzzih|bdz0U zu~<4Hw-hhLWSi?a#r>5XfdM!ND~)Mf6u470f~C6x15M0cOOOs5^U735$3|>Ym9{F- z*ED#WbR`WQQ>dLZ$sVi z4R~6CA2pc3FBUe49Oif>QVn zgSwfH0(;|_Tk9F6kXX@iL)%7G5lHFy3a+Z&`+c_VrY=~ki-b%xJol0M6S=b~WU6Ps zkjC@)p^h)%%PNw7EO5_qX<6kL4L?ca8U}Pci|;Bef5zt77(DeySoj|Jg`)kXK&z>q zB07GJnL8-$H%!sx=P0Y*cv$s}yh~uFP0v!rY)TDG6lP%Q(xh39*ByDwktb^N7o->O zbf1aL2RY~hQd~N8*96ne>1SFRohaL3_X4hbd&bdtTbiu88C3(cMC3{nX z&ld&;S~n)t8wTK)FBpE)D%1FV8U{9pYvQHcMfy%`;rI$y^GI?B*tv-Ak=D#W_AP81 z9BJ!r%M|~D`?}j^x?4uHZcVMWcWX0$BB{Wu9CxFYV=s2#ety;L0rc=p%|6aqBAh9e zRE+e7N-0(Otc^wggKD?%>Tl=1rWB6ikE)>JYc+ zyhy=N4tKchjOF~6^EU3BQzW>6(i;2~Qicrq%m0%9#um(?LMclBL$UrlGdFO_NW6+v zW)bf7H*h&W@Bup1?jjyPlYbMJ2X5et1fCZa;>_Rn53yN;&v<1OiTNE2@d1W1Mz8Ti zA!7_0U*ovTc#>nz_y)&O<69gLg!6;O)103)o++sKRH4sQk6G;q69m{|eD6I>9H(AC zco)x~F%p@#@FS&&BIkdHn0!2z-1i1v{2MlLyn&zIZKK?bbg3-jnyKF-;r;cER|DVW*YvU-xgY{;}4uAp#2L<2`;_> diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure49.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure49.class deleted file mode 100644 index f5cd2bdbc06d41ce6517ad8cda62a07a826ee6f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3121 zcmcImYgZFj6x}xj2g3+BAWGG?R@4yC2>1lG#i&RLY7K&D+jIywWHijsnF)gS{kE@v z(eGAU#Jbx0sjk)EVEfjTjQ2}hx~4BD zmQGX)Y^mtYp5jq~q5m`v4K)I5CY*$s&kO8~Ca;(?W-*Gh<5y(H?`>N-r6Yn`f%<}N zWlYaM?RdU7JnIW=OqRoNUS_2$?TqXdXlV6(LYqnCP0t&!vyMP4SrHnU&C@KCKp0DV zd0tDWsbMG~ATH72BbIIX#{`a5aCoJ^t9aEmBCx)7Qu-?Rl;z7l*EQz^x}t5DEBjVT zTZa2R?vF1X?A5UW%@KsKQDE0I`P4R|qY*6;gze$Mg)E(H$!ALU9g z>(WkvK2s^Ju4SL{gz#2%8q84y;Wg~*koyR^he%JdW~OT+5|HB?hN-1r#m!6ez0 z#83o-I3v*cG$>LT*P8Z^&-qey+`b8Onq{uxoWMHOFqRw(7fngo> zXi!9D=ZIExq(b-7aFH2UjIh}Ij+UD*2H94*x!sCX$Z9dBbmEu=~E zRz;_>wzjp55U$L|Q%=?|Z_&-I8CUW$T5M`TH%xa5G)FI&9W51yYMz=W{b8wCNgimf z^ql;RtidE3wC|iV{ag(!CU=@rf>&t`u98-jtOy)n+A9LOS~m&2>s5^?tRsU7)qJPf zyPsc)2KR}kT}(*DpjFfMBk)krVPag>!Zm@-%j{TztcJM=uH%r7DcH)(_t<>O)4zDn z1{cByYVU^v)n@T7+WY)B(Z~2?Egk$+AhP_E!giGi+Le)XSQjIvYpF&xtOl}!9L`)F zGN()5^-0T?X9`o}(k;!joG&I~#PTd2>9cJ|(cZCnSLp*be`5mBBtPp<+Unnk-H3IW zb0+9V$|<-RdCJO5bP|CuSRn{Egw(wUG(;4w_`ZqtFoJJF%gpl6if}h^{DNN>cmb{9 zyJZ2Jdcv{xj=R{ryQjLPI+p$!TU)9}f8?UTmmFg>0c^sHc!_T%y^L*KQ_?GxLV=`= zS8q00q+mq$MrED{pb#63D;+jx!m*!bs8B_g>R@gLX|4`&sl8W@*T!n L!uB1d5VU^)25DaT diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure52.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure52.class deleted file mode 100644 index f0f475deba2b9c5c02c31d54e821868c4369f933..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3322 zcmcgu?RV2u9DZ)wnbHL|vN4!|hz!oRhXQqr0YUjp>!?N=GhlTSc=}b&T`6>B?`peA%w> zJ#~OT{q6pJ%iF%?ZAyUIIFVAcch^!k}8-jK7a zoRVRSm15BZwAGmuXv|4~enW&gd|++=+b9Y;7)a498&T|$LP9PfflYPWLqS3y%sL3P z#_RT24|-$h#$JKmx;?X2T@>sS*ec64-VY!pnailcZ%#&=90WYS{Ga;?Uu9Q&$1SvC}K ztQ6+|lsCkktifaGMheLRX2)z>MCUrXRVk8Qm&uL4cRhg>1+NLj@_NM`v&ZIU*>(Mo zA0Lkt>NC;n7?D}b$T?IQsvPaC$2y~it9yz9?ToIr3zvQoaFhyxSj&n=^qs1B17~B{ zjjX_WNkB`w0^M~`ujNR^IgCrB=T$VJSq}b$K)i0Z)nP*g7X{Qss6Lk-sdc}Yq9--T z27C)|$8ZTb-|$jgDs-HYKPE{J9kMlRXmWc^2RcSEnYD{X$55P6~};Il3FfU3R@ln)fik{QBi;)yWu^O*7BUL z%B_O;W4MOBD$1CVC_f~#);7T6aqS&3*QM;o0u8!>y9bOWK1rc4-Q^_n(P+5H)TxAI8~jQG@Rf|`&mDS<7UOA%AjT0a#n4N zxl@NN-jTed8GLOzVae+l+k~AtWfzDeYge7Tagq%}atrYg<)r|T=8!x|f##STEIw~w zBQ)=wsb#&RlxsmN*RS|?4q<8m?F-m)D3a*zxr42}hZ@=&61iWoy}jZ5&-^LyHP-}P z09)`JcJL{8&toV5$=wUwg}j|~9_Clxi2@hb=~6b@LAn_2(RQU04fnBoBCK_0Cn7ys zJk_Ihr4qkj`#h3&@lptP(H}x~0Y~m)FpQh{gUVst;HpCW!@DjKDR>p%aPthEM8ZiA zV4DY_e+ghej(Y$FPT(Z}$#~^c0&OFhOyE=-Ucl%B4Evr!%br>nJ<0Itn`>)e{afy( z?;$C|V0#1mhXebnXJ5?Y)GDhnsUq<&TaB%@+8n`YoS|)r`gmZqGck`bE%Xzji3PlQ z^A;{-x*wuReqF#j6Peq%&^?d*O%Iez7)NQtBeW>E#D3sF2ljS&B?4L!+AfwMp~W?m zYnL{imGzd*!?_BCcY3V_Y|^azm>r>K=N{Y%EtI%}tJ0Me=iM(5PY1T+w=nl7HgcWE z2M?$)@(|hrJ{q})YZFxcoZ F%D(}LjvxR4 diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53$_closure54.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53$_closure54.class deleted file mode 100644 index 4f94fd3d62c92eb305108ac41be566d8b7d88850..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3350 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 J-*Fd$@;AUPnw@vE{(Cn;6R`y=@ z`d9Sbv=H-He#&$Dn>^KXX9jkO#baOU!`{6!^Lu%IZ_mAd{Q1kT00!{Az`X4g684;7 zl?>g<%_ItrK3y~tu2FImsbab08qO)(nblp>w#N0+l~Q{)XIpu*PlW;=&muntWhVhy(Zj!zN&!r-v+9nUSQp{ozja%fxWTxW&Nt|hk0h|vXOI> zovUA|h@wFtVli%kE$QmyoHg=>V^}#ODbUnja#@jFs;HMr!&crFh^K2N%*Yq%i?w5N z16k@T*(@!LrUb+VqC8?+rh81_SPhh`L9T(Sb3$NKd%rJj(ts^ zDjEtnVG8qq+MDMN*5C;wB!%QGvtza|p>rMGD&@()70To1-A`df!7BpMoL+Lr?eY0J zcHO{}C&}Z7+NAUYk!N8>6f4!sSl{Tu+5Sta(Kv`c756 zhO<%ZK}KMMivsErRG(IlR=ZzH z(bF1a1HOSbqqu~uZ+JN_6*|V`hbhuSyKK!W#@tcWfsT<+WbC|K&HkCUY&`@k}cqrLQ;_{K8Z-!gBEPTqsB3;;M>i7_ukc zA$3)zbybEHyc@-J>{C(1tVH=f`L((Ymd!3wXs>)pELF}ab)bWlQU#zkm5o-Re4K5q$wniR-h>= z$BX|ru?d>@%+#{p^^|Ky3)e6BbPi!^0d0%edN>mA>b{F@J%{Vs>f+g-v7@c-{Ez%7 z@FmwcT>xA0EOzo=?w-Rgev`ZBxeIwa={(H0yd(uKZqTJ{v_o_;+O6&Gi`PBCp2@J* zk(rEiYq7p=t+Oxw6Lu^haStzqa1R3^WEOGs9tOj>h2N+g#!ap zD;6On?K@fA1g z=p+(OdH`EJ2m{Li2XMjzC~y*|_)W$u|0U2?f=LHXwc$mKKE$x^DOB;)vgApIPv2Zy z0_$IMFMSV55eC~6*gq23S3Ub;0jF14jY<`XzhX7I+G6Hj*j%&MF zhPW2fOs<{Um5i*nY#z>4AiT?KEnu@|J;2-uJv;Z|PHLg}U0jo{q&P2wfp{vg9lMSB z-?5470^WN_g^@?l7V*KzeO#ZU>PL4l&jNh50&L4;Y*aXBVSGcoQJR#+`kXENE&n5o LN5yyCg`oTm&MBPL diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51$_closure53.class deleted file mode 100644 index 9852baaae1bf9bbeae048f3bd76602981c8f1a33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3953 zcmc&%>vt1n9)8{=WokN>g=L*YxE?jiNzdZKRGjS4jnmzkzic8U>b2I0I(6EU+P+J8GUVtG3;F zGuNDbFYP#euTvc|-Q3Baq2O!Xzil z6h=1@((o?nwL*a$h6e=1A*#8}vMqmyz>Wwt7i)PLt=h%}mZwV6S0;~IzTD}$=8Qmh zy6teZZlMc{yzlXTcAl_b$11E&B8IC4HvTM~+QxLOKx+~ST&rU#ny(`DT7iT=Wf95g zK!M*bpb2qv!KpA!hHQF@P7^Q|BPq~SPzqKfLSR*-zct**PZ2OwjlL;~6gI?}x)6vH ze}R?h$lz*2M%`@}=!}e&%lSh?Cy`Wc(vd||6K=*P+7m={#kb1YAsTA>j;oxQZUTjTb3vOYIPnq6` zJV`j>>9#{U`q1Bm9&Dp2Hjj1eKt>(hCUD~w3c?8WR2imWCpmeNgaZgL|D(d3g=^*t z)RBeg*A>f!y17}y9)YEFdA=4zI);>&6SzYq#L6W0BF8XO&Ksz>tRKYV_VgtwyeFur zVO6R_`AT(a1b3=1xJyA0`yClgNOHXqjY zqd1m?1-8Vcs^`==3baS0{N=>!u;HjQpVqMqEvnYL0_n)Y6VU)Q&_OyauC+vg?e*g4 z>&wq&NW)Ix!6Yg;S!GKbv%wIRCxW3Pk>*}TEh!J>HSrwL>jJ2-QSaV5&zKfC>~Ss z@Up;~g%DkYu7+2Wcn$43p24$9%TsE*fp0HUy;^jHmAe=vYchhk;?HS(hW~q_g7ILvpkC=J8j!h zsp;5Edws~}gEzoJRe@!@ZS}UM{~2;q&II)s4O~8Gl_k1pSc0#DB}lZy)T;<+Nve$D z{2Z3U2=+vbZfxW|HVlrZxw{8(QUR@VxTY_WY413THJyD8tqqyNw^-NOaNtXR6!?&1 zh9ZD#a2@`@S*@Hl zzRt54K8L&GIM8A2SLgZK`91UJW9s~1?R>m?{`ti>#2NgDy2bGk$2ExmfV74`X-H}4 z`9F?b4D1sc3iy~8u2l%fdoUE=3^TqJGx0vW9N&&p{3(d8CnMlg4Wd&x6hPFBXK^?L z=6;xj>NM{Sa#okjOV_F*FK9!&IC#+beXNq-(!V_3S*NsBjk5e5H5_sjFC2;8qFAk#?u`42jdt= z6@e<8nZO~*`XJbWRmNZbh3EEB{`2SY;t6o_>_Eapya)r-(^zeIlssGAm{fv UD_4HN`7_Q5TC3x8u42%B1SV@#mH+?% diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50$_closure51.class deleted file mode 100644 index a333066e7423463ef08de2e6502e2505418783d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3710 zcmcgu>30)VAAW9+vgYZIPq$NzU<4@o(^m&z(%0Xa|mZj()lOZ+m{*{qdJ?z5}osp9+*5cOvUd zN!ydATbj&HxaL?{W_{`T+5U3H^QAlBxJOOja_oZX9r04dl4Fls6BSqPGc8}86-#Bu znT(XeuhLs$n3oBGSnkuH{vP?Nv*!OCp7}ab_k2;sjk_c{(zp+L2Lj zI|RBS1LQ(Z(9lKrly7uo(bRcGM_5}2Ul701S+fb7lh}wG7}%4hH!P16j(EELfQ~Kb zYeFx!(iEG=I<_IB4sI5>_9Cf2Og&XvY1mFqo+M#E0?cn!n6pIL7om8-ibs&)t6_Jcm~hun8v?VV7wr3MJ-kr!K~rMBwj*?jz{pQ z(()CxUCXbHsXhfdUdR4R$nXuefQ4@$+emHGTfd=m68%Bu8##yW9x+`@Wp6Bx{d74DbjEL#p&jvkV3c+$4F3iOEOStQwR+m1?0$7agwgEs$-f%&QeEZu3Ve<^*> zaGP|Pe#v~`?g6VT(M?+tY`II2Xo;zR2GEjJ*~0lLEQ1m32@*Zm$agHv9N*>cF2qR% zw9Vo2Es0D==Pa)1+S1V0kSTtRHEj+1KIf&tdmJ+q0bGuM;Y!YGbrr7WomySPRV-L3 z;c=ew%NUCI2^t!B_Yg%4i8DwYD9&QtaHo;($$W)1Gw3{x?ih^TIox;_y;~A(iPN}A z;7x2)t6Nz9b_7>Dy3Qh1oWagcW1uH<2D?WynHlWqn#Is*+!@Ed&(5FgH1?{iLiI}V zpT%9l?J0auCE|FWV;kbXAgy6kLrOz$-+8R!snBo`A8=vN(nP!qgYoq+?p$c8abIA`eN|;*figP8dHN%iuaM>m z$K|1%54m2#lY7+@;+hHhZw>kD0e>+Aa}n31B2iY=xF#2KZAst|O60Ay-Vt(LM`$f0 z_9+@Ob2xhH3plxsb6BcQ=TI5VeF>*y2FFhYN-0d4f6YImRm1%ZJywB`-<3f$0IeA# zZTvr{~pshmxNKjGo? z{*ZV23!MA`%Q(*9<+CK%a}LHFUfpvBFO8D)wJ&j!4tVo7$}ayI%^H(Ej*rN973bZY b-(t2DIKRzVIqx0LA9GI7J{_NM6@&IGHJt+b diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26$_closure50.class deleted file mode 100644 index 74dc5c085c75e24a9fc7517ee93e5d035d412aaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3180 zcmcImYj+bx7=9*6*%Fqvq!*}wh!mQph0rRX6e=Y`txZ8mDHPPW-E7jO>2BQJfc1*^ z;}7vWf|e>r<&&J_Z{n!WY_>_TTMnFqUv_3^=Dj`d`@A!M{r&6j0FL21fy=g2O4}8~ zat+PV7t$q1E0m42XSiNEQ?9z6;heRdCCxK!YesVy-M+kTTSc=}b&N}z>B+UcUbbES zj~wM@ZF=Oe0wK^@a%}tha=NTpC93mJDToRTNwd0LFc!3`OQZfNr)qiTl98S;EW^<} zqfnP<5!e;#&7qp8!1ObXLqV&+rh=W(%4LBA$?P@lx>k$g{QNaT_eKZSFR6%Qi$IIT zuv~%d+2-Ic7)8S|EZrCt=;(7j0;*@qn(IzlMOz@14F$v~mT8R86TILo<&}J%8m2P> z;tJh7VOpj)CNLJ_=6WwT@M>UIU|V0w@MOq2(=)~$M_U#cNe)~M_bo`4&hswMr`H5W zRdk~#jtI63^goeL1G6eR(Hln$&#Bmow#}5@B@pu#Od@&3ci{ghQi9o*x2r7jNsBpQ zdIS>dF%#I5m#)-uA0>Anpg+@!Yhq4gI;@~iU@NmSQ@1YAl?*Mu1L&6kCMA?zaqLG* z;9zJ~ZIn3$LyS}=G*fk0te(KBpw*!irJwnm}CFTyMsnS+1~hjy=BEeF}#+ zj&Yoh;}kNIH7YTZM9ld;V%qRDUr?Zzs5A#z-(pA|4ODB{QSe3$(m=R#4bq?$vzw5p zZ(=HrNn}}MvWe6+3JiwCvXOZe=Wt&7|CWk&bV%}E5J-k18q(1e%m}EAxZdLgPBxog z1MW!`GO$@(isK?K*A&;|QgH)wERM3u5Oy}&P*W9*y`gF(OwY1jg z{0^BP7U)S{Z4%9Sj%k%fWkZeFPAfDrHcV3BD031T(?$gKEso0m!@IR9$l8Sfnp3FKgvYm}WT!*2858`mZ^ynx^FWC;d zn-jfuxBAz?b$Rv%?^CUI6CHl~duSOSZKi`Clc)8E3G>zXVN;4_NNL&iZI;8V=9sb} z&BzZ)K@RGR(^@6?Z_k>Rajv>FZ#cn9?}b{fW=+?m$hc+MlD4+RYfGK9_>S=rl<$G| zGnRZDu{Kza3wD8iIfZkQ?I37z44&BAhgU4HXTT=O-vAehB(vPxUaFgE@O#nOaJoa#uvlpvwAzv}B3D>$=GYg~#*|8H_q z(;8o|wIfDfC#YL`eLB$EPjIFaksr{STE*M9ZX=f+e1LYjx{A5E>>cC=SMbg)X~7SJ z{AqiLP6Zd4cd|Ip*XgGMP*RC~iTRw&r7R2*C^)d!FB_mcVf=>D6s?)}usD~9r0&9! z>g91h$b#dUKwt7UDt}@dzbkO>Q()==604|A-Gehn(GTySLeM{X#KEqIXj4e2D88oN c1Vi1=@l%$kOw?x_zu_3eW`gxCXAvm>0()&_;Q#;t diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_configureWaitTask_closure26.class deleted file mode 100644 index 856d6396f7e100b3818a8ed8af1eee4e3a780e10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8613 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 CVv|?^ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_pluginTaskName_closure34.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_pluginTaskName_closure34.class deleted file mode 100644 index 8fe6444cb088db648e31cf13cf59784bd1c47f1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2815 zcmb_eU31e$6g_Jj6daSp3eXb1+Z1dk!6Z)hvH9Wvs}mS$CQ( zSDrkjK?wBLT*tY)TC5v(jRyQz8j=Eo3dnR8<+9Og62{-2G@E%PiH6 zW^>$Las&$H*y!a_U7CtnG8OI}70{|xT9_;eh#Lai&snzReIRfw>ge>sZJvxe8m{E$ z1hV}#>6MIny<&Otg6kTq0wcNn&3Grm6qwxKbA z8O~l)$lH^dQ!ES3yVgBiqgQ+*{MpX?TElYY(k=3wKo&~BV0)1 zLtM;YC%Sg99zGVx#X1sG&l)ZZWL`uVbc6Fz_#nu9d~L=Uq(h%zJdH722@JPg&7h1k z>cu4Msb47}QvU}cyt;C!SaFuT8M!2>6jL%ad-_dRvICc*$Ew48k-Hf=8a7DPWja0Q zT7wEN8BN)N3N<@3Jw4ljYaKW!uq)1%F9+=VwgdvzO&(DMVj(Zm0=;+e_kw}rZcINs&#Jezik|DEgDGgTNE ze2h1LgfQV5_~?0LmZWlGZ0;^ovPCKdOUlHWKHgX?^LgYRi50Tl?L*(lr za&Le@Dbr_1Q{6 zKcdfZ9M-Q_R0dSSDC2PR5k{ys@78bpg3l+2{N+>Jn%5JB$1oL?+Rkr`aC<4VoqGWJ z2eKR=;m+?oF!2ofI#wp0qBhT?jfaqhpWtnBcGq)sX_R#m-_UNFCRNxiisoDXr?7*$ K`;JcuX#WBU&-&E> diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure1$_closure35.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure1$_closure35.class deleted file mode 100644 index a8457f387c1ad973ddb071aaf78731f25f3c84b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2903 zcmb_eTXz#x6#h<;!^XFdyoWi#PbGB2-*mY^S zQg@7MrsC+On#_38^)lI7!}X*yV>_$5XWG`h?yk7WqAR^dy=c^Ix8caiWNUZ)gaRQj zP;qSg?pmg%TNSe43n_>SOfZsRmt<9MxP;?NIStD*S7qjkw4|eZvb3quC9p5lfg?>- zfeZiDbp<^F-6cD#*J=WXQn_XQuHJO~+S0N#ys5FRpERiG71-fcbw`#inU28jTxZPJ zWm!7XGUSv%Jn4FrIwM=tU3bH->B(uw(boiyrN(ZD`xey5AbFSMGcCm_4MP}K5y5VO z(Ue*E_Z0<3D9p~{Y#vcS@ph`3)l_gnpoh86O+_YKISQr|eIycJL{`N#E(z@9 z2HUhKFdh=icJLZzaE1MUUqe6QOzaN?QlS|Q>2?LVW=S{uU*K#fd@FG;YmfrFifbzJ z_^@esGcFC+ah?wf)FDYGUB?*M-_aqCEN2RK+3Or>!%4%DG^txdz@Hw)NrBPpFU+#W1a+k|NgoTR#h#CfTpAP1=h)b@Q%6DLcZ%u~@O7A)wF$-`xy7wQFSJ!2)W*Ms-| zoN39cjnyUT1Ybt3H_NkNx+bYiTb9k;YFh-O&02J$`$?1Z+JD*N9|ocXv9M~F$d7{E za16pfldRMZ1W}JjzsVPztK??U(l*S{6!Zc;VBf+8g07CM2x&<_+cMl zXcK-286TeLiQ{y}(ag}3-54gQTmX|exq&lJak7aNX(J7ippV4X37giz!1|Z8XY6-a zghCk&?4JqjYrcK4jvMt;S^19eIu zaKI-EFqF9S3yO1uraytPn24kwqs-=6oc>G#@oZo(^$^wHv5VGqtUM)!xo1dhV0G>Z tmKRC2{s>h{y7vzU2cM%)q0WioE3&JSNiI->NclBAV-$miZ)g{R@;8-H1;YRU diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure1.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_setup_closure1.class deleted file mode 100644 index e83c6b6ee926790f3b47604a3e3db5c89ea13078..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3283 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 LI{wACI%xj`(qcGf diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure27.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure27.class deleted file mode 100644 index 46a8395aad9e8356a65a5047f742d618b1df21f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2994 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 P$1#O&7S8WEOF;WC3g%N@ diff --git a/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure31.class b/buildSrc/build-bootstrap/classes/groovy/main/org/opensearch/gradle/test/ClusterFormationTasks$_waitFailed_closure31.class deleted file mode 100644 index 80b41c2e6ca34866e1b2a60f4f6e92d865d65f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3138 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