public virtual void TestRollbackToOldSnapshot()
{
int numSnapshots = 2;
Directory dir = NewDirectory();
SnapshotDeletionPolicy sdp = DeletionPolicy;
IndexWriter writer = new IndexWriter(dir, GetConfig(Random(), sdp));
PrepareIndexAndSnapshots(sdp, writer, numSnapshots);
writer.Dispose();
// now open the writer on "snapshot0" - make sure it succeeds
writer = new IndexWriter(dir, GetConfig(Random(), sdp).SetIndexCommit(Snapshots[0]));
// this does the actual rollback
writer.Commit();
writer.DeleteUnusedFiles();
AssertSnapshotExists(dir, sdp, numSnapshots - 1, false);
writer.Dispose();
// but 'snapshot1' files will still exist (need to release snapshot before they can be deleted).
string segFileName = Snapshots[1].SegmentsFileName;
Assert.IsTrue(SlowFileExists(dir, segFileName), "snapshot files should exist in the directory: " + segFileName);
dir.Dispose();
}