private static RandoopConfiguration LoadConfigFile(string p) { RandoopConfiguration retval; try { retval = RandoopConfiguration.Load(p); } catch (Exception e) { string msg = "Failed to load XML configuration file " + p + ": " + e.Message; throw new InternalError(msg); } return(retval); }
public PlanManager(RandoopConfiguration config) { this.config = config; this.builderPlans = new PlanDataBase("builderPlans", config.typematchingmode); this.exceptionPlans = new PlanDataBase("exceptionThrowingPlans", config.typematchingmode); this.observerPlans = new PlanDataBase("observerPlans", config.typematchingmode); Plan.uniqueIdCounter = config.planstartid; if (config.singledir) { this.testFileWriter = new SingleDirTestWriter(new DirectoryInfo(config.outputdir), config.testPrefix); } else { DirectoryInfo outputDir = new DirectoryInfo(config.outputdir); this.testFileWriter = new ClassifyingTestFileWriter(outputDir, config.testPrefix); } }
public ConfigFilesFilter(RandoopConfiguration config) { if (config == null) throw new ArgumentNullException("config"); Common.StringReader r = new StringReader(); foreach (FileName path in config.forbid_typesFiles) forbid_types.AddRange(r.Read(path.fileName)); foreach (FileName path in config.forbid_membersFiles) forbid_members.AddRange(r.Read(path.fileName)); foreach (FileName path in config.forbid_fieldsFiles) forbid_fields.AddRange(r.Read(path.fileName)); foreach (FileName path in config.require_typesFiles) require_types.AddRange(r.Read(path.fileName)); foreach (FileName path in config.require_membersFiles) require_members.AddRange(r.Read(path.fileName)); foreach (FileName path in config.require_fieldsFiles) require_fields.AddRange(r.Read(path.fileName)); }
public VisibilityFilter(RandoopConfiguration env) { this.useStaticMethods = env.usestatic; this.useInternal = env.useinternal; }
private static void Main2(string[] args) { NLogConfigManager.CreateFileConfig(); Logger = NLog.LogManager.GetCurrentClassLogger(); if (args.Length != 1) { throw new InvalidUserParamsException( "RandoopBare takes exactly one argument but was " + "given the following arguments:" + System.Environment.NewLine + Util.PrintArray(args));; } // Parse XML file with generation parameters. string configFileName = ConfigFileName.Parse(args[0]); RandoopConfiguration config = LoadConfigFile(configFileName); // Set the random number generator. if (config.randomSource == RandomSource.SystemRandom) { Logger.Debug("Randoom seed = " + config.randomseed); SystemRandom random = new SystemRandom(); random.Init(config.randomseed); Enviroment.Random = random; } else { Util.Assert(config.randomSource == RandomSource.Crypto); Logger.Debug("Randoom seed = new System.Security.Cryptography.RNGCryptoServiceProvider()"); Enviroment.Random = new CryptoRandom(); } if (!Directory.Exists(config.outputdir)) { throw new InvalidUserParamsException("output directory does not exist: " + config.outputdir); } Collection <Assembly> assemblies = Misc.LoadAssemblies(config.assemblies); ////[email protected] for substituting MessageBox.Show() - start ////Instrument instrumentor = new Instrument(); //foreach (FileName asm in config.assemblies) //{ // Instrument.MethodInstrument(asm.fileName, "System.Windows.Forms.MessageBox::Show", "System.Logger.Debug"); //} ////[email protected] for substituting MessageBox.Show() - end IReflectionFilter filter1 = new VisibilityFilter(config); ConfigFilesFilter filter2 = new ConfigFilesFilter(config); Logger.Debug("========== REFLECTION PATTERNS:"); filter2.PrintFilter(Console.Out); IReflectionFilter filter = new ComposableFilter(filter1, filter2); Collection <Type> typesToExplore = ReflectionUtils.GetExplorableTypes(assemblies); PlanManager planManager = new PlanManager(config); planManager.builderPlans.AddEnumConstantsToPlanDB(typesToExplore); planManager.builderPlans.AddConstantsToTDB(config); Logger.Debug("========== INITIAL PRIMITIVE VALUES:"); planManager.builderPlans.PrintPrimitives(Console.Out); StatsManager stats = new StatsManager(config); Logger.Debug("Analyzing assembly."); ActionSet actions; try { actions = new ActionSet(typesToExplore, filter); } catch (EmpytActionSetException) { string msg = "After filtering based on configuration files, no remaining methods or constructors to explore."; throw new InvalidUserParamsException(msg); } Logger.Debug("Generating tests."); RandomExplorer explorer = new RandomExplorer(typesToExplore, filter, true, config.randomseed, config.arraymaxsize, stats, actions); ITimer t = new Timer(config.timelimit); try { explorer.Explore(t, planManager, config.methodweighing, config.forbidnull, true, config.fairOpt); } catch (Exception e) { Logger.Error("Explorer raised exception {0}", e.ToString()); throw; } }
// Add some non-zero constants to the mix. public void AddConstantsToTDB(RandoopConfiguration config) { foreach (SimpleTypeValues vs in config.simpleTypeValues) { Type type = Type.GetType(vs.simpleType); if (type == null) { throw new Common.RandoopBareExceptions.InternalError("invalid simple type in XML config file."); } foreach (FileName fn in vs.fileNames) { string fileName = fn.fileName; if (!File.Exists(fileName)) { throw new Common.RandoopBareExceptions.InvalidUserParamsException("Configuration file does not exist: " + fileName); } if (type.Equals(typeof(sbyte))) { SByteReader r = new SByteReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(sbyte), o)); } else if (type.Equals(typeof(byte))) { ByteReader r = new ByteReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(byte), o)); } else if (type.Equals(typeof(short))) { ShortReader r = new ShortReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(short), o)); } else if (type.Equals(typeof(ushort))) { UshortReader r = new UshortReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(ushort), o)); } else if (type.Equals(typeof(int))) { IntReader r = new IntReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(int), o)); } else if (type.Equals(typeof(uint))) { UintReader r = new UintReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(uint), o)); } else if (type.Equals(typeof(long))) { LongReader r = new LongReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(long), o)); } else if (type.Equals(typeof(ulong))) { UlongReader r = new UlongReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(ulong), o)); } else if (type.Equals(typeof(char))) { CharReader r = new CharReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(char), o)); } else if (type.Equals(typeof(float))) { FloatReader r = new FloatReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(float), o)); } else if (type.Equals(typeof(double))) { DoubleReader r = new DoubleReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(double), o)); } else if (type.Equals(typeof(bool))) { BoolReader r = new BoolReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(bool), o)); } else if (type.Equals(typeof(decimal))) { DecimalReader r = new DecimalReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(decimal), o)); } else { if (!type.Equals(typeof(string))) { throw new Common.RandoopBareExceptions.InternalError("invalid simple type in XML config file."); } Common.StringReader r = new Common.StringReader(); foreach (object o in r.Read(fileName)) this.AddPlan(Plan.Constant(typeof(string), o)); } } } }
public static RandoopConfiguration CreateConfigFile( CommandLineArguments args, string outputDirBase, int lastPlanId, TimeSpan timeForNextInvocation, int round, string executionLogFileName, int randomseed) { RandoopConfiguration config = new RandoopConfiguration(); string statsFileName = outputDirBase + "\\" + Path.GetRandomFileName() + ".stats.txt"; config.statsFile = new FileName(statsFileName); config.singledir = args.SingleDir; config.outputnormalinputs = args.OutputNormal; config.outputdir = outputDirBase; config.planstartid = lastPlanId; config.timelimit = Convert.ToInt32(timeForNextInvocation.TotalSeconds); config.randomseed = round - 1 + randomseed; config.useinternal = args.ExploreInternal; config.usestatic = !args.NoStatic; // TODO fix this twisted logic! config.forbidnull = !args.AllowNull; // TODO fix this twisted logic! config.fairOpt = args.Fair; // execute fair algorithm if (args.TrueRandom) config.randomSource = RandomSource.Crypto; else config.randomSource = RandomSource.SystemRandom; foreach (string s in args.AssemblyNames) { config.assemblies.Add(new FileName(new FileInfo(s).FullName)); } config.executionLog = executionLogFileName; if (args.DontExecute) config.executionmode = ExecutionMode.DontExecute; // Load any configuration files present in the user-specified directory. bool userSpecifiedConfigDir = false; if (args.ConfigFilesDir != null) { if (Directory.Exists(args.ConfigFilesDir)) { userSpecifiedConfigDir = true; } else { Console.WriteLine("*** Warning: randoop could not find directory {0}.", args.ConfigFilesDir); Console.WriteLine(" Will use default configuration files."); } } if (userSpecifiedConfigDir) { string configFile; configFile = args.ConfigFilesDir + @"\seed_sbyte.txt"; if (!File.Exists(configFile)) configFile = Enviroment.SbytesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(sbyte), configFile)); configFile = args.ConfigFilesDir + @"\seed_byte.txt"; if (!File.Exists(configFile)) configFile = Enviroment.BytesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(byte), configFile)); configFile = args.ConfigFilesDir + @"\seed_short.txt"; if (!File.Exists(configFile)) configFile = Enviroment.ShortsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(short), configFile)); configFile = args.ConfigFilesDir + @"\seed_ushort.txt"; if (!File.Exists(configFile)) configFile = Enviroment.UshortsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(ushort), configFile)); configFile = args.ConfigFilesDir + @"\seed_int.txt"; if (!File.Exists(configFile)) configFile = Enviroment.IntsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(int), configFile)); configFile = args.ConfigFilesDir + @"\seed_uint.txt"; if (!File.Exists(configFile)) configFile = Enviroment.UintsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(uint), configFile)); configFile = args.ConfigFilesDir + @"\seed_long.txt"; if (!File.Exists(configFile)) configFile = Enviroment.LongsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(long), configFile)); configFile = args.ConfigFilesDir + @"\seed_ulong.txt"; if (!File.Exists(configFile)) configFile = Enviroment.UlongsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(ulong), configFile)); configFile = args.ConfigFilesDir + @"\seed_char.txt"; if (!File.Exists(configFile)) configFile = Enviroment.CharsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(char), configFile)); configFile = args.ConfigFilesDir + @"\seed_float.txt"; if (!File.Exists(configFile)) configFile = Enviroment.FloatsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(float), configFile)); configFile = args.ConfigFilesDir + @"\seed_double.txt"; if (!File.Exists(configFile)) configFile = Enviroment.DoublesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(double), configFile)); configFile = args.ConfigFilesDir + @"\seed_bool.txt"; if (!File.Exists(configFile)) configFile = Enviroment.BoolsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(bool), configFile)); configFile = args.ConfigFilesDir + @"\seed_decimal.txt"; if (!File.Exists(configFile)) configFile = Enviroment.DecimalsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(decimal), configFile)); configFile = args.ConfigFilesDir + @"\seed_string.txt"; if (!File.Exists(configFile)) configFile = Enviroment.StringsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(string), configFile)); configFile = args.ConfigFilesDir + @"\require_types.txt"; if (!File.Exists(configFile)) configFile = Enviroment.RequiretypesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.require_typesFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = args.ConfigFilesDir + @"\require_members.txt"; if (!File.Exists(configFile)) configFile = Enviroment.RequiremembersDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.require_membersFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = args.ConfigFilesDir + @"\require_fields.txt"; if (!File.Exists(configFile)) configFile = Enviroment.RequirefieldsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.require_fieldsFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = args.ConfigFilesDir + @"\forbid_types.txt"; if (!File.Exists(configFile)) configFile = Enviroment.ForbidtypesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.forbid_typesFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = args.ConfigFilesDir + @"\forbid_members.txt"; if (!File.Exists(configFile)) configFile = Enviroment.ForbidmembersDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.forbid_membersFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = args.ConfigFilesDir + @"\forbid_fields.txt"; if (!File.Exists(configFile)) configFile = Enviroment.ForbidfieldsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.forbid_fieldsFiles.Add(new FileName(new FileInfo(configFile).FullName)); } else { string configFile; configFile = Enviroment.SbytesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(sbyte), configFile)); configFile = Enviroment.BytesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(byte), configFile)); configFile = Enviroment.ShortsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(short), configFile)); configFile = Enviroment.UshortsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(ushort), configFile)); configFile = Enviroment.IntsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(int), configFile)); configFile = Enviroment.UintsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(uint), configFile)); configFile = Enviroment.LongsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(long), configFile)); configFile = Enviroment.UlongsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(ulong), configFile)); configFile = Enviroment.CharsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(char), configFile)); configFile = Enviroment.FloatsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(float), configFile)); configFile = Enviroment.DoublesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(double), configFile)); configFile = Enviroment.BoolsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(bool), configFile)); configFile = Enviroment.DecimalsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(decimal), configFile)); configFile = Enviroment.StringsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.simpleTypeValues.Add(CreateSimpleValueTypeXmlElement(typeof(string), configFile)); configFile = Enviroment.RequiretypesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.require_typesFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = Enviroment.RequiremembersDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.require_membersFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = Enviroment.RequirefieldsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.require_fieldsFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = Enviroment.ForbidtypesDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.forbid_typesFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = Enviroment.ForbidmembersDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.forbid_membersFiles.Add(new FileName(new FileInfo(configFile).FullName)); configFile = Enviroment.ForbidfieldsDefaultConfigFile; Console.WriteLine("Will use configuration file {0}.", configFile); config.forbid_fieldsFiles.Add(new FileName(new FileInfo(configFile).FullName)); } config.CheckRep(); return config; }