blob: f48197755fc35ba88eff75544ec4225864ad792a [file] [log] [blame]
# 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.
###############################################################################
# curl command tests for templeton
#
#
#use Yahoo::Miners::Test::PigSetup;
#PigSetup::setup();
#my $me = `whoami`;
#chomp $me;
$cfg =
{
'driver' => 'Curl',
'groups' =>
[
##=============================================================================================================
{
'name' => 'TestStreaming',
'tests' =>
[
{
'num' => 1,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/mapreduce/streaming',
'post_options' => ['user.name=:UNAME:','input=:INPDIR_HDFS:/nums.txt','output=:OUTDIR:/mycounts',
'mapper=/bin/cat', 'reducer=/usr/bin/wc'],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#-ve test - no input file
'num' => 2,
'ignore' => 'wait for fix in hadoop 1.0.3',
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/mapreduce/streaming',
'post_options' => ['user.name=:UNAME:','input=:INPDIR_HDFS:/nums.txt','output=:OUTDIR:/mycounts',
'mapper=/bin/ls no_such-file-12e3', 'reducer=/usr/bin/wc'],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'FAILURE',
'check_call_back' => 1,
},
]
},
##=============================================================================================================
{
'name' => 'TestKillJob',
'tests' =>
[
{
'num' => 1,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/mapreduce/streaming',
'post_options' => ['user.name=:UNAME:','input=:INPDIR_HDFS:/nums.txt','output=:OUTDIR:/mycounts',
'mapper=/bin/sleep 100', 'reducer=/usr/bin/wc'],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'KILLED',
# 'check_call_back' => 1, #TODO - enable call back check after fix
'kill_job_timeout' => 10,
},
]
},
##=============================================================================================================
{
'name' => 'TestMapReduce',
'tests' =>
[
{
'num' => 1,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/mapreduce/jar',
'post_options' => ['user.name=:UNAME:','arg=:INPDIR_HDFS:/nums.txt', 'arg= :OUTDIR:/wc.txt',
'jar=:INPDIR_HDFS:/hexamples.jar', 'class=wordcount', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
]
},
##=============================================================================================================
{
'name' => 'TestPig',
'tests' =>
[
{
#test syntax error
'ignore' => 'fails in current version',
'num' => 1,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:','execute=asdf', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'FAILURE',
'check_call_back' => 1,
},
{
#valid syntax, hdfs operation through pig
'num' => 2,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:','execute=fs -ls :INPDIR_HDFS:;', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#syntax check - valid syntax
'num' => 3,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:','arg=-check', 'file=:INPDIR_HDFS:/loadstore.pig', 'arg=-p', 'arg=INPDIR=:INPDIR_HDFS:','arg=-p', 'arg=OUTDIR=:OUTDIR:', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#syntax check cmd - valid syntax
'num' => 4,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:', 'arg=-d', 'arg=INFO' , 'execute=fs -ls :INPDIR_HDFS: ', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#a simple load store script
'num' => 5,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:', 'arg=-p', 'arg=INPDIR=:INPDIR_HDFS:','arg=-p', 'arg=OUTDIR=:OUTDIR:', 'file=:INPDIR_HDFS:/loadstore.pig', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#pig query registering jar
'num' => 6,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:', 'arg=-p', 'arg=INPDIR=:INPDIR_HDFS:','arg=-p', 'arg=OUTDIR=:OUTDIR:', 'file=:INPDIR_HDFS:/jarregistered.pig',
'files=:INPDIR_HDFS:/piggybank.jar' ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#macro
'num' => 7,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:', 'arg=-p', 'arg=INPDIR=:INPDIR_HDFS:','arg=-p', 'arg=OUTDIR=:OUTDIR:', 'file=:INPDIR_HDFS:/rowcount_withmacro.pig',
'files=:INPDIR_HDFS:/rowcountmacro.pig' ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#no file to be copied, should result in launcher job error
'num' => 8,
ignore => 'check is disabled for now in templeton',
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/pig',
'post_options' => ['user.name=:UNAME:', 'arg=-p', 'arg=INPDIR=:INPDIR_HDFS:','arg=-p', 'arg= OUTDIR=:OUTDIR:', 'file=:INPDIR_HDFS:/no_such_file.pig',
'files=:INPDIR_HDFS:/rowcountmacro.pig' ],
'json_field_substr_match' => { 'error' => 'does not exist'},
#results
'status_code' => 200,
'check_job_complete' => 'FAILURE',
},
#test 9
#TODO jython test
]
},
##=============================================================================================================
{
'name' => 'TestHive',
'tests' =>
[
{
#test syntax error
'ignore' => 'fails in current version',
'num' => 1,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=asdf', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'FAILURE',
},
{
#test show tables
'num' => 2,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=show tables', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#test show tables
'num' => 3,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=drop table if exists mynums;', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#test show tables
'num' => 4,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=create external table mynums(a int, b int) location ":INPDIR_HDFS:/numstable/";', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#test describe
'num' => 5,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=describe formatted mynums', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#test select *
'num' => 6,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=select * from mynums', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#test select a,b
'num' => 7,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=select a,b from mynums', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
'check_call_back' => 1,
},
{
#test udfs : select a,rand(b)
'num' => 8,
'method' => 'POST',
'url' => ':TEMPLETON_URL:/templeton/v1/hive',
'post_options' => ['user.name=:UNAME:','execute=select a,rand(b) from mynums', ],
'json_field_substr_match' => { 'id' => '\d+'},
#results
'status_code' => 200,
'check_job_created' => 1,
'check_job_complete' => 'SUCCESS',
},
]
},
]
},
;