Example #1
0
        private static int Main(string[] args)
        {
            Console.WriteLine();

            string settingsPath;

            if (args.Length != 1 || !File.Exists(settingsPath = args[0]))
            {
                Console.WriteLine("usage: sprocHammer <settingsFilePath>");
                Console.WriteLine();
                Console.WriteLine("Settings format:");
                Console.WriteLine(new TestRunSettings());
                Console.WriteLine();
                return(1);
            }

            // load settings
            var settingsJson = File.ReadAllText(settingsPath);
            var settings     = TestRunSettings.DeserializeJson(settingsJson);

            if (!settings.Validate(Console.Out))
            {
                return(1);
            }

            // run name
            if (string.IsNullOrEmpty(settings.RunName))
            {
                settings.RunName = Path.GetFileNameWithoutExtension(settingsPath);
            }

            // output file
            if (string.IsNullOrEmpty(settings.OutputPath))
            {
                settings.OutputPath = string.Format("{0}_{1}.log",
                                                    DateTime.Now.ToString("s").Replace(":", "-"), settings.RunName);
            }
            Console.WriteLine("Writing output to {0}", Path.GetFullPath(settings.OutputPath));

            // write settings
            using (var output = new StreamWriter(settings.OutputPath, false))
            {
                output.WriteLine("Run started {0}", DateTime.Now);
                output.WriteLine();
                output.WriteLine("Settings: ");
                output.WriteLine(settings);
                output.WriteLine();
            }

            // run setup proc
            if (settings.SetupProcName != null)
            {
                using (var conn = OpenConnection())
                {
                    Console.WriteLine("Running setup proc {0}", settings.SetupProcName);
                    Console.WriteLine();
                    conn.ExecuteNonQuery(settings.SetupProcName);
                }
            }

            // run test
            var runner = new TestRunner(settings);

            Console.WriteLine();
            Console.WriteLine("Running test {0} with {1} inserts", settings.RunName, settings.Inserts);
            runner.Run();

            // write fragmentation summary
            using (var output = new StreamWriter(settings.OutputPath, true))
                using (var conn = OpenConnection())
                {
                    output.WriteLine();
                    output.WriteLine("Fragmentation:");
                    var table = conn.ExecuteTable("GetFragmentation");
                    table.Dump(output);
                    Console.WriteLine();
                }

            Console.WriteLine("Run complete");
            Console.WriteLine();
            return(0);
        }
Example #2
0
 public TestRunner(TestRunSettings settings)
 {
     _settings = settings;
 }