public static void main(String args[]) throws CliException, IOException, InterruptedException { ZooKeeperMain main = new ZooKeeperMain(args); main.run(); }
@Override public void setUp() throws Exception { super.setUp(); zk = createClient(); zkMain = new ZooKeeperMain(zk); }
@Test public void testLsrRootCommand() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); LsCommand cmd = new LsCommand(); cmd.setZk(zk); cmd.parse("ls -R /".split(" ")); List<String> expected = new ArrayList<String>(); expected.add("/"); expected.add("/zookeeper"); runCommandExpect(cmd, expected); }
@Test public void testCheckInvalidAcls() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring = "create -s -e /node data ip:scheme:gggsd"; //invalid acl's // For Invalid ACls should not throw exception zkMain.executeLine(cmdstring); }
@Test public void testDeleteWithInvalidVersionNo() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring = "create -s -e /node1 data "; String cmdstring1 = "delete /node1 2";//invalid dataversion no zkMain.executeLine(cmdstring); // For Invalid dataversion number should not throw exception zkMain.executeLine(cmdstring1); }
@Test public void testLsrLeafCommand() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); zkMain.executeLine("create /b"); zkMain.executeLine("create /b/c"); LsCommand cmd = new LsCommand(); cmd.setZk(zk); cmd.parse("ls -R /b/c".split(" ")); List<String> expected = new ArrayList<String>(); expected.add("/b/c"); runCommandExpect(cmd, expected); }
@Test public void testCreatePersistentNode() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring = "create /node2"; zkMain.cl.parseCommand(cmdstring); Assert.assertTrue("Not creating Persistent node.", zkMain .processZKCmd(zkMain.cl)); }
@Test public void testACLWithExtraAgruments() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); // create persistent sequential node String cmdstring = "create -s /l data ip:10.18.52.144:cdrwa f g h"; zkMain.cl.parseCommand(cmdstring); Assert.assertTrue( "Not considering the extra arguments after the acls.", zkMain .processZKCmd(zkMain.cl)); }
@Test public void testSortedLs() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); zkMain.executeLine("create /aa1"); zkMain.executeLine("create /aa2"); zkMain.executeLine("create /aa3"); zkMain.executeLine("create /test1"); zkMain.executeLine("create /zk1"); LsCommand cmd = new LsCommand(); cmd.setZk(zk); cmd.parse("ls /".split(" ")); List<String> expected = new ArrayList<String>(); expected.add("[aa1, aa2, aa3, test1, zk1, zookeeper]"); runCommandExpect(cmd, expected); }
@Test public void testLsrNonexistantZnodeCommand() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); zkMain.executeLine("create /b"); zkMain.executeLine("create /b/c"); LsCommand cmd = new LsCommand(); cmd.setZk(zk); cmd.parse("ls -R /b/c/d".split(" ")); try { runCommandExpect(cmd, new ArrayList<String>()); Assert.fail("Path doesn't exists so, command should fail."); } catch (CliWrapperException e) { Assert.assertEquals(KeeperException.Code.NONODE, ((KeeperException)e.getCause()).code()); } }
@Test public void testStatWhenPathDoesNotExist() throws IOException, InterruptedException, MalformedCommandException { final ZooKeeper zk = createClient(); ZooKeeperMain main = new ZooKeeperMain(zk); String cmdstring = "stat /invalidPath"; main.cl.parseCommand(cmdstring); try { main.processZKCmd(main.cl); Assert.fail("As Node does not exist, command should fail by throwing No Node Exception."); } catch (CliException e) { Assert.assertEquals("Node does not exist: /invalidPath", e.getMessage()); } }
@Test public void testParseWithQuotes() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); for (String quoteChar : new String[] {"'", "\""}) { String cmdstring = String.format("create /node %1$squoted data%1$s", quoteChar); zkMain.cl.parseCommand(cmdstring); Assert.assertEquals("quotes combine arguments", zkMain.cl.getNumArguments(), 3); Assert.assertEquals("create is not taken as first argument", zkMain.cl.getCmdArgument(0), "create"); Assert.assertEquals("/node is not taken as second argument", zkMain.cl.getCmdArgument(1), "/node"); Assert.assertEquals("quoted data is not taken as third argument", zkMain.cl.getCmdArgument(2), "quoted data"); } }
private void testInvalidCommand(String cmdString, int exitCode) throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); zkMain.cl.parseCommand(cmdString); // Verify that the exit code is set properly zkMain.processCmd(zkMain.cl); Assert.assertEquals(exitCode, zkMain.exitCode); // Verify that the correct exception is thrown try { zkMain.processZKCmd(zkMain.cl); Assert.fail(); } catch (CliException e) { return; } Assert.fail("invalid command should throw CliException"); }
@Test public void testParseWithMixedQuotes() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); for (String[] quoteChars : new String[][] {{"'", "\""}, {"\"", "'"}}) { String outerQuotes = quoteChars[0]; String innerQuotes = quoteChars[1]; String cmdstring = String.format("create /node %1$s%2$squoted data%2$s%1$s", outerQuotes, innerQuotes); zkMain.cl.parseCommand(cmdstring); Assert.assertEquals("quotes combine arguments", zkMain.cl.getNumArguments(), 3); Assert.assertEquals("create is not taken as first argument", zkMain.cl.getCmdArgument(0), "create"); Assert.assertEquals("/node is not taken as second argument", zkMain.cl.getCmdArgument(1), "/node"); Assert.assertEquals("quoted data is not taken as third argument", zkMain.cl.getCmdArgument(2), innerQuotes + "quoted data" + innerQuotes); } }
@Test public void testParseWithExtraSpaces() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring = " ls / "; zkMain.cl.parseCommand(cmdstring); Assert.assertEquals("Spaces also considered as characters", zkMain.cl.getNumArguments(), 2); Assert.assertEquals("ls is not taken as first argument", zkMain.cl.getCmdArgument(0), "ls"); Assert.assertEquals("/ is not taken as second argument", zkMain.cl.getCmdArgument(1), "/"); }
@Test public void testInvalidStatCommand() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); // node doesn't exists String cmdstring1 = "stat /node123"; zkMain.cl.parseCommand(cmdstring1); try { Assert.assertFalse(zkMain.processZKCmd(zkMain.cl)); Assert.fail("Path doesn't exists so, command should fail."); } catch (CliWrapperException e) { Assert.assertEquals(KeeperException.Code.NONODE, ((KeeperException)e.getCause()).code()); } }
@Test public void testParseWithEmptyQuotes() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring = "create /node ''"; zkMain.cl.parseCommand(cmdstring); Assert.assertEquals("empty quotes should produce arguments", zkMain.cl.getNumArguments(), 3); Assert.assertEquals("create is not taken as first argument", zkMain.cl.getCmdArgument(0), "create"); Assert.assertEquals("/node is not taken as second argument", zkMain.cl.getCmdArgument(1), "/node"); Assert.assertEquals("empty string is not taken as third argument", zkMain.cl.getCmdArgument(2), ""); }
@Test public void testDelete() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring1 = "create -e /node2 data"; String cmdstring2 = "delete /node2"; String cmdstring3 = "ls /node2"; zkMain.cl.parseCommand(cmdstring1); Assert.assertTrue(zkMain.processZKCmd(zkMain.cl)); zkMain.cl.parseCommand(cmdstring2); Assert.assertFalse(zkMain.processZKCmd(zkMain.cl)); zkMain.cl.parseCommand(cmdstring3); Assert.assertFalse("", zkMain.processCmd(zkMain.cl)); }
@Test public void testStatCommand() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring1 = "create -e /node3 data"; String cmdstring2 = "stat /node3"; String cmdstring3 = "delete /node3"; zkMain.cl.parseCommand(cmdstring1); Assert.assertTrue(zkMain.processZKCmd(zkMain.cl)); zkMain.cl.parseCommand(cmdstring2); Assert.assertFalse(zkMain.processZKCmd(zkMain.cl)); zkMain.cl.parseCommand(cmdstring3); Assert.assertFalse(zkMain.processZKCmd(zkMain.cl)); }
@Test public void testParseWithMultipleQuotes() throws Exception { final ZooKeeper zk = createClient(); ZooKeeperMain zkMain = new ZooKeeperMain(zk); String cmdstring = "create /node '' ''"; zkMain.cl.parseCommand(cmdstring); Assert.assertEquals("expected 5 arguments", zkMain.cl.getNumArguments(), 4); Assert.assertEquals("create is not taken as first argument", zkMain.cl.getCmdArgument(0), "create"); Assert.assertEquals("/node is not taken as second argument", zkMain.cl.getCmdArgument(1), "/node"); Assert.assertEquals("empty string is not taken as third argument", zkMain.cl.getCmdArgument(2), ""); Assert.assertEquals("empty string is not taken as fourth argument", zkMain.cl.getCmdArgument(3), ""); }