blob: f3d4ca4de74a9d0e7724dfdadedc46e3583bca7d [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.IO;
using Lucene.Net.Support;
using NUnit.Framework;
using CheckIndex = Lucene.Net.Index.CheckIndex;
using ConcurrentMergeScheduler = Lucene.Net.Index.ConcurrentMergeScheduler;
using IndexWriter = Lucene.Net.Index.IndexWriter;
using MergeScheduler = Lucene.Net.Index.MergeScheduler;
using Directory = Lucene.Net.Store.Directory;
namespace Lucene.Net.Util
{
public class _TestUtil
{
/// <summary>Returns temp dir, containing String arg in its name;
/// does not create the directory.
/// </summary>
public static System.IO.DirectoryInfo GetTempDir(System.String desc)
{
System.String tempDir = System.IO.Path.GetTempPath();
if (tempDir == null)
throw new System.SystemException("java.io.tmpdir undefined, cannot run test");
return new System.IO.DirectoryInfo(System.IO.Path.Combine(tempDir, desc + "." + (new System.Random()).Next(System.Int32.MaxValue)));
}
// TODO: This was a bit overkill? -cc
public static void RmDir(System.IO.DirectoryInfo dir)
{
RmDir(dir.FullName);
//bool tmpBool;
//if (System.IO.File.Exists(dir.FullName))
// tmpBool = true;
//else
// tmpBool = System.IO.Directory.Exists(dir.FullName);
//if (tmpBool)
//{
// System.IO.FileInfo[] files = FileSupport.GetFiles(dir);
// for (int i = 0; i < files.Length; i++)
// {
// bool tmpBool2;
// if (System.IO.File.Exists(files[i].FullName))
// {
// System.IO.File.Delete(files[i].FullName);
// tmpBool2 = true;
// }
// else if (System.IO.Directory.Exists(files[i].FullName))
// {
// System.IO.Directory.Delete(files[i].FullName);
// tmpBool2 = true;
// }
// else
// tmpBool2 = false;
// if (!tmpBool2)
// {
// throw new System.IO.IOException("could not delete " + files[i]);
// }
// }
// bool tmpBool3;
// if (System.IO.File.Exists(dir.FullName))
// {
// System.IO.File.Delete(dir.FullName);
// tmpBool3 = true;
// }
// else if (System.IO.Directory.Exists(dir.FullName))
// {
// System.IO.Directory.Delete(dir.FullName);
// tmpBool3 = true;
// }
// else
// tmpBool3 = false;
// bool generatedAux = tmpBool3;
//}
}
public static void RmDir(System.String dir)
{
if(System.IO.Directory.Exists(dir))
System.IO.Directory.Delete(dir, true);
}
public static void SyncConcurrentMerges(IndexWriter writer)
{
SyncConcurrentMerges(writer.MergeScheduler);
}
public static void SyncConcurrentMerges(MergeScheduler ms)
{
if (ms is ConcurrentMergeScheduler)
((ConcurrentMergeScheduler) ms).Sync();
}
/// <summary>This runs the CheckIndex tool on the index in. If any
/// issues are hit, a RuntimeException is thrown; else,
/// true is returned.
/// </summary>
public static bool CheckIndex(Directory dir)
{
System.IO.MemoryStream bos = new System.IO.MemoryStream(1024);
CheckIndex checker = new CheckIndex(dir);
checker.SetInfoStream(new System.IO.StreamWriter(bos));
CheckIndex.Status indexStatus = checker.CheckIndex_Renamed_Method();
if (indexStatus == null || indexStatus.clean == false)
{
System.Console.Out.WriteLine("CheckIndex failed");
char[] tmpChar;
byte[] tmpByte;
tmpByte = bos.GetBuffer();
tmpChar = new char[bos.Length];
System.Array.Copy(tmpByte, 0, tmpChar, 0, tmpChar.Length);
System.Console.Out.WriteLine(new System.String(tmpChar));
throw new System.SystemException("CheckIndex failed");
}
else
return true;
}
/// <summary>Use only for testing.</summary>
/// <deprecated> -- in 3.0 we can use Arrays.toString
/// instead
/// </deprecated>
public static System.String ArrayToString(int[] array)
{
System.Text.StringBuilder buf = new System.Text.StringBuilder();
buf.Append("[");
for (int i = 0; i < array.Length; i++)
{
if (i > 0)
{
buf.Append(" ");
}
buf.Append(array[i]);
}
buf.Append("]");
return buf.ToString();
}
/// <summary>Use only for testing.</summary>
/// <deprecated> -- in 3.0 we can use Arrays.toString
/// instead
/// </deprecated>
public static System.String ArrayToString(System.Object[] array)
{
System.Text.StringBuilder buf = new System.Text.StringBuilder();
buf.Append("[");
for (int i = 0; i < array.Length; i++)
{
if (i > 0)
{
buf.Append(" ");
}
buf.Append(array[i]);
}
buf.Append("]");
return buf.ToString();
}
public static int GetRandomSocketPort()
{
return 1024 + new System.Random().Next(64512);
}
}
}