Пример #1
0
        public static async Task CreateAndRunLottery()
        {
            var policy = Policy.Handle <TimeoutException>().Retry(5);
            // Console.Write("Creating Lottery ... ");
            var lottery = await Lottery.CreateLottery().ConfigureAwait(false);

            Instance.ReportInfo($"Lottery {lottery.Id} was created and will overdue at {lottery.DueTime}");
            // Console.WriteLine($"Done {lottery.Id}");

            //Console.WriteLine("Start betting");
            var takeItEasy = Environment.GetEnvironmentVariable("RAVEN_SLOW_MACHINE") ?? "N";
            var t          = StartPlacingBets(lottery, takeItEasy.Contains("Y", StringComparison.InvariantCultureIgnoreCase) ? 1000 : 10);

            Instance.ReportInfo($"Start betting in lottery {lottery.Id}");
            var sleep = (int)(lottery.DueTime - DateTime.UtcNow).TotalMilliseconds;

            if (sleep > 10)
            {
                await Task.Delay(sleep).ConfigureAwait(false);
            }

            Instance.ReportInfo($"Lottery {lottery.Id} is overdue");

            //Console.Write("Finalize bets ... ");
            await policy.Execute(lottery.FinalizeBets).ConfigureAwait(false);

            //Console.WriteLine("Done");

            Instance.ReportInfo($"Rolling the dice for lottery {lottery.Id}");
            //Console.WriteLine("Rolling the Dice ... ");
            lottery.RollTheDice();
            //Console.Write("Completing the lottery ... ");

            await policy.Execute(lottery.Complete);

            Instance.ReportInfo($"Lottery {lottery.Id} is completed");
            // Console.WriteLine("Done");

            var profit = await policy.Execute(lottery.GetFinalBettingReport).ConfigureAwait(false);

            Instance.ReportSuccess($"Report for lottery {lottery.Id} was generated and winners were rewarded.");

            // Console.WriteLine(profit);

            await t.ConfigureAwait(false);
        }
Пример #2
0
        public async Task CreateAndRunLottery()
        {
            var policy = Policy.Handle <TimeoutException>().Retry(5);

            Console.Write("Creating Lottery ... ");
            var lottery = await Lottery.CreateLottery(this);

            ReportEvent(new EventInfo
            {
                Message = $"Lottery {lottery.Id} was created and will overdue at {lottery.DueTime}",
                Type    = EventInfo.EventType.Info
            });
            Console.WriteLine($"Done {lottery.Id}");

            Console.WriteLine("Start betting");
            var t = StartPlacingBets(lottery, 1000);

            ReportEvent(new EventInfo
            {
                Message = $"Start betting in lottery {lottery.Id}",
                Type    = EventInfo.EventType.Info
            });
            var sleep = (int)(lottery.DueTime - DateTime.UtcNow).TotalMilliseconds;

            if (sleep > 10)
            {
                await Task.Delay(sleep);
            }

            ReportEvent(new EventInfo
            {
                Message = $"Lottery {lottery.Id} is overdue",
                Type    = EventInfo.EventType.Info
            });

            Console.Write("Finalize bets ... ");
            await policy.Execute(lottery.FinalizeBets);

            Console.WriteLine("Done");

            ReportEvent(new EventInfo
            {
                Message = $"Rolling the dice for lottery {lottery.Id}",
                Type    = EventInfo.EventType.Info
            });
            Console.WriteLine("Rolling the Dice ... ");
            lottery.RollTheDice();
            Console.Write("Completing the lottery ... ");

            await policy.Execute(lottery.Complete);

            ReportEvent(new EventInfo
            {
                Message = $"Lottery {lottery.Id} is completed",
                Type    = EventInfo.EventType.Info
            });
            Console.WriteLine("Done");

            var profit = await policy.Execute(lottery.GetFinalBettingReport);

            ReportEvent(new EventInfo
            {
                Message = $"Report for lottery {lottery.Id} was generated and winners were rewarded.",
                Type    = EventInfo.EventType.TestSuccess
            });
            Console.WriteLine(profit);

            await t;
        }