From 6d39fde31da783c7316b99440d4d2c21534b8ea4 Mon Sep 17 00:00:00 2001 From: Yury-Fridlyand Date: Wed, 31 Aug 2022 12:15:40 -0700 Subject: [PATCH] Add abstractions library to the repo - full copy without changes from `main/HEAD` @ 63bac1681. * Copy abstractions sources * Adopt the abstractions migration * Merge misc files Signed-off-by: Yury-Fridlyand --- .editorconfig | 116 ++++++- .gitignore | 18 +- Directory.Build.targets | 4 +- MAINTAINERS.md | 18 +- abstractions/Directory.Build.props | 14 + abstractions/OpenSearch.svg | 1 + abstractions/README.md | 77 +++++ abstractions/build.bat | 2 + abstractions/build.sh | 3 + abstractions/build/keys/keypair.snk | Bin 0 -> 596 bytes abstractions/build/keys/public.snk | Bin 0 -> 160 bytes abstractions/build/scripts/CommandLine.fs | 70 ++++ abstractions/build/scripts/Paths.fs | 51 +++ abstractions/build/scripts/Program.fs | 59 ++++ abstractions/build/scripts/Targets.fs | 183 +++++++++++ abstractions/build/scripts/scripts.fsproj | 22 ++ abstractions/dotnet-tools.json | 30 ++ abstractions/nuget-icon.png | Bin 0 -> 6685 bytes abstractions/src/Directory.Build.props | 23 ++ .../ClusterAuthentication.cs | 61 ++++ .../ClusterFeatures.cs | 50 +++ .../EphemeralCluster.cs | 133 ++++++++ .../EphemeralClusterComposer.cs | 135 ++++++++ .../EphemeralClusterConfiguration.cs | 102 ++++++ .../EphemeralFileSystem.cs | 87 +++++ .../IEphemeralCluster.cs | 46 +++ .../OpenSearch.OpenSearch.Ephemeral.csproj | 16 + .../Plugins/OpenSearchPlugins.cs | 75 +++++ .../OpenSearch.OpenSearch.Ephemeral/README.md | 60 ++++ .../SecurityRealms.cs | 37 +++ .../CleanUpDirectoriesAfterNodeStopped.cs | 84 +++++ .../CacheOpenSearchInstallation.cs | 57 ++++ .../CreateEphemeralDirectory.cs | 85 +++++ .../BeforeStartNodeTasks/PrintYamlContents.cs | 63 ++++ .../Tasks/IClusterComposeTask.cs | 270 +++++++++++++++ .../CopyCachedOpenSearchInstallation.cs | 51 +++ .../CreateLocalApplicationDirectory.cs | 52 +++ .../DownloadOpenSearchVersion.cs | 60 ++++ .../EnsureJavaHomeEnvironmentVariableIsSet.cs | 63 ++++ .../InstallationTasks/InitialConfiguration.cs | 77 +++++ .../InitialConfigurationOpenDistro.cs | 98 ++++++ .../InitialConfigurationOpenSearch.cs | 148 +++++++++ .../Tasks/InstallationTasks/InstallPlugins.cs | 136 ++++++++ .../InstallationTasks/PrintConfiguration.cs | 76 +++++ .../SetOpenSearchBundledJdkJavaHome.cs | 53 +++ .../InstallationTasks/UnzipOpenSearch.cs | 68 ++++ .../ValidateClusterStateTask.cs | 47 +++ .../ValidationTasks/ValidatePluginsTask.cs | 68 ++++ .../ValidationTasks/ValidateRunningVersion.cs | 81 +++++ .../EphemeralClusterTests.cs | 81 +++++ ...penSearch.OpenSearch.EphemeralTests.csproj | 25 ++ .../ClusterBase.cs | 223 +++++++++++++ .../Configuration/ClusterConfiguration.cs | 172 ++++++++++ .../Configuration/NodeConfiguration.cs | 109 +++++++ .../Configuration/NodeSetting.cs | 50 +++ .../Configuration/NodeSettings.cs | 73 +++++ .../ConsoleWriters/ConsoleLineWriter.cs | 44 +++ .../ConsoleWriters/ExceptionLineParser.cs | 65 ++++ .../ConsoleWriters/IConsoleLineWriter.cs | 53 +++ .../ConsoleWriters/LineHighlightWriter.cs | 251 ++++++++++++++ .../ConsoleWriters/LineOutParser.cs | 165 ++++++++++ .../ConsoleWriters/NoopConsoleLineWriter.cs | 46 +++ .../FileSystem/INodeFileSystem.cs | 79 +++++ .../FileSystem/NodeFileSystem.cs | 116 +++++++ .../OpenSearch.OpenSearch.Managed.csproj | 19 ++ .../OpenSearchCleanExitException.cs | 43 +++ .../OpenSearchCluster.cs | 39 +++ .../OpenSearchNode.cs | 268 +++++++++++++++ .../OpenSearch.OpenSearch.Managed/README.md | 86 +++++ .../OpenSearch.OpenSearch.Xunit.csproj | 15 + .../OpenSearchXunitConfigurationAttribute.cs | 57 ++++ .../OpenSearchXunitRunOptions.cs | 97 ++++++ .../OpenSearchXunitRunner.cs | 37 +++ .../PrintXunitAfterStartedTask.cs | 47 +++ .../src/OpenSearch.OpenSearch.Xunit/README.md | 104 ++++++ .../Sdk/ForEachAsyncExtensions.cs | 49 +++ .../Sdk/OpenSearchTestFramework.cs | 56 ++++ .../Sdk/OpenSearchTestFrameworkDiscoverer.cs | 65 ++++ .../Sdk/TestAssemblyRunner.cs | 307 ++++++++++++++++++ .../Sdk/TestCollectionRunner.cs | 72 ++++ .../Sdk/TestFrameworkExecutor.cs | 115 +++++++ .../XunitClusterBase.cs | 53 +++ .../XunitClusterConfiguration.cs | 60 ++++ .../XunitClusterExtensions.cs | 53 +++ .../XunitPlumbing/IClusterFixture.cs | 40 +++ .../IntegrationTestClusterAttribute.cs | 47 +++ .../IntegrationTestDiscoverer.cs | 136 ++++++++ .../OpenSearchTestCaseDiscoverer.cs | 107 ++++++ .../XunitPlumbing/SkipVersionAttribute.cs | 65 ++++ .../XunitPlumbing/SkippingTestCase.cs | 71 ++++ .../XunitPlumbing/UnitTestDiscoverer.cs | 72 ++++ .../ide-integration.png | Bin 0 -> 19303 bytes .../OpenSearch.OpenSearch.Xunit/output.gif | Bin 0 -> 1711371 bytes .../OpenSearch.Stack.ArtifactsApi/Artifact.cs | 113 +++++++ .../ArtifactBuildState.cs | 37 +++ .../OpenSearch.Stack.ArtifactsApi.csproj | 16 + .../OpenSearchVersion.cs | 174 ++++++++++ .../Platform/OsMonikers.cs | 121 +++++++ .../Products/OpenSearchPlugin.cs | 91 ++++++ .../Products/Product.cs | 81 +++++ .../Products/SubProduct.cs | 70 ++++ .../OpenSearch.Stack.ArtifactsApi/README.md | 57 ++++ .../Resolvers/ApiResolver.cs | 127 ++++++++ .../Resolvers/ReleasedVersionResolver.cs | 86 +++++ .../Resolvers/SnapshotApiResolver.cs | 131 ++++++++ .../Resolvers/StagingVersionResolver.cs | 51 +++ .../ServerType.cs | 38 +++ .../OpenSearch.Stack.ArtifactsApiTests.csproj | 25 ++ .../ReleasedVersionResolverTests.cs | 72 ++++ build/scripts/packages.lock.json | 49 +-- build/scripts/scripts.fsproj | 2 +- nuget.config | 3 +- .../0.1.0-canary.0.277/.nupkg.metadata | 5 - ...nsearch.ephemeral.0.1.0-canary.0.277.nupkg | Bin 76975 -> 0 bytes ....ephemeral.0.1.0-canary.0.277.nupkg.sha512 | 1 - .../opensearch.opensearch.ephemeral.nuspec | 28 -- .../0.1.0-canary.0.277/.nupkg.metadata | 5 - ...pensearch.managed.0.1.0-canary.0.277.nupkg | Bin 71781 -> 0 bytes ...ch.managed.0.1.0-canary.0.277.nupkg.sha512 | 1 - .../opensearch.opensearch.managed.nuspec | 30 -- .../0.1.0-canary.0.277/.nupkg.metadata | 5 - ....opensearch.xunit.0.1.0-canary.0.277.nupkg | Bin 69020 -> 0 bytes ...arch.xunit.0.1.0-canary.0.277.nupkg.sha512 | 1 - .../opensearch.opensearch.xunit.nuspec | 27 -- .../0.1.0-canary.0.277/.nupkg.metadata | 5 - ...tack.artifactsapi.0.1.0-canary.0.277.nupkg | Bin 55595 -> 0 bytes ...tifactsapi.0.1.0-canary.0.277.nupkg.sha512 | 1 - .../opensearch.stack.artifactsapi.nuspec | 31 -- src/ApiGenerator/packages.lock.json | 10 +- .../packages.lock.json | 10 +- .../CatClusterManagerRecord.cs | 3 +- .../CatClusterManagerRequest.cs | 3 +- src/OpenSearch.Client/packages.lock.json | 10 +- .../packages.lock.json | 10 +- src/OpenSearch.Net/packages.lock.json | 20 +- .../Tests.ClusterLauncher/packages.lock.json | 86 ++--- .../Tests.Configuration.csproj | 2 +- tests/Tests.Configuration/packages.lock.json | 49 +-- tests/Tests.Core/Tests.Core.csproj | 2 +- tests/Tests.Core/packages.lock.json | 95 +++--- tests/Tests.Domain/Tests.Domain.csproj | 2 +- tests/Tests.Domain/packages.lock.json | 51 +-- tests/Tests.Reproduce/packages.lock.json | 86 ++--- tests/Tests.ScratchPad/packages.lock.json | 86 ++--- tests/Tests.YamlRunner/packages.lock.json | 10 +- .../CatClusterManagerApiTests.cs | 3 +- .../CatClusterManagerUrlTests.cs | 3 +- tests/Tests/packages.lock.json | 86 ++--- 148 files changed, 8498 insertions(+), 475 deletions(-) create mode 100644 abstractions/Directory.Build.props create mode 100644 abstractions/OpenSearch.svg create mode 100644 abstractions/README.md create mode 100644 abstractions/build.bat create mode 100644 abstractions/build.sh create mode 100644 abstractions/build/keys/keypair.snk create mode 100644 abstractions/build/keys/public.snk create mode 100644 abstractions/build/scripts/CommandLine.fs create mode 100644 abstractions/build/scripts/Paths.fs create mode 100644 abstractions/build/scripts/Program.fs create mode 100644 abstractions/build/scripts/Targets.fs create mode 100644 abstractions/build/scripts/scripts.fsproj create mode 100644 abstractions/dotnet-tools.json create mode 100644 abstractions/nuget-icon.png create mode 100644 abstractions/src/Directory.Build.props create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterAuthentication.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterFeatures.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralCluster.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterComposer.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterConfiguration.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralFileSystem.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/IEphemeralCluster.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/OpenSearch.OpenSearch.Ephemeral.csproj create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Plugins/OpenSearchPlugins.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/README.md create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/SecurityRealms.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/AfterNodeStoppedTasks/CleanUpDirectoriesAfterNodeStopped.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CacheOpenSearchInstallation.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CreateEphemeralDirectory.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/PrintYamlContents.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/IClusterComposeTask.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CopyCachedOpenSearchInstallation.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CreateLocalApplicationDirectory.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/DownloadOpenSearchVersion.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/EnsureJavaHomeEnvironmentVariableIsSet.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfiguration.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenDistro.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenSearch.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InstallPlugins.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/PrintConfiguration.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/SetOpenSearchBundledJdkJavaHome.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/UnzipOpenSearch.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateClusterStateTask.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidatePluginsTask.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateRunningVersion.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.EphemeralTests/EphemeralClusterTests.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.EphemeralTests/OpenSearch.OpenSearch.EphemeralTests.csproj create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/ClusterBase.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/ClusterConfiguration.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeConfiguration.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSetting.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSettings.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ConsoleLineWriter.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ExceptionLineParser.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/IConsoleLineWriter.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineHighlightWriter.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineOutParser.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/NoopConsoleLineWriter.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/INodeFileSystem.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/NodeFileSystem.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearch.OpenSearch.Managed.csproj create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCleanExitException.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCluster.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchNode.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Managed/README.md create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearch.OpenSearch.Xunit.csproj create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitConfigurationAttribute.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunOptions.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunner.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/PrintXunitAfterStartedTask.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/README.md create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/ForEachAsyncExtensions.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFramework.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFrameworkDiscoverer.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestAssemblyRunner.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestCollectionRunner.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestFrameworkExecutor.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterBase.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterConfiguration.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterExtensions.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IClusterFixture.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestClusterAttribute.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestDiscoverer.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/OpenSearchTestCaseDiscoverer.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkipVersionAttribute.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkippingTestCase.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/UnitTestDiscoverer.cs create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/ide-integration.png create mode 100644 abstractions/src/OpenSearch.OpenSearch.Xunit/output.gif create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Artifact.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/ArtifactBuildState.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/OpenSearch.Stack.ArtifactsApi.csproj create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/OpenSearchVersion.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Platform/OsMonikers.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Products/OpenSearchPlugin.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Products/Product.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Products/SubProduct.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/README.md create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Resolvers/ApiResolver.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Resolvers/ReleasedVersionResolver.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Resolvers/SnapshotApiResolver.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/Resolvers/StagingVersionResolver.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApi/ServerType.cs create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApiTests/OpenSearch.Stack.ArtifactsApiTests.csproj create mode 100644 abstractions/src/OpenSearch.Stack.ArtifactsApiTests/ReleasedVersionResolverTests.cs delete mode 100644 packages/opensearch.opensearch.ephemeral/0.1.0-canary.0.277/.nupkg.metadata delete mode 100644 packages/opensearch.opensearch.ephemeral/0.1.0-canary.0.277/opensearch.opensearch.ephemeral.0.1.0-canary.0.277.nupkg delete mode 100644 packages/opensearch.opensearch.ephemeral/0.1.0-canary.0.277/opensearch.opensearch.ephemeral.0.1.0-canary.0.277.nupkg.sha512 delete mode 100644 packages/opensearch.opensearch.ephemeral/0.1.0-canary.0.277/opensearch.opensearch.ephemeral.nuspec delete mode 100644 packages/opensearch.opensearch.managed/0.1.0-canary.0.277/.nupkg.metadata delete mode 100644 packages/opensearch.opensearch.managed/0.1.0-canary.0.277/opensearch.opensearch.managed.0.1.0-canary.0.277.nupkg delete mode 100644 packages/opensearch.opensearch.managed/0.1.0-canary.0.277/opensearch.opensearch.managed.0.1.0-canary.0.277.nupkg.sha512 delete mode 100644 packages/opensearch.opensearch.managed/0.1.0-canary.0.277/opensearch.opensearch.managed.nuspec delete mode 100644 packages/opensearch.opensearch.xunit/0.1.0-canary.0.277/.nupkg.metadata delete mode 100644 packages/opensearch.opensearch.xunit/0.1.0-canary.0.277/opensearch.opensearch.xunit.0.1.0-canary.0.277.nupkg delete mode 100644 packages/opensearch.opensearch.xunit/0.1.0-canary.0.277/opensearch.opensearch.xunit.0.1.0-canary.0.277.nupkg.sha512 delete mode 100644 packages/opensearch.opensearch.xunit/0.1.0-canary.0.277/opensearch.opensearch.xunit.nuspec delete mode 100644 packages/opensearch.stack.artifactsapi/0.1.0-canary.0.277/.nupkg.metadata delete mode 100644 packages/opensearch.stack.artifactsapi/0.1.0-canary.0.277/opensearch.stack.artifactsapi.0.1.0-canary.0.277.nupkg delete mode 100644 packages/opensearch.stack.artifactsapi/0.1.0-canary.0.277/opensearch.stack.artifactsapi.0.1.0-canary.0.277.nupkg.sha512 delete mode 100644 packages/opensearch.stack.artifactsapi/0.1.0-canary.0.277/opensearch.stack.artifactsapi.nuspec diff --git a/.editorconfig b/.editorconfig index 6daa71388b..9788a79bdd 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,21 +2,23 @@ root=true [*.cs] trim_trailing_whitespace=true -insert_final_newline=true [*] +charset = utf-8 +end_of_line = lf indent_style = tab indent_size = 4 +insert_final_newline=true [*.cshtml] indent_style = tab indent_size = 4 -[*.{fs,fsx}] +[*.{fs,fsx,yml}] indent_style = space indent_size = 4 -[*.{md,markdown,json,js,csproj,fsproj,targets,targets,props,yml}] +[*.{md,markdown,json,js,csproj,fsproj,targets,targets,props}] indent_style = space indent_size = 2 @@ -29,11 +31,86 @@ indent_size = 2 # --- # --- -# langugage conventions https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference#language-conventions +# language conventions https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference#language-conventions # Sort using and Import directives with System.* appearing first dotnet_sort_system_directives_first = true +# Style rules +# https://docs.microsoft.com/en-us/dotnet/fundamentals/code-analysis/style-rules/naming-rules?view=vs-2017 + +# Constants always pascal case +dotnet_naming_rule.constants_should_be_pascal_case.symbols = consts +dotnet_naming_rule.constants_should_be_pascal_case.style = consts +dotnet_naming_rule.constants_should_be_pascal_case.severity = suggestion + +dotnet_naming_symbols.consts.applicable_kinds = field +dotnet_naming_symbols.consts.applicable_accessibilities = * +dotnet_naming_symbols.consts.required_modifiers = const + +dotnet_naming_style.consts.capitalization = pascal_case + +# Non-public static fields always pascal case +dotnet_naming_rule.non_public_static_fields_should_be_pascal_case.symbols = non_public_static_fields +dotnet_naming_rule.non_public_static_fields_should_be_pascal_case.style = non_public_static_fields +dotnet_naming_rule.non_public_static_fields_should_be_pascal_case.severity = suggestion + +dotnet_naming_symbols.non_public_static_fields.applicable_kinds = field +dotnet_naming_symbols.non_public_static_fields.applicable_accessibilities = private,protected,internal,protected_internal,private_protected +dotnet_naming_symbols.non_public_static_fields.required_modifiers = static + +dotnet_naming_style.non_public_static_fields.capitalization = pascal_case + +# Non-private readonly fields are pascal case +dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.symbols = non_private_readonly_fields +dotnet_naming_rule.non_private_readonly_fields_should_be_pascal_case.style = non_private_readonly_fields + +dotnet_naming_symbols.non_private_readonly_fields.applicable_kinds = field +dotnet_naming_symbols.non_private_readonly_fields.applicable_accessibilities = public,protected,internal,protected_internal,private_protected +dotnet_naming_symbols.non_private_readonly_fields.required_modifiers = readonly + +dotnet_naming_style.non_private_readonly_fields.capitalization = pascal_case + +# Private instance fields are camel case prefixed underscore +dotnet_naming_rule.private_fields_should_be_camelcase_prefix_underscore.symbols = private_fields +dotnet_naming_rule.private_fields_should_be_camelcase_prefix_underscore.style = private_fields +dotnet_naming_rule.private_fields_should_be_camelcase_prefix_underscore.severity = suggestion + +dotnet_naming_symbols.private_fields.applicable_kinds = field +dotnet_naming_symbols.private_fields.applicable_accessibilities = private + +dotnet_naming_style.private_fields.capitalization = camel_case +dotnet_naming_style.private_fields.required_prefix = _ + +# Locals and parameters are camel case +dotnet_naming_rule.locals.severity = suggestion +dotnet_naming_rule.locals.symbols = locals +dotnet_naming_rule.locals.style = locals + +dotnet_naming_symbols.locals.applicable_kinds = parameter, local + +dotnet_naming_style.locals.capitalization = camel_case + +# Local functions are pascal case +dotnet_naming_rule.local_functions.severity = suggestion +dotnet_naming_rule.local_functions.symbols = local_functions +dotnet_naming_rule.local_functions.style = local_functions + +dotnet_naming_symbols.local_functions.applicable_kinds = local_function + +dotnet_naming_style.local_functions.capitalization = pascal_case + +# Public members always pascal case +dotnet_naming_rule.public_members_should_be_pascal_case.symbols = public_members +dotnet_naming_rule.public_members_should_be_pascal_case.style = public_members +dotnet_naming_rule.public_members_should_be_pascal_case.severity = suggestion + +dotnet_naming_symbols.public_members.applicable_kinds = property,method,field,event,delegate +dotnet_naming_symbols.public_members.applicable_accessibilities = public + +dotnet_naming_style.public_members.capitalization = pascal_case + dotnet_style_qualification_for_field = false:error dotnet_style_qualification_for_property = false:error dotnet_style_qualification_for_method = false:error @@ -82,7 +159,7 @@ csharp_prefer_braces = false:warning csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:error # --- -# formatting conventions https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-formatting-conventions +# formatting conventions https://docs.microsoft.com/en-us/visualstudio/ide/editorconfig-code-style-settings-reference#formatting-conventions # Newline settings (Allman yo!) csharp_new_line_before_open_brace = all @@ -108,15 +185,30 @@ csharp_preserve_single_line_statements = false csharp_preserve_single_line_blocks = true # Resharper -resharper_csharp_braces_for_lock=required_for_complex -resharper_csharp_braces_for_using=required_for_complex -resharper_csharp_braces_for_while=required_for_complex -resharper_csharp_braces_for_foreach=required_for_complex -resharper_csharp_braces_for_for=required_for_complex -resharper_csharp_braces_for_fixed=required_for_complex -resharper_csharp_braces_for_ifelse=required_for_complex +resharper_csharp_braces_for_lock=required_for_multiline +resharper_csharp_braces_for_using=required_for_multiline +resharper_csharp_braces_for_while=required_for_multiline +resharper_csharp_braces_for_foreach=required_for_multiline +resharper_csharp_braces_for_for=required_for_multiline +resharper_csharp_braces_for_fixed=required_for_multiline +resharper_csharp_braces_for_ifelse=required_for_multiline resharper_csharp_accessor_owner_body=expression_body resharper_redundant_case_label_highlighting=do_not_show resharper_redundant_argument_default_value_highlighting=do_not_show + +[Jenkinsfile] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{sh,bat,ps1}] +trim_trailing_whitespace=true +insert_final_newline=true + +[*.sh] +end_of_line = lf diff --git a/.gitignore b/.gitignore index 88f04bb544..192b199099 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ *.cache *.ilk *.log +*.nupkg *.ncrunchsolution [Bb]in [Dd]ebug/ @@ -27,20 +28,20 @@ test-results test-results/* *.lib *.sbr -*.DotSettings.user +*.DotSettings obj/ [Rr]elease*/ -!docs/release-notes _ReSharper*/ _NCrunch*/ [Tt]est[Rr]esult* .fake/* .fake +packages/* +!.paket/paket.bootstrapper.exe paket.exe paket-files/*.cached -BenchmarkDotNet.Artifacts build/* !build/tools !build/keys @@ -54,17 +55,15 @@ build/tools/* !build/*.nuspec !build/*.png !build/*.targets -!build/*.sh !build/scripts -.ci/output - /dep/Newtonsoft.Json.4.0.2 !docs/build docs/node_modules doc/Help +/src/Osc.Tests.Unit/*.ncrunchproject *.ncrunchproject Cache YamlCache @@ -79,13 +78,12 @@ launchSettings.json project.lock.json .vs .vs/* +.vscode/* +.sonarqube/* .ionide .ionide/* + .idea/ *.sln.iml /src/.vs/restore.dg -# temporary location for doc generation -docs-temp -*.binlog -dotnet-tool/* diff --git a/Directory.Build.targets b/Directory.Build.targets index 2a3efcc303..57088725b1 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,8 +1,8 @@ - + true - $(SolutionRoot)\build\keys\keypair.snk + $(SolutionDir)\build\keys\keypair.snk bin/$(Configuration)/$(TargetFramework)/ diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 2599f627a0..38b7ab472b 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -18,14 +18,16 @@ This document explains who the maintainers are (see below), what they do in this ## Current Maintainers -| Maintainer | GitHub ID | Affiliation | -| ------------------------ | --------------------------------------------------- | ----------- | -| Anirudha Jadhav | [anirudha](https://github.com/anirudha) | Amazon | -| Joshua Li | [joshuali925](https://github.com/joshuali925) | Amazon | -| Alex Meizer | [alexmeizer](https://github.com/alexmeizer) | Bit Quill | -| Guian Gumpac | [guiangumpac](https://github.com/guiangumpac) | Bit Quill | -| Raymond Lum | [raymond-lum](https://github.com/raymond-lum) | Bit Quill | -| Yury Fridlyand | [Yury-Fridlyand](https://github.com/Yury-Fridlyand) | Bit Quill | +| Maintainer | GitHub ID | Affiliation | +| ------------------------ | ------------------------------------------------------------------ | ----------- | +| Anirudha Jadhav | [anirudha](https://github.com/anirudha) | Amazon | +| Joshua Li | [joshuali925](https://github.com/joshuali925) | Amazon | +| Guian Gumpac | [guiangumpac](https://github.com/guiangumpac) | Bit Quill | +| Raymond Lum | [raymond-lum](https://github.com/raymond-lum) | Bit Quill | +| Yury Fridlyand | [Yury-Fridlyand](https://github.com/Yury-Fridlyand) | Bit Quill | +| Max Ksyunz | [MaxKsyunz](https://github.com/MaxKsyunz) | Bit Quill | +| Forest Vey | [forestmvey](https://github.com/forestmvey) | Bit Quill | +| Mitchell Gale | [MitchellGale-BitQuill](https://github.com/MitchellGale-BitQuill) | Bit Quill | ## Maintainer Responsibilities diff --git a/abstractions/Directory.Build.props b/abstractions/Directory.Build.props new file mode 100644 index 0000000000..7b8bd0a7dd --- /dev/null +++ b/abstractions/Directory.Build.props @@ -0,0 +1,14 @@ + + + + canary + 0.1 + + latest + true + + + + + + \ No newline at end of file diff --git a/abstractions/OpenSearch.svg b/abstractions/OpenSearch.svg new file mode 100644 index 0000000000..ad4c18df2d --- /dev/null +++ b/abstractions/OpenSearch.svg @@ -0,0 +1 @@ + diff --git a/abstractions/README.md b/abstractions/README.md new file mode 100644 index 0000000000..88b8405474 --- /dev/null +++ b/abstractions/README.md @@ -0,0 +1,77 @@ +![OpenSearch logo](OpenSearch.svg) + +- [OpenSearch .NET abstractions](#opensearch-net-abstractions) + - [OpenSearch.OpenSearch.Managed](#opensearchopensearchmanaged) + - [OpenSearch.OpenSearch.Ephemeral](#opensearchopensearchephemeral) + - [OpenSearch.OpenSearch.Xunit](#opensearchopensearchxunit) + - [OpenSearch.Stack.ArtifactsApi](#opensearchstackartifactsapi) +- [Project Resources](#project-resources) +- [Code of Conduct](#code-of-conduct) +- [Security](#security) +- [License](#license) +- [Copyright](#copyright) + +## Welcome! + +# OpenSearch .NET abstractions + +You've reached the home repository for several auxiliary projects from the .NET team within OpenSearch. + +Current projects: + +### [OpenSearch.OpenSearch.Managed](src/OpenSearch.OpenSearch.Managed/README.md) + +Provides an easy to start/stop one or more OpenSearch instances that exists on disk already + +### [OpenSearch.OpenSearch.Ephemeral](src/OpenSearch.OpenSearch.Ephemeral/README.md) + +Bootstrap (download, install, configure) and run OpenSearch clusters with ease. +Started nodes are run in a new ephemeral location each time they are started and will clean up after they +are disposed. + +### [OpenSearch.OpenSearch.Xunit](src/OpenSearch.OpenSearch.Xunit/README.md) + +Write integration tests against OpenSearch. +Works with `.NET Core` and `.NET 4.6` and up. + +Supports `dotnet xunit`, `dotnet test`, `xunit.console.runner` and tests will be runnable in your IDE through VSTest and jetBrains Rider. + +### [OpenSearch.Stack.ArtifactsApi](src/OpenSearch.Stack.ArtifactsApi/README.md) + +Library to fetch the url and metadata for released artifacts. + +Supports: + +1. Snapshots builds + * `latest-MAJOR` where `MAJOR` is a single integer representing the major you want + * `latest` latest greatest + +2. Released versions + * `MAJOR.MINOR.PATH` where `MAJOR` is still supported as defined by the EOL policy of OpenSearch. + * Note if the version exists but is not yet released it will resolve as a build candidate + +## Project Resources + +* [Project Website](https://opensearch.org/) +* Need help? Try [Forums](https://discuss.opendistrocommunity.dev/) +* [Project Principles](https://opensearch.org/#principles) +* [Contributing to OpenSearch](CONTRIBUTING.md) +* [Maintainer Responsibilities](MAINTAINERS.md) +* [Release Management](RELEASING.md) +* [Admin Responsibilities](ADMINS.md) +* [Security](SECURITY.md) + +## Code of Conduct + +This project has adopted the [Amazon Open Source Code of Conduct](CODE_OF_CONDUCT.md). For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq), or contact [opensource-codeofconduct@amazon.com](mailto:opensource-codeofconduct@amazon.com) with any additional questions or comments. + +## Security +If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/) or directly via email to aws-security@amazon.com. Please do **not** create a public GitHub issue. + +## License + +This project is licensed under the [Apache v2.0 License](LICENSE.txt). + +## Copyright + +Copyright OpenSearch Contributors. See [NOTICE](NOTICE.txt) for details. diff --git a/abstractions/build.bat b/abstractions/build.bat new file mode 100644 index 0000000000..b8df2a0857 --- /dev/null +++ b/abstractions/build.bat @@ -0,0 +1,2 @@ +@echo off +dotnet run --project build/scripts -- %* diff --git a/abstractions/build.sh b/abstractions/build.sh new file mode 100644 index 0000000000..8c4d9c1114 --- /dev/null +++ b/abstractions/build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +set -euo pipefail +dotnet run --project build/scripts -- "$@" diff --git a/abstractions/build/keys/keypair.snk b/abstractions/build/keys/keypair.snk new file mode 100644 index 0000000000000000000000000000000000000000..6de0112e8e0223dcc1bba75a109f6625aa579c68 GIT binary patch literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50096c)1oW$cpIotXE#dNGT+Oi#QKfck|*O~ zA-Wf`!#dWs&I9CLRv=KIG2;J!;Vl1T*S*`e-BkPmQ8BE&3cs*_dlLag5NB(F^Vm<`+pqN)a@#((Z<5&z!h03p@AV&nel zQ#R!KwYOx18^_{VKNfty=!bxuY$v+9+EX#s4DD@0c4rCZGItBbBX$RQKjr8(?fi&- zL>Cc$+f>^9)lP3oG06K!t#md(8QIp^uOMnXK%_>a-w}M4s=(tG4QlY2rlD>xNRkOY z#~pc!niZFwIuIzD0$nRrZ+7&fpPXSOig44U6E481#8Iaq7YCl^l|RbXEGuNVc;?8e zVJ_RbEkkMxV*ZfW-vWbl^Lx9vtfuQ*Fz)g^FB)As5UO- zk`jplSy&V}*w(w{HoY)@@klxbi] Clean + | [] Build + + | [] PristineCheck + | [] GeneratePackages + | [] ValidatePackages + | [] GenerateReleaseNotes + | [] GenerateApiChanges + | [] Release + + | [] CreateReleaseOnGithub + | [] Publish + + | [] SingleTarget of bool + | [] Token of string +with + interface IArgParserTemplate with + member this.Usage = + match this with + | Clean _ -> "clean known output locations" + | Build _ -> "Run build and tests" + | Release _ -> "runs build, and create an validates the packages shy of publishing them" + | Publish _ -> "Runs the full release" + + | SingleTarget _ -> "Runs the provided sub command without running their dependencies" + | Token _ -> "Token to be used to authenticate with github" + + | PristineCheck + | GeneratePackages + | ValidatePackages + | GenerateReleaseNotes + | GenerateApiChanges + | CreateReleaseOnGithub + -> "Undocumented, dependent target" + member this.Name = + match FSharpValue.GetUnionFields(this, typeof) with + | case, _ -> case.Name.ToLowerInvariant() diff --git a/abstractions/build/scripts/Paths.fs b/abstractions/build/scripts/Paths.fs new file mode 100644 index 0000000000..d385b62526 --- /dev/null +++ b/abstractions/build/scripts/Paths.fs @@ -0,0 +1,51 @@ +// SPDX-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 B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. 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. +// + +module Paths + +open System +open System.IO + +let ToolName = "opensearch-net-abstractions" +let Repository = sprintf "opensearch/%s" ToolName +let MainTFM = "netstandard2.0" + +let ValidateAssemblyName = false +let IncludeGitHashInInformational = true +let GenerateApiChanges = false + +let Root = + let mutable dir = DirectoryInfo(".") + while dir.GetFiles("*.sln").Length = 0 do dir <- dir.Parent + Environment.CurrentDirectory <- dir.FullName + dir + +let RootRelative path = Path.GetRelativePath(Root.FullName, path) + +let Output = DirectoryInfo(Path.Combine(Root.FullName, "build", "output")) + +let ToolProject = DirectoryInfo(Path.Combine(Root.FullName, "src", ToolName)) diff --git a/abstractions/build/scripts/Program.fs b/abstractions/build/scripts/Program.fs new file mode 100644 index 0000000000..759b1d1726 --- /dev/null +++ b/abstractions/build/scripts/Program.fs @@ -0,0 +1,59 @@ +// SPDX-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 B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. 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. +// + +module Program + +open Argu +open Bullseye +open ProcNet +open CommandLine + +[] +let main argv = + let parser = ArgumentParser.Create(programName = "./build.sh") + let parsed = + try + let parsed = parser.ParseCommandLine(inputs = argv, raiseOnUsage = true) + let arguments = parsed.GetSubCommand() + Some (parsed, arguments) + with e -> + printfn "%s" e.Message + None + + match parsed with + | None -> 2 + | Some (parsed, arguments) -> + + let target = arguments.Name + + Targets.Setup parsed arguments + let swallowTypes = [typeof; typeof] + + Targets.RunTargetsAndExit + ([target], (fun e -> swallowTypes |> List.contains (e.GetType()) ), ":") + 0 + diff --git a/abstractions/build/scripts/Targets.fs b/abstractions/build/scripts/Targets.fs new file mode 100644 index 0000000000..3b09cc92fd --- /dev/null +++ b/abstractions/build/scripts/Targets.fs @@ -0,0 +1,183 @@ +// SPDX-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 B.V. under one or more contributor +// license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright +// ownership. Elasticsearch B.V. 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. +// + +module Targets + +open Argu +open System +open System.IO +open Bullseye +open CommandLine +open Fake.Tools.Git +open ProcNet + + +let exec binary args = + let r = Proc.Exec (binary, args |> List.map (fun a -> sprintf "\"%s\"" a) |> List.toArray) + match r.HasValue with | true -> r.Value | false -> failwithf "invocation of `%s` timed out" binary + +let private restoreTools = lazy(exec "dotnet" ["tool"; "restore"]) +let private currentVersion = + lazy( + restoreTools.Value |> ignore + let r = Proc.Start("dotnet", "minver", "-d", "canary", "-m", "0.1") + let o = r.ConsoleOut |> Seq.find (fun l -> not(l.Line.StartsWith("MinVer:"))) + o.Line + ) +let private currentVersionInformational = + lazy( + match Paths.IncludeGitHashInInformational with + | false -> currentVersion.Value + | true -> sprintf "%s+%s" currentVersion.Value (Information.getCurrentSHA1( ".")) + ) + +let private clean (arguments:ParseResults) = + if (Paths.Output.Exists) then Paths.Output.Delete (true) + exec "dotnet" ["clean"] |> ignore + +let private build (arguments:ParseResults) = exec "dotnet" ["build"; "-c"; "Release"] |> ignore + +let private pristineCheck (arguments:ParseResults) = + match Information.isCleanWorkingCopy "." with + | true -> printfn "The checkout folder does not have pending changes, proceeding" + | _ -> failwithf "The checkout folder has pending changes, aborting" + +let private generatePackages (arguments:ParseResults) = + let output = Paths.RootRelative Paths.Output.FullName + exec "dotnet" ["pack"; "-c"; "Release"; "-o"; output] |> ignore + +let private validatePackages (arguments:ParseResults) = + let output = Paths.RootRelative <| Paths.Output.FullName + let nugetPackages = + Paths.Output.GetFiles("*.nupkg") |> Seq.sortByDescending(fun f -> f.CreationTimeUtc) + |> Seq.map (fun p -> Paths.RootRelative p.FullName) + + let appVeyorArgs = + if Fake.Core.Environment.environVarAsBool "APPVEYOR" then ["-r"; "true"] else [] + + let args = ["-v"; currentVersionInformational.Value; "-k"; "96c599bbe3e70f5d"; "-t"; output] @ appVeyorArgs + nugetPackages |> Seq.iter (fun p -> exec "dotnet" (["nupkg-validator"; p] @ args) |> ignore) + + +let private generateApiChanges (arguments:ParseResults) = + let output = Paths.RootRelative <| Paths.Output.FullName + let currentVersion = currentVersion.Value + let nugetPackages = + Paths.Output.GetFiles("*.nupkg") |> Seq.sortByDescending(fun f -> f.CreationTimeUtc) + |> Seq.map (fun p -> Path.GetFileNameWithoutExtension(Paths.RootRelative p.FullName).Replace("." + currentVersion, "")) + nugetPackages + |> Seq.iter(fun p -> + let outputFile = + let f = sprintf "breaking-changes-%s.md" p + Path.Combine(output, f) + let args = + [ + "assembly-differ" + (sprintf "previous-nuget|%s|%s|%s" p currentVersion Paths.MainTFM); + (sprintf "directory|src/%s/bin/Release/%s" p Paths.MainTFM); + "-a"; "true"; "--target"; p; "-f"; "github-comment"; "--output"; outputFile + ] + + exec "dotnet" args |> ignore + ) + +let private generateReleaseNotes (arguments:ParseResults) = + let currentVersion = currentVersion.Value + let output = + Paths.RootRelative <| Path.Combine(Paths.Output.FullName, sprintf "release-notes-%s.md" currentVersion) + let tokenArgs = + match arguments.TryGetResult Token with + | None -> [] + | Some token -> ["--token"; token;] + let releaseNotesArgs = + (Paths.Repository.Split("/") |> Seq.toList) + @ ["--version"; currentVersion + "--label"; "enhancement"; "New Features" + "--label"; "bug"; "Bug Fixes" + "--label"; "documentation"; "Docs Improvements" + ] @ tokenArgs + @ ["--output"; output] + + exec "dotnet" (["release-notes"] @ releaseNotesArgs) |> ignore + +let private createReleaseOnGithub (arguments:ParseResults) = + let currentVersion = currentVersion.Value + let tokenArgs = + match arguments.TryGetResult Token with + | None -> [] + | Some token -> ["--token"; token;] + let releaseNotes = Paths.RootRelative <| Path.Combine(Paths.Output.FullName, sprintf "release-notes-%s.md" currentVersion) + let breakingChanges = + let breakingChangesDocs = Paths.Output.GetFiles("breaking-changes-*.md") + breakingChangesDocs + |> Seq.map(fun f -> ["--body"; Paths.RootRelative f.FullName]) + |> Seq.collect id + |> Seq.toList + let releaseArgs = + (Paths.Repository.Split("/") |> Seq.toList) + @ ["create-release" + "--version"; currentVersion + "--body"; releaseNotes; + ] @ breakingChanges @ tokenArgs + + exec "dotnet" (["release-notes"] @ releaseArgs) |> ignore + +let private release (arguments:ParseResults) = printfn "release" + +let private publish (arguments:ParseResults) = printfn "publish" + +let Setup (parsed:ParseResults) (subCommand:Arguments) = + let step (name:string) action = Targets.Target(name, new Action(fun _ -> action(parsed))) + + let cmd (name:string) commandsBefore steps action = + let singleTarget = (parsed.TryGetResult SingleTarget |> Option.defaultValue false) + let deps = + match (singleTarget, commandsBefore) with + | (true, _) -> [] + | (_, Some d) -> d + | _ -> [] + let steps = steps |> Option.defaultValue [] + Targets.Target(name, deps @ steps, Action(action)) + + step Clean.Name clean + cmd Build.Name None (Some [Clean.Name]) <| fun _ -> build parsed + + step PristineCheck.Name pristineCheck + step GeneratePackages.Name generatePackages + step ValidatePackages.Name validatePackages + step GenerateReleaseNotes.Name generateReleaseNotes + step GenerateApiChanges.Name generateApiChanges + cmd Release.Name + (Some [PristineCheck.Name; Build.Name;]) + (Some [GeneratePackages.Name; ValidatePackages.Name; GenerateReleaseNotes.Name; GenerateApiChanges.Name]) + <| fun _ -> release parsed + + step CreateReleaseOnGithub.Name createReleaseOnGithub + cmd Publish.Name + (Some [Release.Name]) + (Some [CreateReleaseOnGithub.Name; ]) + <| fun _ -> publish parsed diff --git a/abstractions/build/scripts/scripts.fsproj b/abstractions/build/scripts/scripts.fsproj new file mode 100644 index 0000000000..b0377d43e3 --- /dev/null +++ b/abstractions/build/scripts/scripts.fsproj @@ -0,0 +1,22 @@ + + + + Exe + net5.0 + false + + + + + + + + + + + + + + + + diff --git a/abstractions/dotnet-tools.json b/abstractions/dotnet-tools.json new file mode 100644 index 0000000000..6da03022c9 --- /dev/null +++ b/abstractions/dotnet-tools.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "minver-cli": { + "version": "2.3.1", + "commands": [ + "minver" + ] + }, + "assembly-differ": { + "version": "0.13.0", + "commands": [ + "assembly-differ" + ] + }, + "release-notes": { + "version": "0.3.0", + "commands": [ + "release-notes" + ] + }, + "nupkg-validator": { + "version": "0.4.0", + "commands": [ + "nupkg-validator" + ] + } + } +} \ No newline at end of file diff --git a/abstractions/nuget-icon.png b/abstractions/nuget-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..edbf28ee833b89b103fbe7f59a67a3ee542c0090 GIT binary patch literal 6685 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 literal 0 HcmV?d00001 diff --git a/abstractions/src/Directory.Build.props b/abstractions/src/Directory.Build.props new file mode 100644 index 0000000000..9612245cd7 --- /dev/null +++ b/abstractions/src/Directory.Build.props @@ -0,0 +1,23 @@ + + + + + OpenSearch Project and contributors + OpenSearch + Apache-2.0 + Git + + + true + ..\..\build\keys\keypair.snk + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + true + nuget-icon.png + + + + + + + diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterAuthentication.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterAuthentication.cs new file mode 100644 index 0000000000..9f69796b96 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterAuthentication.cs @@ -0,0 +1,61 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +namespace OpenSearch.OpenSearch.Ephemeral +{ + /// + /// Authentication credentials for the cluster + /// + public class ClusterAuthentication + { + /// + /// Administrator credentials + /// + public static Credentials Admin => new Credentials {Username = "admin", Role = "admin"}; + + /// + /// User credentials + /// + public static Credentials User => new Credentials {Username = "admin", Role = "admin"}; + + /// + /// Credentials for all users + /// + public static Credentials[] AllUsers { get; } = {Admin, User}; + + /// + /// Authentication credentials + /// + public class Credentials + { + public string Username { get; set; } + public string Role { get; set; } + public string Password => Username; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterFeatures.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterFeatures.cs new file mode 100644 index 0000000000..ce36b0d436 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/ClusterFeatures.cs @@ -0,0 +1,50 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; + +namespace OpenSearch.OpenSearch.Ephemeral +{ + /// + /// Hints to what features the cluster to be started should have. + /// It's up to the to actually bootstrap these features. + /// + [Flags] + public enum ClusterFeatures + { + /// + /// No features + /// + None = 1 << 0, + + /// + /// SSL/TLS for HTTP and Transport layers + /// + SSL = 1 << 3, + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralCluster.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralCluster.cs new file mode 100644 index 0000000000..5f6cae0882 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralCluster.cs @@ -0,0 +1,133 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using OpenSearch.OpenSearch.Managed; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Ephemeral +{ + public class EphemeralCluster : EphemeralCluster + { + public EphemeralCluster(OpenSearchVersion version, int numberOfNodes = 1) + : base(new EphemeralClusterConfiguration(version, ServerType.DEFAULT, ClusterFeatures.None, numberOfNodes: numberOfNodes)) + { + } + + public EphemeralCluster(EphemeralClusterConfiguration clusterConfiguration) : base(clusterConfiguration) + { + } + } + + public abstract class EphemeralCluster : ClusterBase, + IEphemeralCluster + where TConfiguration : EphemeralClusterConfiguration + { + protected EphemeralCluster(TConfiguration clusterConfiguration) : base(clusterConfiguration) => + Composer = new EphemeralClusterComposer(this); + + protected EphemeralClusterComposer Composer { get; } + + public virtual ICollection NodesUris(string hostName = null) + { + hostName = hostName ?? (ClusterConfiguration.HttpFiddlerAware && Process.GetProcessesByName("fiddler").Any() + ? "ipv4.fiddler" + : "localhost"); + var ssl = ClusterConfiguration.EnableSsl ? "s" : ""; + return Nodes + .Select(n => $"http{ssl}://{hostName}:{n.Port ?? 9200}") + .Distinct() + .Select(n => new Uri(n)) + .ToList(); + } + + public bool CachingAndCachedHomeExists() + { + if (!ClusterConfiguration.CacheOpenSearchHomeInstallation) return false; + var cachedOpenSearchHomeFolder = Path.Combine(FileSystem.LocalFolder, GetCacheFolderName()); + return Directory.Exists(cachedOpenSearchHomeFolder); + } + + public virtual string GetCacheFolderName() + { + var config = ClusterConfiguration; + + var sb = new StringBuilder(); + sb.Append(EphemeralClusterComposerBase.InstallationTasks.Count()); + sb.Append("-"); + if (config.EnableSsl) sb.Append("ssl"); + if (config.Plugins != null && config.Plugins.Count > 0) + { + sb.Append("-"); + foreach (var p in config.Plugins.OrderBy(p => p.SubProductName)) + sb.Append(p.SubProductName.ToLowerInvariant()); + } + + var name = sb.ToString(); + + return CalculateSha1(name, Encoding.UTF8); + } + + protected override void OnBeforeStart() + { + Composer.Install(); + Composer.OnBeforeStart(); + } + + protected override void OnDispose() => Composer.OnStop(); + + protected override void OnAfterStarted() => Composer.OnAfterStart(); + + protected override string SeeLogsMessage(string message) + { + var log = Path.Combine(FileSystem.LogsPath, $"{ClusterConfiguration.ClusterName}.log"); + if (!File.Exists(log) || ClusterConfiguration.ShowOpenSearchOutputAfterStarted) return message; + if (!Started) return message; + using (var fileStream = new FileStream(log, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + using (var textReader = new StreamReader(fileStream)) + { + var logContents = textReader.ReadToEnd(); + return message + $" contents of {log}:{Environment.NewLine}" + logContents; + } + } + + public static string CalculateSha1(string text, Encoding enc) + { + var buffer = enc.GetBytes(text); + var cryptoTransformSha1 = new SHA1CryptoServiceProvider(); + return BitConverter.ToString(cryptoTransformSha1.ComputeHash(buffer)) + .Replace("-", "").ToLowerInvariant().Substring(0, 12); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterComposer.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterComposer.cs new file mode 100644 index 0000000000..bd055f4874 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterComposer.cs @@ -0,0 +1,135 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using OpenSearch.OpenSearch.Ephemeral.Tasks; +using OpenSearch.OpenSearch.Ephemeral.Tasks.AfterNodeStoppedTasks; +using OpenSearch.OpenSearch.Ephemeral.Tasks.BeforeStartNodeTasks; +using OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks; +using OpenSearch.OpenSearch.Ephemeral.Tasks.ValidationTasks; +using OpenSearch.OpenSearch.Managed.FileSystem; + +namespace OpenSearch.OpenSearch.Ephemeral +{ + public class EphemeralClusterComposerBase + { + protected EphemeralClusterComposerBase() + { + } + + internal static IEnumerable InstallationTasks { get; } = new List + { + new PrintConfiguration(), + new CreateLocalApplicationDirectory(), + new CopyCachedOpenSearchInstallation(), + new EnsureJavaHomeEnvironmentVariableIsSet(), + new DownloadOpenSearchVersion(), + new UnzipOpenSearch(), + new SetOpenSearchBundledJdkJavaHome(), + new InstallPlugins(), + new InitialConfiguration() + }; + + protected static IEnumerable BeforeStart { get; } = new List + { + new CreateEphemeralDirectory(), + new CacheOpenSearchInstallation() + }; + + protected static IEnumerable NodeStoppedTasks { get; } = new List + { + new CleanUpDirectoriesAfterNodeStopped() + }; + + protected static IEnumerable AfterStartedTasks { get; } = new List + { + new ValidateRunningVersion(), + new ValidateClusterStateTask(), + new ValidatePluginsTask(), + }; + } + + + public class EphemeralClusterComposer : EphemeralClusterComposerBase + where TConfiguration : EphemeralClusterConfiguration + { + private readonly object _lock = new object(); + public EphemeralClusterComposer(IEphemeralCluster cluster) => Cluster = cluster; + + private IEphemeralCluster Cluster { get; } + + private bool NodeStarted { get; set; } + + public void OnStop() => Itterate(NodeStoppedTasks, (t, c, fs) => t.Run(c, NodeStarted), false); + + public void Install() => Itterate(InstallationTasks, (t, c, fs) => t.Run(c)); + + public void OnBeforeStart() + { + var tasks = new List(BeforeStart); + if (Cluster.ClusterConfiguration.AdditionalBeforeNodeStartedTasks != null) + tasks.AddRange(Cluster.ClusterConfiguration.AdditionalBeforeNodeStartedTasks); + + if (Cluster.ClusterConfiguration.PrintYamlFilesInConfigFolder) + tasks.Add(new PrintYamlContents()); + + Itterate(tasks, (t, c, fs) => t.Run(c)); + + NodeStarted = true; + } + + public void OnAfterStart() + { + if (Cluster.ClusterConfiguration.SkipBuiltInAfterStartTasks) return; + var tasks = new List(AfterStartedTasks); + if (Cluster.ClusterConfiguration.AdditionalAfterStartedTasks != null) + tasks.AddRange(Cluster.ClusterConfiguration.AdditionalAfterStartedTasks); + Itterate(tasks, (t, c, fs) => t.Run(c), false); + } + + private void Itterate(IEnumerable collection, + Action, INodeFileSystem> act, bool callOnStop = true) + { + lock (_lock) + { + var cluster = Cluster; + foreach (var task in collection) + try + { + act(task, cluster, cluster.FileSystem); + } + catch (Exception) + { + if (callOnStop) OnStop(); + throw; + } + } + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterConfiguration.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterConfiguration.cs new file mode 100644 index 0000000000..748763faff --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralClusterConfiguration.cs @@ -0,0 +1,102 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using OpenSearch.OpenSearch.Ephemeral.Plugins; +using OpenSearch.OpenSearch.Ephemeral.Tasks; +using OpenSearch.OpenSearch.Managed.Configuration; +using OpenSearch.Stack.ArtifactsApi; +using OpenSearch.Stack.ArtifactsApi.Products; + +namespace OpenSearch.OpenSearch.Ephemeral +{ + public class EphemeralClusterConfiguration : ClusterConfiguration + { + public EphemeralClusterConfiguration(OpenSearchVersion version, ServerType serverType, OpenSearchPlugins plugins = null, + int numberOfNodes = 1) + : this(version, serverType, ClusterFeatures.None, plugins, numberOfNodes) + { + } + + public EphemeralClusterConfiguration(OpenSearchVersion version, ServerType serverType, ClusterFeatures features, + OpenSearchPlugins plugins = null, int numberOfNodes = 1) + : base(version, serverType, (v, s) => new EphemeralFileSystem(v, s), numberOfNodes, EphemeralClusterName) + { + Features = features; + + var pluginsList = plugins?.ToList() ?? new List(); + Plugins = new OpenSearchPlugins(pluginsList); + } + + private static string UniqueishSuffix => Guid.NewGuid().ToString("N").Substring(0, 6); + private static string EphemeralClusterName => $"ephemeral-cluster-{UniqueishSuffix}"; + + /// + /// The features supported by the cluster + /// + public ClusterFeatures Features { get; } + + /// + /// The collection of plugins to install + /// + public OpenSearchPlugins Plugins { get; } + + /// + /// Validates that the plugins to install can be installed on the target OpenSearch version. + /// This can be useful to fail early when subsequent operations are relying on installation + /// succeeding. + /// + public bool ValidatePluginsToInstall { get; } = true; + + public bool EnableSsl => Features.HasFlag(ClusterFeatures.SSL); + + public IList AdditionalBeforeNodeStartedTasks { get; } = new List(); + + public IList AdditionalAfterStartedTasks { get; } = new List(); + + /// + /// Expert level setting, skips all built-in validation tasks for cases where you need to guarantee your call is the + /// first call into the cluster + /// + public bool SkipBuiltInAfterStartTasks { get; set; } + + /// Bootstrapping HTTP calls should attempt to auto route traffic through fiddler if its running + public bool HttpFiddlerAware { get; set; } + + protected virtual string NodePrefix => "ephemeral"; + + public override string CreateNodeName(int? node) + { + var suffix = Guid.NewGuid().ToString("N").Substring(0, 6); + return $"{NodePrefix}-node-{suffix}{node}"; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralFileSystem.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralFileSystem.cs new file mode 100644 index 0000000000..9eebfa981c --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/EphemeralFileSystem.cs @@ -0,0 +1,87 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.FileSystem; +using OpenSearch.Stack.ArtifactsApi; +using OpenSearch.Stack.ArtifactsApi.Products; + +namespace OpenSearch.OpenSearch.Ephemeral +{ + public class EphemeralFileSystem : NodeFileSystem + { + public EphemeralFileSystem(OpenSearchVersion version, string clusterName) : base(version, + EphemeralHome(version, clusterName)) => ClusterName = clusterName; + + private string ClusterName { get; } + + public string TempFolder => Path.Combine(Path.GetTempPath(), SubFolder, Artifact.LocalFolderName, ClusterName); + + public override string ConfigPath => Path.Combine(TempFolder, "config"); + public override string LogsPath => Path.Combine(TempFolder, "logs"); + public override string RepositoryPath => Path.Combine(TempFolder, "repositories"); + public override string DataPath => Path.Combine(TempFolder, "data"); + + //certificates + public string CertificateFolderName => "node-certificates"; + public string CertificateNodeName => "node01"; + public string ClientCertificateName => "cn=John Doe,ou=example,o=com"; + public string ClientCertificateFilename => "john_doe"; + + public string CertificatesPath => Path.Combine(ConfigPath, CertificateFolderName); + + public string CaCertificate => Path.Combine(CertificatesPath, "ca", "ca") + ".crt"; + + public string NodePrivateKey => + Path.Combine(CertificatesPath, CertificateNodeName, CertificateNodeName) + ".key"; + + public string NodeCertificate => + Path.Combine(CertificatesPath, CertificateNodeName, CertificateNodeName) + ".crt"; + + public string ClientCertificate => + Path.Combine(CertificatesPath, ClientCertificateFilename, ClientCertificateFilename) + ".crt"; + + public string ClientPrivateKey => + Path.Combine(CertificatesPath, ClientCertificateFilename, ClientCertificateFilename) + ".key"; + + public string UnusedCertificateFolderName => $"unused-{CertificateFolderName}"; + public string UnusedCertificatesPath => Path.Combine(ConfigPath, UnusedCertificateFolderName); + public string UnusedCaCertificate => Path.Combine(UnusedCertificatesPath, "ca", "ca") + ".crt"; + + public string UnusedClientCertificate => + Path.Combine(UnusedCertificatesPath, ClientCertificateFilename, ClientCertificateFilename) + ".crt"; + + + protected static string EphemeralHome(OpenSearchVersion version, string clusterName) + { + var temp = Path.Combine(Path.GetTempPath(), SubFolder, + version.Artifact(Product.OpenSearch).LocalFolderName, clusterName); + return Path.Combine(temp, "home"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/IEphemeralCluster.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/IEphemeralCluster.cs new file mode 100644 index 0000000000..d97995713a --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/IEphemeralCluster.cs @@ -0,0 +1,46 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using OpenSearch.OpenSearch.Managed; + +namespace OpenSearch.OpenSearch.Ephemeral +{ + public interface IEphemeralCluster + { + ICollection NodesUris(string hostName = null); + string GetCacheFolderName(); + bool CachingAndCachedHomeExists(); + } + + public interface IEphemeralCluster : IEphemeralCluster, ICluster + where TConfiguration : EphemeralClusterConfiguration + { + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/OpenSearch.OpenSearch.Ephemeral.csproj b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/OpenSearch.OpenSearch.Ephemeral.csproj new file mode 100644 index 0000000000..994e437929 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/OpenSearch.OpenSearch.Ephemeral.csproj @@ -0,0 +1,16 @@ + + + + netstandard2.0;net461 + Provides an EphemeralCluster implementation that can download/bootstrap/run a throwaway customizable OpenSearch cluster + opensearch,opensearch,cluster,ephemeral + false + + + + + + + + + diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Plugins/OpenSearchPlugins.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Plugins/OpenSearchPlugins.cs new file mode 100644 index 0000000000..c74af2f9eb --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Plugins/OpenSearchPlugins.cs @@ -0,0 +1,75 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using OpenSearch.Stack.ArtifactsApi.Products; + +namespace OpenSearch.OpenSearch.Ephemeral.Plugins +{ + public class OpenSearchPlugins : ReadOnlyCollection + { + public OpenSearchPlugins(IList list) : base(list) + { + } + + public OpenSearchPlugins(params OpenSearchPlugin[] list) : base(list) + { + } + + public static OpenSearchPlugins Supported { get; } = + new OpenSearchPlugins(new List + { + OpenSearchPlugin.AnalysisIcu, + OpenSearchPlugin.AnalysisKuromoji, + OpenSearchPlugin.AnalysisPhonetic, + OpenSearchPlugin.AnalysisSmartCn, + OpenSearchPlugin.AnalysisStempel, + OpenSearchPlugin.AnalysisUkrainian, + OpenSearchPlugin.DiscoveryAzureClassic, + OpenSearchPlugin.DiscoveryEC2, + OpenSearchPlugin.DiscoveryFile, + OpenSearchPlugin.DiscoveryGCE, + OpenSearchPlugin.IngestAttachment, + OpenSearchPlugin.IngestGeoIp, + OpenSearchPlugin.IngestUserAgent, + OpenSearchPlugin.MapperAttachment, + OpenSearchPlugin.MapperMurmur3, + OpenSearchPlugin.MapperSize, + OpenSearchPlugin.RepositoryAzure, + OpenSearchPlugin.RepositoryGCS, + OpenSearchPlugin.RepositoryHDFS, + OpenSearchPlugin.RepositoryS3, + OpenSearchPlugin.StoreSMB, + OpenSearchPlugin.DeleteByQuery, + }); + + public override string ToString() => string.Join(", ", Items.Select(s => s.SubProductName)); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/README.md b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/README.md new file mode 100644 index 0000000000..39f5814d22 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/README.md @@ -0,0 +1,60 @@ +# OpenSearch.Managed.Ephemeral + +Bootstrap (download, install, configure) and run OpenSearch clusters with ease. +Started nodes are run in a new ephemeral location each time they are started and will clean up after they +are disposed. + + +## EphemeralCluster + +A `ClusterBase` implementation from `OpenSearch.Managed` that can: + +* download opensearch versions (stable releases, snapshots, build candidates) +* download opensearch plugins (stable releases, snapshots, build candidates) +* install opensearch and desired plugins in an ephemeral location. The source downloaded zips are cached +on disk (LocalAppData). +* Ships with builtin knowledge on how to enable SSL on the running cluster. +* Start opensearch using ephemeral locations for OPENSEARCH_HOME and conf/logs/data paths. + + +#### Examples: + +The easiest way to get started is by simply passing the version you want to be bootstrapped to `EphemeralCluster`. +`Start` starts the `OpenSearchNode`'s and waits for them to be started. The default overload waits `2 minutes`. + +```csharp +using (var cluster = new EphemeralCluster("1.0.0")) +{ + cluster.Start(); +} +``` + +If you want the full configuration possibilities inject a `EphemeralClusterConfiguration` instead: + + +```csharp +var plugins = new OpenSearchPlugins(OpenSearchPlugin.RepositoryAzure, OpenSearchPlugin.IngestAttachment); +var config = new EphemeralClusterConfiguration("1.0.0", ServerType.OpenSearch, ClusterFeatures.None, plugins, numberOfNodes: 2); +using (var cluster = new EphemeralCluster(config)) +{ + cluster.Start(); + + var nodes = cluster.NodesUris(); + var connectionPool = new StaticConnectionPool(nodes); + var settings = new ConnectionSettings(connectionPool).EnableDebugMode(); + var client = new OpenSearchClient(settings); + + Console.Write(client.CatPlugins().DebugInformation); +} +``` +Here we first create a `OpenSearchPlugins` collection of the plugins that we want to bootstrap. +Then we create an instance of `EphemeralClusterConfiguration` that dictates we want a 2 node cluster +running opensearch using the previous declared `plugins`. + +We then Start the node and after its up create a `OSC` client using the `NodeUris()` that the cluster +started. + +We call `/_cat/plugins` and write `OSC`'s debug information to the console. + +When the cluster exits the using block and disposes the cluster all nodes will be shutdown gracefully. + diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/SecurityRealms.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/SecurityRealms.cs new file mode 100644 index 0000000000..76bf8c751c --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/SecurityRealms.cs @@ -0,0 +1,37 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +namespace OpenSearch.OpenSearch.Ephemeral +{ + public static class SecurityRealms + { + public const string FileRealm = "file1"; + + public const string PkiRealm = "pki1"; + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/AfterNodeStoppedTasks/CleanUpDirectoriesAfterNodeStopped.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/AfterNodeStoppedTasks/CleanUpDirectoriesAfterNodeStopped.cs new file mode 100644 index 0000000000..8acaa36384 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/AfterNodeStoppedTasks/CleanUpDirectoriesAfterNodeStopped.cs @@ -0,0 +1,84 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.AfterNodeStoppedTasks +{ + public class CleanUpDirectoriesAfterNodeStopped : IClusterTeardownTask + { + public void Run(IEphemeralCluster cluster, bool nodeStarted) + { + var fs = cluster.FileSystem; + var w = cluster.Writer; + var a = cluster.ClusterConfiguration.Artifact; + if (cluster.ClusterConfiguration.NoCleanupAfterNodeStopped) + { + w.WriteDiagnostic( + $"{{{nameof(CleanUpDirectoriesAfterNodeStopped)}}} skipping cleanup as requested on cluster configuration"); + return; + } + + DeleteDirectory(w, "cluster data", fs.DataPath); + DeleteDirectory(w, "cluster config", fs.ConfigPath); + DeleteDirectory(w, "cluster logs", fs.LogsPath); + DeleteDirectory(w, "repositories", fs.RepositoryPath); + var efs = fs as EphemeralFileSystem; + if (!string.IsNullOrWhiteSpace(efs?.TempFolder)) + DeleteDirectory(w, "cluster temp folder", efs.TempFolder); + + if (efs != null) + { + var extractedFolder = Path.Combine(fs.LocalFolder, a.FolderInZip); + if (extractedFolder != fs.OpenSearchHome) + DeleteDirectory(w, "ephemeral OPENSEARCH_HOME", fs.OpenSearchHome); + //if the node was not started delete the cached extractedFolder + if (!nodeStarted) + DeleteDirectory(w, "cached extracted folder - node failed to start", extractedFolder); + } + + //if the node did not start make sure we delete the cached folder as we can not assume its in a good state + var cachedOpenSearchHomeFolder = Path.Combine(fs.LocalFolder, cluster.GetCacheFolderName()); + if (cluster.ClusterConfiguration.CacheOpenSearchHomeInstallation && !nodeStarted) + DeleteDirectory(w, "cached installation - node failed to start", cachedOpenSearchHomeFolder); + else + w.WriteDiagnostic( + $"{{{nameof(CleanUpDirectoriesAfterNodeStopped)}}} Leaving [cached folder] on disk: {{{cachedOpenSearchHomeFolder}}}"); + } + + private static void DeleteDirectory(IConsoleLineHandler w, string description, string path) + { + if (!Directory.Exists(path)) return; + w.WriteDiagnostic( + $"{{{nameof(CleanUpDirectoriesAfterNodeStopped)}}} attempting to delete [{description}]: {{{path}}}"); + Directory.Delete(path, true); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CacheOpenSearchInstallation.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CacheOpenSearchInstallation.cs new file mode 100644 index 0000000000..85a0a1fc89 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CacheOpenSearchInstallation.cs @@ -0,0 +1,57 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.BeforeStartNodeTasks +{ + public class CacheOpenSearchInstallation : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + if (!cluster.ClusterConfiguration.CacheOpenSearchHomeInstallation) return; + + var fs = cluster.FileSystem; + var cachedOpenSearchHomeFolder = Path.Combine(fs.LocalFolder, cluster.GetCacheFolderName()); + var cachedOpenSearchConfig = Path.Combine(cachedOpenSearchHomeFolder, "config"); + if (File.Exists(cachedOpenSearchConfig)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CacheOpenSearchInstallation)}}} cached home already exists [{cachedOpenSearchHomeFolder}]"); + return; + } + + var source = fs.OpenSearchHome; + var target = cachedOpenSearchHomeFolder; + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CacheOpenSearchInstallation)}}} caching {{{source}}} to [{target}]"); + CopyFolder(source, target, false); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CreateEphemeralDirectory.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CreateEphemeralDirectory.cs new file mode 100644 index 0000000000..67e77cbc8b --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/CreateEphemeralDirectory.cs @@ -0,0 +1,85 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.OpenSearch.Managed.FileSystem; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.BeforeStartNodeTasks +{ + public class CreateEphemeralDirectory : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + var fs = cluster.FileSystem; + if (!(fs is EphemeralFileSystem f)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CreateEphemeralDirectory)}}} unexpected IFileSystem implementation {{{fs.GetType()}}}"); + return; + } + + cluster.Writer?.WriteDiagnostic($"{{{nameof(CreateEphemeralDirectory)}}} creating {{{f.TempFolder}}}"); + + Directory.CreateDirectory(f.TempFolder); + + if (!Directory.Exists(f.ConfigPath)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CreateEphemeralDirectory)}}} creating config folder {{{f.ConfigPath}}}"); + Directory.CreateDirectory(f.ConfigPath); + } + + CopyHomeConfigToEphemeralConfig(cluster, f, fs); + } + + private static void CopyHomeConfigToEphemeralConfig(IEphemeralCluster cluster, + EphemeralFileSystem ephemeralFileSystem, INodeFileSystem fs) + { + var target = ephemeralFileSystem.ConfigPath; + var cachedOpenSearchHomeFolder = Path.Combine(fs.LocalFolder, cluster.GetCacheFolderName()); + var cachedOpenSearchYaml = Path.Combine(cachedOpenSearchHomeFolder, "config", "opensearch.yaml"); + + var homeSource = + cluster.ClusterConfiguration.CacheOpenSearchHomeInstallation && File.Exists(cachedOpenSearchYaml) + ? cachedOpenSearchHomeFolder + : fs.OpenSearchHome; + var source = Path.Combine(homeSource, "config"); + if (!Directory.Exists(source)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CreateEphemeralDirectory)}}} source config {{{source}}} does not exist nothing to copy"); + return; + } + + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CreateEphemeralDirectory)}}} copying cached {{{source}}} as to [{target}]"); + CopyFolder(source, target); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/PrintYamlContents.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/PrintYamlContents.cs new file mode 100644 index 0000000000..d525d8eb65 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/BeforeStartNodeTasks/PrintYamlContents.cs @@ -0,0 +1,63 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using System.Linq; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.BeforeStartNodeTasks +{ + public class PrintYamlContents : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + var c = cluster.ClusterConfiguration; + var v = c.Version; + var fs = cluster.FileSystem; + + var files = Directory.GetFiles(fs.ConfigPath, "*.yml", SearchOption.AllDirectories); + foreach (var file in files) DumpFile(cluster, file); + } + + private static void DumpFile(IEphemeralCluster cluster, string configFile) + { + if (!File.Exists(configFile)) + { + cluster.Writer.WriteDiagnostic( + $"{{{nameof(PrintYamlContents)}}} skipped printing [{configFile}] as it does not exists"); + return; + } + + var fileName = Path.GetFileName(configFile); + cluster.Writer.WriteDiagnostic($"{{{nameof(PrintYamlContents)}}} printing [{configFile}]"); + var lines = File.ReadAllLines(configFile).ToList(); + foreach (var l in lines.Where(l => !string.IsNullOrWhiteSpace(l) && !l.StartsWith("#"))) + cluster.Writer.WriteDiagnostic($"{{{nameof(PrintYamlContents)}}} [{fileName}] {l}"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/IClusterComposeTask.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/IClusterComposeTask.cs new file mode 100644 index 0000000000..3117162100 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/IClusterComposeTask.cs @@ -0,0 +1,270 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Compression; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.Net.Security; +using System.Runtime.InteropServices; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using ICSharpCode.SharpZipLib.GZip; +using ICSharpCode.SharpZipLib.Tar; +using ProcNet; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks +{ + public interface IClusterComposeTask + { + void Run(IEphemeralCluster cluster); + } + + public interface IClusterTeardownTask + { + /// + /// Called when the cluster disposes, used to clean up after itself. + /// + /// The cluster configuration of the node that was started + /// Whether the cluster composer was successful in starting the node + void Run(IEphemeralCluster cluster, bool nodeStarted); + } + + public abstract class ClusterComposeTask : IClusterComposeTask + { + protected static bool IsWindows { get; } = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); + protected static string BinarySuffix => IsWindows ? ".bat" : string.Empty; + public abstract void Run(IEphemeralCluster cluster); + + protected static void DownloadFile(string from, string to) + { + if (File.Exists(to)) return; + var http = new HttpClient(); + using (var stream = http.GetStreamAsync(new Uri(from)).GetAwaiter().GetResult()) + using (var fileStream = File.Create(to)) + { + stream.CopyTo(fileStream); + fileStream.Flush(); + } + } + + protected string GetResponseException(HttpResponseMessage m) => + $"Code: {m?.StatusCode} Reason: {m?.ReasonPhrase} Content: {GetResponseString(m)}"; + + protected string GetResponseString(HttpResponseMessage m) => + m?.Content?.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult() ?? string.Empty; + + protected HttpResponseMessage Get(IEphemeralCluster cluster, string path, + string query) => + Call(cluster, path, query, (c, u, t) => c.GetAsync(u, t)); + + protected HttpResponseMessage Post(IEphemeralCluster cluster, string path, + string query, string json) => + Call(cluster, path, query, + (c, u, t) => c.PostAsync(u, new StringContent(json, Encoding.UTF8, "application/json"), t)); + + private HttpResponseMessage Call( + IEphemeralCluster cluster, + string path, + string query, + Func> verb) + { + var q = string.IsNullOrEmpty(query) ? "pretty=true" : query + "&pretty=true"; + var statusUrl = new UriBuilder(cluster.NodesUris().First()) {Path = path, Query = q}.Uri; + + var tokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(20)); + var handler = new HttpClientHandler + { + AutomaticDecompression = + DecompressionMethods.Deflate | DecompressionMethods.GZip | DecompressionMethods.None, + }; + cluster.Writer.WriteDiagnostic( + $"{{{nameof(Call)}}} [{statusUrl}] SSL: {cluster.ClusterConfiguration.EnableSsl}"); + if (cluster.ClusterConfiguration.EnableSsl) + { +#if !NETSTANDARD + ServicePointManager.ServerCertificateValidationCallback += ServerCertificateValidationCallback; +#else + handler.ServerCertificateCustomValidationCallback += (m, c, cn, p) => true; +#endif + } + + using (var client = new HttpClient(handler) {Timeout = TimeSpan.FromSeconds(20)}) + { + if (cluster.ClusterConfiguration.EnableSsl) + { + var byteArray = + Encoding.ASCII.GetBytes( + $"{ClusterAuthentication.Admin.Username}:{ClusterAuthentication.Admin.Password}"); + client.DefaultRequestHeaders.Authorization = + new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray)); + } + + try + { + var response = verb(client, statusUrl, tokenSource.Token).ConfigureAwait(false).GetAwaiter() + .GetResult(); + if (!response.IsSuccessStatusCode) + { + cluster.Writer.WriteDiagnostic( + $"{{{nameof(Call)}}} [{statusUrl}] Unsuccessful status code: [{(int) response.StatusCode}]"); + var body = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); + foreach (var l in (body ?? string.Empty).Split('\n', '\r')) + cluster.Writer.WriteDiagnostic($"{{{nameof(Call)}}} [{statusUrl}] returned [{l}]"); + } + + return response; + } + catch (Exception e) + { + cluster.Writer.WriteError($"{{{nameof(Call)}}} [{statusUrl}] exception: {e}"); + throw; + } + finally + { +#if !NETSTANDARD + ServicePointManager.ServerCertificateValidationCallback -= ServerCertificateValidationCallback; +#endif + } + } + } + + private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, + X509Chain chain, SslPolicyErrors sslpolicyerrors) => true; + + protected static void WriteFileIfNotExist(string fileLocation, string contents) + { + if (!File.Exists(fileLocation)) File.WriteAllText(fileLocation, contents); + } + + protected static void ExecuteBinary(EphemeralClusterConfiguration config, IConsoleLineHandler writer, + string binary, string description, params string[] arguments) => + ExecuteBinaryInternal(config, writer, binary, description, null, arguments); + + protected static void ExecuteBinary(EphemeralClusterConfiguration config, IConsoleLineHandler writer, + string binary, string description, StartedHandler startedHandler, params string[] arguments) => + ExecuteBinaryInternal(config, writer, binary, description, startedHandler, arguments); + + private static void ExecuteBinaryInternal(EphemeralClusterConfiguration config, IConsoleLineHandler writer, + string binary, string description, StartedHandler startedHandler, params string[] arguments) + { + var command = $"{{{binary}}} {{{string.Join(" ", arguments)}}}"; + writer?.WriteDiagnostic($"{{{nameof(ExecuteBinary)}}} starting process [{description}] {command}"); + + var timeout = TimeSpan.FromSeconds(420); + var processStartArguments = new StartArguments(binary, arguments) + { + Environment = new Dictionary + { + {config.FileSystem.ConfigEnvironmentVariableName, config.FileSystem.ConfigPath}, + {"OPENSEARCH_HOME", config.FileSystem.OpenSearchHome}, + // Duplicate all env vars for ES_* prefix for backward compatibility with OpenDistro and ElasticSearch; + // unused env vars would be just ignored. + {config.FileSystem.ConfigEnvironmentVariableName.Replace("OPENSEARCH", "ES"), config.FileSystem.ConfigPath}, + {"ES_HOME", config.FileSystem.OpenSearchHome} + } + }; + + var result = startedHandler != null + ? Proc.Start(processStartArguments, timeout, new ConsoleOutColorWriter(), startedHandler) + : Proc.Start(processStartArguments, timeout, new ConsoleOutColorWriter()); + + if (!result.Completed) + throw new Exception($"Timeout while executing {description} exceeded {timeout}"); + + if (result.ExitCode != 0) + throw new Exception( + $"Expected exit code 0 but received ({result.ExitCode}) while executing {description}: {command}"); + + var errorOut = result.ConsoleOut.Where(c => c.Error).ToList(); + + if (errorOut.Any(e => + !string.IsNullOrWhiteSpace(e.Line) && !e.Line.Contains("usage of JAVA_HOME is deprecated")) && + !binary.Contains("plugin") && !binary.Contains("cert")) + throw new Exception( + $"Received error out with exitCode ({result.ExitCode}) while executing {description}: {command}"); + + writer?.WriteDiagnostic( + $"{{{nameof(ExecuteBinary)}}} finished process [{description}] {{{result.ExitCode}}}"); + } + + protected static void CopyFolder(string source, string target, bool overwrite = true) + { + foreach (var sourceDir in Directory.GetDirectories(source, "*", SearchOption.AllDirectories)) + { + var targetDir = sourceDir.Replace(source, target); + Directory.CreateDirectory(targetDir); + } + + foreach (var sourcePath in Directory.GetFiles(source, "*.*", SearchOption.AllDirectories)) + { + var targetPath = sourcePath.Replace(source, target); + if (!overwrite && File.Exists(targetPath)) continue; + File.Copy(sourcePath, targetPath, overwrite); + } + } + + protected static void Extract(string file, string toFolder) + { + if (file.EndsWith(".zip")) ExtractZip(file, toFolder); + else if (file.EndsWith(".tar.gz")) ExtractTarGz(file, toFolder); + else if (file.EndsWith(".tar")) ExtractTar(file, toFolder); + else throw new Exception("Can not extract:" + file); + } + + private static void ExtractTar(string file, string toFolder) + { + using (var inStream = File.OpenRead(file)) + using (var tarArchive = TarArchive.CreateInputTarArchive(inStream)) + tarArchive.ExtractContents(toFolder); + } + + private static void ExtractTarGz(string file, string toFolder) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + using (var inStream = File.OpenRead(file)) + using (var gzipStream = new GZipInputStream(inStream)) + using (var tarArchive = TarArchive.CreateInputTarArchive(gzipStream)) + tarArchive.ExtractContents(toFolder); + else + //SharpZipLib loses permissions when untarring + Proc.Exec("tar", "-xvf", file, "-C", toFolder); + } + + private static void ExtractZip(string file, string toFolder) => + ZipFile.ExtractToDirectory(file, toFolder); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CopyCachedOpenSearchInstallation.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CopyCachedOpenSearchInstallation.cs new file mode 100644 index 0000000000..5c7862de44 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CopyCachedOpenSearchInstallation.cs @@ -0,0 +1,51 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class CopyCachedOpenSearchInstallation : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + if (!cluster.ClusterConfiguration.CacheOpenSearchHomeInstallation) return; + + var fs = cluster.FileSystem; + var cachedOpenSearchHomeFolder = Path.Combine(fs.LocalFolder, cluster.GetCacheFolderName()); + if (!Directory.Exists(cachedOpenSearchHomeFolder)) return; + + var source = cachedOpenSearchHomeFolder; + var target = fs.OpenSearchHome; + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CopyCachedOpenSearchInstallation)}}} using cached OPENSEARCH_HOME {{{source}}} and copying it to [{target}]"); + CopyFolder(source, target); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CreateLocalApplicationDirectory.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CreateLocalApplicationDirectory.cs new file mode 100644 index 0000000000..35c8e98ec0 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/CreateLocalApplicationDirectory.cs @@ -0,0 +1,52 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class CreateLocalApplicationDirectory : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + var fs = cluster.FileSystem; + if (Directory.Exists(fs.LocalFolder)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CreateLocalApplicationDirectory)}}} already exists: {{{fs.LocalFolder}}}"); + return; + } + + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(CreateLocalApplicationDirectory)}}} creating {{{fs.LocalFolder}}}"); + + Directory.CreateDirectory(fs.LocalFolder); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/DownloadOpenSearchVersion.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/DownloadOpenSearchVersion.cs new file mode 100644 index 0000000000..e652724364 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/DownloadOpenSearchVersion.cs @@ -0,0 +1,60 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.Stack.ArtifactsApi.Products; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class DownloadOpenSearchVersion : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + if (cluster.CachingAndCachedHomeExists()) return; + + var fs = cluster.FileSystem; + var v = cluster.ClusterConfiguration.Version; + var a = cluster.ClusterConfiguration.Artifact; + var from = v.Artifact(Product.OpenSearch).DownloadUrl; + var to = Path.Combine(fs.LocalFolder, a.Archive); + if (File.Exists(to)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(DownloadOpenSearchVersion)}}} {v} was already downloaded"); + return; + } + + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(DownloadOpenSearchVersion)}}} downloading OpenSearch [{v}] from {{{from}}} {{{to}}}"); + DownloadFile(from, to); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(DownloadOpenSearchVersion)}}} downloaded OpenSearch [{v}] from {{{from}}} {{{to}}}"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/EnsureJavaHomeEnvironmentVariableIsSet.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/EnsureJavaHomeEnvironmentVariableIsSet.cs new file mode 100644 index 0000000000..faa8a00641 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/EnsureJavaHomeEnvironmentVariableIsSet.cs @@ -0,0 +1,63 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class EnsureJavaHomeEnvironmentVariableIsSet : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + var fs = cluster.FileSystem; + + var envVarName = cluster.ClusterConfiguration.JavaHomeEnvironmentVariable; + var javaHome = Environment.GetEnvironmentVariable(envVarName); + var cachedOpenSearchHomeFolder = Path.Combine(fs.LocalFolder, cluster.GetCacheFolderName()); + var jdkFolder = Path.Combine(cachedOpenSearchHomeFolder, "jdk"); + if (Directory.Exists(jdkFolder)) + { + //prefer bundled jdk + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(EnsureJavaHomeEnvironmentVariableIsSet)}}} [{envVarName}] is set to bundled jdk: {{{jdkFolder}}} "); + Environment.SetEnvironmentVariable("JAVA_HOME", jdkFolder); + } + else if (!string.IsNullOrWhiteSpace(javaHome)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(EnsureJavaHomeEnvironmentVariableIsSet)}}} [{envVarName}] is set; clearing value for process to prefer bundled jdk..."); + Environment.SetEnvironmentVariable(envVarName, null); + } + else + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(EnsureJavaHomeEnvironmentVariableIsSet)}}} {envVarName} is not set proceeding or using default JDK"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfiguration.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfiguration.cs new file mode 100644 index 0000000000..c806617546 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfiguration.cs @@ -0,0 +1,77 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class InitialConfiguration : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + if (cluster.CachingAndCachedHomeExists()) return; + + if (cluster.ClusterConfiguration.Artifact.ServerType == ServerType.ElasticSearch) + { + cluster.Writer?.WriteDiagnostic($"{{{nameof(Run)}}} skipping for ElasticSearch"); + return; + } + + var fs = cluster.FileSystem; + var script = Path.Combine(fs.OpenSearchHome, "server-initial-config.sh"); + + if (cluster.ClusterConfiguration.Artifact.ServerType == ServerType.OpenSearch) + File.WriteAllText(script, InitialConfigurationOpenSearch.GetConfigurationScript(cluster.ClusterConfiguration.Version)); + if (cluster.ClusterConfiguration.Artifact.ServerType == ServerType.OpenDistro) + File.WriteAllText(script, InitialConfigurationOpenDistro.GetConfigurationScript()); + + cluster.Writer?.WriteDiagnostic($"{{{nameof(Run)}}} going to run [server-initial-config.sh]"); + + ExecuteBinary( + cluster.ClusterConfiguration, + cluster.Writer, + "/bin/bash", + "run initial cluster configuration", + script); + + if (!cluster.ClusterConfiguration.EnableSsl) + { + if (cluster.ClusterConfiguration.Artifact.ServerType == ServerType.OpenSearch) + File.AppendAllText(Path.Combine(fs.OpenSearchHome, "config", "opensearch.yml"), "plugins.security.disabled: true"); + if (cluster.ClusterConfiguration.Artifact.ServerType == ServerType.OpenDistro) + File.AppendAllText(Path.Combine(fs.OpenSearchHome, "config", "elasticsearch.yml"), "opendistro_security.disabled: true"); + } + + if (cluster.ClusterConfiguration.Artifact.ServerType == ServerType.ElasticSearch && cluster.ClusterConfiguration.EnableSsl) + throw new NotImplementedException("ElasticSearch with SSL is not supported"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenDistro.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenDistro.cs new file mode 100644 index 0000000000..43647a60b9 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenDistro.cs @@ -0,0 +1,98 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + internal class InitialConfigurationOpenDistro + { + // Actually, it is content of file `opendistro-tar-install.sh` shipped + // in the tarball, but due to (1) this file might be changed and + // (2) we have to modify the file before execution, because it launches + // the server what we want to do on our own, it is decided to have a + // snapshot of this file. + // The script is taken from v.1.13.3, last 3 lines omitted. + public static string GetConfigurationScript() => +@"#!/bin/bash + +ES_HOME=`dirname $(realpath $0)`; cd $ES_HOME +ES_KNN_LIB_DIR=$ES_HOME/plugins/opendistro-knn/knn-lib +##Security Plugin +bash $ES_HOME/plugins/opendistro_security/tools/install_demo_configuration.sh -y -i -s + +##Perf Plugin +chmod 755 $ES_HOME/plugins/opendistro-performance-analyzer/pa_bin/performance-analyzer-agent +chmod 755 $ES_HOME/bin/performance-analyzer-agent-cli +echo ""done security"" +PA_AGENT_JAVA_OPTS=""-Dlog4j.configurationFile=$ES_HOME/plugins/opendistro-performance-analyzer/pa_config/log4j2.xml \ + -Xms64M -Xmx64M -XX:+UseSerialGC -XX:CICompilerCount=1 -XX:-TieredCompilation -XX:InitialCodeCacheSize=4096 \ + -XX:InitialBootClassLoaderMetaspaceSize=30720 -XX:MaxRAM=400m"" + +ES_MAIN_CLASS=""com.amazon.opendistro.elasticsearch.performanceanalyzer.PerformanceAnalyzerApp"" \ +ES_ADDITIONAL_CLASSPATH_DIRECTORIES=plugins/opendistro-performance-analyzer \ +ES_JAVA_OPTS=$PA_AGENT_JAVA_OPTS + +if ! grep -q '## OpenDistro Performance Analyzer' $ES_HOME/config/jvm.options; then + CLK_TCK=`/usr/bin/getconf CLK_TCK` + echo >> $ES_HOME/config/jvm.options + echo '## OpenDistro Performance Analyzer' >> $ES_HOME/config/jvm.options + echo ""-Dclk.tck=$CLK_TCK"" >> $ES_HOME/config/jvm.options + echo ""-Djdk.attach.allowAttachSelf=true"" >> $ES_HOME/config/jvm.options + echo ""-Djava.security.policy=$ES_HOME/plugins/opendistro-performance-analyzer/pa_config/es_security.policy"" >> $ES_HOME/config/jvm.options +fi +echo ""done plugins"" + +##Check KNN lib existence in ES TAR distribution +echo ""Checking kNN library"" +FILE=`ls $ES_KNN_LIB_DIR/libKNNIndex*.so` +if test -f ""$FILE""; then + echo ""FILE EXISTS $FILE"" +else + echo ""TEST FAILED OR FILE NOT EXIST $FILE"" +fi + +##Set KNN Dylib Path for macOS and *nix systems +if echo ""$OSTYPE"" | grep -qi ""darwin""; then + if echo ""$JAVA_LIBRARY_PATH"" | grep -q ""$ES_KNN_LIB_DIR""; then + echo ""KNN lib path has been set"" + else + export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:$ES_KNN_LIB_DIR + echo ""KNN lib path not found, set new path"" + echo $JAVA_LIBRARY_PATH + fi +else + if echo ""$LD_LIBRARY_PATH"" | grep -q ""$ES_KNN_LIB_DIR""; then + echo ""KNN lib path has been set"" + else + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ES_KNN_LIB_DIR + echo ""KNN lib path not found, set new path"" + echo $LD_LIBRARY_PATH + fi +fi +"; + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenSearch.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenSearch.cs new file mode 100644 index 0000000000..6dd58b203b --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InitialConfigurationOpenSearch.cs @@ -0,0 +1,148 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + internal class InitialConfigurationOpenSearch + { + // Actually, it is content of file `opensearch-tar-install.sh` shipped + // in the tarball, but due to (1) this file might be changed and + // (2) we have to modify the file before execution, because it launches + // the server what we want to do on our own, it is decided to have a + // snapshot of this file. + // The script is taken from v.1.2.4, last 3 lines omitted. + public static string GetConfigurationScript(OpenSearchVersion version) + { + if (version < (OpenSearchVersion)"2.0.0") + return +@"#!/bin/bash + +# Copyright OpenSearch Contributors +# SPDX-License-Identifier: Apache-2.0 + +OPENSEARCH_HOME=`dirname $(realpath $0)`; cd $OPENSEARCH_HOME +KNN_LIB_DIR=$OPENSEARCH_HOME/plugins/opensearch-knn/knnlib +##Security Plugin +bash $OPENSEARCH_HOME/plugins/opensearch-security/tools/install_demo_configuration.sh -y -i -s + +##Perf Plugin +chmod 755 $OPENSEARCH_HOME/plugins/opensearch-performance-analyzer/pa_bin/performance-analyzer-agent +chmod 755 $OPENSEARCH_HOME/bin/performance-analyzer-agent-cli +echo ""done security"" +PA_AGENT_JAVA_OPTS=""-Dlog4j.configurationFile=$OPENSEARCH_HOME/plugins/opensearch-performance-analyzer/pa_config/log4j2.xml \ + -Xms64M -Xmx64M -XX:+UseSerialGC -XX:CICompilerCount=1 -XX:-TieredCompilation -XX:InitialCodeCacheSize=4096 \ + -XX:InitialBootClassLoaderMetaspaceSize=30720 -XX:MaxRAM=400m"" + +OPENSEARCH_MAIN_CLASS=""org.opensearch.performanceanalyzer.PerformanceAnalyzerApp"" \ +OPENSEARCH_ADDITIONAL_CLASSPATH_DIRECTORIES=plugins/opensearch-performance-analyzer \ +OPENSEARCH_JAVA_OPTS=$PA_AGENT_JAVA_OPTS + +if ! grep -q '## OpenSearch Performance Analyzer' $OPENSEARCH_HOME/config/jvm.options; then + CLK_TCK=`/usr/bin/getconf CLK_TCK` + echo >> $OPENSEARCH_HOME/config/jvm.options + echo '## OpenSearch Performance Analyzer' >> $OPENSEARCH_HOME/config/jvm.options + echo ""-Dclk.tck=$CLK_TCK"" >> $OPENSEARCH_HOME/config/jvm.options + echo ""-Djdk.attach.allowAttachSelf=true"" >> $OPENSEARCH_HOME/config/jvm.options + echo ""-Djava.security.policy=$OPENSEARCH_HOME/plugins/opensearch-performance-analyzer/pa_config/opensearch_security.policy"" >> $OPENSEARCH_HOME/config/jvm.options +fi +echo ""done plugins"" + +##Set KNN Dylib Path for macOS and *nix systems +if echo ""$OSTYPE"" | grep -qi ""darwin""; then + if echo ""$JAVA_LIBRARY_PATH"" | grep -q ""$KNN_LIB_DIR""; then + echo ""k-NN libraries found in JAVA_LIBRARY_PATH"" + else + export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:$KNN_LIB_DIR + echo ""k-NN libraries not found in JAVA_LIBRARY_PATH. Updating path to: $JAVA_LIBRARY_PATH."" + fi +else + if echo ""$LD_LIBRARY_PATH"" | grep -q ""$KNN_LIB_DIR""; then + echo ""k-NN libraries found in LD_LIBRARY_PATH"" + else + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$KNN_LIB_DIR + echo ""k-NN libraries not found in LD_LIBRARY_PATH. Updating path to: $LD_LIBRARY_PATH."" + fi +fi +"; + return + //script from 2.0.0 + @"#!/bin/bash + +# Copyright OpenSearch Contributors +# SPDX-License-Identifier: Apache-2.0 + +export OPENSEARCH_HOME=`dirname $(realpath $0)` +export OPENSEARCH_PATH_CONF=$OPENSEARCH_HOME/config +cd $OPENSEARCH_HOME + +KNN_LIB_DIR=$OPENSEARCH_HOME/plugins/opensearch-knn/lib +##Security Plugin +bash $OPENSEARCH_HOME/plugins/opensearch-security/tools/install_demo_configuration.sh -y -i -s + +echo ""done security"" +PA_AGENT_JAVA_OPTS=""-Dlog4j.configurationFile=$OPENSEARCH_PATH_CONF/opensearch-performance-analyzer/log4j2.xml \ + -Xms64M -Xmx64M -XX:+UseSerialGC -XX:CICompilerCount=1 -XX:-TieredCompilation -XX:InitialCodeCacheSize=4096 \ + -XX:MaxRAM=400m"" + +OPENSEARCH_MAIN_CLASS=""org.opensearch.performanceanalyzer.PerformanceAnalyzerApp"" \ +OPENSEARCH_ADDITIONAL_CLASSPATH_DIRECTORIES=plugins/opensearch-performance-analyzer \ +OPENSEARCH_JAVA_OPTS=$PA_AGENT_JAVA_OPTS + +if ! grep -q '## OpenSearch Performance Analyzer' $OPENSEARCH_PATH_CONF/jvm.options; then + CLK_TCK=`/usr/bin/getconf CLK_TCK` + echo >> $OPENSEARCH_PATH_CONF/jvm.options + echo '## OpenSearch Performance Analyzer' >> $OPENSEARCH_PATH_CONF/jvm.options + echo ""-Dclk.tck=$CLK_TCK"" >> $OPENSEARCH_PATH_CONF/jvm.options + echo ""-Djdk.attach.allowAttachSelf=true"" >> $OPENSEARCH_PATH_CONF/jvm.options + echo ""-Djava.security.policy=$OPENSEARCH_PATH_CONF/opensearch-performance-analyzer/opensearch_security.policy"" >> $OPENSEARCH_PATH_CONF/jvm.options + echo ""--add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED"" >> $OPENSEARCH_PATH_CONF/jvm.options +fi +echo ""done plugins"" + +##Set KNN Dylib Path for macOS and *nix systems +if echo ""$OSTYPE"" | grep -qi ""darwin""; then + if echo ""$JAVA_LIBRARY_PATH"" | grep -q ""$KNN_LIB_DIR""; then + echo ""k-NN libraries found in JAVA_LIBRARY_PATH"" + else + export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:$KNN_LIB_DIR + echo ""k-NN libraries not found in JAVA_LIBRARY_PATH. Updating path to: $JAVA_LIBRARY_PATH."" + fi +else + if echo ""$LD_LIBRARY_PATH"" | grep -q ""$KNN_LIB_DIR""; then + echo ""k-NN libraries found in LD_LIBRARY_PATH"" + else + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$KNN_LIB_DIR + echo ""k-NN libraries not found in LD_LIBRARY_PATH. Updating path to: $LD_LIBRARY_PATH."" + fi +fi +"; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InstallPlugins.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InstallPlugins.cs new file mode 100644 index 0000000000..bb8e06049e --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/InstallPlugins.cs @@ -0,0 +1,136 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.IO; +using System.Linq; +using OpenSearch.OpenSearch.Managed; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.OpenSearch.Managed.FileSystem; +using OpenSearch.Stack.ArtifactsApi; +using OpenSearch.Stack.ArtifactsApi.Products; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class InstallPlugins : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + if (cluster.CachingAndCachedHomeExists()) return; + + var v = cluster.ClusterConfiguration.Version; + + var fs = cluster.FileSystem; + var requiredPlugins = cluster.ClusterConfiguration.Plugins; + + if (cluster.ClusterConfiguration.ValidatePluginsToInstall) + { + var invalidPlugins = requiredPlugins + .Where(p => !p.IsValid(v)) + .Select(p => p.SubProductName).ToList(); + if (invalidPlugins.Any()) + throw new OpenSearchCleanExitException( + $"Can not install the following plugins for version {v}: {string.Join(", ", invalidPlugins)} "); + } + + foreach (var plugin in requiredPlugins) + { + var includedByDefault = plugin.IsIncludedOutOfTheBox(v); + if (includedByDefault) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(Run)}}} SKIP plugin [{plugin.SubProductName}] shipped OOTB as of: {{{plugin.ShippedByDefaultAsOf}}}"); + continue; + } + + var validForCurrentVersion = plugin.IsValid(v); + if (!validForCurrentVersion) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(Run)}}} SKIP plugin [{plugin.SubProductName}] not valid for version: {{{v}}}"); + continue; + } + + var alreadyInstalled = AlreadyInstalled(fs, plugin.SubProductName); + if (alreadyInstalled) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(Run)}}} SKIP plugin [{plugin.SubProductName}] already installed"); + continue; + } + + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(Run)}}} attempting install [{plugin.SubProductName}] as it's not OOTB: {{{plugin.ShippedByDefaultAsOf}}} and valid for {v}: {{{plugin.IsValid(v)}}}"); + + if (!Directory.Exists(fs.ConfigPath)) Directory.CreateDirectory(fs.ConfigPath); + ExecuteBinary( + cluster.ClusterConfiguration, + cluster.Writer, + fs.PluginBinary, + $"install opensearch plugin: {plugin.SubProductName}", + "install --batch", GetPluginLocation(plugin, v)); + + CopyConfigDirectoryToHomeCacheConfigDirectory(cluster, plugin); + } + } + + private static string GetPluginLocation(OpenSearchPlugin plugin, OpenSearchVersion v) + { + // OpenSearch 1.0.0 artifacts were not published. The plugins are built in the workflow and used here. + if (v == "1.0.0") + // The environment variable is set in the integration workflow in + // https://github.com/opensearch-project/opensearch-net/blob/main/.github/workflows/integration.yml + return "file://" + Environment.GetEnvironmentVariable("plugins-directory") + $"/{plugin.SubProductName}-{v}.zip"; + else + return plugin.SubProductName; + } + + private static void CopyConfigDirectoryToHomeCacheConfigDirectory( + IEphemeralCluster cluster, OpenSearchPlugin plugin) + { + if (!cluster.ClusterConfiguration.CacheOpenSearchHomeInstallation) return; + var fs = cluster.FileSystem; + var cachedOpenSearchHomeFolder = Path.Combine(fs.LocalFolder, cluster.GetCacheFolderName()); + var configTarget = Path.Combine(cachedOpenSearchHomeFolder, "config"); + + var configPluginPath = Path.Combine(fs.ConfigPath, plugin.SubProductName); + var configPluginPathCached = Path.Combine(configTarget, plugin.SubProductName); + if (!Directory.Exists(configPluginPath) || Directory.Exists(configPluginPathCached)) return; + + Directory.CreateDirectory(configPluginPathCached); + CopyFolder(configPluginPath, configPluginPathCached); + } + + private static bool AlreadyInstalled(INodeFileSystem fileSystem, string folderName) + { + var pluginFolder = Path.Combine(fileSystem.OpenSearchHome, "plugins", folderName); + return Directory.Exists(pluginFolder); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/PrintConfiguration.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/PrintConfiguration.cs new file mode 100644 index 0000000000..42248300c5 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/PrintConfiguration.cs @@ -0,0 +1,76 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Linq; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using static OpenSearch.OpenSearch.Ephemeral.ClusterFeatures; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class PrintConfiguration : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + var c = cluster.ClusterConfiguration; + var version = c.Version; + + string F(ClusterFeatures feature) + { + return c.Features.HasFlag(feature) ? Enum.GetName(typeof(ClusterFeatures), feature) : string.Empty; + } + + var features = string.Join("|", + new[] { F(SSL)}.Where(v => !string.IsNullOrWhiteSpace(v))); + features = string.IsNullOrWhiteSpace(features) ? "None" : features; + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} starting {{{version}}} with features [{features}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.NumberOfNodes)}}} [{c.NumberOfNodes}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.ClusterName)}}} [{c.ClusterName}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.EnableSsl)}}} [{c.EnableSsl}]"); + cluster.Writer?.WriteDiagnostic($"{{{nameof(PrintConfiguration)}}} {{{nameof(c.Plugins)}}} [{c.Plugins}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.CacheOpenSearchHomeInstallation)}}} [{c.CacheOpenSearchHomeInstallation}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.ShowOpenSearchOutputAfterStarted)}}} [{c.ShowOpenSearchOutputAfterStarted}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.ValidatePluginsToInstall)}}} [{c.ValidatePluginsToInstall}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.PrintYamlFilesInConfigFolder)}}} [{c.PrintYamlFilesInConfigFolder}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.SkipBuiltInAfterStartTasks)}}} [{c.SkipBuiltInAfterStartTasks}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.HttpFiddlerAware)}}} [{c.HttpFiddlerAware}]"); + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(PrintConfiguration)}}} {{{nameof(c.NoCleanupAfterNodeStopped)}}} [{c.NoCleanupAfterNodeStopped}]"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/SetOpenSearchBundledJdkJavaHome.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/SetOpenSearchBundledJdkJavaHome.cs new file mode 100644 index 0000000000..82a28dac64 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/SetOpenSearchBundledJdkJavaHome.cs @@ -0,0 +1,53 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class SetOpenSearchBundledJdkJavaHome : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + var fs = cluster.FileSystem; + var jdkFolder = Path.Combine(fs.OpenSearchHome, "jdk"); + if (Directory.Exists(jdkFolder)) + { + var envVarName = cluster.ClusterConfiguration.JavaHomeEnvironmentVariable; + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(SetOpenSearchBundledJdkJavaHome)}}} [{envVarName}] is set to bundled jdk: {{{jdkFolder}}} "); + Environment.SetEnvironmentVariable(envVarName, jdkFolder); + } + else + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(SetOpenSearchBundledJdkJavaHome)}}} [No bundled jdk found] looked in: {{{jdkFolder}}} "); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/UnzipOpenSearch.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/UnzipOpenSearch.cs new file mode 100644 index 0000000000..81a80693f4 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/InstallationTasks/UnzipOpenSearch.cs @@ -0,0 +1,68 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.IO; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks +{ + public class UnzipOpenSearch : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + if (cluster.CachingAndCachedHomeExists()) return; + + var fs = cluster.FileSystem; + var v = cluster.ClusterConfiguration.Version; + var a = cluster.ClusterConfiguration.Artifact; + if (Directory.Exists(fs.OpenSearchHome)) + { + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(UnzipOpenSearch)}}} skipping [{fs.OpenSearchHome}] already exists"); + return; + } + + var from = Path.Combine(fs.LocalFolder, a.Archive); + var extractedFolder = Path.Combine(fs.LocalFolder, a.FolderInZip); + if (!Directory.Exists(extractedFolder)) + { + cluster.Writer?.WriteDiagnostic($"{{{nameof(UnzipOpenSearch)}}} unzipping version [{v}] {{{from}}}"); + Extract(from, fs.LocalFolder); + + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(UnzipOpenSearch)}}} extracted version [{v}] to {{{fs.LocalFolder}}}"); + } + + if (extractedFolder == fs.OpenSearchHome) return; + + cluster.Writer?.WriteDiagnostic( + $"{{{nameof(UnzipOpenSearch)}}} Copying extracted folder {{{extractedFolder}}} => {fs.OpenSearchHome}"); + CopyFolder(extractedFolder, fs.OpenSearchHome); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateClusterStateTask.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateClusterStateTask.cs new file mode 100644 index 0000000000..1778867b89 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateClusterStateTask.cs @@ -0,0 +1,47 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Net; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.ValidationTasks +{ + public class ValidateClusterStateTask : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + cluster.Writer.WriteDiagnostic( + $"{{{nameof(ValidateClusterStateTask)}}} waiting cluster to go into yellow health state"); + var healthyResponse = Get(cluster, "_cluster/health", "wait_for_status=yellow&timeout=20s"); + if (healthyResponse == null || healthyResponse.StatusCode != HttpStatusCode.OK) + throw new Exception( + $"Cluster health waiting for status yellow failed after 20s {GetResponseException(healthyResponse)}"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidatePluginsTask.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidatePluginsTask.cs new file mode 100644 index 0000000000..045a53b263 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidatePluginsTask.cs @@ -0,0 +1,68 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Linq; +using OpenSearch.OpenSearch.Ephemeral.Tasks.InstallationTasks; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.ValidationTasks +{ + public class ValidatePluginsTask : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + var v = cluster.ClusterConfiguration.Version; + var requestPlugins = cluster.ClusterConfiguration.Plugins + .Where(p => p.IsValid(v)) + .Where(p => !p.IsIncludedOutOfTheBox(v)) + .Select(p => p.GetExistsMoniker(v)) + .ToList(); + if (!requestPlugins.Any()) return; + + cluster.Writer.WriteDiagnostic( + $"{{{nameof(ValidatePluginsTask)}}} validating the cluster is running the requested plugins"); + var catPlugins = Get(cluster, "_cat/plugins", "h=component"); + if (catPlugins == null || !catPlugins.IsSuccessStatusCode) + throw new Exception( + $"Calling _cat/plugins did not result in an OK response {GetResponseException(catPlugins)}"); + + var installedPlugins = GetResponseString(catPlugins) + .Split(new[] {'\n'}, StringSplitOptions.RemoveEmptyEntries).ToList(); + + var missingPlugins = requestPlugins.Except(installedPlugins).ToList(); + if (!missingPlugins.Any()) return; + + var missingString = string.Join(", ", missingPlugins); + var pluginsString = string.Join(", ", installedPlugins); + throw new Exception( + $"Already running opensearch missed the following plugin(s): {missingString} currently installed: {pluginsString}."); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateRunningVersion.cs b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateRunningVersion.cs new file mode 100644 index 0000000000..286e0cb294 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Ephemeral/Tasks/ValidationTasks/ValidateRunningVersion.cs @@ -0,0 +1,81 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Linq; +using System.Net.Http; +using System.Threading; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Ephemeral.Tasks.ValidationTasks +{ + public class ValidateRunningVersion : ClusterComposeTask + { + public override void Run(IEphemeralCluster cluster) + { + void WriteDiagnostic(string message) => + cluster.Writer?.WriteDiagnostic($"{{{nameof(ValidateRunningVersion)}}} {message}"); + var requestedVersion = cluster.ClusterConfiguration.Version; + if (cluster.ClusterConfiguration.Artifact.ServerType == ServerType.OpenDistro) + //All supported version of OpenDistro are based on ElasticSearch v.7.10.2 + requestedVersion = OpenSearchVersion.From("7.10.2"); + + + WriteDiagnostic($"validating the cluster is running the requested version: {requestedVersion}"); + + HttpResponseMessage catNodes = null; + var retryCount = 4; + var initialRetryWait = 5; + foreach (var retry in Enumerable.Range(1, retryCount)) + { + catNodes = Get(cluster, "_cat/nodes", "h=version"); + if (catNodes.IsSuccessStatusCode) break; + var retryWait = TimeSpan.FromSeconds(initialRetryWait * retry); + WriteDiagnostic($"{catNodes.StatusCode} response for GET _cat/nodes. Waiting to retry #{retry}"); + Thread.Sleep(retryWait); + } + if (catNodes is not {IsSuccessStatusCode: true}) + { + throw new Exception( + $"Calling _cat/nodes for version checking did not result in an OK response {GetResponseException(catNodes)}"); + } + + var nodeVersions = GetResponseString(catNodes).Split(new[] {'\n'}, StringSplitOptions.RemoveEmptyEntries) + .ToList(); + + var anchorVersion = $"{requestedVersion.Major}.{requestedVersion.Minor}.{requestedVersion.Patch}"; + var allOnRequestedVersion = nodeVersions.All(v => v.Trim() == anchorVersion); + if (!allOnRequestedVersion) + { + throw new Exception( + $"Not all the running nodes in the cluster are on requested version: {anchorVersion} received: {string.Join(", ", nodeVersions)}"); + } + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.EphemeralTests/EphemeralClusterTests.cs b/abstractions/src/OpenSearch.OpenSearch.EphemeralTests/EphemeralClusterTests.cs new file mode 100644 index 0000000000..48dc376658 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.EphemeralTests/EphemeralClusterTests.cs @@ -0,0 +1,81 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.Collections; +using System.Collections.Generic; +using OpenSearch.OpenSearch.Ephemeral; +using OpenSearch.Stack.ArtifactsApi; +using Xunit; + +namespace OpenSearch.OpenSearch.EphemeralTests +{ + public class EphemeralClusterTests + { + [Theory] + [ClassData(typeof(SampleClusters))] + public void TestEphemeralCluster(OpenSearchVersion version, ServerType serverType, ClusterFeatures features) + { + var numberOfNodes = 1; + var clusterConfiguration = + new EphemeralClusterConfiguration(version, serverType, features, null, numberOfNodes) + { + ShowOpenSearchOutputAfterStarted = true + }; + using var cluster = new EphemeralCluster(clusterConfiguration); + var timeout = new System.TimeSpan(0, 5, 30); + using (cluster.Start(timeout)) + { + Assert.True(cluster.Started, "OpenSearch cluster started"); + foreach (var n in cluster.Nodes) + { + n.SendControlC(); + Assert.True(n.WaitForCompletion(timeout), $"Failed to stop node {n.ProcessId}"); + } + } + } + + private class SampleClusters : IEnumerable + { + public IEnumerator GetEnumerator() + { + yield return new object[] {OpenSearchVersion.From("1.2.0"), ServerType.OpenSearch, ClusterFeatures.None}; + yield return new object[] + { + OpenSearchVersion.From("opendistro-latest"), ServerType.OpenDistro, ClusterFeatures.None + }; + yield return new object[] {OpenSearchVersion.From("1.2.0"), ServerType.OpenSearch, ClusterFeatures.SSL}; + yield return new object[] + { + OpenSearchVersion.From("opendistro-latest"), ServerType.OpenDistro, ClusterFeatures.SSL + }; + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.EphemeralTests/OpenSearch.OpenSearch.EphemeralTests.csproj b/abstractions/src/OpenSearch.OpenSearch.EphemeralTests/OpenSearch.OpenSearch.EphemeralTests.csproj new file mode 100644 index 0000000000..d14069227a --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.EphemeralTests/OpenSearch.OpenSearch.EphemeralTests.csproj @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + false + net5.0 + false + + + diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/ClusterBase.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/ClusterBase.cs new file mode 100644 index 0000000000..4643374b8c --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/ClusterBase.cs @@ -0,0 +1,223 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.IO; +using System.Linq; +using System.Threading; +using OpenSearch.OpenSearch.Managed.Configuration; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.OpenSearch.Managed.FileSystem; +using OpenSearch.Stack.ArtifactsApi; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Managed +{ + public interface ICluster : IDisposable + where TConfiguration : IClusterConfiguration + { + string ClusterMoniker { get; } + TConfiguration ClusterConfiguration { get; } + INodeFileSystem FileSystem { get; } + bool Started { get; } + ReadOnlyCollection Nodes { get; } + IConsoleLineHandler Writer { get; } + + IDisposable Start(); + + IDisposable Start(TimeSpan waitForStarted); + + IDisposable Start(IConsoleLineHandler writer, TimeSpan waitForStarted); + } + + + public abstract class ClusterBase : ClusterBase + { + protected ClusterBase(ClusterConfiguration clusterConfiguration) : base(clusterConfiguration) + { + } + } + + public abstract class ClusterBase : ICluster + where TConfiguration : IClusterConfiguration + { + private Action _defaultConfigSelector = (n, i) => { }; + + protected ClusterBase(TConfiguration clusterConfiguration) + { + ClusterConfiguration = clusterConfiguration; + ClusterMoniker = GetType().Name.Replace("Cluster", ""); + + NodeConfiguration Modify(NodeConfiguration n, int p) + { + ModifyNodeConfiguration(n, p); + return n; + } + + var nodes = + (from port in Enumerable.Range(ClusterConfiguration.StartingPortNumber, + ClusterConfiguration.NumberOfNodes) + let config = new NodeConfiguration(clusterConfiguration, port, ClusterMoniker) + { + ShowOpenSearchOutputAfterStarted = + clusterConfiguration.ShowOpenSearchOutputAfterStarted, + } + let node = new OpenSearchNode(Modify(config, port)) + { + AssumeStartedOnNotEnoughMasterPing = ClusterConfiguration.NumberOfNodes > 1, + } + select node).ToList(); + + var initialMasterNodes = string.Join(",", nodes.Select(n => n.NodeConfiguration.DesiredNodeName)); + foreach (var node in nodes) + node.NodeConfiguration.InitialMasterNodes(initialMasterNodes); + + Nodes = new ReadOnlyCollection(nodes); + } + + /// + /// A short name to identify the cluster defaults to the subclass name with Cluster + /// removed + /// + public virtual string ClusterMoniker { get; } + + public TConfiguration ClusterConfiguration { get; } + public INodeFileSystem FileSystem => ClusterConfiguration.FileSystem; + + public ReadOnlyCollection Nodes { get; } + public bool Started { get; private set; } + public IConsoleLineHandler Writer { get; private set; } = NoopConsoleLineWriter.Instance; + + public IDisposable Start() => Start(TimeSpan.FromMinutes(2)); + + public IDisposable Start(TimeSpan waitForStarted) + { + var nodes = Nodes.Select(n => n.NodeConfiguration.DesiredNodeName).ToArray(); + var lineHighlightWriter = new LineHighlightWriter(nodes, LineOutParser.From(ClusterConfiguration.ServerType)); + return Start(lineHighlightWriter, waitForStarted); + } + + public IDisposable Start(IConsoleLineHandler writer, TimeSpan waitForStarted) + { + Writer = writer ?? NoopConsoleLineWriter.Instance; + + OnBeforeStart(); + + var subscriptions = new Subscriptions(); + foreach (var node in Nodes) subscriptions.Add(node.SubscribeLines(writer)); + + var waitHandles = Nodes.Select(w => w.StartedHandle).ToArray(); + if (!WaitHandle.WaitAll(waitHandles, waitForStarted)) + { + var nodeExceptions = Nodes.Select(n => n.LastSeenException).Where(e => e != null).ToList(); + writer?.WriteError( + $"{{{GetType().Name}.{nameof(Start)}}} cluster did not start after {waitForStarted}"); + throw new AggregateException($"Not all nodes started after waiting {waitForStarted}", nodeExceptions); + } + + Started = Nodes.All(n => n.NodeStarted); + if (!Started) + { + var nodeExceptions = Nodes.Select(n => n.LastSeenException).Where(e => e != null).ToList(); + var message = $"{{{GetType().Name}.{nameof(Start)}}} cluster did not start successfully"; + var seeLogsMessage = SeeLogsMessage(message); + writer?.WriteError(seeLogsMessage); + throw new AggregateException(seeLogsMessage, nodeExceptions); + } + + try + { + OnAfterStarted(); + SeedCluster(); + } + catch (Exception e) + { + writer?.WriteError(e.ToString()); + throw; + } + + return subscriptions; + } + + public void Dispose() + { + Started = false; + foreach (var node in Nodes) + node?.Dispose(); + + OnDispose(); + } + + protected virtual void ModifyNodeConfiguration(NodeConfiguration nodeConfiguration, int port) + { + } + + protected virtual void SeedCluster() + { + } + + + protected virtual string SeeLogsMessage(string message) + { + var log = Path.Combine(FileSystem.LogsPath, $"{ClusterConfiguration.ClusterName}.log"); + return $"{message} see {log} to diagnose the issue"; + } + + public void WaitForExit(TimeSpan waitForCompletion) + { + foreach (var node in Nodes) + node.WaitForCompletion(waitForCompletion); + } + + protected virtual void OnAfterStarted() + { + } + + protected virtual void OnBeforeStart() + { + } + + protected virtual void OnDispose() + { + } + + private class Subscriptions : IDisposable + { + private List Disposables { get; } = new List(); + + public void Dispose() + { + foreach (var d in Disposables) d.Dispose(); + } + + internal void Add(IDisposable disposable) => Disposables.Add(disposable); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/ClusterConfiguration.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/ClusterConfiguration.cs new file mode 100644 index 0000000000..dc301f30b5 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/ClusterConfiguration.cs @@ -0,0 +1,172 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Globalization; +using System.IO; +using OpenSearch.OpenSearch.Managed.FileSystem; +using OpenSearch.Stack.ArtifactsApi; +using OpenSearch.Stack.ArtifactsApi.Products; + +namespace OpenSearch.OpenSearch.Managed.Configuration +{ + public interface IClusterConfiguration where TFileSystem : INodeFileSystem + { + TFileSystem FileSystem { get; } + + string ClusterName { get; } + NodeSettings DefaultNodeSettings { get; } + OpenSearchVersion Version { get; } + ServerType ServerType { get; } + int NumberOfNodes { get; } + int StartingPortNumber { get; set; } + bool NoCleanupAfterNodeStopped { get; set; } + + bool ShowOpenSearchOutputAfterStarted { get; set; } + bool CacheOpenSearchHomeInstallation { get; set; } + + string CreateNodeName(int? node); + } + + public class ClusterConfiguration : ClusterConfiguration + { + public ClusterConfiguration(OpenSearchVersion version, ServerType serverType, string openSearchHome, int numberOfNodes = 1) + : base(version, serverType, (v, s) => new NodeFileSystem(v, openSearchHome), numberOfNodes, null) + { + } + + public ClusterConfiguration(OpenSearchVersion version, ServerType serverType, + Func fileSystem = null, int numberOfNodes = 1, + string clusterName = null) + : base(version, serverType, fileSystem ?? ((v, s) => new NodeFileSystem(v, s)), numberOfNodes, clusterName) + { + } + } + + public class ClusterConfiguration : IClusterConfiguration + where TFileSystem : INodeFileSystem + { + /// + /// Creates a new instance of a configuration for an OpenSearch cluster. + /// + /// The version of OpenSearch + /// + /// A delegate to create the instance of . + /// Passed the OpenSearch version and the Cluster name + /// + /// The number of nodes in the cluster + /// The name of the cluster + public ClusterConfiguration(OpenSearchVersion version, ServerType serverType, Func fileSystem, + int numberOfNodes = 1, string clusterName = null) + { + if (fileSystem == null) throw new ArgumentException(nameof(fileSystem)); + + ClusterName = clusterName; + Version = version; + ServerType = serverType; + Artifact = version.Artifact(Product.From("opensearch", serverType: serverType)); + FileSystem = fileSystem(Version, ClusterName); + NumberOfNodes = numberOfNodes; + + var fs = FileSystem; + Add("node.max_local_storage_nodes", numberOfNodes.ToString(CultureInfo.InvariantCulture), "1.0.0"); + + Add("cluster.name", clusterName); + Add("path.repo", fs.RepositoryPath); + Add("path.data", fs.DataPath); + var logsPathDefault = Path.Combine(fs.OpenSearchHome, "logs"); + if (logsPathDefault != fs.LogsPath) Add("path.logs", fs.LogsPath); + } + + public Artifact Artifact { get; } + + public string JavaHomeEnvironmentVariable => "JAVA_HOME"; + + /// Will print the contents of all the yaml files when starting the cluster up, great for debugging purposes + public bool PrintYamlFilesInConfigFolder { get; set; } + + public string ClusterName { get; } + public OpenSearchVersion Version { get; } + public ServerType ServerType { get; } + public TFileSystem FileSystem { get; } + public int NumberOfNodes { get; } + public int StartingPortNumber { get; set; } = 9200; + public bool NoCleanupAfterNodeStopped { get; set; } + + /// + /// Whether should continue to write output to console after it has started. + /// Defaults to true + /// + public bool ShowOpenSearchOutputAfterStarted { get; set; } = true; + + public bool CacheOpenSearchHomeInstallation { get; set; } + + /// The node settings to apply to each started node + public NodeSettings DefaultNodeSettings { get; } = new NodeSettings(); + + /// + /// Creates a node name + /// + public virtual string CreateNodeName(int? node) => + node.HasValue ? $"managed-opensearch-{node}" : " managed-opensearch"; + + /// + /// Calculates the quorum given the number of instances + /// + private static int Quorum(int instanceCount) => Math.Max(1, (int) Math.Floor((double) instanceCount / 2) + 1); + + /// + /// Creates a node attribute for the version of OpenSearch + /// + public string AttributeKey(string attribute) + { + var attr = "attr."; + return $"node.{attr}{attribute}"; + } + + /// + /// Adds a node setting to the default node settings + /// + protected void Add(string key, string value) + { + if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value)) return; + DefaultNodeSettings.Add(key, value); + } + + /// + /// Adds a node setting to the default node settings only if the OpenSearch + /// version is in the range. + /// + protected void Add(string key, string value, string range) + { + if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(value)) return; + if (string.IsNullOrWhiteSpace(range) || Version.InRange(range)) + DefaultNodeSettings.Add(key, value, range); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeConfiguration.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeConfiguration.cs new file mode 100644 index 0000000000..6758c71c06 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeConfiguration.cs @@ -0,0 +1,109 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Globalization; +using OpenSearch.OpenSearch.Managed.FileSystem; +using OpenSearch.Stack.ArtifactsApi; +using ProcNet; + +namespace OpenSearch.OpenSearch.Managed.Configuration +{ + public class NodeConfiguration + { + private Action _defaultStartArgs = s => { }; + + public NodeConfiguration(OpenSearchVersion version, int? port = null) : this(new ClusterConfiguration(version, ServerType.DEFAULT), + port) + { + } + + public NodeConfiguration(IClusterConfiguration clusterConfiguration, int? port = null, + string nodePrefix = null) + { + ClusterConfiguration = clusterConfiguration; + DesiredPort = port; + DesiredNodeName = CreateNodeName(port, nodePrefix) ?? clusterConfiguration.CreateNodeName(port); + Settings = new NodeSettings(clusterConfiguration.DefaultNodeSettings); + + if (!string.IsNullOrWhiteSpace(DesiredNodeName)) Settings.Add("node.name", DesiredNodeName); + if (DesiredPort.HasValue) + Settings.Add("http.port", DesiredPort.Value.ToString(CultureInfo.InvariantCulture)); + } + + private IClusterConfiguration ClusterConfiguration { get; } + + public int? DesiredPort { get; } + public string DesiredNodeName { get; } + + public Action ModifyStartArguments + { + get => _defaultStartArgs; + set => _defaultStartArgs = value ?? (s => { }); + } + + /// + /// Wheter should continue to write output to console after it has started. + /// Defaults to true but useful to turn of if it proofs to be too noisy + /// + public bool ShowOpenSearchOutputAfterStarted { get; set; } = true; + + /// + /// The expected duration of the shut down sequence for OpenSearch. After this wait duration a hard kill will occur. + /// + public TimeSpan WaitForShutdown { get; set; } = TimeSpan.FromSeconds(10); + + /// + /// Copy of . Add individual node settings here. + /// + public NodeSettings Settings { get; } + + public INodeFileSystem FileSystem => ClusterConfiguration.FileSystem; + public OpenSearchVersion Version => ClusterConfiguration.Version; + public ServerType ServerType => ClusterConfiguration.ServerType; + public string[] CommandLineArguments => Settings.ToCommandLineArguments(Version); + + public void InitialMasterNodes(string initialMasterNodes) => + Settings.Add("cluster.initial_master_nodes", initialMasterNodes, ">=1.0.0"); + + public string AttributeKey(string attribute) + { + var attr = "attr."; + return $"node.{attr}{attribute}"; + } + + public void Add(string key, string value) => Settings.Add(key, value); + + private string CreateNodeName(int? node, string prefix = null) + { + if (prefix == null) return null; + var suffix = Guid.NewGuid().ToString("N").Substring(0, 6); + return $"{prefix.Replace("Cluster", "").ToLowerInvariant()}-node-{suffix}{node}"; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSetting.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSetting.cs new file mode 100644 index 0000000000..8d2c8f40f2 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSetting.cs @@ -0,0 +1,50 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +namespace OpenSearch.OpenSearch.Managed.Configuration +{ + public struct NodeSetting + { + public string Key { get; } + public string Value { get; } + + /// + /// Stores for which opensearch version range this setting is applicable + /// + public string VersionRange { get; } + + public NodeSetting(string key, string value, string range) + { + Key = key; + Value = value; + VersionRange = range; + } + + public override string ToString() => $"{Key}={Value}"; + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSettings.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSettings.cs new file mode 100644 index 0000000000..0ce531141c --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/Configuration/NodeSettings.cs @@ -0,0 +1,73 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Linq; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Managed.Configuration +{ + public class NodeSettings : List + { + public NodeSettings() + { + } + + public NodeSettings(NodeSettings settings) : base(settings) + { + } + + public void Add(string setting) + { + var s = setting.Split(new[] {'='}, 2, StringSplitOptions.RemoveEmptyEntries); + if (s.Length != 2) + throw new ArgumentException($"Can only add node settings in key=value from but received: {setting}"); + Add(new NodeSetting(s[0], s[1], null)); + } + + public void Add(string key, string value) => Add(new NodeSetting(key, value, null)); + + public void Add(string key, string value, string versionRange) => + Add(new NodeSetting(key, value, versionRange)); + + public string[] ToCommandLineArguments(OpenSearchVersion version) + { + var settingArgument = "-E "; + return this + //if a node setting is only applicable for a certain version make sure its filtered out + .Where(s => string.IsNullOrEmpty(s.VersionRange) || version.InRange(s.VersionRange)) + //allow additional settings to take precedence over already DefaultNodeSettings + //without relying on opensearch to dedup + .GroupBy(setting => setting.Key) + .Select(g => g.Last()) + .Select(s => s.Key.StartsWith(settingArgument) ? s.ToString() : $"{settingArgument}{s}") + .ToArray(); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ConsoleLineWriter.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ConsoleLineWriter.cs new file mode 100644 index 0000000000..1f8e2911e7 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ConsoleLineWriter.cs @@ -0,0 +1,44 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Managed.ConsoleWriters +{ + public class ConsoleLineWriter : IConsoleLineHandler + { + public void Handle(LineOut lineOut) + { + var w = lineOut.Error ? Console.Error : Console.Out; + w.WriteLine(lineOut); + } + + public void Handle(Exception e) => Console.Error.WriteLine(e); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ExceptionLineParser.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ExceptionLineParser.cs new file mode 100644 index 0000000000..f54b8eb648 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/ExceptionLineParser.cs @@ -0,0 +1,65 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.Text.RegularExpressions; + +namespace OpenSearch.OpenSearch.Managed.ConsoleWriters +{ + public static class ExceptionLineParser + { + private static readonly Regex CauseRegex = new Regex(@"^(?.*?Exception:)(?.*?)$"); + + private static readonly Regex + LocRegex = new Regex(@"^(?\s*?at )(?.*?)\((?.*?)\)(?.*?)$"); + + public static bool TryParseCause(string line, out string cause, out string message) + { + cause = message = null; + if (string.IsNullOrEmpty(line)) return false; + var match = CauseRegex.Match(line); + if (!match.Success) return false; + cause = match.Groups["cause"].Value.Trim(); + message = match.Groups["message"].Value.Trim(); + return true; + } + + public static bool TryParseStackTrace(string line, out string at, out string method, out string file, + out string jar) + { + at = method = file = jar = null; + if (string.IsNullOrEmpty(line)) return false; + var match = LocRegex.Match(line); + if (!match.Success) return false; + at = match.Groups["at"].Value; + method = match.Groups["method"].Value.Trim(); + file = match.Groups["file"].Value.Trim(); + jar = match.Groups["jar"].Value.Trim(); + return true; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/IConsoleLineWriter.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/IConsoleLineWriter.cs new file mode 100644 index 0000000000..000c2c78b8 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/IConsoleLineWriter.cs @@ -0,0 +1,53 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Managed.ConsoleWriters +{ + public static class LineWriterExtensions + { + public static void WriteDiagnostic(this IConsoleLineHandler writer, string message) => + writer.Handle(Info(message)); + + public static void WriteDiagnostic(this IConsoleLineHandler writer, string message, string node) => + writer?.Handle(Info(node != null ? $"[{node}] {message}" : message)); + + public static void WriteError(this IConsoleLineHandler writer, string message) => writer.Handle(Error(message)); + + public static void WriteError(this IConsoleLineHandler writer, string message, string node) => + writer?.Handle(Error(node != null ? $"[{node}] {message}" : message)); + + private static string Format(bool error, string message) => + $"[{DateTime.UtcNow:yyyy-MM-ddThh:mm:ss,fff}][{(error ? "ERROR" : "INFO ")}][Managed OpenSearch\t] {message}"; + + private static LineOut Info(string message) => ConsoleOut.Out(Format(false, message)); + private static LineOut Error(string message) => ConsoleOut.ErrorOut(Format(true, message)); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineHighlightWriter.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineHighlightWriter.cs new file mode 100644 index 0000000000..53e3ab08b7 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineHighlightWriter.cs @@ -0,0 +1,251 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Managed.ConsoleWriters +{ + public class LineHighlightWriter : IConsoleLineHandler + { + private readonly LineOutParser _lineOutParser; + + private static readonly ConsoleColor[] AvailableNodeColors = + { + ConsoleColor.DarkGreen, ConsoleColor.DarkBlue, ConsoleColor.DarkRed, ConsoleColor.DarkCyan, + ConsoleColor.DarkYellow, ConsoleColor.Blue, + }; + + private static readonly object Lock = new object(); + + private static readonly char[] Anchors = {'[', ']', '{', '}'}; + + private readonly Dictionary _nodeColors; + + public LineHighlightWriter() + { + } + + public LineHighlightWriter(IList nodes, LineOutParser lineOutParser) + { + _lineOutParser = lineOutParser ?? throw new NullReferenceException(nameof(lineOutParser)); + if (nodes == null) throw new NullReferenceException(nameof(nodes)); + + var colors = new Dictionary(); + for (var i = 0; i < nodes.Count; i++) + { + var color = i % AvailableNodeColors.Length; + colors.Add(nodes[i], AvailableNodeColors[color]); + } + + _nodeColors = colors; + } + + public void Handle(Exception e) + { + lock (Lock) + { + Console.BackgroundColor = ConsoleColor.Red; + Console.ForegroundColor = ConsoleColor.White; + Console.Error.WriteLine(e); + Console.ResetColor(); + } + } + + public void Handle(LineOut lineOut) + { + var parsed = _lineOutParser.TryParse(lineOut.Line, out var date, out var level, out var section, + out var node, out var message, out _); + if (parsed) Write(lineOut.Error, date, level, section, node, message, NodeColor); + else if (ExceptionLineParser.TryParseCause(lineOut.Line, out var cause, out var causeMessage)) + WriteCausedBy(lineOut.Error, cause, causeMessage); + + else if (ExceptionLineParser.TryParseStackTrace(lineOut.Line, out var at, out var method, out var file, + out var jar)) + WriteStackTraceLine(lineOut.Error, at, method, file, jar); + + else Write(lineOut.Error, lineOut.Line); + } + + private ConsoleColor NodeColor(string node) => + _nodeColors != null && _nodeColors.TryGetValue(node, out var color) ? color : AvailableNodeColors[0]; + + private static void Write(bool error, string date, string level, string section, string node, string message, + Func getNodeColor = null) + { + lock (Lock) + { + var w = error ? Console.Error : Console.Out; + WriteBlock(w, ConsoleColor.DarkGray, date); + WriteBlock(w, LevelColor(level), level, 5); + + if (!string.IsNullOrWhiteSpace(section)) + { + WriteBlock(w, ConsoleColor.DarkCyan, section, 25); + WriteSpace(w); + } + + WriteBlock(w, getNodeColor?.Invoke(node) ?? ConsoleColor.DarkGreen, node); + WriteSpace(w); + + var messageColor = error || level == "ERROR" ? ConsoleColor.Red : ConsoleColor.White; + WriteMessage(w, messageColor, message); + + Console.ResetColor(); + w.Flush(); + } + } + + private static void WriteCausedBy(bool error, string cause, string causeMessage) + { + lock (Lock) + { + var w = error ? Console.Error : Console.Out; + Write(w, ConsoleColor.DarkRed, cause); + WriteSpace(w); + Write(w, ConsoleColor.Red, causeMessage); + w.WriteLine(); + Console.ResetColor(); + w.Flush(); + } + } + + private static void WriteStackTraceLine(bool error, string at, string method, string file, string jar) + { + lock (Lock) + { + var w = error ? Console.Error : Console.Out; + Write(w, ConsoleColor.DarkGray, at); + Write(w, ConsoleColor.DarkBlue, method); + Write(w, ConsoleColor.DarkGray, "("); + Write(w, ConsoleColor.Blue, file); + Write(w, ConsoleColor.DarkGray, ")"); + WriteSpace(w); + Write(w, ConsoleColor.Gray, jar); + w.WriteLine(); + + Console.ResetColor(); + w.Flush(); + } + } + + private static void Write(bool error, string message) + { + lock (Lock) + { + var w = error ? Console.Error : Console.Out; + var messageColor = error ? ConsoleColor.Red : ConsoleColor.White; + WriteMessage(w, messageColor, message); + Console.ResetColor(); + w.Flush(); + } + } + + private static ConsoleColor LevelColor(string level) + { + switch (level ?? "") + { + case "WARN": return ConsoleColor.Yellow; + case "FATAL": + case "ERROR": + return ConsoleColor.Red; + case "DEBUG": + case "TRACE": + return ConsoleColor.DarkGray; + default: + return ConsoleColor.Cyan; + } + } + + private static IEnumerable Parts(string s) + { + int start = 0, index; + while ((index = s.IndexOfAny(Anchors, start)) != -1) + { + if (index - start > 0) + yield return s.Substring(start, index - start); + + yield return s.Substring(index, 1); + start = index + 1; + } + + if (start < s.Length) + yield return s.Substring(start); + } + + private static void WriteMessage(TextWriter w, ConsoleColor color, string message) + { + var insideSquareBracket = 0; + var insideCurlyBracket = 0; + foreach (var p in Parts(message)) + { + if (p.Length == 0) continue; + if (p[0] == '[') insideSquareBracket++; + else if (p[0] == ']') insideSquareBracket--; + else if (p[0] == '{') insideCurlyBracket++; + else if (p[0] == '}') insideCurlyBracket--; + + if (Anchors.Contains(p[0])) Console.ForegroundColor = ConsoleColor.DarkGray; + else if (insideSquareBracket > 0) Console.ForegroundColor = ConsoleColor.Yellow; + else if (insideCurlyBracket > 0) Console.ForegroundColor = ConsoleColor.Blue; + else Console.ForegroundColor = color; + + w.Write(p); + } + + Console.ResetColor(); + w.WriteLine(); + } + + private static void WriteSpace(TextWriter w) => w.Write(" "); + + private static void WriteBlock(TextWriter w, ConsoleColor color, string block, int? pad = null) + { + if (string.IsNullOrEmpty(block)) return; + var b = pad != null ? block.PadRight(pad.Value) : block; + Console.ForegroundColor = ConsoleColor.DarkGray; + w.Write("["); + Console.ForegroundColor = color; + w.Write(b); + Console.ForegroundColor = ConsoleColor.DarkGray; + w.Write("]"); + } + + private static void Write(TextWriter w, ConsoleColor color, string block, int? pad = null) + { + var b = pad != null ? block.PadRight(pad.Value) : block; + var original = Console.ForegroundColor; + Console.ForegroundColor = color; + w.Write(b); + Console.ForegroundColor = original; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineOutParser.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineOutParser.cs new file mode 100644 index 0000000000..28d3053902 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/LineOutParser.cs @@ -0,0 +1,165 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Text.RegularExpressions; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Managed.ConsoleWriters +{ + public class LineOutParser + { + private LineOutParser() { } + + public static readonly LineOutParser OpenSearch = new(shortNamePrefix: "o.o", fullNamePrefix: "org.opensearch", + securityPluginName: "OpenSearchSecurityPlugin"); + + public static readonly LineOutParser OpenDistro = new(shortNamePrefix: "o.e", fullNamePrefix: "org.elastic", + securityPluginName: "OpenDistroSecurityPlugin"); + public static LineOutParser From(ServerType serverType) + { + switch (serverType) + { + case ServerType.OpenDistro: + case ServerType.ElasticSearch: + return LineOutParser.OpenDistro; + case ServerType.OpenSearch: + return LineOutParser.OpenSearch; + default: + throw new ApplicationException( + $"Unexpected value for {nameof(serverType)} -- {serverType}"); + } + } + +/* +[2016-09-26T11:43:17,314][INFO ][o.e.n.Node ] [readonly-node-a9c5f4] initializing ... +[2016-09-26T11:43:17,470][INFO ][o.e.e.NodeEnvironment ] [readonly-node-a9c5f4] using [1] data paths, mounts [[BOOTCAMP (C:)]], net usable_space [27.7gb], net total_space [129.7gb], spins? [unknown], types [NTFS] +[2016-09-26T11:43:17,471][INFO ][o.e.e.NodeEnvironment ] [readonly-node-a9c5f4] heap size [1.9gb], compressed ordinary object pointers [true] +[2016-09-26T11:43:17,475][INFO ][o.e.n.Node ] [readonly-node-a9c5f4] version[5.0.0-beta1], pid[13172], build[7eb6260/2016-09-20T23:10:37.942Z], OS[Windows 10/10.0/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_101/25.101-b13] +[2016-09-26T11:43:19,160][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [aggs-matrix-stats] +[2016-09-26T11:43:19,160][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [ingest-common] +[2016-09-26T11:43:19,161][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [lang-expression] +[2016-09-26T11:43:19,161][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [lang-groovy] +[2016-09-26T11:43:19,161][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [lang-mustache] +[2016-09-26T11:43:19,162][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [lang-painless] +[2016-09-26T11:43:19,162][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [percolator] +[2016-09-26T11:43:19,162][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [reindex] +[2016-09-26T11:43:19,162][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [transport-netty3] +[2016-09-26T11:43:19,163][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded module [transport-netty4] +[2016-09-26T11:43:19,163][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded plugin [ingest-attachment] +[2016-09-26T11:43:19,164][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded plugin [ingest-geoip] +[2016-09-26T11:43:19,164][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded plugin [mapper-attachments] +[2016-09-26T11:43:19,164][INFO ][o.e.p.PluginsService ] [readonly-node-a9c5f4] loaded plugin [mapper-murmur3] +[2016-09-26T11:43:19,374][WARN ][d.m.attachment ] [mapper-attachments] plugin has been deprecated and will be replaced by [ingest-attachment] plugin. +[2016-09-26T11:43:22,179][INFO ][o.e.n.Node ] [readonly-node-a9c5f4] initialized +[2016-09-26T11:43:22,180][INFO ][o.e.n.Node ] [readonly-node-a9c5f4] starting ... +*/ + private static readonly Regex ConsoleLineParser = + new Regex(@"\[(?.*?)\]\[(?.*?)\](?:\[(?
.*?)\])(?: \[(?.*?)\])? (?.+)"); + + private static readonly Regex PortParser = new Regex(@"bound_address(es)?(opensearch)? {.+\:(?\d+)}"); + + //[2016-09-26T11:43:17,475][INFO ][o.e.n.Node ] [readonly-node-a9c5f4] version[5.0.0-beta1], pid[13172], build[7eb6260/2016-09-20T23:10:37.942Z], OS[Windows 10/10.0/amd64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_101/25.101-b13] + private static readonly Regex InfoParser = + new Regex(@"version\[(?.*)\], pid\[(?.*)\], build\[(?.+)\]"); + + private LineOutParser(string shortNamePrefix, string fullNamePrefix, string securityPluginName) : this() + { + _shortNamePrefix = shortNamePrefix; + _fullNamePrefix = fullNamePrefix; + _securityPluginRegex = new Regex(Regex.Escape(securityPluginName)); + } + + private readonly Regex _securityPluginRegex; + private readonly string _shortNamePrefix; + private readonly string _fullNamePrefix ; + + public bool TryParse(string line, + out string date, out string level, out string section, out string node, out string message, + out bool started) + { + date = level = section = node = message = null; + started = false; + if (string.IsNullOrEmpty(line)) return false; + + var match = ConsoleLineParser.Match(line); + if (!match.Success) return false; + date = match.Groups["date"].Value.Trim(); + level = match.Groups["level"].Value.Trim(); + section = match.Groups["section"].Value.Trim().Replace(_fullNamePrefix + ".", ""); + node = match.Groups["node"].Value.Trim(); + message = match.Groups["message"].Value.Trim(); + started = TryGetStartedConfirmation(section, message); + return true; + } + + private bool TryGetStartedConfirmation(string section, string message) + { + return section == ShortName("n.Node") && message == "started"; + } + + public bool TryGetPortNumber(string section, string message, out int port) + { + port = 0; + var inHttpSection = + section == ShortName("h.HttpServer") + || section == "http" + || section == ShortName("h.AbstractHttpServerTransport") + || section == ShortName("h.n.Netty4HttpServerTransport") + || section == ShortName("x.s.t.n.SecurityNetty4HttpServerTransport"); + if (!inHttpSection) return false; + + if (string.IsNullOrWhiteSpace(message)) return false; + + var match = PortParser.Match(message); + if (!match.Success) return false; + + var portString = match.Groups["port"].Value.Trim(); + port = int.Parse(portString); + return true; + } + + public bool TryParseNodeInfo(string section, string message, out string version, out int? pid) + { + var inNodeSection = section == ShortName("n.Node") || section == "node"; + + version = null; + pid = null; + if (!inNodeSection) return false; + + var match = InfoParser.Match(message.Replace(Environment.NewLine, "")); + if (!match.Success) return false; + + version = match.Groups["version"].Value.Trim(); + pid = int.Parse(match.Groups["pid"].Value.Trim()); + return true; + } + + private string ShortName(string suffix) => $"{_shortNamePrefix}.{suffix}"; + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/NoopConsoleLineWriter.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/NoopConsoleLineWriter.cs new file mode 100644 index 0000000000..e8e24c3900 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/ConsoleWriters/NoopConsoleLineWriter.cs @@ -0,0 +1,46 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Managed.ConsoleWriters +{ + internal class NoopConsoleLineWriter : IConsoleLineHandler + { + public static NoopConsoleLineWriter Instance { get; } = new NoopConsoleLineWriter(); + + public void Handle(LineOut lineOut) + { + } + + public void Handle(Exception e) + { + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/INodeFileSystem.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/INodeFileSystem.cs new file mode 100644 index 0000000000..ff71128c20 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/INodeFileSystem.cs @@ -0,0 +1,79 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +namespace OpenSearch.OpenSearch.Managed.FileSystem +{ + /// + /// The file system for an OpenSearch node + /// + public interface INodeFileSystem + { + /// + /// The path to the script to start OpenSearch + /// + string Binary { get; } + + /// + /// The path to the script to manage plugins + /// + string PluginBinary { get; } + + /// + /// The path to the home directory + /// + string OpenSearchHome { get; } + + /// + /// The path to the config directory + /// + string ConfigPath { get; } + + /// + /// The path to the data directory + /// + string DataPath { get; } + + /// + /// The path to the logs directory + /// + string LogsPath { get; } + + /// + /// The path to the repository directory + /// + string RepositoryPath { get; } + + /// + /// The path to the directory in which this node resides + /// + string LocalFolder { get; } + + /// The config environment variable to use for this version + string ConfigEnvironmentVariableName { get; } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/NodeFileSystem.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/NodeFileSystem.cs new file mode 100644 index 0000000000..fdca8d4681 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/FileSystem/NodeFileSystem.cs @@ -0,0 +1,116 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.IO; +using System.Runtime.InteropServices; +using OpenSearch.Stack.ArtifactsApi; +using OpenSearch.Stack.ArtifactsApi.Products; + +namespace OpenSearch.OpenSearch.Managed.FileSystem +{ + /// + public class NodeFileSystem : INodeFileSystem + { + protected const string SubFolder = "OpenSearchManaged"; + + public NodeFileSystem(OpenSearchVersion version, string openSearchHome = null) + { + Version = version; + Artifact = version.Artifact(Product.OpenSearch); + LocalFolder = AppDataFolder(version); + OpenSearchHome = openSearchHome ?? + GetOpenSearchHomeVariable() ?? throw new ArgumentNullException(nameof(openSearchHome)); + + ConfigEnvironmentVariableName = "OPENSEARCH_PATH_CONF"; + } + + protected OpenSearchVersion Version { get; } + protected Artifact Artifact { get; } + + private static bool IsMono { get; } = Type.GetType("Mono.Runtime") != null; + + protected static string BinarySuffix => IsMono || Path.DirectorySeparatorChar == '/' ? "" : ".bat"; + + /// + public string Binary + { + get + { + if (Artifact.ServerType == ServerType.OpenSearch) + return Path.Combine(OpenSearchHome, "bin", "opensearch") + BinarySuffix; + return Path.Combine(OpenSearchHome, "bin", "elasticsearch") + BinarySuffix; + } + } + + /// + public string PluginBinary + { + get + { + if (Artifact.ServerType == ServerType.OpenSearch) + return Path.Combine(OpenSearchHome, "bin", "opensearch-plugin") + BinarySuffix; + return Path.Combine(OpenSearchHome, "bin", "elasticsearch-plugin") + BinarySuffix; + } + } + + /// + public string OpenSearchHome { get; } + + /// + public string LocalFolder { get; } + + /// + public virtual string ConfigPath => null; + + /// + public virtual string DataPath => null; + + /// + public virtual string LogsPath => null; + + /// + public virtual string RepositoryPath => null; + + public string ConfigEnvironmentVariableName { get; } + + protected static string AppDataFolder(OpenSearchVersion version) + { + var appData = GetApplicationDataDirectory(); + return Path.Combine(appData, SubFolder, version.Artifact(Product.OpenSearch).LocalFolderName); + } + + protected static string GetOpenSearchHomeVariable() => Environment.GetEnvironmentVariable("OPENSEARCH_HOME"); + + protected static string GetApplicationDataDirectory() => + RuntimeInformation.IsOSPlatform(OSPlatform.Windows) + ? Environment.GetEnvironmentVariable("LocalAppData") + : Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData, + Environment.SpecialFolderOption.Create); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearch.OpenSearch.Managed.csproj b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearch.OpenSearch.Managed.csproj new file mode 100644 index 0000000000..91a10c3898 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearch.OpenSearch.Managed.csproj @@ -0,0 +1,19 @@ + + + + netstandard2.0;net461 + + Provides an observable OpenSearchNode abstraction that can be used to wrap an opensearch process. + Also ships with an cluster abstraction that can start one or more OpenSearchNode's + + opensearch,opensearch,cluster,observable,rx + false + + + + + + + + + diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCleanExitException.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCleanExitException.cs new file mode 100644 index 0000000000..4200fa39d5 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCleanExitException.cs @@ -0,0 +1,43 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; + +namespace OpenSearch.OpenSearch.Managed +{ + public class OpenSearchCleanExitException : Exception + { + public OpenSearchCleanExitException(string message) : base(message) + { + } + + public OpenSearchCleanExitException(string message, Exception innerException) : base(message, innerException) + { + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCluster.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCluster.cs new file mode 100644 index 0000000000..97456a376b --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchCluster.cs @@ -0,0 +1,39 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using OpenSearch.OpenSearch.Managed.Configuration; + +namespace OpenSearch.OpenSearch.Managed +{ + public class OpenSearchCluster : ClusterBase + { + public OpenSearchCluster(ClusterConfiguration clusterConfiguration) : base(clusterConfiguration) + { + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchNode.cs b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchNode.cs new file mode 100644 index 0000000000..8da8e33026 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/OpenSearchNode.cs @@ -0,0 +1,268 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Threading; +using OpenSearch.OpenSearch.Managed.Configuration; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; +using OpenSearch.OpenSearch.Managed.FileSystem; +using OpenSearch.Stack.ArtifactsApi; +using ProcNet; +using ProcNet.Std; + +namespace OpenSearch.OpenSearch.Managed +{ + public class OpenSearchNode : ObservableProcess + { + private readonly ManualResetEvent _startedHandle = new ManualResetEvent(false); + + public OpenSearchNode(OpenSearchVersion version, string openSearchHome = null) + : this(new NodeConfiguration(new ClusterConfiguration(version, ServerType.DEFAULT, + (v, s) => new NodeFileSystem(v, openSearchHome)))) + { + } + + public OpenSearchNode(NodeConfiguration config) : base(StartArgs(config)) => NodeConfiguration = config; + public string Version { get; private set; } + public int? Port { get; private set; } + public bool NodeStarted { get; private set; } + public NodeConfiguration NodeConfiguration { get; } + + private int? JavaProcessId { get; set; } + public override int? ProcessId => JavaProcessId ?? base.ProcessId; + public int? HostProcessId => base.ProcessId; + + /// + /// Set this true if you want the node to go into assumed started state as soon as its waiting for more nodes to start + /// doing the election. + /// Useful to speed up starting multi node clusters + /// + public bool AssumeStartedOnNotEnoughMasterPing { get; set; } + + internal IConsoleLineHandler Writer { get; private set; } + + public Exception LastSeenException { get; set; } + public WaitHandle StartedHandle => _startedHandle; + + private static StartArguments StartArgs(NodeConfiguration config) + { + //var args = new[] {config.FileSystem.Binary}.Concat(config.CommandLineArguments); + + var startArguments = new StartArguments(config.FileSystem.Binary, config.CommandLineArguments) + { + SendControlCFirst = true, + Environment = EnvVars(config), + WaitForExit = config.WaitForShutdown, + WaitForStreamReadersTimeout = config.WaitForShutdown + }; + config.ModifyStartArguments(startArguments); + return startArguments; + } + + private static Dictionary EnvVars(NodeConfiguration config) + { + var environmentVariables = new Dictionary {{"OPENSEARCH_JAVA_OPTS", "-Xms1g -Xmx1g"}}; + if (!string.IsNullOrWhiteSpace(config.FileSystem.ConfigPath)) + environmentVariables.Add(config.FileSystem.ConfigEnvironmentVariableName, config.FileSystem.ConfigPath); + + if (!string.IsNullOrWhiteSpace(config.FileSystem.OpenSearchHome)) + environmentVariables.Add("OPENSEARCH_HOME", config.FileSystem.OpenSearchHome); + + // Duplicate all env vars for ES_* prefix for backward compatibility with OpenDistro and ElasticSearch; + // unused env vars would be just ignored. + environmentVariables.Add("ES_JAVA_OPTS", "-Xms1g -Xmx1g"); + if (!string.IsNullOrWhiteSpace(config.FileSystem.ConfigPath)) + environmentVariables.Add(config.FileSystem.ConfigEnvironmentVariableName.Replace("OPENSEARCH", "ES"), config.FileSystem.ConfigPath); + + if (!string.IsNullOrWhiteSpace(config.FileSystem.OpenSearchHome)) + environmentVariables.Add("ES_HOME", config.FileSystem.OpenSearchHome); + + return environmentVariables; + } + + private bool AssumedStartedStateChecker(string section, string message) + { + if (AssumeStartedOnNotEnoughMasterPing + && section.Contains("ZenDiscovery") + && message.Contains("not enough master nodes discovered during pinging")) + return true; + return false; + } + + public IDisposable Start() => Start(TimeSpan.FromMinutes(2)); + + public IDisposable Start(TimeSpan waitForStarted) => Start(new LineHighlightWriter(), waitForStarted); + + public IDisposable Start(IConsoleLineHandler writer, TimeSpan waitForStarted) + { + var node = NodeConfiguration.DesiredNodeName; + var subscription = SubscribeLines(writer); + if (WaitForStarted(waitForStarted)) return subscription; + subscription.Dispose(); + throw new OpenSearchCleanExitException( + $"Failed to start node: {node} before the configured timeout of: {waitForStarted}"); + } + + public IDisposable SubscribeLines() => SubscribeLines(new LineHighlightWriter()); + + public IDisposable SubscribeLines(IConsoleLineHandler writer) => + SubscribeLines(writer, delegate { }, delegate { }, delegate { }); + + public IDisposable SubscribeLines(IConsoleLineHandler writer, Action onNext) => + SubscribeLines(writer, onNext, delegate { }, delegate { }); + + public IDisposable SubscribeLines(IConsoleLineHandler writer, Action onNext, + Action onError) => + SubscribeLines(writer, onNext, onError, delegate { }); + + public IDisposable SubscribeLines(IConsoleLineHandler writer, Action onNext, Action onError, + Action onCompleted) + { + Writer = writer; + var node = NodeConfiguration.DesiredNodeName; + writer?.WriteDiagnostic($"OpenSearch location: [{Binary}]", node); + writer?.WriteDiagnostic($"Settings: {{{string.Join(" ", NodeConfiguration.CommandLineArguments)}}}", node); + + var envVarName = "JAVA_HOME"; + var javaHome = Environment.GetEnvironmentVariable(envVarName); + writer?.WriteDiagnostic($"{envVarName}: {{{javaHome}}}", node); + Process.StartInfo.Environment[envVarName] = javaHome; + + return SubscribeLines( + l => + { + writer?.Handle(l); + onNext?.Invoke(l); + }, + e => + { + LastSeenException = e; + writer?.Handle(e); + onError?.Invoke(e); + _startedHandle.Set(); + }, + () => + { + onCompleted?.Invoke(); + _startedHandle.Set(); + }); + } + + public bool WaitForStarted(TimeSpan timeout) => _startedHandle.WaitOne(timeout); + + protected override void OnBeforeSetCompletedHandle() + { + _startedHandle.Set(); + base.OnBeforeSetCompletedHandle(); + } + + protected override void OnBeforeWaitForEndOfStreamsError(TimeSpan waited) + { + // The wait for streams finished before streams were fully read. + // this usually indicates the process is still running. + // Proc will successfully kill the host but will leave the JavaProcess the bat file starts running + // The opensearch jar is closing down so won't leak but might prevent EphemeralClusterComposer to do its clean up. + // We do a hard kill on both here to make sure both processes are gone. + HardKill(HostProcessId); + HardKill(JavaProcessId); + } + + private static void HardKill(int? processId) + { + if (!processId.HasValue) return; + try + { + var p = Process.GetProcessById(processId.Value); + p.Kill(); + } + catch (Exception) + { + } + } + + protected override bool ContinueReadingFromProcessReaders() + { + if (!NodeStarted) return true; + return true; + + // some how if we return false here it leads to Task starvation in Proc and tests in e.g will OpenSearch.OpenSearch.Xunit will start + // to timeout. This makes little sense to me now, so leaving this performance optimization out for now. Hopefully another fresh look will yield + // to (not so) obvious. + //return this.NodeConfiguration.ShowOpenSearchOutputAfterStarted; + } + + protected override bool KeepBufferingLines(LineOut c) + { + var lineOutParser = LineOutParser.From(NodeConfiguration.ServerType); + //if the node is already started only keep buffering lines while we have a writer and the nodeconfiguration wants output after started + if (NodeStarted) + { + var keepBuffering = Writer != null && NodeConfiguration.ShowOpenSearchOutputAfterStarted; + if (!keepBuffering) CancelAsyncReads(); + return keepBuffering; + } + + var parsed = lineOutParser.TryParse(c?.Line, out _, out _, out var section, out _, out var message, + out var started); + + if (!parsed) return Writer != null; + + if (JavaProcessId == null && lineOutParser.TryParseNodeInfo(section, message, out var version, out var pid)) + { + JavaProcessId = pid; + Version = version; + } + + else if (lineOutParser.TryGetPortNumber(section, message, out var port)) + { + Port = port; + var dp = NodeConfiguration.DesiredPort; + if (dp.HasValue && Port != dp.Value) + throw new OpenSearchCleanExitException( + $"Node started on port {port} but {dp.Value} was requested"); + } + + if (!started) started = AssumedStartedStateChecker(section, message); + if (started) + { + if (!Port.HasValue) + throw new OpenSearchCleanExitException( + $"Node started but OpenSearchNode did not grab its port number"); + NodeStarted = true; + _startedHandle.Set(); + } + + // if we have dont a writer always return true + if (Writer != null) return true; + //otherwise only keep buffering if we are not started + return !started; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Managed/README.md b/abstractions/src/OpenSearch.OpenSearch.Managed/README.md new file mode 100644 index 0000000000..7b336efe43 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Managed/README.md @@ -0,0 +1,86 @@ +# OpenSearch.Managed +Provides an easy to start/stop one or more OpenSearch instances that exists on disk already + + +## OpenSearchNode + +A `Proc.ObservableProcess` implementation that starts an OpenSearch instance from the specified +location. It is able to optionally block untill the node goes into started state and it sniffs the output +to expose useful information such as the java process id, port number and others. + +Because its a subclass of `Proc.ObservableProcess` its completely reactive and allows you to seperate the act +of listening to the output and proxying stdout/err. + +#### Examples: + +All the examples assume the following are defined. `openSearchHome` points to a local folder where `OpenSearch` is installed/unzipped. + +```csharp +var version = "1.0.0"; +var openSearchHome = Environment.ExpandEnvironmentVariables($@"%LOCALAPPDATA%\OpenSearchManaged\{version}\opensearch-{version}"); +``` + +The easiest way to get going pass the `version` and `openSearchHome` to `OpenSearchNode`. +`OpenSearchNode` implements `IDisposable` and will try to shutdown gracefully when disposed. +Simply new'ing `OpenSearchNode` won't actually start the node. We need to explicitly call `Start()`. +`Start()` has several overloads but the default waits `2 minutes` for a started confirmation and proxies +the consoleout using `HighlightWriter` which pretty prints the opensearch output. + + +```csharp +using (var node = new OpenSearchNode(version, openSearchHome)) +{ + node.Start(); +} +``` + +`Start` is simply sugar over + +```csharp +using (var node = new OpenSearchNode(version, openSearchHome)) +{ + node.SubscribeLines(new HighlightWriter()); + + if (!node.WaitForStarted(TimeSpan.FromMinutes(2))) throw new Exception(); +} +``` + +As mentioned before `OpenSearchNode` is really an `IObservable` by virtue of being an +subclass of `Proc.ObservableProcess`. `SubscribeLines` is a specialized +`Subscribe` that buffers `CharactersOut` untill a line is formed and emits a `LineOut`. Overloads exists that +take additional `onNext/onError/onCompleted` handlers. + +A node can also be started using a `NodeConfiguration` + +```csharp +var clusterConfiguration = new ClusterConfiguration(version, ServerType.OpenSearch, openSearchHome); +var nodeConfiguration = new NodeConfiguration(clusterConfiguration, 9200) +{ + ShowOpenSearchOutputAfterStarted = false, + Settings = { "node.attr.x", "y" } +}; +using (var node = new OpenSearchNode(nodeConfiguration)) +{ + node.Start(); +} +``` + +Which exposes the full range of options e.g here `ShowOpenSearchOutputAfterStarted` will dispose +of the console out subscriptions as soon as we've parsed the started message to minimize the resources we consume. +`Settings` here allows you to pass opensearch node settings to use for the node. + +## OpenSearchCluster + +A simple abstraction that can can start and stop one or more `OpenSearchNodes` and wait for all of them to +be started + +```csharp +var clusterConfiguration = new ClusterConfiguration(version, ServerType.OpenSearch, openSearchHome, numberOfNodes: 2); +using (var cluster = new OpenSearchCluster(clusterConfiguration)) +{ + cluster.Start(); +} +``` + +`OpenSearchCluster` is simply a barebones `ClusterBase` implementation, which is more powerful then it seems +and serves as the base for `OpenSearch.Managed.Ephemeral`. diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearch.OpenSearch.Xunit.csproj b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearch.OpenSearch.Xunit.csproj new file mode 100644 index 0000000000..77b3d3745c --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearch.OpenSearch.Xunit.csproj @@ -0,0 +1,15 @@ + + + + netstandard2.0;net461 + Provides an Xunit test framework allowing you to run integration tests against local ephemeral OpenSearch clusters + opensearch,opensearch,xunit,cluster,integration,test,ephemeral + false + + + + + + + + diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitConfigurationAttribute.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitConfigurationAttribute.cs new file mode 100644 index 0000000000..4efb622b98 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitConfigurationAttribute.cs @@ -0,0 +1,57 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; + +namespace OpenSearch.OpenSearch.Xunit +{ + /// + /// An assembly attribute that specifies the + /// for Xunit tests within the assembly. + /// + [AttributeUsage(AttributeTargets.Assembly)] + public class OpenSearchXunitConfigurationAttribute : Attribute + { + /// + /// Creates a new instance of + /// + /// + /// A type deriving from that specifies the run options + /// + public OpenSearchXunitConfigurationAttribute(Type type) + { + var options = Activator.CreateInstance(type) as OpenSearchXunitRunOptions; + Options = options ?? new OpenSearchXunitRunOptions(); + } + + /// + /// The run options + /// + public OpenSearchXunitRunOptions Options { get; } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunOptions.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunOptions.cs new file mode 100644 index 0000000000..ff841b76c3 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunOptions.cs @@ -0,0 +1,97 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using OpenSearch.OpenSearch.Xunit.XunitPlumbing; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Xunit +{ + /// + /// The Xunit test runner options + /// + public class OpenSearchXunitRunOptions + { + /// + /// Informs the runner whether we expect to run integration tests. Defaults to true + /// + public bool RunIntegrationTests { get; set; } = true; + + /// + /// Setting this to true will assume the cluster that is currently running was started for the purpose of these tests + /// Defaults to false + /// + public bool IntegrationTestsMayUseAlreadyRunningNode { get; set; } = false; + + /// + /// Informs the runner whether unit tests will be run. Defaults to false. + /// If set to true and is false, the runner will run all the + /// tests in parallel with the maximum degree of parallelism + /// + public bool RunUnitTests { get; set; } + + /// + /// A global test filter that can be used to only run certain tests. + /// Accepts a comma separated list of filters + /// + public string TestFilter { get; set; } + + /// + /// A global cluster filter that can be used to only run certain cluster's tests. + /// Accepts a comma separated list of filters + /// + public string ClusterFilter { get; set; } + + /// + /// Informs the runner what version of OpenSearch is under test. Required for + /// to kick in + /// + public OpenSearchVersion Version { get; set; } + + /// + /// Called when the tests have finished running successfully + /// + /// Per cluster timings of the total test time, including starting OpenSearch + /// All collection of failed cluster, failed tests tuples + public virtual void OnTestsFinished(Dictionary runnerClusterTotals, + ConcurrentBag> runnerFailedCollections) + { + } + + /// + /// Called before tests run. An ideal place to perform actions such as writing information to + /// . + /// + public virtual void OnBeforeTestsRun() + { + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunner.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunner.cs new file mode 100644 index 0000000000..b9ba0fec81 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/OpenSearchXunitRunner.cs @@ -0,0 +1,37 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using OpenSearch.OpenSearch.Ephemeral; + +namespace OpenSearch.OpenSearch.Xunit +{ + public static class OpenSearchXunitRunner + { + public static IEphemeralCluster CurrentCluster { get; internal set; } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/PrintXunitAfterStartedTask.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/PrintXunitAfterStartedTask.cs new file mode 100644 index 0000000000..eea8e4f381 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/PrintXunitAfterStartedTask.cs @@ -0,0 +1,47 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using OpenSearch.OpenSearch.Ephemeral; +using OpenSearch.OpenSearch.Ephemeral.Tasks; +using OpenSearch.OpenSearch.Managed.ConsoleWriters; + +namespace OpenSearch.OpenSearch.Xunit +{ + /// + /// A task that writes a diagnostic message to indicate that tests will now run + /// + public class PrintXunitAfterStartedTask : ClusterComposeTask + { + /// + public override void Run(IEphemeralCluster cluster) + { + var name = cluster.GetType().Name; + cluster.Writer.WriteDiagnostic($"All good! kicking off [{name}] tests now"); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/README.md b/abstractions/src/OpenSearch.OpenSearch.Xunit/README.md new file mode 100644 index 0000000000..5177cd4268 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/README.md @@ -0,0 +1,104 @@ +# OpenSearch.OpenSearch.Xunit + +Write integration tests against OpenSearch. +Works with `.NET Core` and `.NET 4.6` and up. + +Supports `dotnet xunit`, `dotnet test`, `xunit.console.runner` and tests will be runnable in your IDE through VSTest and jetBrains Rider. + + +## Getting started + +**NOTE:** `OpenSearch.Xunit` supports both .NET core and Full Framework 4.6 and up. The getting started uses the new csproj +from core but you can also use a full framework project. + +### Create a class library project + +```xml + + + netcoreapp3.0 + + + + + + + + + + + +``` + +### Use OpenSearch.OpenSearch.Xunit's test framework + +Add the following Assembly attribute anywhere in your project. This informs Xunit to use our +test framework to orchestrate and discover the tests. + +```csharp +[assembly: Xunit.TestFrameworkAttribute("OpenSearch.OpenSearch.Xunit.Sdk.OpenSearchTestFramework", "OpenSearch.OpenSearch.Xunit")] +``` + +### Create a cluster + +This is the cluster that we'll write our integration test against. You can have multiple cluster. +`OpenSearch.OpenSearch.Xunit` will only ever start one cluster at a time and then run all tests belonging to that cluster. + +```csharp +/// Declare our cluster that we want to inject into our test classes +public class MyTestCluster : XunitClusterBase +{ + /// + /// We pass our configuration instance to the base class. + /// We only configure it to run version 1.0.0 here but lots of additional options are available. + /// + public MyTestCluster() : base(new XunitClusterConfiguration("1.0.0")) { } +} +``` + +### Create a test class + +```csharp +public class ExampleTest : IClusterFixture +{ + public ExampleTest(MyTestCluster cluster) + { + // This registers a single client for the whole clusters lifetime to be reused and shared. + // we do not expose Client on the passed cluster directly for two reasons + // + // 1) We do not want to prescribe how to new up the client + // + // 2) We do not want OpenSearch.Xunit to depend on OSC. OpenSearch.Xunit can start clusters + // and OSC Major.x is only tested and supported against OpenSearch Major.x. + // + this.Client = cluster.GetOrAddClient(c => + { + var nodes = cluster.NodesUris(); + var connectionPool = new StaticConnectionPool(nodes); + var settings = new ConnectionSettings(connectionPool) + .EnableDebugMode(); + return new OpenSearchClient(settings); + ); + } + + private OpenSearchClient Client { get; } + + /// [I] marks an integration test (like [Fact] would for plain Xunit) + [I] public void SomeTest() + { + var rootNodeInfo = this.Client.RootNodeInfo(); + + rootNodeInfo.Name.Should().NotBeNullOrEmpty(); + } +} + +``` + +### Run your integration tests! + +![jetBrains rider integration](ide-integration.png) + +Or on the command line using `dotnet test` + +![sample output](output.gif) + diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/ForEachAsyncExtensions.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/ForEachAsyncExtensions.cs new file mode 100644 index 0000000000..8e2f4c61ff --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/ForEachAsyncExtensions.cs @@ -0,0 +1,49 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace OpenSearch.OpenSearch.Xunit.Sdk +{ + internal static class ForEachAsyncExtensions + { + internal static Task ForEachAsync(this IEnumerable source, int dop, Func body) => + Task.WhenAll( + from partition in Partitioner.Create(source).GetPartitions(dop) + select Task.Run(async delegate + { + using (partition) + while (partition.MoveNext()) + await body(partition.Current).ConfigureAwait(false); + })); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFramework.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFramework.cs new file mode 100644 index 0000000000..621b6f0d84 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFramework.cs @@ -0,0 +1,56 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.Reflection; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.Sdk +{ + public class OpenSearchTestFramework : XunitTestFramework + { + public OpenSearchTestFramework(IMessageSink messageSink) : base(messageSink) + { + } + + protected override ITestFrameworkDiscoverer CreateDiscoverer(IAssemblyInfo assemblyInfo) => + new OpenSearchTestFrameworkDiscoverer(assemblyInfo, SourceInformationProvider, DiagnosticMessageSink); + + protected override ITestFrameworkExecutor CreateExecutor(AssemblyName assemblyName) + { + var assembly = Assembly.Load(assemblyName); + var options = assembly.GetCustomAttribute()?.Options ?? + new OpenSearchXunitRunOptions(); + + return new TestFrameworkExecutor(assemblyName, SourceInformationProvider, DiagnosticMessageSink) + { + Options = options + }; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFrameworkDiscoverer.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFrameworkDiscoverer.cs new file mode 100644 index 0000000000..b59692b347 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/OpenSearchTestFrameworkDiscoverer.cs @@ -0,0 +1,65 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.Reflection; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.Sdk +{ + public class OpenSearchTestFrameworkDiscoverer : XunitTestFrameworkDiscoverer + { + public OpenSearchTestFrameworkDiscoverer(IAssemblyInfo assemblyInfo, ISourceInformationProvider sourceProvider, + IMessageSink diagnosticMessageSink, IXunitTestCollectionFactory collectionFactory = null) : base( + assemblyInfo, sourceProvider, diagnosticMessageSink, collectionFactory) + { + var a = Assembly.Load(new AssemblyName(assemblyInfo.Name)); + var options = a.GetCustomAttribute()?.Options ?? + new OpenSearchXunitRunOptions(); + Options = options; + } + + /// + /// The options for + /// + public OpenSearchXunitRunOptions Options { get; } + + protected override bool FindTestsForType(ITestClass testClass, bool includeSourceInformation, + IMessageBus messageBus, ITestFrameworkDiscoveryOptions discoveryOptions) + { + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.Version), Options.Version); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunIntegrationTests), Options.RunIntegrationTests); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.IntegrationTestsMayUseAlreadyRunningNode), + Options.IntegrationTestsMayUseAlreadyRunningNode); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunUnitTests), Options.RunUnitTests); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.TestFilter), Options.TestFilter); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.ClusterFilter), Options.ClusterFilter); + return base.FindTestsForType(testClass, includeSourceInformation, messageBus, discoveryOptions); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestAssemblyRunner.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestAssemblyRunner.cs new file mode 100644 index 0000000000..1b8f46420b --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestAssemblyRunner.cs @@ -0,0 +1,307 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; +using System.Threading; +using System.Threading.Tasks; +using OpenSearch.OpenSearch.Ephemeral; +using OpenSearch.OpenSearch.Ephemeral.Tasks.ValidationTasks; +using OpenSearch.OpenSearch.Xunit.XunitPlumbing; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.Sdk +{ + internal class TestAssemblyRunner : XunitTestAssemblyRunner + { + private readonly Dictionary> _assemblyFixtureMappings = + new Dictionary>(); + + private readonly List, GroupedByCluster>> _grouped; + + public TestAssemblyRunner(ITestAssembly testAssembly, + IEnumerable testCases, + IMessageSink diagnosticMessageSink, + IMessageSink executionMessageSink, + ITestFrameworkExecutionOptions executionOptions) + : base(testAssembly, testCases, diagnosticMessageSink, executionMessageSink, executionOptions) + { + var tests = OrderTestCollections(); + RunIntegrationTests = executionOptions.GetValue(nameof(OpenSearchXunitRunOptions.RunIntegrationTests)); + IntegrationTestsMayUseAlreadyRunningNode = + executionOptions.GetValue(nameof(OpenSearchXunitRunOptions + .IntegrationTestsMayUseAlreadyRunningNode)); + RunUnitTests = executionOptions.GetValue(nameof(OpenSearchXunitRunOptions.RunUnitTests)); + TestFilter = executionOptions.GetValue(nameof(OpenSearchXunitRunOptions.TestFilter)); + ClusterFilter = executionOptions.GetValue(nameof(OpenSearchXunitRunOptions.ClusterFilter)); + + //bit side effecty, sets up _assemblyFixtureMappings before possibly letting xunit do its regular concurrency thing + _grouped = (from c in tests + let cluster = ClusterFixture(c.Item2.First().TestMethod.TestClass) + let testcase = new GroupedByCluster {Collection = c.Item1, TestCases = c.Item2, Cluster = cluster} + group testcase by testcase.Cluster + into g + orderby g.Count() descending + select g).ToList(); + } + + public ConcurrentBag Summaries { get; } = new ConcurrentBag(); + + public ConcurrentBag> FailedCollections { get; } = + new ConcurrentBag>(); + + public Dictionary ClusterTotals { get; } = new Dictionary(); + + private bool RunIntegrationTests { get; } + private bool IntegrationTestsMayUseAlreadyRunningNode { get; } + private bool RunUnitTests { get; } + private string TestFilter { get; } + private string ClusterFilter { get; } + + protected override Task RunTestCollectionAsync(IMessageBus b, ITestCollection c, + IEnumerable t, CancellationTokenSource s) + { + var aggregator = new ExceptionAggregator(Aggregator); + var fixtureObjects = new Dictionary(); + foreach (var kv in _assemblyFixtureMappings) fixtureObjects.Add(kv.Key, kv.Value); + return new TestCollectionRunner(fixtureObjects, c, t, DiagnosticMessageSink, b, TestCaseOrderer, aggregator, + s) + .RunAsync(); + } + + protected override async Task RunTestCollectionsAsync(IMessageBus messageBus, + CancellationTokenSource cancellationTokenSource) + { + //threading guess + var defaultMaxConcurrency = Environment.ProcessorCount * 4; + + if (RunUnitTests && !RunIntegrationTests) + return await UnitTestPipeline(defaultMaxConcurrency, messageBus, cancellationTokenSource) + .ConfigureAwait(false); + + return await IntegrationPipeline(defaultMaxConcurrency, messageBus, cancellationTokenSource) + .ConfigureAwait(false); + } + + + private async Task UnitTestPipeline(int defaultMaxConcurrency, IMessageBus messageBus, + CancellationTokenSource ctx) + { + //make sure all clusters go in started state (won't actually start clusters in unit test mode) + //foreach (var g in this._grouped) g.Key?.Start(); + + var testFilters = CreateTestFilters(TestFilter); + await _grouped.SelectMany(g => g) + .ForEachAsync(defaultMaxConcurrency, + async g => { await RunTestCollections(messageBus, ctx, g, testFilters).ConfigureAwait(false); }) + .ConfigureAwait(false); + //foreach (var g in this._grouped) g.Key?.Dispose(); + + return new RunSummary + { + Total = Summaries.Sum(s => s.Total), + Failed = Summaries.Sum(s => s.Failed), + Skipped = Summaries.Sum(s => s.Skipped) + }; + } + + private async Task IntegrationPipeline(int defaultMaxConcurrency, IMessageBus messageBus, + CancellationTokenSource ctx) + { + var testFilters = CreateTestFilters(TestFilter); + foreach (var group in _grouped) + { + OpenSearchXunitRunner.CurrentCluster = @group.Key; + if (@group.Key == null) + { + var testCount = @group.SelectMany(q => q.TestCases).Count(); + Console.WriteLine($" -> Several tests skipped because they have no cluster associated"); + Summaries.Add(new RunSummary {Total = testCount, Skipped = testCount}); + continue; + } + + var type = @group.Key.GetType(); + var clusterName = type.Name.Replace("Cluster", string.Empty) ?? "UNKNOWN"; + if (!MatchesClusterFilter(clusterName)) continue; + + var dop = @group.Key.ClusterConfiguration?.MaxConcurrency ?? defaultMaxConcurrency; + dop = dop <= 0 ? defaultMaxConcurrency : dop; + + var timeout = @group.Key.ClusterConfiguration?.Timeout ?? TimeSpan.FromMinutes(2); + + var skipReasons = @group.SelectMany(g => g.TestCases.Select(t => t.SkipReason)).ToList(); + var allSkipped = skipReasons.All(r => !string.IsNullOrWhiteSpace(r)); + if (allSkipped) + { + Console.WriteLine($" -> All tests from {clusterName} are skipped under the current configuration"); + Summaries.Add(new RunSummary {Total = skipReasons.Count, Skipped = skipReasons.Count}); + continue; + } + + ClusterTotals.Add(clusterName, Stopwatch.StartNew()); + + bool ValidateRunningVersion() + { + try + { + var t = new ValidateRunningVersion(); + t.Run(@group.Key); + return true; + } + catch (Exception) + { + return false; + } + } + + using (@group.Key) + { + if (!IntegrationTestsMayUseAlreadyRunningNode || !ValidateRunningVersion()) + @group.Key?.Start(timeout); + + await @group.ForEachAsync(dop, + async g => + { + await RunTestCollections(messageBus, ctx, g, testFilters).ConfigureAwait(false); + }) + .ConfigureAwait(false); + } + + ClusterTotals[clusterName].Stop(); + } + + return new RunSummary + { + Total = Summaries.Sum(s => s.Total), + Failed = Summaries.Sum(s => s.Failed), + Skipped = Summaries.Sum(s => s.Skipped) + }; + } + + private async Task RunTestCollections(IMessageBus messageBus, CancellationTokenSource ctx, GroupedByCluster g, + string[] testFilters) + { + var test = g.Collection.DisplayName.Replace("Test collection for", string.Empty).Trim(); + if (!MatchesATestFilter(test, testFilters)) return; + if (testFilters.Length > 0) Console.WriteLine(" -> " + test); + + try + { + var summary = await RunTestCollectionAsync(messageBus, g.Collection, g.TestCases, ctx) + .ConfigureAwait(false); + var type = g.Cluster?.GetType(); + var clusterName = type?.Name.Replace("Cluster", "") ?? "UNKNOWN"; + if (summary.Failed > 0) + FailedCollections.Add(Tuple.Create(clusterName, test)); + Summaries.Add(summary); + } + catch (TaskCanceledException) + { + // TODO: What should happen here? + } + } + + private static string[] CreateTestFilters(string testFilters) => + testFilters?.Split(',').Select(s => s.Trim()).Where(s => !string.IsNullOrWhiteSpace(s)).ToArray() + ?? new string[] { }; + + private static bool MatchesATestFilter(string test, IReadOnlyCollection testFilters) + { + if (testFilters.Count == 0 || string.IsNullOrWhiteSpace(test)) return true; + return testFilters + .Any(filter => test.IndexOf(filter, StringComparison.OrdinalIgnoreCase) >= 0); + } + + private bool MatchesClusterFilter(string cluster) + { + if (string.IsNullOrWhiteSpace(cluster) || string.IsNullOrWhiteSpace(ClusterFilter)) return true; + return ClusterFilter + .Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries) + .Select(c => c.Trim()) + .Any(c => cluster.IndexOf(c, StringComparison.OrdinalIgnoreCase) >= 0); + } + + private IEphemeralCluster ClusterFixture(ITestClass testMethodTestClass) + { + var clusterType = GetClusterForClass(testMethodTestClass.Class); + if (clusterType == null) return null; + + if (_assemblyFixtureMappings.TryGetValue(clusterType, out var cluster)) return cluster; + Aggregator.Run(() => + { + var o = Activator.CreateInstance(clusterType); + cluster = o as IEphemeralCluster; + }); + _assemblyFixtureMappings.Add(clusterType, cluster); + return cluster; + } + + public static bool IsAnIntegrationTestClusterType(Type type) => + typeof(XunitClusterBase).GetTypeInfo().IsAssignableFrom(type.GetTypeInfo()) + || IsSubclassOfRawGeneric(typeof(XunitClusterBase<>), type); + + public static Type GetClusterForClass(ITypeInfo testClass) => + GetClusterFromClassClusterFixture(testClass) ?? GetClusterFromIntegrationAttribute(testClass); + + private static Type GetClusterFromClassClusterFixture(ITypeInfo testClass) => ( + from i in testClass.Interfaces + where i.IsGenericType + from a in i.GetGenericArguments() + select a.ToRuntimeType() + ).FirstOrDefault(IsAnIntegrationTestClusterType); + + private static Type GetClusterFromIntegrationAttribute(ITypeInfo testClass) => + testClass.GetCustomAttributes(typeof(IntegrationTestClusterAttribute)) + .FirstOrDefault()?.GetNamedArgument(nameof(IntegrationTestClusterAttribute.ClusterType)); + + private static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) + { + while (toCheck != null && toCheck != typeof(object)) + { + var cur = toCheck.GetTypeInfo().IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck; + if (generic == cur) return true; + + toCheck = toCheck.GetTypeInfo().BaseType; + } + + return false; + } + + private class GroupedByCluster + { + public IEphemeralCluster Cluster { get; set; } + public ITestCollection Collection { get; set; } + public List TestCases { get; set; } + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestCollectionRunner.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestCollectionRunner.cs new file mode 100644 index 0000000000..0f9711cc0e --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestCollectionRunner.cs @@ -0,0 +1,72 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.Sdk +{ + internal class TestCollectionRunner : XunitTestCollectionRunner + { + private readonly Dictionary _assemblyFixtureMappings; + private readonly IMessageSink _diagnosticMessageSink; + + public TestCollectionRunner(Dictionary assemblyFixtureMappings, + ITestCollection testCollection, + IEnumerable testCases, + IMessageSink diagnosticMessageSink, + IMessageBus messageBus, + ITestCaseOrderer testCaseOrderer, + ExceptionAggregator aggregator, + CancellationTokenSource cancellationTokenSource) + : base(testCollection, testCases, diagnosticMessageSink, messageBus, testCaseOrderer, aggregator, + cancellationTokenSource) + { + _assemblyFixtureMappings = assemblyFixtureMappings; + _diagnosticMessageSink = diagnosticMessageSink; + } + + protected override Task RunTestClassAsync(ITestClass testClass, IReflectionTypeInfo @class, + IEnumerable testCases) + { + // whats this doing exactly?? + var combinedFixtures = new Dictionary(_assemblyFixtureMappings); + foreach (var kvp in CollectionFixtureMappings) + combinedFixtures[kvp.Key] = kvp.Value; + + // We've done everything we need, so hand back off to default Xunit implementation for class runner + return new XunitTestClassRunner(testClass, @class, testCases, _diagnosticMessageSink, MessageBus, + TestCaseOrderer, new ExceptionAggregator(Aggregator), CancellationTokenSource, combinedFixtures) + .RunAsync(); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestFrameworkExecutor.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestFrameworkExecutor.cs new file mode 100644 index 0000000000..2ec6b3df2e --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/Sdk/TestFrameworkExecutor.cs @@ -0,0 +1,115 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using OpenSearch.OpenSearch.Managed; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.Sdk +{ + internal class TestFrameworkExecutor : XunitTestFrameworkExecutor + { + public TestFrameworkExecutor(AssemblyName a, ISourceInformationProvider sip, IMessageSink d) : base(a, sip, d) + { + } + + public OpenSearchXunitRunOptions Options { get; set; } + + public override void RunAll(IMessageSink executionMessageSink, ITestFrameworkDiscoveryOptions discoveryOptions, + ITestFrameworkExecutionOptions executionOptions) + { + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.Version), Options.Version); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunIntegrationTests), Options.RunIntegrationTests); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.IntegrationTestsMayUseAlreadyRunningNode), + Options.IntegrationTestsMayUseAlreadyRunningNode); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunUnitTests), Options.RunUnitTests); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.TestFilter), Options.TestFilter); + discoveryOptions.SetValue(nameof(OpenSearchXunitRunOptions.ClusterFilter), Options.ClusterFilter); + + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.Version), Options.Version); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunIntegrationTests), Options.RunIntegrationTests); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.IntegrationTestsMayUseAlreadyRunningNode), + Options.IntegrationTestsMayUseAlreadyRunningNode); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunUnitTests), Options.RunUnitTests); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.TestFilter), Options.TestFilter); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.ClusterFilter), Options.ClusterFilter); + + base.RunAll(executionMessageSink, discoveryOptions, executionOptions); + } + + + public override void RunTests(IEnumerable testCases, IMessageSink executionMessageSink, + ITestFrameworkExecutionOptions executionOptions) + { + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.Version), Options.Version); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunIntegrationTests), Options.RunIntegrationTests); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.IntegrationTestsMayUseAlreadyRunningNode), + Options.IntegrationTestsMayUseAlreadyRunningNode); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.RunUnitTests), Options.RunUnitTests); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.TestFilter), Options.TestFilter); + executionOptions.SetValue(nameof(OpenSearchXunitRunOptions.ClusterFilter), Options.ClusterFilter); + base.RunTests(testCases, executionMessageSink, executionOptions); + } + + protected override async void RunTestCases(IEnumerable testCases, IMessageSink sink, + ITestFrameworkExecutionOptions options) + { + options.SetValue(nameof(OpenSearchXunitRunOptions.Version), Options.Version); + options.SetValue(nameof(OpenSearchXunitRunOptions.RunIntegrationTests), Options.RunIntegrationTests); + options.SetValue(nameof(OpenSearchXunitRunOptions.IntegrationTestsMayUseAlreadyRunningNode), + Options.IntegrationTestsMayUseAlreadyRunningNode); + options.SetValue(nameof(OpenSearchXunitRunOptions.RunUnitTests), Options.RunUnitTests); + options.SetValue(nameof(OpenSearchXunitRunOptions.TestFilter), Options.TestFilter); + options.SetValue(nameof(OpenSearchXunitRunOptions.ClusterFilter), Options.ClusterFilter); + try + { + using (var runner = + new TestAssemblyRunner(TestAssembly, testCases, DiagnosticMessageSink, sink, options)) + { + Options.OnBeforeTestsRun(); + await runner.RunAsync().ConfigureAwait(false); + Options.OnTestsFinished(runner.ClusterTotals, runner.FailedCollections); + } + } + catch (Exception e) + { + if (e is OpenSearchCleanExitException || e is AggregateException ae && + ae.Flatten().InnerException is OpenSearchCleanExitException) + sink.OnMessage(new TestAssemblyCleanupFailure(Enumerable.Empty(), TestAssembly, + new OpenSearchCleanExitException("Node failed to start", e))); + else + sink.OnMessage(new TestAssemblyCleanupFailure(Enumerable.Empty(), TestAssembly, e)); + throw; + } + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterBase.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterBase.cs new file mode 100644 index 0000000000..2c7f5d15b7 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterBase.cs @@ -0,0 +1,53 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using OpenSearch.OpenSearch.Ephemeral; + +namespace OpenSearch.OpenSearch.Xunit +{ + /// + /// Base class for a cluster that integrates with Xunit tests + /// + public abstract class XunitClusterBase : XunitClusterBase + { + protected XunitClusterBase(XunitClusterConfiguration configuration) : base(configuration) + { + } + } + + /// + /// Base class for a cluster that integrates with Xunit tests + /// + public abstract class XunitClusterBase : EphemeralCluster + where TConfiguration : XunitClusterConfiguration + { + protected XunitClusterBase(TConfiguration configuration) : base(configuration) + { + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterConfiguration.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterConfiguration.cs new file mode 100644 index 0000000000..058ed676a8 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterConfiguration.cs @@ -0,0 +1,60 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using OpenSearch.OpenSearch.Ephemeral; +using OpenSearch.OpenSearch.Ephemeral.Plugins; +using OpenSearch.Stack.ArtifactsApi; + +namespace OpenSearch.OpenSearch.Xunit +{ + public class XunitClusterConfiguration : EphemeralClusterConfiguration + { + public XunitClusterConfiguration( + OpenSearchVersion version, + ServerType serverType, + ClusterFeatures features = ClusterFeatures.None, + OpenSearchPlugins plugins = null, + int numberOfNodes = 1) + : base(version, serverType, features, plugins, numberOfNodes) => + AdditionalAfterStartedTasks.Add(new PrintXunitAfterStartedTask()); + + /// + protected override string NodePrefix => "xunit"; + + /// + /// The maximum number of tests that can run concurrently against a cluster using this configuration. + /// + public int MaxConcurrency { get; set; } + + /// + /// The maximum amount of time a cluster can run using this configuration. + /// + public TimeSpan? Timeout { get; set; } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterExtensions.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterExtensions.cs new file mode 100644 index 0000000000..f27ca8208f --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitClusterExtensions.cs @@ -0,0 +1,53 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Concurrent; +using OpenSearch.OpenSearch.Ephemeral; + +namespace OpenSearch.OpenSearch.Xunit +{ + /// + /// Extension methods for + /// + public static class XunitClusterExtensions + { + private static readonly ConcurrentDictionary Clients = + new ConcurrentDictionary(); + + /// + /// Gets a client for the cluster if one exists, or creates a new client if one doesn't. + /// + /// the cluster to create a client for + /// A delegate to create a client, given the cluster to create it for + /// the type of the client + /// An instance of a client + public static T GetOrAddClient(this IEphemeralCluster cluster, Func getOrAdd) => + (T) Clients.GetOrAdd(cluster, c => getOrAdd(c)); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IClusterFixture.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IClusterFixture.cs new file mode 100644 index 0000000000..852f47775b --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IClusterFixture.cs @@ -0,0 +1,40 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using OpenSearch.OpenSearch.Ephemeral; +using OpenSearch.OpenSearch.Managed; + +namespace OpenSearch.OpenSearch.Xunit.XunitPlumbing +{ + // ReSharper disable once UnusedTypeParameter + // used by the runner to new() the proper cluster + public interface IClusterFixture + where TCluster : ICluster, new() + { + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestClusterAttribute.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestClusterAttribute.cs new file mode 100644 index 0000000000..0f074e6d3b --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestClusterAttribute.cs @@ -0,0 +1,47 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using OpenSearch.OpenSearch.Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.XunitPlumbing +{ + [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] + public class IntegrationTestClusterAttribute : Attribute + { + public IntegrationTestClusterAttribute(Type clusterType) + { + if (!TestAssemblyRunner.IsAnIntegrationTestClusterType(clusterType)) + throw new ArgumentException( + $"Cluster must be subclass of {nameof(XunitClusterBase)} or {nameof(XunitClusterBase)}<>"); + ClusterType = clusterType; + } + + public Type ClusterType { get; } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestDiscoverer.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestDiscoverer.cs new file mode 100644 index 0000000000..4f92d63780 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/IntegrationTestDiscoverer.cs @@ -0,0 +1,136 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Linq; +using OpenSearch.OpenSearch.Xunit.Sdk; +using OpenSearch.Stack.ArtifactsApi; +using SemVer; +using Xunit; +using Xunit.Abstractions; +using Xunit.Sdk; +using Enumerable = System.Linq.Enumerable; + +namespace OpenSearch.OpenSearch.Xunit.XunitPlumbing +{ + /// + /// An Xunit test that should be skipped, and a reason why. + /// + public abstract class SkipTestAttributeBase : Attribute + { + /// + /// Whether the test should be skipped + /// + public abstract bool Skip { get; } + + /// + /// The reason why the test should be skipped + /// + public abstract string Reason { get; } + } + + /// + /// An Xunit integration test + /// + [XunitTestCaseDiscoverer("OpenSearch.OpenSearch.Xunit.XunitPlumbing.IntegrationTestDiscoverer", + "OpenSearch.OpenSearch.Xunit")] + public class I : FactAttribute + { + } + + /// + /// A test discoverer used to discover integration tests cases attached + /// to test methods that are attributed with attribute + /// + public class IntegrationTestDiscoverer : OpenSearchTestCaseDiscoverer + { + public IntegrationTestDiscoverer(IMessageSink diagnosticMessageSink) : base(diagnosticMessageSink) + { + } + + /// + protected override bool SkipMethod(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, + out string skipReason) + { + skipReason = null; + var runIntegrationTests = + discoveryOptions.GetValue(nameof(OpenSearchXunitRunOptions.RunIntegrationTests)); + if (!runIntegrationTests) return true; + + var cluster = TestAssemblyRunner.GetClusterForClass(testMethod.TestClass.Class); + if (cluster == null) + { + skipReason += + $"{testMethod.TestClass.Class.Name} does not define a cluster through IClusterFixture or {nameof(IntegrationTestClusterAttribute)}"; + return true; + } + + var openSearchVersion = + discoveryOptions.GetValue(nameof(OpenSearchXunitRunOptions.Version)); + + // Skip if the version we are testing against is attributed to be skipped do not run the test nameof(SkipVersionAttribute.Ranges) + var skipVersionAttribute = Enumerable.FirstOrDefault(GetAttributes(testMethod)); + if (skipVersionAttribute != null) + { + var skipVersionRanges = + skipVersionAttribute.GetNamedArgument>(nameof(SkipVersionAttribute.Ranges)) ?? + new List(); + if (openSearchVersion == null && skipVersionRanges.Count > 0) + { + skipReason = $"{nameof(SkipVersionAttribute)} has ranges defined for this test but " + + $"no {nameof(OpenSearchXunitRunOptions.Version)} has been provided to {nameof(OpenSearchXunitRunOptions)}"; + return true; + } + + if (openSearchVersion != null) + { + var reason = skipVersionAttribute.GetNamedArgument(nameof(SkipVersionAttribute.Reason)); + for (var index = 0; index < skipVersionRanges.Count; index++) + { + var range = skipVersionRanges[index]; + // inrange takes prereleases into account + if (!openSearchVersion.InRange(range)) continue; + skipReason = + $"{nameof(SkipVersionAttribute)} has range {range} that {openSearchVersion} satisfies"; + if (!string.IsNullOrWhiteSpace(reason)) skipReason += $": {reason}"; + return true; + } + } + } + + var skipTests = GetAttributes(testMethod) + .FirstOrDefault(a => a.GetNamedArgument(nameof(SkipTestAttributeBase.Skip))); + + if (skipTests == null) return false; + + skipReason = skipTests.GetNamedArgument(nameof(SkipTestAttributeBase.Reason)); + return true; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/OpenSearchTestCaseDiscoverer.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/OpenSearchTestCaseDiscoverer.cs new file mode 100644 index 0000000000..d3e16b90cb --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/OpenSearchTestCaseDiscoverer.cs @@ -0,0 +1,107 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Linq; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.XunitPlumbing +{ + /// + /// Base test discoverer used to discover tests cases attached + /// to test methods that are attributed with (or a subclass). + /// + public abstract class OpenSearchTestCaseDiscoverer : IXunitTestCaseDiscoverer + { + protected readonly IMessageSink DiagnosticMessageSink; + + protected OpenSearchTestCaseDiscoverer(IMessageSink diagnosticMessageSink) => + DiagnosticMessageSink = diagnosticMessageSink; + + /// + public IEnumerable Discover(ITestFrameworkDiscoveryOptions discoveryOptions, + ITestMethod testMethod, IAttributeInfo factAttribute) => + SkipMethod(discoveryOptions, testMethod, out var skipReason) + ? string.IsNullOrEmpty(skipReason) + ? new IXunitTestCase[] { } + : new IXunitTestCase[] {new SkippingTestCase(skipReason, testMethod, null)} + : new[] + { + new XunitTestCase(DiagnosticMessageSink, discoveryOptions.MethodDisplayOrDefault(), + discoveryOptions.MethodDisplayOptionsOrDefault(), testMethod) + }; + + /// + /// Detemines whether a test method should be skipped, and the reason why + /// + /// The discovery options + /// The test method + /// The reason to skip + /// + protected virtual bool SkipMethod(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, + out string skipReason) + { + skipReason = null; + return false; + } + + protected static TValue GetAttribute(ITestMethod testMethod, string propertyName) + where TAttribute : Attribute + { + var classAttributes = testMethod.TestClass.Class.GetCustomAttributes(typeof(TAttribute)) ?? + Enumerable.Empty(); + var methodAttributes = testMethod.Method.GetCustomAttributes(typeof(TAttribute)) ?? + Enumerable.Empty(); + var attribute = classAttributes.Concat(methodAttributes).FirstOrDefault(); + return attribute == null ? default(TValue) : attribute.GetNamedArgument(propertyName); + } + + protected static IList GetAttributes(ITestMethod testMethod) + where TAttribute : Attribute + { + var classAttributes = testMethod.TestClass.Class.GetCustomAttributes(typeof(TAttribute)) ?? + Enumerable.Empty(); + var methodAttributes = testMethod.Method.GetCustomAttributes(typeof(TAttribute)) ?? + Enumerable.Empty(); + return classAttributes.Concat(methodAttributes).ToList(); + } + + protected static IEnumerable GetAttributes(ITestMethod testMethod, + string propertyName) + where TAttribute : Attribute + { + var classAttributes = testMethod.TestClass.Class.GetCustomAttributes(typeof(TAttribute)); + var methodAttributes = testMethod.Method.GetCustomAttributes(typeof(TAttribute)); + return classAttributes + .Concat(methodAttributes) + .Select(a => a.GetNamedArgument(propertyName)); + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkipVersionAttribute.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkipVersionAttribute.cs new file mode 100644 index 0000000000..be3607cdc0 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkipVersionAttribute.cs @@ -0,0 +1,65 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System; +using System.Collections.Generic; +using System.Linq; +using SemVer; + +namespace OpenSearch.OpenSearch.Xunit.XunitPlumbing +{ + /// + /// An Xunit test that should be skipped for given OpenSearch versions, and a reason why. + /// + public class SkipVersionAttribute : Attribute + { + // ReSharper disable once UnusedParameter.Local + // reason is used to allow the test its used on to self document why its been put in place + public SkipVersionAttribute(string skipVersionRangesSeparatedByComma, string reason) + { + Reason = reason; + Ranges = string.IsNullOrEmpty(skipVersionRangesSeparatedByComma) + ? new List() + : skipVersionRangesSeparatedByComma.Split(',') + .Select(r => r.Trim()) + .Where(r => !string.IsNullOrWhiteSpace(r)) + .Select(r => new Range(r)) + .ToList(); + } + + /// + /// The reason why the test should be skipped + /// + public string Reason { get; } + + /// + /// The version ranges for which the test should be skipped + /// + public IList Ranges { get; } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkippingTestCase.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkippingTestCase.cs new file mode 100644 index 0000000000..b5c8b44e09 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/SkippingTestCase.cs @@ -0,0 +1,71 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.Threading; +using System.Threading.Tasks; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.XunitPlumbing +{ + public class SkippingTestCase : TestMethodTestCase, IXunitTestCase + { + /// Used for de-serialization. + public SkippingTestCase() + { + } + + /// + /// Initializes a new instance of the class. + /// + /// The test method this test case belongs to. + /// The arguments for the test method. + public SkippingTestCase(string skipReason, ITestMethod testMethod, object[] testMethodArguments = null) + : base(TestMethodDisplay.ClassAndMethod, TestMethodDisplayOptions.None, testMethod, testMethodArguments) => + SkipReason = skipReason ?? "skipped"; + + public int Timeout => 0; + + /// + public Task RunAsync( + IMessageSink diagnosticMessageSink, + IMessageBus messageBus, + object[] constructorArguments, + ExceptionAggregator aggregator, + CancellationTokenSource cancellationTokenSource) => + new XunitTestCaseRunner( + this, + DisplayName, + SkipReason, + constructorArguments, + TestMethodArguments, + messageBus, + aggregator, + cancellationTokenSource).RunAsync(); + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/UnitTestDiscoverer.cs b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/UnitTestDiscoverer.cs new file mode 100644 index 0000000000..763a385c48 --- /dev/null +++ b/abstractions/src/OpenSearch.OpenSearch.Xunit/XunitPlumbing/UnitTestDiscoverer.cs @@ -0,0 +1,72 @@ +/* SPDX-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 B.V. under one or more contributor +* license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright +* ownership. Elasticsearch B.V. 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. +*/ + +using System.Linq; +using Xunit; +using Xunit.Abstractions; +using Xunit.Sdk; + +namespace OpenSearch.OpenSearch.Xunit.XunitPlumbing +{ + /// + /// An Xunit unit test + /// + [XunitTestCaseDiscoverer("OpenSearch.OpenSearch.Xunit.XunitPlumbing.UnitTestDiscoverer", + "OpenSearch.OpenSearch.Xunit")] + public class U : FactAttribute + { + } + + /// + /// A test discoverer used to discover unit tests cases attached + /// to test methods that are attributed with attribute + /// + public class UnitTestDiscoverer : OpenSearchTestCaseDiscoverer + { + public UnitTestDiscoverer(IMessageSink diagnosticMessageSink) : base(diagnosticMessageSink) + { + } + + /// + protected override bool SkipMethod(ITestFrameworkDiscoveryOptions discoveryOptions, ITestMethod testMethod, + out string skipReason) + { + skipReason = null; + var runUnitTests = discoveryOptions.GetValue(nameof(OpenSearchXunitRunOptions.RunUnitTests)); + if (!runUnitTests) return true; + + var skipTests = GetAttributes(testMethod) + .FirstOrDefault(a => a.GetNamedArgument(nameof(SkipTestAttributeBase.Skip))); + + if (skipTests == null) return false; + + skipReason = skipTests.GetNamedArgument(nameof(SkipTestAttributeBase.Reason)); + return true; + } + } +} diff --git a/abstractions/src/OpenSearch.OpenSearch.Xunit/ide-integration.png b/abstractions/src/OpenSearch.OpenSearch.Xunit/ide-integration.png new file mode 100644 index 0000000000000000000000000000000000000000..d0923170e0c1e40d5d7cf80b9b57b1082253416a GIT binary patch literal 19303 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
dR70#VAt2Laemspyo#Vh{-kA>#l>K*&nR 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

omWe5t2eou_pe|~)6pMiGUZPfqhxd1h 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� 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%0A1Lv-NsOm5ZT?|-H_p}T;tW9*DVs{1(4t+ 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%0AQyba}Bv8Uwh)+N?xzg{mN@| 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Ð~cvC6!BQjx@p9TugKY3eyn?10q@CijQn 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] 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ⅈa3axXs6Wo6BwcF}kEn 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

Z-z=LZQ%n441|TC?w8IcL>+R#45qq zN6b`A>)~p|%qoOt=vRu2haydRyei5Nt0ambc+gX_ZcxK)K@eaf0FdZE?898HhYVJY$2k&E53PVlt84 z)F_W01c*7@-@Hqeik0GI>Evu_njXaF5KfM*U7Fxyo^09aKu*Md73ECE=wuScuA`tB zC+mo5IK~d_>}f!9h4To@@SIunxNPwp&!mcBVZj8;LJ!Sqq@&8xtYDAKZqImPR{UVv z1Gtak2WeWvmCZI;DiNP_w$k3;E0B(T0A|-T{DH40@_Ir^uiKH8cU>#Wu@kiFR{p<~M&Ov1MwOLHVUD#4H$GKCXjMe~m}Gbr z6kbXednpzUM4XyVS`CV9(y0~uCZ=d1pIXmh*%e;tRbutkbGk%e_1XJ9fS$2294}U6 zUC(zO1W|PFF6B>Yk(Oy0t)?PvOhAIts)S`}#QK6lUJ&xN7;?D0ul!=Jb46=dO8)tNr>|P#f&H$+~a+hBWBljb+ULJFe`g zOL0PlU08;pSlC?df_)g=lGxeR$1?2r zp`SlCijnPDl06x4f))8inI0Wkl`#qmVA(;N&X##uKyUOFA6udE9iJIRnyp!zU5{Vg z+4C6MNyFKp-ZAs=l}P(p@3gd=^^Tws8lv$XNYmdc>R+dk52zh7RwVLUm_;c!+TiI$ zI)D~XfB#yjX_}+$q$X2!Rm+KeMOYtdO<(|f17URpM?$)L% zz+p8twY62t^<2-^TPGd2;n`M8;E4W%K8&?pmNl`N8@dgq%dNH6#`V70wKOF*T|4$; z)0*E^bpQlF)!7VK|3d{B0fw?h*+E@uEL>_dTrjrW>W$vN`J`!=+-JL%YD4yG!**=X zmhb380Lb=j<92TA_HOew(&BX@Eu_i{6LbN3%>%e7}qc56tt z=J`*)ZU*!jpNUQB{4Uu(&$QSPEo)7ijDFz>B@8n{8$?*{t4_}6MXGZgphKvW$VWS;Ybt!3- zw`Xi07DJ9ilV4Sd-+4!b`5ie%x0db9H)e>T^1OHZML8MP-)E48ep7}qZAN4Ncb6;o z;DBJ*QlLE{;04xG1EO{TMqpDO5d@MsZIGa__C}nu-mdoB2dbdmmU#)<`4M$Tn6F?Z zw&04RlMK?J4SH)}>YzaIV0VL=HRDSV?r7JQwewLMj-$qok4BGkMiZ*U6MD{%-sbR&{?{CI1GJo;lwh&-s9spv4u$TKnFoC%rs zN$Gs1v$MKnU1UNYBt|x*NBV_A*6~qDn&k*)t`dvi*auI#pU_ zt~R1p#v&=VvyeJVWJU_WRbttYv?|v)rc8udHKB0cqj47Jk1Ow?MTK_O1Xdsx zA4BI*ct6iVWKt|eQ#^%oVn0z-#nJl(WQ8YyQ<`JcMSPwQGpT22S^pN&vS(nJr+Kb= z*!w>~01!BkU_pZi5hhf)kYPiI4sR|89 z(P0p3(J3VhMDaNgD8Y*dH60oFp;Uu5M>3eA0HDn(yQ_)-(Bz0(rHts#K!H@)&bsr|n{Gk< z78p+;g+C0i~)0 z>Oc#Yd|HW6Lw~x-QAksgbSp{)LUckjRT?X+Ku2w;EB}FLAe5o2N-avOg=lc<&p-jV zbc-OWP%2SSEkddwzXW2dfeaeaKrXuYBB+gI1p-zf3XLQUGSdv|Vzz5BY0MzgirY4m zYXDh5roVv`NHwZ_lU6g(BpdFx)iN{Jv)RHuOcTzmy_S<~PctZkNd&-cU2-!U%-(yo z-IGFu{KSsG0tpmwJOKsj?!JN;)K9vGuY;Ij``oKozxF)7xV{4!Rw%*u)+5&?jON`b7z(o6p_yG+vTwAC)r$|TR^)9=3l z4_xrU2`}96!x2y1&V*B?)lru^$b#0ZA`i53gdT5H@`5}iDDzr3?{qA(cop5}uc&%; z)v+3Ph*i{Gr8P3xXGO?^v2_j%_h!`!wk^GuICj~B%6J5_3{=T$A!x_;w_D;YW5_gr zy$!gaaf>R~H9)|<9yrt7B{yEjvVC6M@ik+?jCiq67y5z$KX|F#yHmlxlF8fd;e{n8 zh(7T!7N7JifMWn~j>;MWosktpfeD$}dkDmy^)ygp)wy5HQWhTqori#n*dTm9wX+MU zNJBSzh17aRq)mt@M;Iz009L3gf@DjCWTQC*2uRKg;wDn-F6V%(!1lQKq*+>t6%7@bA*7)II2@h7}Wm|l7prr&+Q z6T)NGVN}sOO&ISljvSl&G~*foWIz+gIoCl*c^uOK0ywFhmTwG#y;E9?GyCd{_t@2% zTjuL}+Z&%O2eLjkz)zNHFlBJi$0zw2#7_?#5Q4mO9{mN7JNJv&!Vg8 zqv#=3@;Oka8H9#3LLmV5nYDxxG$jW0+CsYq(SyPYcSa;g6cOUlxFyj_W`aRJ_y*E~ zzyKURzyLe2L^?0dl%_Sc=}mE(Q=R6?NJgm%7km;HmiX!hKlRC_2DQk72$c&+VJa7> zxYQ^Nl`KY83WbVVlb}x3CQ&I=6rA!@H2GAkM9HI9vx=#&vP6$J5aZ_xY1Krr)vGeq z-LLMl3cd)dD4j^fT!u#+RoI1-oiq#XNI4r(j{S1Ubih!7LkE@WF=?6ar32z%lVwU)Jw{PTtZyZJ&l};+Re8e<&J9Y7kVH{%_ z&zQz|dSs1nN`phPiFt$Tah<3|r!L@&vDU+}ZKH}?Hy)YEw`FpiZd^qtKbgu^w(^y+ zoMksfS<8xZ)Q)-VNgs6~Xh@0rhi zHXKvB>Sr7?)sb}N6QRvwXgLL$PM@6(kp&GAM8itak>=v0Ee#Ps0}^qV&h)229codJ zn$)E>^{G*vYE`eA)vb2*t6?2$Sj@0!=W_VurU9c*C_o7lz1^``4; z>^gZG*@xz8p#yD2N7q(*nOH30By(-Wc^YArUej~*RKYY=Y`a?Iwm~)#;WSZgA?#+8 zy9<(T_g19YhfW9It_X<}6Xe{=_V>R5?kBSHDyy;z%jn4J$Ac6+Du8B5lB*i+uZ{(& zEK$|Lb=B{{{B*2ScsTzK#V6(xb7Wz*6Uk~rVV|{gZ2JZfru?~`K*{E$yWLIyixbo-V%>zC!0G3S;5oC) zP3mw^p4g$M^;Q2qb_z?x>`zm>nz~OAwm(Gae3HB3>Mr)Yub=(9zA@@sRk;E<;Q_CM zT&^yoy35g^@uAVbZEL3wiTurO<~j_Dw{hZD4oAS5FOG=X5&%Qw{QU$UoNT;sJk zfik9THDr(mv*%hUgOrRcI8sYoUck|Y;|9q`F@BIBWMejpt_5E(Plk^m&V!reLz@`p zV^U_iE{MFW$snc!45i~^{D)<_F6hAd(r+Nr@BA=q?gX=K_EH#MfiRmfA&${Y z9Mf)!k!;jU8acBwRqe*Q0w#1~CQL^qSVHuKA}3@59GfENOhPqxLLReEHod|sz-;5Z z?eAQZb42ARN)szo=Z(AqEW|=rR3cHrHH2;oYvVd$LnU{kH>^jNgyVf~V+FCW|9ZtBoTGtk61ax4 znkEK-I_5yyLuR()4^0N^l#eG3hz;MvKi+8|1Vri#N)DY)~6#2$Uz(h=r(MgtwOCX^aNzoY< zGgzWTAbj*joybd$@gOSGFp-pP4l@uvb4sc7(;lgH1Z7f4GanOWQGByj9tEf}C8@p& zHM;_-B85yjg-iL7kzyxxI*%)41xuv@9Z4lP5eAUx)K+lCI5UuU{&84}g&_Zx<&vBw zA&%2s7)@a81=6y!GS-Y-APWacOCv+8=sL1eV~aNQWnTJaU_NquYzaHRvmj9G(IOSe zfXI!Qu4aPE3w828nQOR2W+*jgI`r^5JcedM##IeM`Ete%3p9g3X1H4BV_qgdQs!n- z#zANXf7(-2P7LIP(8HAPk>aOXHRFggD@LKA`qur3Jz zisyKeCpzzQFpgt8A+;fH6|w!1nbN&fUJuq0c4#35&FtWI>5F%S$glhJFZW0#_8b=37}5ha?I{>rzNS)E+Hth@6PuK1@t{baIdA!V;4i zFZV;DRPIVqAqI9bpQvE*Okq(sb!iNY6s{{s?>D*eV&xQ$*l6((b&cGVW9#T95HBA0 zsE?G&ce&J#oWdv$3GoCkPCJKX0o8Xnf|3YzAdp9sa1T*+50w8l<9Hg&A<@UODzYRQ zOR|peXt~!hTu=aP2_c3yX*)7Cd?}XDN0^8yT#RX#VA5*svzgjfDx;~pxR!s)aGe&y z3md4L6bPJ(k|D_HS4n1p5dxj6&wvV)K>RmA0Ayz32>`lDC^xta_ZFY#E~5U)p8!gt z1nR)>5}{7ma0%?8A_|2Rs-i9=Xc|`$w+~?=_gUI<}MWQ4KX#>85{G6e%LSz zRv5d1Mh^m{%m#@=%5?2hb*Z?Db*iU4uB_IosUl9TkV@gCD&@p#A()D&$J=2zV5qFAiOI0J;*B!bD6t> zdCDMc-h2oi;>$&p#=h_?!2+ymCJey{>YKgKTcakQ49sZ&Y{7)4!5*v|1{{dsUrAS>cabZtc%mtKr^>I` zbW9S{gn513>*x~<*%t>HSZ<$A8^x~}c|uJJmr^?I-Qy088E zuK_!-1$(dwyRhkvs$+Vp!x~Q%8>+wo#6Y5gB(h;gA16;N=cOcxH|SZ*DiI`*3>hmVVD?DLb-7 zYif~0vax8W*<`adcx~0BvnRrBmv6YX>*@wr>zvss@o-_hu9-P@?MC|{N;^bvy6jF{ zAjZ!j5(Zzd$ideH!XZ2%o_LO?7`8F|-}cV*0tG4{uks2n3J%Y)brbT!(Nq+#k1TIC zK^*i@6Ja!u!xf^%2Lkg<1t~V~a!_vp)$fru@bzLZdP&gss#oVw&~R4C_o!`7I8w{l zTTT?TP2@Wws`4P1aweZIo1zavWI1IF`1%UOgQs}GNjt%(^}r{hz+q^>Im#d=TyfqU zIV7AJMK>L$A&8?j!}UD2mkj>?PY3@Bus82dqvLOLPJAH>9nc@p9N}isuj&BX*d2{g z#Q(?v1@O@$5KmK2ABn;v>WZT`uoOCQl!TmSN3gF<(0Y%&k~slr3Bn2wIR^R_NxGiRg50DD{NbCp5pc~5Pdv319Bi`wjd2Pl2kn*Q}PNS z5`4WyB2_XnY+YN{_kB4MBSV#ZUtJ<)`O<>|@fEDTZvDm6{A> zJ-pUy-#dYPa+|KHC-m7Nr zz;YABGA_$@IAP?CTWfJ~YIT*5?YAQOw2Gi&zz z2>=kJodDF}I5^axnWIgUE~EG z)|^YX?!$z3Sw1|WNKuM|iclCdp~zt1!G#Z=Sn*KBU%Q6^5C))N(ZWRw0ANOJa5H7g za~-3s-1zar6N~>+C)UhZGU$bqH46ry=(Rx=i3wN699Vbi1(6NnwY!Pi!7uiF7~Jsg z)x$OS9x!(f0J`+%29f)iZqRy7>%|SYyQY14bMDoni{I5f`oZD{(U+gAcVVb&4c4Y@vfe9&n)~ z00QlBkOu@EbOS*KOyLj!9caM?7gaX-WR!PV(EyiTf?1H5OOnZCl?x5G5S0Z1V1N`$ z+KH!&H<uX5#8v230j^TB#PbR8MZHWff7qCgl~bF==vC ztFCeat5hdtFo^(T3A-y%2Qm9%^@U7lZf9!Knty)(narAwb1$CLtTjnfz7mkA9PdDibh*0X}4^*?e^Pn z$1V5Vbk}Y7-8$~f(4t*R$z>LK0wCz$d3FGJO??|=c;IhB`cUG8PYI{mCk>vZ--ZSX zXOfK5W%(4C?>X1y4{=_T2jEJ)QtG2hbZJE*EzxPH50&xAP8p~YQeCDVSuL$^1!Y%M z)z*sbL%Q0@YgT~Viu_tp6}v04Il&5iuGAOBf*Hsr4{Y$<&TVQ zy1LYCKGRWI#pbh#=%D8~$uUR=9k&pasSJb7;h=h4RS4HV>AdK&ormW zojpYyF_v!-z!R1Y@!Ld_zEQ%D5a{> z0*JMwQZB1{-a=ZL6HXjOT1b)QwXl*)Xd#bz)Jq`Z{N zxea3~v%dK$27Tyi-(1-DzuT&=xgYaO_2H>$m{H)<0?is}knKGX0Ae4j$G2wXn`Ola&^q>hfPR2|I zfSUPpp)$-54-ZnrgJ6Ii>^UjXIy6#}{%~obcqtTlSki@9s4hw5VN6kSQ=7K*QuXM@ zf)sI;bh6wN7#s&RwDO);=PHZ(8tMUH8gXzZ(DbR3-VyDo8>} z19T!48=>7>RN;|MdQwt5OQlyvNlH`p#CgerrLB&&kXNqqc*<+mRG4)MFl0pys!gr) zqK6h&Wkp-ITqS6QX_Zla7PQ9lO0a(W74ebvBu82pxgxY91y*accJ<_qrEgQbS$(o}`(ebVtbk@xp;} ztWF30hd-JzkAi^g9(r((ctZBV11A`w6$?*8{rk}DXbi#b0a-p0QQ!qLcu@M?7)YJT zx&a~0AT{lf(D2a}XapIc1SZV)Ui&~6@%;Op}C>=UB z5hRcM)FwOm$xx26l&6eXDqGngG^pc_K3O*|4=I*H>cX=~iP|f>4Zo#}qnX!S6Ew4V zNP1(N4xc*b%f9)}c+Rt)_blZ&^ZBS<((;xutL8Hkx=3ISk{QM<=J5U5M{Zu-qwyT+ zNgJuqM5=RBd&(y!Tl&+W4z;L9?aVJ3meg!ED`rhiNVlmPNvsx9qJsomuZ$VhHG1`- zVvTF3>blo8q5-elrfH=@A|F@V&|5tX>}EUr+0c%*w5Lt&YFqo-*v_`Lx6SQtd;8nq z4!5|+P404=``qYGx4PHO?smKT-SCdLyys2tCkq>{t*-w!v6l^Ne8cV63>mf-YrRYt z^@Ou`J9sa%2ypTVJV)YcTfB0_E&zV9;V0RIh;ziUx^#R;AAg9(`D>$lpV~zO8fme8 z%x`_W{N*s`^UkEog|!Y_Ad{oHBk#iNdw+@92)X${>eMBz0t)Aj!+5`cKG>QoyN*g% zT$*CdR;OF(;a(naq z;`FpQk0y>I=GFx@<_(v4>r&mz44$6vy-ngNN1PGUDCFPaD99y`5|7GAZ(^HE%JI51 z7}Y)Ipbx$1k-D=RNNI6oY=A(vBt|8`Ngyg=WSjrZw0bN9-Ac6oqu{pS`Xx8A_XmO8 zp~!0b$jznolN0`n+z3k0rM~uYI`l~gh^@Hu|d0goaSqJw%gaC;c2I2y=-YGhO!*nw(= z5_!cCo_2v@wMQ!Wf^8={(RYHzcUW;YNu}@x5`le^br5Axc7xIhy90re21=uqOeoPj zxivbO5CfXvERHrTVsUHUvpg_CT%7O|1ZV#hR)~eW;wnFpN@Z3Qo3#^a@B+2w7LB%r zG%<##;wo_`g$VaH=?5;Afq$UEP4aRt0Rwmo6kp#(7lA>D^VKehmv}0$cs0RZANAW{k-Knj_1Ne@wkB0>L0Of)GseYh@|v481PE}QW_=#o#GxJ^CT z8urH*(u6?vWKWYwL4X%ugF!*=V{wa+0*vTBv+*zS1b@s0O}pVRpwX29xlaq#Pb1V( z1yWHT)j|pdi!Zd6GxHt)unVK$53t}eWSLPFBQwAVQf}#%^uanbln+`{5C2h8CdM8x za5Xyx0E@|Z*!Y-`8JRiaXL;lSRv-deumwF31?uQHO_GkDbD5dBndLZDC&whBshOPl zNZxWsaFQjgCul2Snr4?rb@Bf>u{n%`qJu$ab(V>lswr6d^n(P6DHlP6iWL$gQ4$W> zW)S&1!V@jRQ#{(27T3d(Mu8L`$xBgjOwi+nTCs3lQCv1Lom&BuW`P#RBTQ`pK4Jld zZF7@*(HEv6h=TZ&>LNe&VjG*`8L=^n{-Sr}6_oBnF!0qH@pKUXIUBXn7`dScy8#>y z1EIeWF{KDX3-Un~gC5o)AIZU?1Q=l{Gae}P3Lt7xzsONFqB~nLKYod>Cf_rCDbXygqOS*#k)Hu6YD7<-g zePlYCV=4Zdaoo7f| zBl(>m2@|w*e!iqUeVQwJT3X6NEzM$vY==wKxt%SMsC62jw-;x4x0BGNKBobc0F*Bc z!x`}s822+7_QEinnm#yrUH+0k^Mo()RWSE*FsI?43?nZO6EGHPf;Gc37Xvc?1v9)V zG9(j1Z+SA&Az>?HGV1{|da0rd^{WCFL&yb~4LGAUVVFzvAX~FyG4y#o+O6I?dU~U! zX!3!FL#4)tdME)o=*pVu8dxY8I8w@vuUU^?>N%UUb130~RZ176ldoo?uI1{318Jsb zq6xC2rnO^PxwHR-4~Zn;0-ae{o)KG}L_wW)S`&`iD^f_FF-cpw)DzUxXxCYOfUrH? z^PO=A6ccM`A(g30X`k5TKAKv8^W#4``5H!9Krdo{r}~L>0Zo3Vv-Zb#3ZxkNLw}zU zK@&7jQ(6-jB&-?KP&1=K*8#0mTY$z|qEx%AG_z0|dMMJ`Gu29?Lu8{%^rqjMwrWd( zVH8Mt#C+x&j^?^XbM!`-_O^87d#(v7hqOmgaB9#eMqU+zbKAFxGzE)va?ppjttpTw z0fcAr0hWZYrKL%u;(ZNEj3OyYxT8uHnLVbpOBdN$r-iY&LQAc3OVeVy94S56a}qFV zk$Z{~+*AKdx|AzWD7$ncp9%^Zem73k)Tx+yP4h{!(S?8CZaN_kjw!B0|KQ3EAV1Z7bMRbhS!V(A;AGh?h2RZtFvmmAf! z3$eandlH;Rtvp4xjF~izd0!^Dwgg~vOlI#*{U!B(evZ-rJ4 zoTF8@Rb~}ee@jSaWpxR>ReaS)8|+pBcLRVWoFUvIX2m*arwLnEkZ0mpkj18zTUit- zzz+KsS2%^Cg%rf)N}elQ980>QYZb9Ir>*r`u?2>|;)TR@Tg~EIqeY(OH+N7>6?mAZ zN6i0+lL{`%^_2Q|FV7{sJULy0mx$YhT?T3pyP*i(rN(s8l$CfAc5E1d*NE%&s_wN2 z?SqJ~QFx7LU6JNt8wUUsW-`${LV$9&*l8j03FZ*J}MHO+B3T|zyL(Lf#4Su}HYRl&XK!8upd5!}Fu;&Vp5 zMnVTCP705Cf^>ewbo8NBDnWC%XVnbS&L=U|{#JF8;?-ffGcx=UT<3MO6Lv{RcIb?@ znwxf4ymkdQJS4rtbpdxga?)PJ%`B}=1iE+H)OQ3l7fm^pYpi!`j7>3pPm33cfXu^k zBY-d>9zQ)JmMtR)coLm0)Sw;ObyIq$SFUUnxV-mzQ4o9heA>Dzt(=eyl`(cP(p~kg}Er z*g-PbJMz*r0)Ndre?hB==Y@Y|95C!Oz1-V>ulzQfO*iiiBcJWl&@9^aecy1VW*3+_ zi_?Po$|WJl6C-#yu+6Unt^@wPjxKzIe0yB-ID@PG)i&sY4K5?~T15$N+|=BVW-5fr zO}R#hgm$8Yb~e|)1)mS0hkD%;Wf-X(sm&Ri6<{cah05YrIA+9^hMKU3DxNEFC|n&$ zhrxv`OxT>_)?VF1!p#t*llD23nVO%3XYTixO-DJr zNjc^66sw5%l-mpD4>6TbewFa@8d@nBT$vhP+2!MX$nKCc@Nxf_2Do7CQI;Y!mMrv^ zYuQf?&rk;cLh+q(4nH+zxd~^9mk{5UAm2ihKJp~bBb4bUzd4#?TI!zpCAob^sY#kD zz0#Ev^D7^(WQCifUOKc{CUL#Db(NcY&6{ksHc~pA1N%A_fe~%}5z2{4z7E}*3$Zl; z7Z%Hrcq*uDvF*$b0IAZQxDw+qflT75r&fQSWf2q;8B6Sm-Dj`YL;~1+!Lu;yi871s zideJ!ndS^ zh50SC35Y&1%?h>HLEk6Jq9iGd1Hpfo9wVZ$3p zC^|IYZdbxJ_a5YYkg(>>nLiV5c=xK|CTFf`3PI~>_306)UsuY)$3indG-J9<=fZqU%-I{4<=mL@L|M>6)$Go z*zse?ktI)NOd||W#K()itVkxo)ExKXsh%qVR z9y_JA0V$*N^3E)LxM`oheFn#CK>17$RvO$!o?B)^%QH0{Y51YkbWKZ4Q2@}!QN%Kj z1SHI$s)%0Q*e^Hia%nw)43s2z&A(r-flOFPsJ{Cs0#Lx2)WAWh0249;lJx-LWWog< zQjkFeA1rXJOe%D!3rr;FkD?1H0)z!KJWQxW4qu39M9T1r53lSZI$;GBR%mD<08IFZ zM;}Sj(IFL5*bB&uAZjQhB>_0$qn7ki#7O^&npB8NuTaA1B>+sC@}!R(GGRz3qcrFx zgBCdRp(p{EF(|9*dSI@hit=hHIw*<*YsRtO}^6stVLAumH%Ds8^zDYptww zVl<*WH?b>5Of%JVQ%*be^ixnn6?IfnOXaJ^+ce8fIydJdtvctf<87uJSiQm3gbIiP zSBh$#?pD~UgXy|pW%CsP8dwEDS7ja2bv_SNjfmOliiL^QWUF;fSY(@Zc2{eya|l(3 zw(IUY06y?!yzh(#7x09^zC5D3}R#J+|AQL&*6{=M(OgajtoV4oUH zP(_8i-~_@9CfU$J4-p1H!-!aHNR9t~74CRo2XSD-zmHW^17L?l{`5_+$n9~YE?>$K zq#s`jvY{Jo3==OTuT01yp;7wi=DkXq$;vW;9+GG$p?qnPpJ#3eC5;+_8tJXcObF(P zmg31#r!EaU&ZnjdH0`n^Wrr?`5*6EQ01~}RZg-?A`+*JMxv6iR99;vgp39)0 zb#cZUcl>e4BbR(~${Q!wIW98i0y$kXcl8F%H}9#l%%%0Jb1vpXoeO(sLjCj5g?$rr z%{h-E^Jb~d_4drK!@PE}bpJZ`o>2Gp2GeP4Xmw&~&z##gW!7XB>Q_0>yXg$*Bo*?^ zqo_UV>8*EMUJIVEUw>KVa6=H0NGdZ{evB5kp1=tobVDb`c(t}1;tN(9Lf-c z1URwvNQ`~xJ79%8#vle}0)QW5pS~K{DX?J%S18fhA{f$53E;mpHgI!;6YC%RTgf z6*00gA#SlF6)X2gKn7BfgCt}j4SC3j$PAH-#16L*6FpvS3X+o1SY$xtpMoKXkr-^< zOcc3EQ0^sziCIcuzQF$vqX3|9KnZ0lUHM8_#!{BEq@`j$Se{(N_+-XpaUgnK@ECPgeFv>3uS0S z9r{p+MpU8`rD#PhdQpsKRHGZ^Xh%KzQILjIq$4G1NlkiEl&18f^}MG_C8JMdsS{H$ zWobAg!?C{r2z`viX@V%kDVWAgriW2P)gm*)!+;P=k_&2KYT`%36zZvI3}{Ue(^Qvc zRjXUYl+1o-FWUd*E(*f>o$0(1)@s$WcX>hU^2T}^Erd>5y5bgAu@gGqO<}Fg(JSj5 z($**T)m|{|%sqkGkm*(Lda7_&2H4ex>a8MP+M^ySYwv=@kF8j_ZOY3@8appv<&8^~wV^_1t?=rbv&8En#*zlM~=}O;V!LmjIxG54Hqq zig?R8bn^l zm^W-*Mh%s%?8q6Jc~%(|UU~2GUAMLr&QY$7aZdN-uc;FDzMv4v{FtAI6v>D<1bj*mO0c+PEcY>XJs-E!-#e36E<83K;iP zlVHH(pI3YfD`)a2G}cXzRXGbQ2e%cy0U{mkwaCBOmwxXr7sTbDZD&mRMFVa!A*jp39~< zvAPRxe(q+y7(K2)pOwuca%Cwfp>)D&bC?4Q^foI+IZEdO(62t0s87Al(Yb795qn_o zfPfSYD75z+;`W39n!gcOd@) zFL`*uFDTY$ctIK}5Fp5dZ1E1_bpZ?HF_GzA*m{v!n%>>Q6cVIoJX;~T^OAZe4avq& z8rqO{#x)y?sZG$fHr8x}+ip|aNjAHPmd+iK*&4qiE1}u)|2k|a*6mP7xwku}36`{x z%`1izvfb>4laOCgZKzPeJ1zbR_x}{@@4iV6TE$D$LU^;H`fXwl_-LQfPoWKfpU;CLd^?94MCU( z(SS&xg9HeWO!Gn*DZ^gdDHef|HiQfmQ=})cF_%!b7D|ZK(;D2GiJ-9(lW2*ZS+{Q+ zw?JeX*W(#%!wB0;#2%5F5~_%g@R5#KfQ7)sf#4CRyAyf)qJ`7A>MNu2i<9qjh)IzX z>YIvDbcpzCh()mz@)L?xq?7ZTl(FHb?OU#}5Q?Q>lv{)p{VOmGum-xofOSZv5AX&b zFgc)r0hfC|2CPPFG^tN24$|NPRnZj_gbCBQLC}aR(NQmM+zfAAmFfQ=opQv$ZluAW z<3Z{W3pxWkJ3Fgp(MHmf7I#EPc#IiosmCbW!5ySVC5(t4{EiH01PyqsBQ&(LOTr$+ z6`W!x`oJGfD6J1+nZA3qzYDwv;qA#tsU03jp_8l+l?CJ7RyObMkN%B4v}Pn-#; zi4v1g%8vjckst{}ObM4@35~c)XNo?7KJi6LA;#`I6nncOe`7^5Ql+<{ z6Sp{v>zh7C`GPsZi&(4^xtOD1EQ-F|itzKK0t*FJ`T%=Kxtafa1!znNX-p#|yGG9J z%!g7WeRPfg`m%YfGt-<2<#~2}BmkPeN1^B%-}`;|o13 zHml^%lc1T|+6alDk`@~iN6eZTGra|Uw@-uB3i;d?wv>|%c$>WtoHvp_MCpo6 zct!DpIJ;O;Q2?m?YekAUC3=9HyP+F!rHiG&zxV%(8D42daScEO%$0NqQq3GTBdu3^ zttx!!tLG^m-hmz95lyjsvwqzj&7s%VfeGRnQsA^5nGzo6NsfeFmMBn`-`Q7*^_<)Y zNPR6wralg+aB2QJ)J+p8`=JNH_yR?bDS+kORt} z1Cql~15}r7n4OB*Nd*uO0X-KnpG%`zn@yno=^p{u*$Ro-$QacG?VubJ2oXZnonfMA z^P$|M%2e%=--@9b^4hRytZB~gMKI6ko=l5>`mOE~~E zInf1D%oNfKy;s#;U2!t924q3!YBWz7&V;haR@ z);(V24JG1DDP7{S!=PPJm0gCi&Ss)lmd#!3WejO@xQr{L^XsR`<;B2QUcfNk