public virtual void TestCommandLineArgs()
{
foreach (string name in OldIndexDirs.Keys)
{
DirectoryInfo dir = CreateTempDir(name);
using (Stream dataFile = this.GetType().Assembly.GetManifestResourceStream(CURRENT_RESOURCE_DIRECTORY + "index." + name + ".zip"))
{
TestUtil.Unzip(dataFile, dir);
}
string path = dir.FullName;
IList<string> args = new List<string>();
if (Random().NextBoolean())
{
args.Add("-verbose");
}
if (Random().NextBoolean())
{
args.Add("-delete-prior-commits");
}
if (Random().NextBoolean())
{
// TODO: need to better randomize this, but ...
// - LuceneTestCase.FS_DIRECTORIES is private
// - newFSDirectory returns BaseDirectoryWrapper
// - BaseDirectoryWrapper doesn't expose delegate
Type dirImpl = Random().NextBoolean() ? typeof(SimpleFSDirectory) : typeof(NIOFSDirectory);
args.Add("-dir-impl");
args.Add(dirImpl.Name);
}
args.Add(path);
IndexUpgrader upgrader = null;
try
{
upgrader = IndexUpgrader.ParseArgs(args.ToArray());
}
catch (Exception e)
{
throw new Exception("unable to parse args: " + args, e);
}
upgrader.Upgrade();
Directory upgradedDir = NewFSDirectory(dir);
try
{
CheckAllSegmentsUpgraded(upgradedDir);
}
finally
{
upgradedDir.Dispose();
}
}
}