1
0
Эх сурвалжийг харах

Migrate cron eval bats test to java (#50940)

This commit migrates the simple test of the cron eval tool from bats to
java packaging tests.

relates #46005
Ryan Ernst 5 жил өмнө
parent
commit
3515ca5ee5

+ 0 - 1
buildSrc/src/main/groovy/org/elasticsearch/gradle/test/DistroTestPlugin.java

@@ -117,7 +117,6 @@ public class DistroTestPlugin implements Plugin<Project> {
         }
         Map<String, TaskProvider<?>> 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)
         );

+ 0 - 47
qa/os/bats/default/10_basic.bats

@@ -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
-    }
-}

+ 1 - 1
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 {

+ 50 - 0
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!"));
+    }
+}

+ 1 - 0
qa/os/src/test/java/org/elasticsearch/packaging/util/Installation.java

@@ -177,6 +177,7 @@ public class Installation {
         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");

+ 1 - 1
x-pack/plugin/watcher/src/main/java/org/elasticsearch/xpack/watcher/trigger/schedule/tool/CronEvalTool.java

@@ -56,7 +56,7 @@ public class CronEvalTool extends LoggingAwareCommand {
         int count = countOption.value(options);
         List<String> 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);