aboutsummaryrefslogtreecommitdiff
path: root/core/src/test/scala/org/apache
diff options
context:
space:
mode:
authorJoseph K. Bradley <joseph@databricks.com>2016-09-09 05:35:10 -0700
committerYanbo Liang <ybliang8@gmail.com>2016-09-09 05:35:10 -0700
commit65b814bf50e92e2e9b622d1602f18bacd217181c (patch)
tree9deecaecdbe330faa9f81e70db2448edefc07937 /core/src/test/scala/org/apache
parent92ce8d4849a0341c4636e70821b7be57ad3055b1 (diff)
downloadspark-65b814bf50e92e2e9b622d1602f18bacd217181c.tar.gz
spark-65b814bf50e92e2e9b622d1602f18bacd217181c.tar.bz2
spark-65b814bf50e92e2e9b622d1602f18bacd217181c.zip
[SPARK-17456][CORE] Utility for parsing Spark versions
## What changes were proposed in this pull request? This patch adds methods for extracting major and minor versions as Int types in Scala from a Spark version string. Motivation: There are many hacks within Spark's codebase to identify and compare Spark versions. We should add a simple utility to standardize these code paths, especially since there have been mistakes made in the past. This will let us add unit tests as well. Currently, I want this functionality to check Spark versions to provide backwards compatibility for ML model persistence. ## How was this patch tested? Unit tests Author: Joseph K. Bradley <joseph@databricks.com> Closes #15017 from jkbradley/version-parsing.
Diffstat (limited to 'core/src/test/scala/org/apache')
-rw-r--r--core/src/test/scala/org/apache/spark/util/VersionUtilsSuite.scala76
1 files changed, 76 insertions, 0 deletions
diff --git a/core/src/test/scala/org/apache/spark/util/VersionUtilsSuite.scala b/core/src/test/scala/org/apache/spark/util/VersionUtilsSuite.scala
new file mode 100644
index 0000000000..aaf79ebd4f
--- /dev/null
+++ b/core/src/test/scala/org/apache/spark/util/VersionUtilsSuite.scala
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.apache.spark.util
+
+import org.apache.spark.SparkFunSuite
+
+class VersionUtilsSuite extends SparkFunSuite {
+
+ import org.apache.spark.util.VersionUtils._
+
+ test("Parse Spark major version") {
+ assert(majorVersion("2.0") === 2)
+ assert(majorVersion("12.10.11") === 12)
+ assert(majorVersion("2.0.1-SNAPSHOT") === 2)
+ assert(majorVersion("2.0.x") === 2)
+ withClue("majorVersion parsing should fail for invalid major version number") {
+ intercept[IllegalArgumentException] {
+ majorVersion("2z.0")
+ }
+ }
+ withClue("majorVersion parsing should fail for invalid minor version number") {
+ intercept[IllegalArgumentException] {
+ majorVersion("2.0z")
+ }
+ }
+ }
+
+ test("Parse Spark minor version") {
+ assert(minorVersion("2.0") === 0)
+ assert(minorVersion("12.10.11") === 10)
+ assert(minorVersion("2.0.1-SNAPSHOT") === 0)
+ assert(minorVersion("2.0.x") === 0)
+ withClue("minorVersion parsing should fail for invalid major version number") {
+ intercept[IllegalArgumentException] {
+ minorVersion("2z.0")
+ }
+ }
+ withClue("minorVersion parsing should fail for invalid minor version number") {
+ intercept[IllegalArgumentException] {
+ minorVersion("2.0z")
+ }
+ }
+ }
+
+ test("Parse Spark major and minor versions") {
+ assert(majorMinorVersion("2.0") === (2, 0))
+ assert(majorMinorVersion("12.10.11") === (12, 10))
+ assert(majorMinorVersion("2.0.1-SNAPSHOT") === (2, 0))
+ assert(majorMinorVersion("2.0.x") === (2, 0))
+ withClue("majorMinorVersion parsing should fail for invalid major version number") {
+ intercept[IllegalArgumentException] {
+ majorMinorVersion("2z.0")
+ }
+ }
+ withClue("majorMinorVersion parsing should fail for invalid minor version number") {
+ intercept[IllegalArgumentException] {
+ majorMinorVersion("2.0z")
+ }
+ }
+ }
+}