diff --git a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java index b62ff129c8638..3afd66ea00012 100644 --- a/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java +++ b/buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java @@ -117,7 +117,6 @@ public void apply(Project project) { } Map> batsTests = new HashMap<>(); batsTests.put("bats oss", configureBatsTest(project, "oss", distributionsDir, copyDistributionsTask)); - batsTests.put("bats default", configureBatsTest(project, "default", distributionsDir, copyDistributionsTask)); configureBatsTest(project, "plugins",distributionsDir, copyDistributionsTask, copyPluginsTask).configure(t -> t.setPluginsDir(pluginsDir) ); diff --git a/qa/os/bats/default/10_basic.bats b/qa/os/bats/default/10_basic.bats deleted file mode 100644 index b3683b5dd158e..0000000000000 --- a/qa/os/bats/default/10_basic.bats +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bats - -# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -# or more contributor license agreements. Licensed under the Elastic License; -# you may not use this file except in compliance with the Elastic License. - -# This file is used to test the X-Pack package. - -# WARNING: This testing file must be executed as root and can -# dramatically change your system. It removes the 'elasticsearch' -# user/group and also many directories. Do not execute this file -# unless you know exactly what you are doing. - -load $BATS_UTILS/utils.bash -load $BATS_UTILS/tar.bash -load $BATS_UTILS/plugins.bash -load $BATS_UTILS/xpack.bash - -setup() { - skip_not_tar_gz - export ESHOME=/tmp/elasticsearch - export PACKAGE_NAME="elasticsearch" - export_elasticsearch_paths - export ESPLUGIN_COMMAND_USER=elasticsearch -} - -@test "[X-PACK] install default distribution" { - # Cleans everything for the 1st execution - clean_before_test - - # Install the archive - install_archive - set_debug_logging -} - -@test "[X-PACK] verify x-pack installation" { - verify_xpack_installation -} - -@test "[X-PACK] verify croneval works" { - run $ESHOME/bin/elasticsearch-croneval "0 0 20 ? * MON-THU" -c 2 - [ "$status" -eq 0 ] - [[ "$output" == *"Valid!"* ]] || { - echo "Expected output message to contain [Valid!] but found: $output" - false - } -} diff --git a/qa/os/build.gradle b/qa/os/build.gradle index fc91e77606219..204ff38bce349 100644 --- a/qa/os/build.gradle +++ b/qa/os/build.gradle @@ -58,7 +58,7 @@ tasks.dependenciesInfo.enabled = false tasks.thirdPartyAudit.ignoreMissingClasses() tasks.register('destructivePackagingTest') { - dependsOn 'destructiveDistroTest', 'destructiveBatsTest.oss', 'destructiveBatsTest.default' + dependsOn 'destructiveDistroTest', 'destructiveBatsTest.oss' } processTestResources { diff --git a/qa/os/src/test/java/org/elasticsearch/packaging/test/CronEvalCliTests.java b/qa/os/src/test/java/org/elasticsearch/packaging/test/CronEvalCliTests.java new file mode 100644 index 0000000000000..4ae95713af9fe --- /dev/null +++ b/qa/os/src/test/java/org/elasticsearch/packaging/test/CronEvalCliTests.java @@ -0,0 +1,50 @@ +/* + * Licensed to Elasticsearch under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.elasticsearch.packaging.test; + +import org.elasticsearch.packaging.util.Distribution; +import org.elasticsearch.packaging.util.Shell; +import org.junit.Before; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assume.assumeTrue; + +public class CronEvalCliTests extends PackagingTestCase { + + @Before + public void filterDistros() { + assumeTrue("only default distro", distribution.flavor == Distribution.Flavor.DEFAULT); + assumeTrue("no docker", distribution.packaging != Distribution.Packaging.DOCKER); + } + + public void test10Install() throws Exception { + install(); + } + + public void test20Help() throws Exception { + Shell.Result result = installation.executables().cronevalTool.run("--help"); + assertThat(result.stdout, containsString("Validates and evaluates a cron expression")); + } + + public void test30Run() throws Exception { + Shell.Result result = installation.executables().cronevalTool.run("'0 0 20 ? * MON-THU' -c 2"); + assertThat(result.stdout, containsString("Valid!")); + } +} diff --git a/qa/os/src/test/java/org/elasticsearch/packaging/util/Installation.java b/qa/os/src/test/java/org/elasticsearch/packaging/util/Installation.java index 717f15aebc6d9..e879fe24c8be2 100644 --- a/qa/os/src/test/java/org/elasticsearch/packaging/util/Installation.java +++ b/qa/os/src/test/java/org/elasticsearch/packaging/util/Installation.java @@ -177,6 +177,7 @@ public class Executables { public final Executable keystoreTool = new Executable("elasticsearch-keystore"); public final Executable certutilTool = new Executable("elasticsearch-certutil"); public final Executable certgenTool = new Executable("elasticsearch-certgen"); + public final Executable cronevalTool = new Executable("elasticsearch-croneval"); public final Executable shardTool = new Executable("elasticsearch-shard"); public final Executable nodeTool = new Executable("elasticsearch-node"); public final Executable setupPasswordsTool = new Executable("elasticsearch-setup-passwords"); diff --git a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/trigger/schedule/tool/CronEvalTool.java b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/trigger/schedule/tool/CronEvalTool.java index 9464abcc4ba59..2e496c2ec619c 100644 --- a/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/trigger/schedule/tool/CronEvalTool.java +++ b/x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/trigger/schedule/tool/CronEvalTool.java @@ -56,7 +56,7 @@ protected void execute(Terminal terminal, OptionSet options) throws Exception { int count = countOption.value(options); List args = arguments.values(options); if (args.size() != 1) { - throw new UserException(ExitCodes.USAGE, "expecting a single argument that is the cron expression to evaluate"); + throw new UserException(ExitCodes.USAGE, "expecting a single argument that is the cron expression to evaluate, got " + args); } boolean printDetail = options.has(detailOption); execute(terminal, args.get(0), count, printDetail);