public virtual void TestCreateSnapshot()
 {
     // test createSnapshot
     DFSTestUtil.FsShellRun("-createSnapshot /sub1 sn0", 0, "Created snapshot /sub1/.snapshot/sn0"
                            , conf);
     DFSTestUtil.FsShellRun("-createSnapshot /sub1 sn0", 1, "there is already a snapshot with the same name \"sn0\""
                            , conf);
     DFSTestUtil.FsShellRun("-rmr /sub1/sub1sub2", conf);
     DFSTestUtil.FsShellRun("-mkdir /sub1/sub1sub3", conf);
     DFSTestUtil.FsShellRun("-createSnapshot /sub1 sn1", 0, "Created snapshot /sub1/.snapshot/sn1"
                            , conf);
     // check snapshot contents
     DFSTestUtil.FsShellRun("-ls /sub1", 0, "/sub1/sub1sub1", conf);
     DFSTestUtil.FsShellRun("-ls /sub1", 0, "/sub1/sub1sub3", conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot", 0, "/sub1/.snapshot/sn0", conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot", 0, "/sub1/.snapshot/sn1", conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot/sn0", 0, "/sub1/.snapshot/sn0/sub1sub1"
                            , conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot/sn0", 0, "/sub1/.snapshot/sn0/sub1sub2"
                            , conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot/sn1", 0, "/sub1/.snapshot/sn1/sub1sub1"
                            , conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot/sn1", 0, "/sub1/.snapshot/sn1/sub1sub3"
                            , conf);
 }
 public virtual void TestDeleteSnapshot()
 {
     DFSTestUtil.FsShellRun("-createSnapshot /sub1 sn1", conf);
     DFSTestUtil.FsShellRun("-deleteSnapshot /sub1 sn1", conf);
     DFSTestUtil.FsShellRun("-deleteSnapshot /sub1 sn1", 1, "deleteSnapshot: Cannot delete snapshot sn1 from path /sub1: the snapshot does not exist."
                            , conf);
 }
 public virtual void TestMkdirUsingReservedName()
 {
     // test can not create dir with reserved name: .snapshot
     DFSTestUtil.FsShellRun("-ls /", conf);
     DFSTestUtil.FsShellRun("-mkdir /.snapshot", 1, "File exists", conf);
     DFSTestUtil.FsShellRun("-mkdir /sub1/.snapshot", 1, "File exists", conf);
     // mkdir -p ignore reserved name check if dir already exists
     DFSTestUtil.FsShellRun("-mkdir -p /sub1/.snapshot", conf);
     DFSTestUtil.FsShellRun("-mkdir -p /sub1/sub1sub1/.snapshot", 1, "mkdir: \".snapshot\" is a reserved name."
                            , conf);
 }
 public virtual void TestAllowSnapshot()
 {
     // Idempotent test
     DFSTestUtil.DFSAdminRun("-allowSnapshot /sub1", 0, "Allowing snaphot on /sub1 succeeded"
                             , conf);
     // allow normal dir success
     DFSTestUtil.FsShellRun("-mkdir /sub2", conf);
     DFSTestUtil.DFSAdminRun("-allowSnapshot /sub2", 0, "Allowing snaphot on /sub2 succeeded"
                             , conf);
     // allow non-exists dir failed
     DFSTestUtil.DFSAdminRun("-allowSnapshot /sub3", -1, null, conf);
 }
 public virtual void TestDisallowSnapshot()
 {
     DFSTestUtil.FsShellRun("-createSnapshot /sub1 sn1", conf);
     // cannot delete snapshotable dir
     DFSTestUtil.FsShellRun("-rmr /sub1", 1, "The directory /sub1 cannot be deleted since /sub1 is snapshottable and already has snapshots"
                            , conf);
     DFSTestUtil.DFSAdminRun("-disallowSnapshot /sub1", -1, "disallowSnapshot: The directory /sub1 has snapshot(s). Please redo the operation after removing all the snapshots."
                             , conf);
     DFSTestUtil.FsShellRun("-deleteSnapshot /sub1 sn1", conf);
     DFSTestUtil.DFSAdminRun("-disallowSnapshot /sub1", 0, "Disallowing snaphot on /sub1 succeeded"
                             , conf);
     // Idempotent test
     DFSTestUtil.DFSAdminRun("-disallowSnapshot /sub1", 0, "Disallowing snaphot on /sub1 succeeded"
                             , conf);
     // now it can be deleted
     DFSTestUtil.FsShellRun("-rmr /sub1", conf);
 }
 public virtual void TestRenameSnapshot()
 {
     DFSTestUtil.FsShellRun("-createSnapshot /sub1 sn.orig", conf);
     DFSTestUtil.FsShellRun("-renameSnapshot /sub1 sn.orig sn.rename", conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot", 0, "/sub1/.snapshot/sn.rename", conf
                            );
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot/sn.rename", 0, "/sub1/.snapshot/sn.rename/sub1sub1"
                            , conf);
     DFSTestUtil.FsShellRun("-ls /sub1/.snapshot/sn.rename", 0, "/sub1/.snapshot/sn.rename/sub1sub2"
                            , conf);
     //try renaming from a non-existing snapshot
     DFSTestUtil.FsShellRun("-renameSnapshot /sub1 sn.nonexist sn.rename", 1, "renameSnapshot: The snapshot sn.nonexist does not exist for directory /sub1"
                            , conf);
     //try renaming to existing snapshots
     DFSTestUtil.FsShellRun("-createSnapshot /sub1 sn.new", conf);
     DFSTestUtil.FsShellRun("-renameSnapshot /sub1 sn.new sn.rename", 1, "renameSnapshot: The snapshot sn.rename already exists for directory /sub1"
                            , conf);
     DFSTestUtil.FsShellRun("-renameSnapshot /sub1 sn.rename sn.new", 1, "renameSnapshot: The snapshot sn.new already exists for directory /sub1"
                            , conf);
 }