Пример #1
0
        static void Main()
        {
            // Make sure the emulators are started
            Console.WriteLine("Please wait: making sure the Storage emulator is started. This is typically very quick.");
            AzureEmulatorManager.EnsureStorageEmulatorIsStarted();

            //Console.WriteLine("Please wait: making sure the DocumentDB emulator is started. This can take several seconds.");
            //AzureEmulatorManager.EnsureDocumentDbEmulatorIsStarted();

            var cancellationToken = CancellationToken.None;
            var storageAccount    = CloudStorageAccount.DevelopmentStorageAccount;
            var containerName     = "mycontainer";
            var queueName         = "myqueue";

            // Run the integration tests (they are dependant on the Azure Storage emulator)
            Console.WriteLine("Running blob extension methods tests...");
            RunCloudBlobExtensionsTests(storageAccount, containerName, cancellationToken).Wait();

            Console.WriteLine("Running blob manager tests...");
            RunBlobManagerTests(storageAccount, containerName, cancellationToken).Wait();

            Console.WriteLine("Running queue manager tests...");
            RunQueueManagerTests(storageAccount, queueName, cancellationToken).Wait();

            // Flush the console key buffer
            while (Console.KeyAvailable)
            {
                Console.ReadKey(true);
            }

            // Wait for user to press a key
            Console.WriteLine("\r\nPress any key to exit...");
            Console.ReadKey();
        }
Пример #2
0
        static void Main()
        {
            // Ensure the storage emulator is running
            AzureEmulatorManager.EnsureStorageEmulatorIsStarted();

            // If you want to see tracing from the Picton libary, change the LogLevel to 'Trace'
            var minLogLevel = Logging.LogLevel.Debug;

            // Configure logging to the console
            var logProvider = new ColoredConsoleLogProvider(minLogLevel);
            var logger      = logProvider.GetLogger("Main");

            LogProvider.SetCurrentLogProvider(logProvider);

            // Ensure the Console is tall enough
            Console.WindowHeight = Math.Min(60, Console.LargestWindowHeight);

            // Configure where metrics are published to
            var datadogApiKey = Environment.GetEnvironmentVariable("DATADOG_APIKEY");
            var metrics       = new MetricsBuilder()
                                .Report.OverHttp(o =>
            {
                o.HttpSettings.RequestUri = new Uri($"https://app.datadoghq.com/api/v1/series?api_key={datadogApiKey}");
                o.MetricsOutputFormatter  = new DatadogFormatter(new DatadogFormatterOptions {
                    Hostname = Environment.MachineName
                });
                o.FlushInterval = TimeSpan.FromSeconds(2);
            })
                                .Build();

            // Send metrics to Datadog
            var sendMetricsJob = new AppMetricsTaskScheduler(
                TimeSpan.FromSeconds(2),
                async() =>
            {
                await Task.WhenAll(metrics.ReportRunner.RunAllAsync());
            });

            sendMetricsJob.Start();

            // Setup the message queue in Azure storage emulator
            var storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
            var queueName      = "myqueue";

            logger(Logging.LogLevel.Info, () => "Begin integration tests...");

            var numberOfMessages = 25;

            logger(Logging.LogLevel.Info, () => $"Adding {numberOfMessages} string messages to the queue...");
            AddStringMessagesToQueue(numberOfMessages, queueName, storageAccount, logProvider).Wait();
            logger(Logging.LogLevel.Info, () => "Processing the messages in the queue...");
            ProcessSimpleMessages(queueName, storageAccount, logProvider, metrics);

            logger(Logging.LogLevel.Info, () => $"Adding {numberOfMessages} simple messages to the queue...");
            AddSimpleMessagesToQueue(numberOfMessages, queueName, storageAccount, logProvider).Wait();
            logger(Logging.LogLevel.Info, () => "Processing the messages in the queue...");
            ProcessSimpleMessages(queueName, storageAccount, logProvider, metrics);

            logger(Logging.LogLevel.Info, () => $"Adding {numberOfMessages} messages with handlers to the queue...");
            AddMessagesWithHandlerToQueue(numberOfMessages, queueName, storageAccount, logProvider).Wait();
            logger(Logging.LogLevel.Info, () => "Processing the messages in the queue...");
            ProcessMessagesWithHandlers(queueName, storageAccount, logProvider, metrics);

            // Flush the console key buffer
            while (Console.KeyAvailable)
            {
                Console.ReadKey(true);
            }

            // Wait for user to press a key
            logger(Logging.LogLevel.Info, () => "Press any key to exit...");
            Console.ReadKey();
        }