Skip to content

Commit 9ef5420

Browse files
authored
Packaging: Add vagrant tests for windows service (#33729)
This commit adds tests using the vagrant windows image for the windows service manager script.
1 parent 04ee05f commit 9ef5420

File tree

11 files changed

+411
-131
lines changed

11 files changed

+411
-131
lines changed

distribution/src/bin/elasticsearch-service.bat

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ if /i %SERVICE_CMD% == start goto doStart
3434
if /i %SERVICE_CMD% == stop goto doStop
3535
if /i %SERVICE_CMD% == manager goto doManagment
3636
echo Unknown option "%SERVICE_CMD%"
37+
exit /B 1
3738

3839
:displayUsage
3940
echo.
@@ -44,6 +45,7 @@ goto:eof
4445
"%EXECUTABLE%" //ES//%SERVICE_ID% %LOG_OPTS%
4546
if not errorlevel 1 goto started
4647
echo Failed starting '%SERVICE_ID%' service
48+
exit /B 1
4749
goto:eof
4850
:started
4951
echo The service '%SERVICE_ID%' has been started
@@ -53,16 +55,18 @@ goto:eof
5355
"%EXECUTABLE%" //SS//%SERVICE_ID% %LOG_OPTS%
5456
if not errorlevel 1 goto stopped
5557
echo Failed stopping '%SERVICE_ID%' service
58+
exit /B 1
5659
goto:eof
5760
:stopped
5861
echo The service '%SERVICE_ID%' has been stopped
5962
goto:eof
6063

6164
:doManagment
62-
set EXECUTABLE_MGR=%ES_HOME%\bin\elasticsearch-service-mgr.exe
65+
set EXECUTABLE_MGR=%ES_HOME%\bin\elasticsearch-service-mgr
6366
"%EXECUTABLE_MGR%" //ES//%SERVICE_ID%
6467
if not errorlevel 1 goto managed
6568
echo Failed starting service manager for '%SERVICE_ID%'
69+
exit /B 1
6670
goto:eof
6771
:managed
6872
echo Successfully started service manager for '%SERVICE_ID%'.
@@ -73,6 +77,7 @@ rem Remove the service
7377
"%EXECUTABLE%" //DS//%SERVICE_ID% %LOG_OPTS%
7478
if not errorlevel 1 goto removed
7579
echo Failed removing '%SERVICE_ID%' service
80+
exit /B 1
7681
goto:eof
7782
:removed
7883
echo The service '%SERVICE_ID%' has been removed
@@ -177,6 +182,7 @@ if not "%SERVICE_USERNAME%" == "" (
177182

178183
if not errorlevel 1 goto installed
179184
echo Failed installing '%SERVICE_ID%' service
185+
exit /B 1
180186
goto:eof
181187

182188
:installed

qa/vagrant/src/main/java/org/elasticsearch/packaging/PackagingTests.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,20 @@
1919

2020
package org.elasticsearch.packaging;
2121

22-
import org.elasticsearch.packaging.test.DefaultDebPreservationTests;
2322
import org.elasticsearch.packaging.test.DefaultDebBasicTests;
24-
import org.elasticsearch.packaging.test.DefaultRpmPreservationTests;
23+
import org.elasticsearch.packaging.test.DefaultDebPreservationTests;
2524
import org.elasticsearch.packaging.test.DefaultRpmBasicTests;
26-
import org.elasticsearch.packaging.test.OssDebPreservationTests;
25+
import org.elasticsearch.packaging.test.DefaultRpmPreservationTests;
26+
import org.elasticsearch.packaging.test.DefaultTarTests;
27+
import org.elasticsearch.packaging.test.DefaultWindowsServiceTests;
28+
import org.elasticsearch.packaging.test.DefaultZipTests;
2729
import org.elasticsearch.packaging.test.OssDebBasicTests;
28-
import org.elasticsearch.packaging.test.OssRpmPreservationTests;
30+
import org.elasticsearch.packaging.test.OssDebPreservationTests;
2931
import org.elasticsearch.packaging.test.OssRpmBasicTests;
32+
import org.elasticsearch.packaging.test.OssRpmPreservationTests;
3033
import org.elasticsearch.packaging.test.OssTarTests;
34+
import org.elasticsearch.packaging.test.OssWindowsServiceTests;
3135
import org.elasticsearch.packaging.test.OssZipTests;
32-
import org.elasticsearch.packaging.test.DefaultTarTests;
33-
import org.elasticsearch.packaging.test.DefaultZipTests;
34-
import org.elasticsearch.packaging.test.PackageDependenciesTests;
35-
3636
import org.junit.runner.RunWith;
3737
import org.junit.runners.Suite;
3838
import org.junit.runners.Suite.SuiteClasses;
@@ -43,14 +43,15 @@
4343
OssTarTests.class,
4444
DefaultZipTests.class,
4545
OssZipTests.class,
46-
PackageDependenciesTests.class,
4746
DefaultRpmBasicTests.class,
4847
OssRpmBasicTests.class,
4948
DefaultDebBasicTests.class,
5049
OssDebBasicTests.class,
5150
DefaultDebPreservationTests.class,
5251
OssDebPreservationTests.class,
5352
DefaultRpmPreservationTests.class,
54-
OssRpmPreservationTests.class
53+
OssRpmPreservationTests.class,
54+
DefaultWindowsServiceTests.class,
55+
OssWindowsServiceTests.class
5556
})
5657
public class PackagingTests {}

qa/vagrant/src/main/java/org/elasticsearch/packaging/test/ArchiveTestCase.java

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,12 @@
2222
import com.carrotsearch.randomizedtesting.annotations.TestCaseOrdering;
2323
import org.apache.http.client.fluent.Request;
2424
import org.elasticsearch.packaging.util.Archives;
25+
import org.elasticsearch.packaging.util.Distribution;
26+
import org.elasticsearch.packaging.util.Installation;
2527
import org.elasticsearch.packaging.util.Platforms;
2628
import org.elasticsearch.packaging.util.ServerUtils;
2729
import org.elasticsearch.packaging.util.Shell;
2830
import org.elasticsearch.packaging.util.Shell.Result;
29-
import org.junit.Before;
30-
import org.junit.BeforeClass;
31-
32-
import org.elasticsearch.packaging.util.Distribution;
33-
import org.elasticsearch.packaging.util.Installation;
3431

3532
import java.io.IOException;
3633
import java.nio.file.Files;
@@ -40,7 +37,6 @@
4037

4138
import static java.util.stream.Collectors.joining;
4239
import static org.elasticsearch.packaging.util.Archives.ARCHIVE_OWNER;
43-
import static org.elasticsearch.packaging.util.Cleanup.cleanEverything;
4440
import static org.elasticsearch.packaging.util.Archives.installArchive;
4541
import static org.elasticsearch.packaging.util.Archives.verifyArchiveInstallation;
4642
import static org.elasticsearch.packaging.util.FileMatcher.Fileness.File;
@@ -55,12 +51,8 @@
5551
import static org.hamcrest.CoreMatchers.containsString;
5652
import static org.hamcrest.CoreMatchers.is;
5753
import static org.hamcrest.CoreMatchers.notNullValue;
58-
import static org.hamcrest.MatcherAssert.assertThat;
5954
import static org.hamcrest.Matchers.isEmptyString;
60-
import static org.junit.Assert.assertFalse;
61-
import static org.junit.Assert.assertTrue;
6255
import static org.junit.Assume.assumeThat;
63-
import static org.junit.Assume.assumeTrue;
6456

6557
/**
6658
* Tests that apply to the archive distributions (tar, zip). To add a case for a distribution, subclass and
@@ -69,22 +61,6 @@
6961
@TestCaseOrdering(TestCaseOrdering.AlphabeticOrder.class)
7062
public abstract class ArchiveTestCase extends PackagingTestCase {
7163

72-
private static Installation installation;
73-
74-
/** The {@link Distribution} that should be tested in this case */
75-
protected abstract Distribution distribution();
76-
77-
@BeforeClass
78-
public static void cleanup() {
79-
installation = null;
80-
cleanEverything();
81-
}
82-
83-
@Before
84-
public void onlyCompatibleDistributions() {
85-
assumeTrue("only compatible distributions", distribution().packaging.compatible);
86-
}
87-
8864
public void test10Install() {
8965
installation = installArchive(distribution());
9066
verifyArchiveInstallation(installation, distribution());
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Licensed to Elasticsearch under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.elasticsearch.packaging.test;
21+
22+
import org.elasticsearch.packaging.util.Distribution;
23+
24+
public class DefaultWindowsServiceTests extends WindowsServiceTestCase {
25+
26+
@Override
27+
protected Distribution distribution() {
28+
return Distribution.DEFAULT_ZIP;
29+
}
30+
}

qa/vagrant/src/main/java/org/elasticsearch/packaging/test/OssDebBasicTests.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,37 @@
1919

2020
package org.elasticsearch.packaging.test;
2121

22+
import junit.framework.TestCase;
2223
import org.elasticsearch.packaging.util.Distribution;
24+
import org.elasticsearch.packaging.util.Platforms;
25+
import org.elasticsearch.packaging.util.Shell;
26+
27+
import java.util.regex.Pattern;
28+
29+
import static org.elasticsearch.packaging.util.Distribution.DEFAULT_DEB;
30+
import static org.elasticsearch.packaging.util.Distribution.OSS_DEB;
31+
import static org.elasticsearch.packaging.util.FileUtils.getDistributionFile;
32+
import static org.junit.Assume.assumeTrue;
2333

2434
public class OssDebBasicTests extends PackageTestCase {
2535

2636
@Override
2737
protected Distribution distribution() {
2838
return Distribution.OSS_DEB;
2939
}
40+
41+
public void test11DebDependencies() {
42+
assumeTrue(Platforms.isDPKG());
43+
44+
final Shell sh = new Shell();
45+
46+
final Shell.Result defaultResult = sh.run("dpkg -I " + getDistributionFile(DEFAULT_DEB));
47+
final Shell.Result ossResult = sh.run("dpkg -I " + getDistributionFile(OSS_DEB));
48+
49+
TestCase.assertTrue(Pattern.compile("(?m)^ Depends:.*bash.*").matcher(defaultResult.stdout).find());
50+
TestCase.assertTrue(Pattern.compile("(?m)^ Depends:.*bash.*").matcher(ossResult.stdout).find());
51+
52+
TestCase.assertTrue(Pattern.compile("(?m)^ Conflicts: elasticsearch-oss$").matcher(defaultResult.stdout).find());
53+
TestCase.assertTrue(Pattern.compile("(?m)^ Conflicts: elasticsearch$").matcher(ossResult.stdout).find());
54+
}
3055
}

qa/vagrant/src/main/java/org/elasticsearch/packaging/test/OssRpmBasicTests.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,40 @@
1919

2020
package org.elasticsearch.packaging.test;
2121

22+
import junit.framework.TestCase;
2223
import org.elasticsearch.packaging.util.Distribution;
24+
import org.elasticsearch.packaging.util.Platforms;
25+
import org.elasticsearch.packaging.util.Shell;
26+
27+
import java.util.regex.Pattern;
28+
29+
import static org.elasticsearch.packaging.util.Distribution.DEFAULT_RPM;
30+
import static org.elasticsearch.packaging.util.Distribution.OSS_RPM;
31+
import static org.elasticsearch.packaging.util.FileUtils.getDistributionFile;
32+
import static org.junit.Assume.assumeTrue;
2333

2434
public class OssRpmBasicTests extends PackageTestCase {
2535

2636
@Override
2737
protected Distribution distribution() {
2838
return Distribution.OSS_RPM;
2939
}
40+
41+
public void test11RpmDependencies() {
42+
assumeTrue(Platforms.isRPM());
43+
44+
final Shell sh = new Shell();
45+
46+
final Shell.Result defaultDeps = sh.run("rpm -qpR " + getDistributionFile(DEFAULT_RPM));
47+
final Shell.Result ossDeps = sh.run("rpm -qpR " + getDistributionFile(OSS_RPM));
48+
49+
TestCase.assertTrue(Pattern.compile("(?m)^/bin/bash\\s*$").matcher(defaultDeps.stdout).find());
50+
TestCase.assertTrue(Pattern.compile("(?m)^/bin/bash\\s*$").matcher(ossDeps.stdout).find());
51+
52+
final Shell.Result defaultConflicts = sh.run("rpm -qp --conflicts " + getDistributionFile(DEFAULT_RPM));
53+
final Shell.Result ossConflicts = sh.run("rpm -qp --conflicts " + getDistributionFile(OSS_RPM));
54+
55+
TestCase.assertTrue(Pattern.compile("(?m)^elasticsearch-oss\\s*$").matcher(defaultConflicts.stdout).find());
56+
TestCase.assertTrue(Pattern.compile("(?m)^elasticsearch\\s*$").matcher(ossConflicts.stdout).find());
57+
}
3058
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* Licensed to Elasticsearch under one or more contributor
3+
* license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright
5+
* ownership. Elasticsearch licenses this file to you under
6+
* the Apache License, Version 2.0 (the "License"); you may
7+
* not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing,
13+
* software distributed under the License is distributed on an
14+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
* KIND, either express or implied. See the License for the
16+
* specific language governing permissions and limitations
17+
* under the License.
18+
*/
19+
20+
package org.elasticsearch.packaging.test;
21+
22+
import org.elasticsearch.packaging.util.Distribution;
23+
24+
public class OssWindowsServiceTests extends WindowsServiceTestCase {
25+
26+
@Override
27+
protected Distribution distribution() {
28+
return Distribution.OSS_ZIP;
29+
}
30+
}

qa/vagrant/src/main/java/org/elasticsearch/packaging/test/PackageDependenciesTests.java

Lines changed: 0 additions & 73 deletions
This file was deleted.

0 commit comments

Comments
 (0)