You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by rv...@apache.org on 2011/11/17 00:21:07 UTC
svn commit: r1202931 - in /incubator/bigtop/trunk/bigtop-tests:
test-artifacts/ test-artifacts/mahout/ test-artifacts/mahout/src/
test-artifacts/mahout/src/main/ test-artifacts/mahout/src/main/groovy/
test-artifacts/mahout/src/main/groovy/org/ test-art...
Author: rvs
Date: Wed Nov 16 23:21:06 2011
New Revision: 1202931
URL: http://svn.apache.org/viewvc?rev=1202931&view=rev
Log:
BIGTOP-255. add tests for Mahout (Wing Yew Poon via rvs)
Added:
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/pom.xml
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/mahout/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/mahout/smoke/
incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/mahout/smoke/TestMahoutExamples.groovy
incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/mahout/
incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/mahout/pom.xml
Modified:
incubator/bigtop/trunk/bigtop-tests/test-artifacts/pom.xml
incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/pom.xml
Added: incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/pom.xml
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/pom.xml?rev=1202931&view=auto
==============================================================================
--- incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/pom.xml (added)
+++ incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/pom.xml Wed Nov 16 23:21:06 2011
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.bigtop.itest</groupId>
+ <artifactId>bigtop-smokes</artifactId>
+ <version>0.3.0-incubating-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <groupId>org.apache.bigtop.itest</groupId>
+ <artifactId>mahout-smoke</artifactId>
+ <version>0.3.0-incubating-SNAPSHOT</version>
+
+ <name>mahoutsmoke</name>
+
+</project>
Added: incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/mahout/smoke/TestMahoutExamples.groovy
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/mahout/smoke/TestMahoutExamples.groovy?rev=1202931&view=auto
==============================================================================
--- incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/mahout/smoke/TestMahoutExamples.groovy (added)
+++ incubator/bigtop/trunk/bigtop-tests/test-artifacts/mahout/src/main/groovy/org/apache/bigtop/itest/mahout/smoke/TestMahoutExamples.groovy Wed Nov 16 23:21:06 2011
@@ -0,0 +1,244 @@
+/*
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.bigtop.itest.mahout.smoke;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import org.apache.bigtop.itest.JarContent;
+import org.apache.bigtop.itest.shell.Shell;
+
+/**
+ * Test Mahout examples shipped with the distribution.
+ */
+public class TestMahoutExamples {
+ public static final String HADOOP_HOME =
+ System.getenv("HADOOP_HOME");
+ static {
+ assertNotNull("HADOOP_HOME is not set", HADOOP_HOME);
+ }
+
+ public static final String TEMP_DIR = "/tmp/mahout.${(new Date().getTime())}";
+ public static final String WORK_DIR = TEMP_DIR;
+ private static Shell sh = new Shell("/bin/bash -s");
+ public static String download_dir = System.getProperty("mahout.examples.resources.download.path");
+ static {
+ if (download_dir == null) {
+ sh.exec("pwd");
+ download_dir = sh.out[0];
+ }
+ }
+
+ @BeforeClass
+ public static void setUp() {
+ // download resources
+ sh.exec(
+ "if [ ! -f ${download_dir}/20news-bydate.tar.gz ]; then " +
+ "curl http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz -o ${download_dir}/20news-bydate.tar.gz; " +
+ "fi");
+ sh.exec(
+ "if [ ! -f ${download_dir}/reuters21578.tar.gz ]; then " +
+ "curl http://kdd.ics.uci.edu/databases/reuters21578/reuters21578.tar.gz -o ${download_dir}/reuters21578.tar.gz; " +
+ "fi");
+ sh.exec(
+ "if [ ! -f ${download_dir}/synthetic_control.data ]; then " +
+ "curl http://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data -o ${download_dir}/synthetic_control.data; " +
+ "fi");
+ sh.exec(
+ "if [ ! -f ${download_dir}/ml-1m.zip ]; then " +
+ "curl http://www.grouplens.org/system/files/ml-1m.zip -o ${download_dir}/ml-1m.zip; " +
+ "fi");
+ // uncompress archives
+ // 20news-bydate.tar.gz
+ // reuters21578.tar.gz
+ // ml-1m.zip
+ sh.exec("mkdir ${TEMP_DIR}",
+ "cd ${TEMP_DIR}",
+ "mkdir 20news-bydate",
+ "cd 20news-bydate",
+ "tar xzf ${download_dir}/20news-bydate.tar.gz",
+ "cd ..",
+ "mkdir reuters-sgm",
+ "cd reuters-sgm",
+ "tar xzf ${download_dir}/reuters21578.tar.gz",
+ "cd ..",
+ "mkdir movielens",
+ "cd movielens",
+ "unzip ${download_dir}/ml-1m.zip");
+ assertEquals("Failed to uncompress archives", 0, sh.getRet());
+ sh.exec("hadoop fs -mkdir ${WORK_DIR}");
+ assertEquals("Unable to create work dir in hdfs", 0, sh.getRet());
+ rmr("temp");
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ sh.exec("rm -rf ${TEMP_DIR}",
+ "hadoop fs -rmr ${WORK_DIR}");
+ }
+
+ private static void rmr(String path) {
+ sh.exec("hadoop fs -test -e $path");
+ if (sh.getRet() == 0) {
+ sh.exec("hadoop fs -rmr -skipTrash $path");
+ assertEquals("Deletion of $path from HDFS failed", 0, sh.getRet());
+ }
+ }
+
+ @Test
+ public void factorizeMovieLensRatings() {
+ // convert ratings
+ sh.exec("cat ${TEMP_DIR}/movielens/ml-1m/ratings.dat |sed -e s/::/,/g| cut -d, -f1,2,3 > ${TEMP_DIR}/movielens/ratings.csv");
+ assertEquals("Unexpected error from converting ratings", 0, sh.getRet());
+ // put ratings in hdfs
+ sh.exec("hadoop fs -mkdir ${WORK_DIR}/movielens",
+ "hadoop fs -put ${TEMP_DIR}/movielens/ratings.csv ${WORK_DIR}/movielens/ratings.csv");
+ assertEquals("Unable to put movielens/ratings.csv in hdfs", 0, sh.getRet());
+
+ //create a 90% percent training set and a 10% probe set
+ sh.exec("mahout splitDataset --input ${WORK_DIR}/movielens/ratings.csv --output ${WORK_DIR}/dataset " +
+ "--trainingPercentage 0.9 --probePercentage 0.1 --tempDir ${WORK_DIR}/dataset/tmp");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+
+ //run distributed ALS-WR to factorize the rating matrix based on the training set
+ sh.exec("mahout parallelALS --input ${WORK_DIR}/dataset/trainingSet/ --output ${WORK_DIR}/als/out " +
+ "--tempDir ${WORK_DIR}/als/tmp --numFeatures 20 --numIterations 10 --lambda 0.065");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+
+ //compute predictions against the probe set, measure the error
+ sh.exec("mahout evaluateFactorizationParallel --output ${WORK_DIR}/als/rmse --pairs ${WORK_DIR}/dataset/probeSet/ " +
+ "--userFeatures ${WORK_DIR}/als/out/U/ --itemFeatures ${WORK_DIR}/als/out/M/");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+
+ // check that error has been calculated
+ sh.exec("hadoop fs -test -e ${WORK_DIR}/als/rmse/rmse.txt");
+ assertEquals("${WORK_DIR}/als/rmse/rmse.txt does not exist", 0, sh.getRet());
+ // print the error
+ sh.exec("hadoop fs -cat ${WORK_DIR}/als/rmse/rmse.txt");
+ assertEquals("Unexpected error from running hadoop", 0, sh.getRet());
+ }
+
+ // it's too much of a pain to use junit parameterized tests, so do it
+ // the simple way
+ private void _clusterSyntheticControlData(String algorithm) {
+ rmr("testdata");
+ sh.exec("hadoop fs -mkdir testdata",
+ "hadoop fs -put ${download_dir}/synthetic_control.data testdata");
+ assertEquals("Unable to put data in hdfs", 0, sh.getRet());
+ sh.exec("mahout org.apache.mahout.clustering.syntheticcontrol.${algorithm}.Job");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+ }
+
+ @Test
+ public void clusterControlDataWithCanopy() {
+ _clusterSyntheticControlData("canopy");
+ }
+
+ @Test
+ public void clusterControlDataWithKMeans() {
+ _clusterSyntheticControlData("kmeans");
+ }
+
+ @Test
+ public void clusterControlDataWithFuzzyKMeans() {
+ _clusterSyntheticControlData("fuzzykmeans");
+ }
+
+ @Test
+ public void clusterControlDataWithDirichlet() {
+ _clusterSyntheticControlData("dirichlet");
+ }
+
+ @Test
+ public void clusterControlDataWithMeanShift() {
+ _clusterSyntheticControlData("meanshift");
+ }
+
+ @Test
+ public void testReutersLDA() {
+ // where does lda.algorithm come in?
+ sh.exec("mahout org.apache.lucene.benchmark.utils.ExtractReuters ${TEMP_DIR}/reuters-sgm ${TEMP_DIR}/reuters-out");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+ sh.exec("MAHOUT_LOCAL=true mahout seqdirectory -i ${TEMP_DIR}/reuters-out -o ${TEMP_DIR}/reuters-out-seqdir -c UTF-8 -chunk 5");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+ /*
+ // reuters-out-seqdir exists on a local disk at this point,
+ // copy it to hdfs
+ rmr("${WORK_DIR}/reuters-out-seqdir");
+ sh.exec("hadoop fs -put ${TEMP_DIR}/reuters-out-seqdir ${WORK_DIR}/reuters-out-seqdir");
+ assertEquals("Unable to put reuters-out-seqdir in hdfs", 0, sh.getRet());
+ */
+ sh.exec("""mahout seq2sparse \
+ -i ${WORK_DIR}/reuters-out-seqdir/ \
+ -o ${WORK_DIR}/reuters-out-seqdir-sparse-lda \
+ -wt tf -seq -nr 3 \
+ && \
+ mahout lda \
+ -i ${WORK_DIR}/reuters-out-seqdir-sparse-lda/tf-vectors \
+ -o ${WORK_DIR}/reuters-lda -k 20 -v 50000 -ow -x 20 \
+ && \
+ mahout ldatopics \
+ -i ${WORK_DIR}/reuters-lda/state-20 \
+ -d ${WORK_DIR}/reuters-out-seqdir-sparse-lda/dictionary.file-0 \
+ -dt sequencefile""");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+ }
+
+ @Test
+ public void testBayesNewsgroupClassifier() {
+ sh.exec("""mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups \
+ -p ${TEMP_DIR}/20news-bydate/20news-bydate-train \
+ -o ${TEMP_DIR}/20news-bydate/bayes-train-input \
+ -a org.apache.mahout.vectorizer.DefaultAnalyzer \
+ -c UTF-8""");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+ sh.exec("""mahout org.apache.mahout.classifier.bayes.PrepareTwentyNewsgroups \
+ -p ${TEMP_DIR}/20news-bydate/20news-bydate-test \
+ -o ${TEMP_DIR}/20news-bydate/bayes-test-input \
+ -a org.apache.mahout.vectorizer.DefaultAnalyzer \
+ -c UTF-8""");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+
+ // put bayes-train-input and bayes-test-input in hdfs
+ sh.exec("hadoop fs -put ${TEMP_DIR}/20news-bydate/bayes-train-input ${WORK_DIR}/20news-bydate/bayes-train-input");
+ assertEquals("Unable to put bayes-train-input in hdfs", 0, sh.getRet());
+ sh.exec("hadoop fs -put ${TEMP_DIR}/20news-bydate/bayes-test-input ${WORK_DIR}/20news-bydate/bayes-test-input");
+ assertEquals("Unable to put bayes-test-input in hdfs", 0, sh.getRet());
+
+ sh.exec("""mahout trainclassifier \
+ -i ${WORK_DIR}/20news-bydate/bayes-train-input \
+ -o ${WORK_DIR}/20news-bydate/bayes-model \
+ -type bayes \
+ -ng 1 \
+ -source hdfs""");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+ sh.exec("""mahout testclassifier \
+ -m ${WORK_DIR}/20news-bydate/bayes-model \
+ -d ${WORK_DIR}/20news-bydate/bayes-test-input \
+ -type bayes \
+ -ng 1 \
+ -source hdfs \
+ -method mapreduce""");
+ assertEquals("Unexpected error from running mahout", 0, sh.getRet());
+
+ }
+
+}
Modified: incubator/bigtop/trunk/bigtop-tests/test-artifacts/pom.xml
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-tests/test-artifacts/pom.xml?rev=1202931&r1=1202930&r2=1202931&view=diff
==============================================================================
--- incubator/bigtop/trunk/bigtop-tests/test-artifacts/pom.xml (original)
+++ incubator/bigtop/trunk/bigtop-tests/test-artifacts/pom.xml Wed Nov 16 23:21:06 2011
@@ -40,6 +40,7 @@
<module>hbase</module>
<module>flume</module>
<module>sqoop</module>
+ <module>mahout</module>
</modules>
<properties>
Added: incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/mahout/pom.xml
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/mahout/pom.xml?rev=1202931&view=auto
==============================================================================
--- incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/mahout/pom.xml (added)
+++ incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/mahout/pom.xml Wed Nov 16 23:21:06 2011
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.bigtop.itest</groupId>
+ <artifactId>smoke-tests</artifactId>
+ <version>0.3.0-incubating-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <groupId>org.apache.bigtop.itest</groupId>
+ <artifactId>mahout-smoke-execution</artifactId>
+ <version>0.3.0-incubating-SNAPSHOT</version>
+ <name>Mahout smoke test execution</name>
+
+ <properties>
+ <org.apache.maven-dependency-plugin.groupId>org.apache.bigtop.itest</org.apache.maven-dependency-plugin.groupId>
+ <org.apache.maven-dependency-plugin.artifactId>mahout-smoke</org.apache.maven-dependency-plugin.artifactId>
+ <org.apache.maven-dependency-plugin.version>${mahout-smoke.version}</org.apache.maven-dependency-plugin.version>
+ <org.apache.maven-dependency-plugin.type>jar</org.apache.maven-dependency-plugin.type>
+
+ <HADOOP_HOME>${env.HADOOP_HOME}</HADOOP_HOME>
+ <HADOOP_CONF_DIR>${env.HADOOP_CONF_DIR}</HADOOP_CONF_DIR>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.bigtop.itest</groupId>
+ <artifactId>mahout-smoke</artifactId>
+ <version>${mahout-smoke.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <version>1.0</version>
+ <executions>
+ <execution>
+ <id>enforce-property</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <rules>
+ <requireProperty>
+ <property>HADOOP_HOME</property>
+ <message>HADOOP_HOME env. variable has to be set</message>
+ </requireProperty>
+ <requireProperty>
+ <property>HADOOP_CONF_DIR</property>
+ <message>HADOOP_CONF_DIR env. variable has to be set</message>
+ </requireProperty>
+ </rules>
+ <fail>true</fail>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.7.1</version>
+ <configuration>
+ <additionalClasspathElements>
+ <additionalClasspathElement>${HADOOP_CONF_DIR}</additionalClasspathElement>
+ </additionalClasspathElements>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
Modified: incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/pom.xml
URL: http://svn.apache.org/viewvc/incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/pom.xml?rev=1202931&r1=1202930&r2=1202931&view=diff
==============================================================================
--- incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/pom.xml (original)
+++ incubator/bigtop/trunk/bigtop-tests/test-execution/smokes/pom.xml Wed Nov 16 23:21:06 2011
@@ -44,6 +44,7 @@
<flume-smoke.version>0.3.0-incubating-SNAPSHOT</flume-smoke.version>
<hbase-smoke.version>0.3.0-incubating-SNAPSHOT</hbase-smoke.version>
<hive-smoke.version>0.3.0-incubating-SNAPSHOT</hive-smoke.version>
+ <mahout-smoke.version>0.3.0-incubating-SNAPSHOT</mahout-smoke.version>
<oozie-smoke.version>0.3.0-incubating-SNAPSHOT</oozie-smoke.version>
<package-smoke.version>0.3.0-incubating-SNAPSHOT</package-smoke.version>
<pig-smoke.version>0.9.0-SNAPSHOT</pig-smoke.version>
@@ -65,6 +66,7 @@
<module>sqoop</module>
<module>flume</module>
<module>hbase</module>
+ <module>mahout</module>
</modules>
<dependencyManagement>
@@ -139,6 +141,12 @@
</dependency>
<dependency>
<groupId>org.apache.bigtop.itest</groupId>
+ <artifactId>mahout-smoke</artifactId>
+ <version>${mahout-smoke.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.bigtop.itest</groupId>
<artifactId>oozie-smoke</artifactId>
<version>${oozie-smoke.version}</version>
<scope>test</scope>