From d0aa4368694ff760d20c02d87bd8ab8858dfcf99 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 5 Mar 2019 09:36:34 +0100 Subject: [PATCH 1/5] Change licence expiration pattern Due to migration from joda - java licence expiration 'full date' format has to use 4-char pattern (MMMM). However since jdk9 the date with ROOT locale will still return abbreviated days and month names. --- .../elasticsearch/license/LicenseService.java | 14 +++--- .../license/LicenseServiceTests.java | 43 +++++++++++++++++++ 2 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/license/LicenseService.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/license/LicenseService.java index 68e094511a3e8..837caf2da070b 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/license/LicenseService.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/license/LicenseService.java @@ -114,7 +114,7 @@ public class LicenseService extends AbstractLifecycleComponent implements Cluste public static final String LICENSE_JOB = "licenseJob"; - private static final DateFormatter DATE_FORMATTER = DateFormatter.forPattern("EEEE, MMMMM dd, yyyy"); + private static final DateFormatter DATE_FORMATTER = DateFormatter.forPattern("EEEE, MMMM dd, yyyy"); private static final String ACKNOWLEDGEMENT_HEADER = "This license update requires acknowledgement. To acknowledge the license, " + "please read the following messages and update the license again, this time with the \"acknowledge=true\" parameter:"; @@ -134,11 +134,15 @@ public LicenseService(Settings settings, ClusterService clusterService, Clock cl } private void logExpirationWarning(long expirationMillis, boolean expired) { + logger.warn("{}", buildExpirationMessage(expirationMillis, expired)); + } + + static CharSequence buildExpirationMessage(long expirationMillis, boolean expired) { String expiredMsg = expired ? "expired" : "will expire"; String general = LoggerMessageFormat.format(null, "License [{}] on [{}].\n" + - "# If you have a new license, please update it. Otherwise, please reach out to\n" + - "# your support contact.\n" + - "# ", expiredMsg, DATE_FORMATTER.formatMillis(expirationMillis)); + "# If you have a new license, please update it. Otherwise, please reach out to\n" + + "# your support contact.\n" + + "# ", expiredMsg, DATE_FORMATTER.formatMillis(expirationMillis)); if (expired) { general = general.toUpperCase(Locale.ROOT); } @@ -161,7 +165,7 @@ private void logExpirationWarning(long expirationMillis, boolean expired) { } } }); - logger.warn("{}", builder); + return builder; } private void populateExpirationCallbacks() { diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java new file mode 100644 index 0000000000000..bcda97a7429fe --- /dev/null +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java @@ -0,0 +1,43 @@ +/* + * 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.license; + + +import org.elasticsearch.test.ESTestCase; + +import java.time.LocalDate; +import java.time.ZoneOffset; + +import static org.hamcrest.Matchers.startsWith; + +public class LicenseServiceTests extends ESTestCase { + + public void testLogExpirationWarning() { + long time = LocalDate.of(2018, 11, 15).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli(); + final boolean expired = randomBoolean(); + final String message = LicenseService.buildExpirationMessage(time, expired).toString(); + if (expired) { + assertThat(message, startsWith("LICENSE [EXPIRED] ON [THU, NOV 15, 2018].\n")); + } else { + assertThat(message, startsWith("License [will expire] on [Thu, Nov 15, 2018].\n")); + } + } + +} From f6c93c7b51048945e25980043a0b2d35c45e3c6b Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 5 Mar 2019 11:14:07 +0100 Subject: [PATCH 2/5] licence header --- .../license/LicenseServiceTests.java | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java index bcda97a7429fe..2eff6f0c9cbe0 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java @@ -1,22 +1,8 @@ /* - * 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. + * 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. */ - package org.elasticsearch.license; From da97e14ab9052e25b57c63f9d336c585516ad713 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 5 Mar 2019 12:42:50 +0100 Subject: [PATCH 3/5] jdk depending test --- .../license/LicenseServiceTests.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java index 2eff6f0c9cbe0..5831935dfd987 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java @@ -6,6 +6,7 @@ package org.elasticsearch.license; +import org.elasticsearch.bootstrap.JavaVersion; import org.elasticsearch.test.ESTestCase; import java.time.LocalDate; @@ -13,9 +14,15 @@ import static org.hamcrest.Matchers.startsWith; +/** + * Due to changes in JDK9 where locale data is used from CLDR, the licence message will differ in jdk 8 and jdk9+ + * https://openjdk.java.net/jeps/252 + */ public class LicenseServiceTests extends ESTestCase { - public void testLogExpirationWarning() { + public void testLogExpirationWarningOnJdk9AndNewser() { + assumeTrue("this is for JDK9+", JavaVersion.current().compareTo(JavaVersion.parse("9")) >= 0); + long time = LocalDate.of(2018, 11, 15).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli(); final boolean expired = randomBoolean(); final String message = LicenseService.buildExpirationMessage(time, expired).toString(); @@ -26,4 +33,17 @@ public void testLogExpirationWarning() { } } + public void testLogExpirationWarningOnJdk8() { + assumeTrue("this is for JDK9+", JavaVersion.current().equals(JavaVersion.parse("8"))); + + long time = LocalDate.of(2018, 11, 15).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli(); + final boolean expired = randomBoolean(); + final String message = LicenseService.buildExpirationMessage(time, expired).toString(); + if (expired) { + assertThat(message, startsWith("LICENSE [EXPIRED] ON [THURSDAY, NOVEMBER 15, 2018].\n")); + } else { + assertThat(message, startsWith("License [will expire] on [Thursday, November 15, 2018].\n")); + } + } + } From 47b56b296939d877e8e22cdac94a3ee574084fb3 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gomulka Date: Tue, 5 Mar 2019 12:43:09 +0100 Subject: [PATCH 4/5] typo --- .../java/org/elasticsearch/license/LicenseServiceTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java index 5831935dfd987..30d6285de5c7f 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java @@ -20,7 +20,7 @@ */ public class LicenseServiceTests extends ESTestCase { - public void testLogExpirationWarningOnJdk9AndNewser() { + public void testLogExpirationWarningOnJdk9AndNewer() { assumeTrue("this is for JDK9+", JavaVersion.current().compareTo(JavaVersion.parse("9")) >= 0); long time = LocalDate.of(2018, 11, 15).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli(); From 741ef49bae2dda9cbafdbe1fb92fda6c00d12fc8 Mon Sep 17 00:00:00 2001 From: Tim Vernum Date: Wed, 6 Mar 2019 07:41:15 +0100 Subject: [PATCH 5/5] Update x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java Co-Authored-By: pgomulka --- .../java/org/elasticsearch/license/LicenseServiceTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java index 30d6285de5c7f..1f65efc630915 100644 --- a/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java +++ b/x-pack/plugin/core/src/test/java/org/elasticsearch/license/LicenseServiceTests.java @@ -34,7 +34,7 @@ public void testLogExpirationWarningOnJdk9AndNewer() { } public void testLogExpirationWarningOnJdk8() { - assumeTrue("this is for JDK9+", JavaVersion.current().equals(JavaVersion.parse("8"))); + assumeTrue("this is for JDK8 only", JavaVersion.current().equals(JavaVersion.parse("8"))); long time = LocalDate.of(2018, 11, 15).atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli(); final boolean expired = randomBoolean();