Repository: bigtop Updated Branches: refs/heads/master 02baaf1d9 -> d0e356733
BIGTOP-2219. Comb the smoke-tests to make code base easier for refactoring Project: http://git-wip-us.apache.org/repos/asf/bigtop/repo Commit: http://git-wip-us.apache.org/repos/asf/bigtop/commit/1a6a0e2d Tree: http://git-wip-us.apache.org/repos/asf/bigtop/tree/1a6a0e2d Diff: http://git-wip-us.apache.org/repos/asf/bigtop/diff/1a6a0e2d Branch: refs/heads/master Commit: 1a6a0e2de59957719252f42f8725798646766808 Parents: 02baaf1 Author: Konstantin Boudnik <[email protected]> Authored: Thu Jan 7 23:05:48 2016 -0800 Committer: Konstantin Boudnik <[email protected]> Committed: Fri Jan 8 16:26:21 2016 -0800 ---------------------------------------------------------------------- bigtop-deploy/vm/utils/smoke-tests.sh | 4 +- bigtop-tests/smoke-tests/build.gradle | 71 ++++++++++++-------- bigtop-tests/smoke-tests/flume/build.gradle | 20 ------ bigtop-tests/smoke-tests/hive/build.gradle | 24 +------ .../smoke-tests/ignite-hadoop/build.gradle | 21 +----- .../smoke-tests/kite/TestKiteDataset.groovy | 1 + bigtop-tests/smoke-tests/kite/build.gradle | 19 ------ bigtop-tests/smoke-tests/mahout/build.gradle | 23 +------ bigtop-tests/smoke-tests/mapreduce/build.gradle | 37 +--------- bigtop-tests/smoke-tests/phoenix/build.gradle | 20 ------ bigtop-tests/smoke-tests/pig/build.gradle | 17 ----- bigtop-tests/smoke-tests/spark/build.gradle | 20 ------ bigtop-tests/smoke-tests/sqoop/build.gradle | 18 ----- bigtop-tests/smoke-tests/tachyon/build.gradle | 16 ----- 14 files changed, 53 insertions(+), 258 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-deploy/vm/utils/smoke-tests.sh ---------------------------------------------------------------------- diff --git a/bigtop-deploy/vm/utils/smoke-tests.sh b/bigtop-deploy/vm/utils/smoke-tests.sh index 6491e99..b27c082 100755 --- a/bigtop-deploy/vm/utils/smoke-tests.sh +++ b/bigtop-deploy/vm/utils/smoke-tests.sh @@ -36,7 +36,7 @@ export FLUME_HOME=/usr/lib/flume/ export SQOOP_HOME=/usr/lib/sqoop/ export HIVE_CONF_DIR=/etc/hive/conf/ export MAHOUT_HOME="/usr/lib/mahout" -export ITEST="0.7.0" +export ITEST="1.0.0" su -s /bin/bash $HCFS_USER -c '/usr/bin/hadoop fs -mkdir /user/vagrant /user/root' su -s /bin/bash $HCFS_USER -c 'hadoop fs -chmod 777 /user/vagrant' @@ -47,4 +47,4 @@ if [ -f /etc/debian_version ] ; then else yum install -y pig hive flume mahout sqoop fi -cd /bigtop-home/bigtop-tests/smoke-tests && ./gradlew clean compileGroovy test -Dsmoke.tests=$SMOKE_TESTS --info +cd /bigtop-home && ./gradlew -b bigtop-tests/smoke-tests/build.gradle clean test -Dsmoke.tests=$SMOKE_TESTS --info http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/build.gradle b/bigtop-tests/smoke-tests/build.gradle index abdafdc..1e0da58 100644 --- a/bigtop-tests/smoke-tests/build.gradle +++ b/bigtop-tests/smoke-tests/build.gradle @@ -15,18 +15,56 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -apply plugin: 'groovy' +allprojects { + apply plugin: 'groovy' -repositories { - mavenCentral() -} - -dependencies { + repositories { + mavenCentral() + } } subprojects { + /** + * Utility function for tests to use to confirm EVN Variables. + */ + ext.checkEnv = { env_vars -> + env_vars.each() { + def value = System.getenv("${it}") + if (value == null || value == "null") + throw new GradleException("undeclared env variable: ${it}") + else + println("ENV VARIABLE: ${it} = $value"); + } + } + + /** + * Two important environment variables. + * java_home should be declared in all cases. + * itest can be greater than or equal to = 0.7.0, 0.8.0 + */ + checkEnv(["JAVA_HOME","ITEST","BIGTOP_HOME"]) + ext.itestVersion = System.getenv("ITEST") + ext.groovyVersion = '1.8.0' ext.hadoopVersion = '2.6.0' + + dependencies { + //needed to avoid groovy not on classpath error. + testCompile group: 'org.codehaus.groovy', name: 'groovy', version: groovyVersion + testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' + testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' + testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' + } + + sourceSets { + test { + resources { + srcDirs = [ + 'conf/', + ] + } + } + } //Note you need a snapshot itest to run this. ext.doExclude = { String filename -> //print("Exclude? ${filename} ... ") @@ -52,27 +90,6 @@ subprojects { } } - /** - * Utility function for tests to use to confirm EVN Variables. - */ - ext.checkEnv = { env_vars -> - env_vars.each() { - def value = System.getenv("${it}") - if (value == null || value == "null") - throw new GradleException("undeclared env variable: ${it}") - else - println("ENV VARIABLE: ${it} = $value"); - } - } - - /** - * Two important environment variables. - * java_home should be declared in all cases. - * itest can be greater than or equal to = 0.7.0, 0.8.0 - */ - checkEnv(["JAVA_HOME","ITEST","BIGTOP_HOME"]) - ext.itestVersion = System.getenv("ITEST") - // Let's make sure all system Properties are passed into the forked test JVM tasks.withType(Test) { systemProperties = System.getProperties() http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/flume/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/flume/build.gradle b/bigtop-tests/smoke-tests/flume/build.gradle index 37ffc0c..d2ec370 100644 --- a/bigtop-tests/smoke-tests/flume/build.gradle +++ b/bigtop-tests/smoke-tests/flume/build.gradle @@ -15,21 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' -} - - def tests_to_include() { return [ "TestFlumeNG.groovy" @@ -38,11 +23,6 @@ def tests_to_include() { sourceSets { test { - resources { - srcDirs = [ - 'conf/' - ] - } groovy { srcDirs = ["./"] exclude { FileTreeElement elem -> (doExclude(elem.getName())) } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/hive/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/hive/build.gradle b/bigtop-tests/smoke-tests/hive/build.gradle index 8fe69c0..67dcb71 100644 --- a/bigtop-tests/smoke-tests/hive/build.gradle +++ b/bigtop-tests/smoke-tests/hive/build.gradle @@ -15,21 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' -} - - def tests_to_include() { return [ "TestHiveSimple.groovy", @@ -40,14 +25,9 @@ def tests_to_include() { sourceSets { test { - resources { - srcDirs = [ - 'conf/' - ] - } groovy { - srcDirs = ["$System.env.BIGTOP_HOME"+"/bigtop-tests/test-artifacts/hive/", - "$System.env.BIGTOP_HOME"+"/bigtop-tests/smoke-tests/hive/"] + srcDirs = ["${System.env.BIGTOP_HOME}/bigtop-tests/test-artifacts/hive/", + "${System.env.BIGTOP_HOME}/bigtop-tests/smoke-tests/hive/"] exclude { FileTreeElement elem -> (doExclude(elem.getName())) } } } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/ignite-hadoop/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/ignite-hadoop/build.gradle b/bigtop-tests/smoke-tests/ignite-hadoop/build.gradle index f0973ff..b3ea841 100644 --- a/bigtop-tests/smoke-tests/ignite-hadoop/build.gradle +++ b/bigtop-tests/smoke-tests/ignite-hadoop/build.gradle @@ -15,20 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' -} - def tests_to_include() { return [ "TestIgniteHadoop.groovy" @@ -37,13 +23,8 @@ def tests_to_include() { sourceSets { test { - resources { - srcDirs = [ - 'conf/' - ] - } groovy { - srcDirs = ["$System.env.BIGTOP_HOME"+"/bigtop-tests/smoke-tests/ignite-hadoop/"] + srcDirs = ["${System.env.BIGTOP_HOME}/bigtop-tests/smoke-tests/ignite-hadoop/"] } } } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/kite/TestKiteDataset.groovy ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/kite/TestKiteDataset.groovy b/bigtop-tests/smoke-tests/kite/TestKiteDataset.groovy index a7a11b8..a74b4f2 100644 --- a/bigtop-tests/smoke-tests/kite/TestKiteDataset.groovy +++ b/bigtop-tests/smoke-tests/kite/TestKiteDataset.groovy @@ -27,6 +27,7 @@ import org.junit.AfterClass import org.junit.Test import org.apache.bigtop.itest.JarContent import org.apache.bigtop.itest.TestUtils +import org.apache.bigtop.itest.shell.Shell import org.apache.commons.logging.LogFactory import org.apache.commons.logging.Log import java.lang.reflect.Constructor; http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/kite/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/kite/build.gradle b/bigtop-tests/smoke-tests/kite/build.gradle index 890c0d6..cfc8b1c 100644 --- a/bigtop-tests/smoke-tests/kite/build.gradle +++ b/bigtop-tests/smoke-tests/kite/build.gradle @@ -15,20 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' -} - - def tests_to_include() { return [ "TestKiteDataset.groovy" @@ -37,11 +23,6 @@ def tests_to_include() { sourceSets { test { - resources { - srcDirs = [ - 'conf/' - ] - } groovy { srcDirs = ["./"] exclude { FileTreeElement elem -> (doExclude(elem.getName())) } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/mahout/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/mahout/build.gradle b/bigtop-tests/smoke-tests/mahout/build.gradle index 5a562b4..b6048d6 100644 --- a/bigtop-tests/smoke-tests/mahout/build.gradle +++ b/bigtop-tests/smoke-tests/mahout/build.gradle @@ -15,22 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' -} - - def tests_to_include() { return [ "TestMahoutExamples.groovy" @@ -39,13 +23,8 @@ def tests_to_include() { sourceSets { test { - resources { - srcDirs = [ - 'conf/' - ] - } groovy { - srcDirs = ["$System.env.BIGTOP_HOME"+"/bigtop-tests/test-artifacts/mahout/"] + srcDirs = ["${System.env.BIGTOP_HOME}/bigtop-tests/test-artifacts/mahout/"] exclude { FileTreeElement elem -> (doExclude(elem.getName())) } } } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/mapreduce/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/mapreduce/build.gradle b/bigtop-tests/smoke-tests/mapreduce/build.gradle index 83a16a6..4aad5f4 100644 --- a/bigtop-tests/smoke-tests/mapreduce/build.gradle +++ b/bigtop-tests/smoke-tests/mapreduce/build.gradle @@ -15,23 +15,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - compile group: 'junit', name: 'junit', version: '4.11', transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - compile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' - compile "org.codehaus.groovy:groovy:1.8.0" -} - - def tests_to_include() { return [ "TestHadoopExamples.groovy" @@ -39,26 +22,10 @@ def tests_to_include() { } sourceSets { - main { - groovy { - srcDirs = [ - "$System.env.BIGTOP_HOME"+"/bigtop-test-framework/src/main/groovy/org/apache/bigtop/itest/", - "$System.env.BIGTOP_HOME"+"/bigtop-test-framework/src/test/groovy/org/apache/bigtop/itest/" - ] - } - } test { - resources { - srcDirs = [ - 'conf/', - ] - } - groovy { srcDirs = [ - "$System.env.BIGTOP_HOME"+"/bigtop-tests/test-artifacts/hadoop/src/main/groovy/org/apache/bigtop/itest/hadoop/mapreduce", - "$System.env.BIGTOP_HOME"+"/bigtop-test-framework/src/main/groovy/org/apache/bigtop/itest/", - "$System.env.BIGTOP_HOME"+"/bigtop-test-framework/src/test/groovy/org/apache/bigtop/itest/" + "${System.env.BIGTOP_HOME}/bigtop-tests/test-artifacts/hadoop/src/main/groovy/org/apache/bigtop/itest/hadoop/mapreduce" ] exclude { FileTreeElement elem -> (doExclude(elem.getName())) @@ -68,5 +35,5 @@ sourceSets { } test.doFirst { - checkEnv(["HADOOP_CONF_DIR"]) + checkEnv(["HADOOP_CONF_DIR", "HADOOP_MAPRED_HOME"]) } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/phoenix/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/phoenix/build.gradle b/bigtop-tests/smoke-tests/phoenix/build.gradle index 0338db5..977095a 100644 --- a/bigtop-tests/smoke-tests/phoenix/build.gradle +++ b/bigtop-tests/smoke-tests/phoenix/build.gradle @@ -15,32 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' -} - - def tests_to_include() { return ["TestPhoenixQueryServer.groovy"]; } sourceSets { test { - resources { - srcDirs = ['conf/'] - } - groovy { srcDirs = ["./"] exclude { FileTreeElement elem -> (doExclude(elem.getName())) } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/pig/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/pig/build.gradle b/bigtop-tests/smoke-tests/pig/build.gradle index 0ca73ba..81c0d68 100644 --- a/bigtop-tests/smoke-tests/pig/build.gradle +++ b/bigtop-tests/smoke-tests/pig/build.gradle @@ -15,33 +15,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' testCompile group: 'org.hsqldb', name: 'hsqldb', version: '1.8.0.10' } - def tests_to_include() { return ["TestPigSmoke.groovy"]; } sourceSets { test { - resources { - srcDirs = ['conf/'] - } - groovy { srcDirs = ["./"] exclude 'src/main/groovy/org/apache/bigtop/itest/hadoop/hdfs/**' http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/spark/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/spark/build.gradle b/bigtop-tests/smoke-tests/spark/build.gradle index d6dc8c4..1ed3e14 100644 --- a/bigtop-tests/smoke-tests/spark/build.gradle +++ b/bigtop-tests/smoke-tests/spark/build.gradle @@ -15,32 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' -} - - def tests_to_include() { return ["TestSpark.groovy"]; } sourceSets { test { - resources { - srcDirs = ['conf/'] - } - groovy { srcDirs = ["./"] exclude { FileTreeElement elem -> (doExclude(elem.getName())) } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/sqoop/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/sqoop/build.gradle b/bigtop-tests/smoke-tests/sqoop/build.gradle index 35f4abd..2202c22 100644 --- a/bigtop-tests/smoke-tests/sqoop/build.gradle +++ b/bigtop-tests/smoke-tests/sqoop/build.gradle @@ -15,23 +15,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - dependencies { - //needed to avoid groovy not on classpath error. - testCompile module('org.codehaus.groovy:groovy:1.8.0') - testCompile group: 'org.apache.bigtop.itest', name: 'itest-common', version: itestVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-common', version: hadoopVersion, transitive: 'true' - testCompile group: 'org.apache.hadoop', name: 'hadoop-hdfs', version: hadoopVersion, transitive: 'true' testCompile group: 'org.hsqldb', name: 'hsqldb', version: '1.8.0.10' } - def tests_to_include() { return [ "TestSqoopETLHsql.groovy" @@ -40,11 +27,6 @@ def tests_to_include() { sourceSets { test { - resources { - srcDirs = [ - 'conf/' - ] - } groovy { srcDirs = ["./"] exclude { FileTreeElement elem -> (doExclude(elem.getName())) } http://git-wip-us.apache.org/repos/asf/bigtop/blob/1a6a0e2d/bigtop-tests/smoke-tests/tachyon/build.gradle ---------------------------------------------------------------------- diff --git a/bigtop-tests/smoke-tests/tachyon/build.gradle b/bigtop-tests/smoke-tests/tachyon/build.gradle index d7c76ae..ecef527 100644 --- a/bigtop-tests/smoke-tests/tachyon/build.gradle +++ b/bigtop-tests/smoke-tests/tachyon/build.gradle @@ -15,24 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -apply plugin: 'groovy' - -repositories { - mavenCentral() -} - -dependencies { - //needed to avoid groovy not on classpath error. - testCompile 'org.codehaus.groovy:groovy:1.8.0' - testCompile "org.apache.bigtop.itest:itest-common:$itestVersion" -} - sourceSets { test { - resources { - srcDirs = ['conf/'] - } groovy { srcDirs = ["./"] }
