HDFS-8242. Erasure Coding: XML based end-to-end test for ECCli commands (Contributed by Rakesh R)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9004be1a Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9004be1a Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9004be1a Branch: refs/heads/HDFS-7285 Commit: 9004be1a29e99ec583f55612ce88b25ac6127f90 Parents: 0c8de16 Author: Vinayakumar B <vinayakum...@apache.org> Authored: Tue May 5 11:54:30 2015 +0530 Committer: Jing Zhao <ji...@apache.org> Committed: Sat May 16 15:16:05 2015 -0700 ---------------------------------------------------------------------- .../hadoop-hdfs/CHANGES-HDFS-EC-7285.txt | 3 + .../hdfs/tools/erasurecode/ECCommand.java | 9 +- .../hadoop/cli/CLITestCmdErasureCoding.java | 38 +++ .../apache/hadoop/cli/TestErasureCodingCLI.java | 114 +++++++ .../cli/util/CLICommandErasureCodingCli.java | 21 ++ .../cli/util/ErasureCodingCliCmdExecutor.java | 37 ++ .../test/resources/testErasureCodingConf.xml | 342 +++++++++++++++++++ 7 files changed, 561 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9004be1a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt index faec023..ef760fc 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt @@ -166,3 +166,6 @@ (jing9) HDFS-8137. Send the EC schema to DataNode via EC encoding/recovering command(umamahesh) + + HDFS-8242. Erasure Coding: XML based end-to-end test for ECCli commands + (Rakesh R via vinayakumarb) http://git-wip-us.apache.org/repos/asf/hadoop/blob/9004be1a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/erasurecode/ECCommand.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/erasurecode/ECCommand.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/erasurecode/ECCommand.java index 84c2275..802a46d 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/erasurecode/ECCommand.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/tools/erasurecode/ECCommand.java @@ -17,7 +17,9 @@ package org.apache.hadoop.hdfs.tools.erasurecode; import java.io.IOException; +import java.util.ArrayList; import java.util.LinkedList; +import java.util.List; import org.apache.hadoop.HadoopIllegalArgumentException; import org.apache.hadoop.classification.InterfaceAudience; @@ -120,11 +122,12 @@ public abstract class ECCommand extends Command { sb.append("Schema '"); sb.append(schemaName); sb.append("' does not match any of the supported schemas."); - sb.append("Please select any one of ["); + sb.append(" Please select any one of "); + List<String> schemaNames = new ArrayList<String>(); for (ECSchema ecSchema : ecSchemas) { - sb.append(ecSchema.getSchemaName()); - sb.append(", "); + schemaNames.add(ecSchema.getSchemaName()); } + sb.append(schemaNames); throw new HadoopIllegalArgumentException(sb.toString()); } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/9004be1a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/CLITestCmdErasureCoding.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/CLITestCmdErasureCoding.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/CLITestCmdErasureCoding.java new file mode 100644 index 0000000..6c06a8d --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/CLITestCmdErasureCoding.java @@ -0,0 +1,38 @@ +/** + * 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.hadoop.cli; + +import org.apache.hadoop.cli.util.CLICommandErasureCodingCli; +import org.apache.hadoop.cli.util.CLICommandTypes; +import org.apache.hadoop.cli.util.CLITestCmd; +import org.apache.hadoop.cli.util.CommandExecutor; +import org.apache.hadoop.cli.util.ErasureCodingCliCmdExecutor; +import org.apache.hadoop.hdfs.tools.erasurecode.ECCli; + +public class CLITestCmdErasureCoding extends CLITestCmd { + public CLITestCmdErasureCoding(String str, CLICommandTypes type) { + super(str, type); + } + + @Override + public CommandExecutor getExecutor(String tag) throws IllegalArgumentException { + if (getType() instanceof CLICommandErasureCodingCli) + return new ErasureCodingCliCmdExecutor(tag, new ECCli()); + return super.getExecutor(tag); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/9004be1a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/TestErasureCodingCLI.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/TestErasureCodingCLI.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/TestErasureCodingCLI.java new file mode 100644 index 0000000..5f01ea2 --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/TestErasureCodingCLI.java @@ -0,0 +1,114 @@ +/** + * 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.hadoop.cli; + +import org.apache.hadoop.cli.util.CLICommand; +import org.apache.hadoop.cli.util.CLICommandErasureCodingCli; +import org.apache.hadoop.cli.util.CommandExecutor.Result; +import org.apache.hadoop.fs.FileSystem; +import org.apache.hadoop.hdfs.DFSConfigKeys; +import org.apache.hadoop.hdfs.MiniDFSCluster; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.xml.sax.SAXException; + +public class TestErasureCodingCLI extends CLITestHelper { + private final int NUM_OF_DATANODES = 3; + private MiniDFSCluster dfsCluster = null; + private FileSystem fs = null; + private String namenode = null; + + @Before + @Override + public void setUp() throws Exception { + super.setUp(); + + dfsCluster = new MiniDFSCluster.Builder(conf) + .numDataNodes(NUM_OF_DATANODES).build(); + dfsCluster.waitClusterUp(); + namenode = conf.get(DFSConfigKeys.FS_DEFAULT_NAME_KEY, "file:///"); + + username = System.getProperty("user.name"); + + fs = dfsCluster.getFileSystem(); + } + + @Override + protected String getTestFile() { + return "testErasureCodingConf.xml"; + } + + @After + @Override + public void tearDown() throws Exception { + if (fs != null) { + fs.close(); + } + if (dfsCluster != null) { + dfsCluster.shutdown(); + } + Thread.sleep(2000); + super.tearDown(); + } + + @Override + protected String expandCommand(final String cmd) { + String expCmd = cmd; + expCmd = expCmd.replaceAll("NAMENODE", namenode); + expCmd = expCmd.replaceAll("#LF#", System.getProperty("line.separator")); + expCmd = super.expandCommand(expCmd); + return expCmd; + } + + @Override + protected TestConfigFileParser getConfigParser() { + return new TestErasureCodingAdmin(); + } + + private class TestErasureCodingAdmin extends + CLITestHelper.TestConfigFileParser { + @Override + public void endElement(String uri, String localName, String qName) + throws SAXException { + if (qName.equals("ec-admin-command")) { + if (testCommands != null) { + testCommands.add(new CLITestCmdErasureCoding(charString, + new CLICommandErasureCodingCli())); + } else if (cleanupCommands != null) { + cleanupCommands.add(new CLITestCmdErasureCoding(charString, + new CLICommandErasureCodingCli())); + } + } else { + super.endElement(uri, localName, qName); + } + } + } + + @Override + protected Result execute(CLICommand cmd) throws Exception { + return cmd.getExecutor(namenode).executeCommand(cmd.getCmd()); + } + + @Test + @Override + public void testAll() { + super.testAll(); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/9004be1a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/CLICommandErasureCodingCli.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/CLICommandErasureCodingCli.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/CLICommandErasureCodingCli.java new file mode 100644 index 0000000..aafcd9f --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/CLICommandErasureCodingCli.java @@ -0,0 +1,21 @@ +/** + * 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.hadoop.cli.util; + +public class CLICommandErasureCodingCli implements CLICommandTypes { +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hadoop/blob/9004be1a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/ErasureCodingCliCmdExecutor.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/ErasureCodingCliCmdExecutor.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/ErasureCodingCliCmdExecutor.java new file mode 100644 index 0000000..e993313 --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/cli/util/ErasureCodingCliCmdExecutor.java @@ -0,0 +1,37 @@ +/** + * 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.hadoop.cli.util; + +import org.apache.hadoop.hdfs.tools.erasurecode.ECCli; +import org.apache.hadoop.util.ToolRunner; + +public class ErasureCodingCliCmdExecutor extends CommandExecutor { + protected String namenode = null; + protected ECCli admin = null; + + public ErasureCodingCliCmdExecutor(String namenode, ECCli admin) { + this.namenode = namenode; + this.admin = admin; + } + + @Override + protected void execute(final String cmd) throws Exception { + String[] args = getCommandAsArgs(cmd, "NAMENODE", this.namenode); + ToolRunner.run(admin, args); + } +} http://git-wip-us.apache.org/repos/asf/hadoop/blob/9004be1a/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testErasureCodingConf.xml ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testErasureCodingConf.xml b/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testErasureCodingConf.xml new file mode 100644 index 0000000..b7b29d3 --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/resources/testErasureCodingConf.xml @@ -0,0 +1,342 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?xml-stylesheet type="text/xsl" href="testConf.xsl"?> + +<!-- + 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. +--> + +<configuration> + <!-- Normal mode is test. To run just the commands and dump the output + to the log, set it to nocompare --> + <mode>test</mode> + + <!-- Comparator types: + ExactComparator + SubstringComparator + RegexpComparator + TokenComparator + --> + <tests> + + <!-- Test help options --> + <test> + <description>help: help for erasure coding command</description> + <test-commands> + <ec-admin-command>-help</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>Usage: hdfs erasurecode [generic options]</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>help: createZone command</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -help createZone</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>RegexpComparator</type> + <expected-output>^[ \t]*Create a zone to encode files using a specified schema( )*</expected-output> + </comparator> + <comparator> + <type>RegexpComparator</type> + <expected-output>^-createZone \[-s <schemaName>\] <path>(.)*</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>help: getZoneInfo command</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -help getZoneInfo</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>Get information about the EC zone at specified path</expected-output> + </comparator> + <comparator> + <type>RegexpComparator</type> + <expected-output>^-getZoneInfo <path>(.)*</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>help: listSchemas command</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -help listSchemas</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>Get the list of ECSchemas supported</expected-output> + </comparator> + <comparator> + <type>RegexpComparator</type> + <expected-output>^-listSchemas (.)*</expected-output> + </comparator> + </comparators> + </test> + + <!-- Test erasure code commands --> + <test> + <description>createZone : create a zone to encode files</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone -s RS-6-3 /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>EC Zone created successfully at NAMENODE/eczone</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>createZone : default schema</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone /eczone</ec-admin-command> + <ec-admin-command>-fs NAMENODE -getZoneInfo /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>Dir: /eczone, Schema: ECSchema=[Name=RS-6-3</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>getZoneInfo : get information about the EC zone at specified path</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone -s RS-6-3 /eczone</ec-admin-command> + <ec-admin-command>-fs NAMENODE -getZoneInfo /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>Dir: /eczone, Schema: ECSchema=[Name=RS-6-3</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>getZoneInfo : get EC zone at specified file path</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone -s RS-6-3 /eczone</ec-admin-command> + <command>-fs NAMENODE -touchz /eczone/ecfile</command> + <ec-admin-command>-fs NAMENODE -getZoneInfo /eczone/ecfile</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rm /eczone/ecfile</command> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>Dir: /eczone, Schema: ECSchema=[Name=RS-6-3</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>listSchemas : get the list of ECSchemas supported</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -listSchemas</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>RS-6-3</expected-output> + </comparator> + </comparators> + </test> + +<!-- Test illegal parameters --> + <test> + <description>createZone : illegal parameters - path is missing</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>RegexpComparator</type> + <expected-output>^-createZone: <path> is missing(.)*</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>createZone : illegal parameters - schema name is missing</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone -s</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>RegexpComparator</type> + <expected-output>^-createZone: option -s requires 1 argument(.)*</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>createZone : illegal parameters - too many arguments</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone /eczone1 /eczone2</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>-createZone: Too many arguments</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>createZone : illegal parameters - invalidschema</description> + <test-commands> + <command>-fs NAMENODE -mkdir /eczone</command> + <ec-admin-command>-fs NAMENODE -createZone -s invalidschema /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rmdir /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>Schema 'invalidschema' does not match any of the supported schemas. Please select any one of [RS-6-3]</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>createZone : illegal parameters - no such file</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -createZone /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>RegexpComparator</type> + <expected-output>^createZone: `/eczone': No such file or directory(.)*</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>getZoneInfo : illegal parameters - path is missing</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -getZoneInfo </ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>RegexpComparator</type> + <expected-output>^-getZoneInfo: <path> is missing(.)*</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>getZoneInfo : illegal parameters - too many arguments</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -getZoneInfo /eczone /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + <command>-fs NAMENODE -rm /eczone</command> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>-getZoneInfo: Too many arguments</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>getZoneInfo : illegal parameters - no such file</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -getZoneInfo /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>RegexpComparator</type> + <expected-output>^getZoneInfo: `/eczone': No such file or directory(.)*</expected-output> + </comparator> + </comparators> + </test> + + <test> + <description>listSchemas : illegal parameters - too many parameters</description> + <test-commands> + <ec-admin-command>-fs NAMENODE -listSchemas /eczone</ec-admin-command> + </test-commands> + <cleanup-commands> + </cleanup-commands> + <comparators> + <comparator> + <type>SubstringComparator</type> + <expected-output>-listSchemas: Too many parameters</expected-output> + </comparator> + </comparators> + </test> + + </tests> +</configuration>