BIGTOP-1098. now that Saprk has had its first incubator release we have to adjust...
[bigtop.git] / bigtop-tests / test-artifacts / spark / src / main / groovy / org / apache / bigtop / itest / spark / TestSparkSmoke.groovy
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  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, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 package org.apache.bigtop.itest.spark
20
21 import org.apache.bigtop.itest.shell.Shell
22 import org.apache.hadoop.conf.Configuration
23 import org.apache.hadoop.fs.FileSystem
24 import org.apache.hadoop.fs.Path
25
26 import org.junit.Test
27 import org.junit.BeforeClass
28 import static org.junit.Assert.assertEquals
29
30 import static org.apache.bigtop.itest.LogErrorsUtils.logError
31
32 import org.apache.spark.api.java.*
33 import org.apache.spark.api.java.function.Function
34
35 public class TestSparkSmoke implements Serializable {
36
37   private static String SPARK_HOME = System.getenv("SPARK_HOME")
38   private static String SPARK_MASTER = System.getenv("SPARK_MASTER")
39   private static String USER = System.getProperty("user.name")
40   private static String pwd = ""
41   private static Configuration conf
42   static Shell sh = new Shell("/bin/bash -s")
43   def result = ["0.2: 3", "0.1: 3", "0.0: 3", "9.0: 3", "9.2: 3", "9.1: 3"]
44
45   @BeforeClass
46   static void setUp() {
47    sh.exec("pwd")
48    pwd = sh.out
49    int lastIndex = pwd.length() - 1
50    pwd = pwd.substring(1, lastIndex)
51   }
52
53   @Test
54   void ShellTest() {
55     String kmeans = "file://" + pwd + "/kmeans_data.txt"
56     sh.exec("cd ${SPARK_HOME} && ./spark-class org.apache.spark.examples.JavaWordCount local " + kmeans)
57     logError(sh)
58     assertEquals(result, sh.out)
59   }
60
61   @Test
62   public void HDFSTest() {
63     conf = new Configuration()
64     String fs_default_name = conf.get("fs.defaultFS")
65     FileSystem fs = FileSystem.get(conf)
66     String pathname = "/user/${USER}/kmeans_data.txt"
67     fs.copyFromLocalFile(new Path("kmeans_data.txt"), new Path(pathname))
68     fs.close()
69
70     String dfsname = fs_default_name + pathname
71     sh.exec("cd ${SPARK_HOME} && ./spark-class org.apache.spark.examples.JavaWordCount ${SPARK_MASTER} " + dfsname)
72     logError(sh)
73     assertEquals(result, sh.out)
74   }
75
76   @Test
77   public void JobTest() {
78     String logFile = "file://" + pwd + "/README.md";
79     String[] jars = [System.getProperty("sparkJar"), org.apache.bigtop.itest.JarContent.getJarURL("groovy.lang.GroovyObject")];
80
81     JavaSparkContext sc = new JavaSparkContext("local", "Simple Job",
82         SPARK_HOME, jars);
83
84     JavaRDD<String> logData = sc.textFile(logFile).cache();
85
86     long num_Spark = logData.filter(new Function<String, Boolean>() {
87       public Boolean call(String s) { return s.contains("Spark"); }
88     }).count();
89
90     long num_e = logData.filter(new Function<String, Boolean>() {
91       public Boolean call(String s) { return s.contains("e"); }
92     }).count();
93
94     assertEquals("Lines containing 'spark' should be 14", num_Spark, 14);
95     assertEquals("Lines containing 'e' should be 43", num_e, 43);
96   }
97
98 }