keith-turner commented on a change in pull request #370: ACCUMULO-4772 Update
shell to use NewTableConfiguration methods
URL: https://github.com/apache/accumulo/pull/370#discussion_r164861376
##########
File path: test/src/main/java/org/apache/accumulo/test/ShellServerIT.java
##########
@@ -2020,4 +2022,143 @@ public void testSummarySelection() throws Exception {
// check that there are two files, with none having extra summary info
assertMatches(output,
"(?sm).*^.*total[:]2[,]\\s+missing[:]0[,]\\s+extra[:]0.*$.*");
}
+
+ @Test
+ public void testCreateTableWithLocalityGroups() throws Exception {
+ final String table = name.getMethodName();
+ ts.exec("createtable " + table + " -l locg1=fam1,fam2", true);
+ Connector connector = getConnector();
+ Map<String,Set<Text>> lMap =
connector.tableOperations().getLocalityGroups(table);
+ Set<Text> expectedColFams = new HashSet<>(Arrays.asList(new Text("fam1"),
new Text("fam2")));
+ for (Entry<String,Set<Text>> entry : lMap.entrySet()) {
+ Assert.assertTrue(entry.getKey().equals("locg1"));
+ Assert.assertTrue(entry.getValue().containsAll(expectedColFams));
+ }
+ ts.exec("deletetable -f " + table);
+ }
+
+ /**
+ * Due to the existing complexity of the createtable command, the
createtable help only displays an example of setting one locality group. It is
possible to
+ * set multiple groups if needed. This test verifies that capability.
+ */
+ @Test
+ public void testCreateTableWithMultipleLocalityGroups() throws Exception {
+ final String table = name.getMethodName();
+ ts.exec("createtable " + table + " -l locg1=fam1,fam2 locg2=colfam1",
true);
+ Connector connector = getConnector();
+ Map<String,Set<Text>> lMap =
connector.tableOperations().getLocalityGroups(table);
+ Assert.assertTrue(lMap.keySet().contains("locg1"));
+ Assert.assertTrue(lMap.keySet().contains("locg2"));
+ Set<Text> expectedColFams1 = new HashSet<>(Arrays.asList(new Text("fam1"),
new Text("fam2")));
+ Set<Text> expectedColFams2 = new HashSet<>(Arrays.asList(new
Text("colfam1")));
+ Assert.assertTrue(lMap.get("locg1").containsAll(expectedColFams1));
+ Assert.assertTrue(lMap.get("locg2").containsAll(expectedColFams2));
+ ts.exec("deletetable -f " + table);
+ }
+
+ @Test
+ public void testCreateTableWithLocalityGroupsBadArguments() throws
IOException {
+ final String table = name.getMethodName();
+ ts.exec("createtable " + table + " -l locg1 fam1,fam2", false);
+ ts.exec("createtable " + table + "-l", false);
+ ts.exec("createtable " + table + " -l locg1 = fam1,fam2", false);
+ ts.exec("createtable " + table + " -l locg1=fam1 ,fam2", false);
+ ts.exec("createtable " + table + " -l locg1", false);
+ ts.exec("createtable " + table + " group=fam1", false);
+ ts.exec("createtable " + table + "-l fam1,fam2", false);
+ ts.exec("createtable " + table + " -local locg1=fam1,fam2", false);
+ }
+
+ @Test
+ public void testCreateTableWithIterators() throws Exception {
+ final String tmpTable = "tmpTable";
+ final String table = name.getMethodName();
+
+ // create iterator profile
+ // Will use tmpTable for creating profile since setshelliter is requiring
a table
+ // even though its command line help indicates that it is optional. Likely
due to
+ // the fact that setshelliter extends setiter, which does require a table
argument.
+ ts.exec("createtable " + tmpTable, true);
+ String output = ts.exec("tables");
+ Assert.assertTrue(output.contains(tmpTable));
+
+ ts.input.set("\n5000\n\n");
+ ts.exec("setshelliter -n itname -p 10 -pn profile1 -ageoff -t " +
tmpTable, true);
+ output = ts.exec("listshelliter");
+ Assert.assertTrue(output.contains("Profile : profile1"));
+
+ // create table making use of the iterator profile
+ ts.exec("createtable " + table + " -i profile1:scan,minc", true);
+ ts.exec("insert foo a b c", true);
+ ts.exec("scan", true, "foo a:b [] c");
+ ts.exec("sleep 6", true);
+ ts.exec("scan", true, "", true);
+ ts.exec("deletetable -f " + table);
+ ts.exec("deletetable -f " + tmpTable);
+ }
+
+ /**
+ * Due to the existing complexity of the createtable command, the
createtable help only displays an example of setting one iterator upon table
creation. It is
+ * possible to set multiple if needed. This test verifies that capability.
+ */
+ @Test
+ public void testCreateTableWithMultipleIterators() throws Exception {
+ final String tmpTable = "tmpTable";
+ final String table = name.getMethodName();
+
+ // create iterator profile
+ // Will use tmpTable for creating profile since setshelliter is requiring
a table
Review comment:
It would be nice to look into fixing this.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services