示例#1
0
        public static async Task CreateAdversaryAsync(GameServiceClient client)
        {
            var adversary = new Adversary();

            adversary.Name          = ConsoleUtility.GetUserInput("Adversary Name: ");
            adversary.GamePackageId = await GamePackageUtility.SelectGamePackageId(client);

            adversary.AbilityIds.AddRange(await AbilityUtility.SelectAbilityIds(client));

            if (!ConsoleUtility.ShouldContinue($"Creating Adversary: '{adversary.Name}', in gamePackage '{adversary.GamePackageId}' with abilities [{adversary.AbilityIds.Select(x => x.ToString()).Join(", ")}]"))
            {
                await CreateAdversaryAsync(client);

                return;
            }

            var createRequest = new CreateAdversariesRequest();

            createRequest.Adversaries.Add(adversary);
            var createReply = await client.CreateAdversariesAsync(createRequest);

            if (createReply.Status.Code != 200)
            {
                ConsoleUtility.WriteLine($"Failed to create adversary: {createReply.Status.Message}");
            }
            else
            {
                ConsoleUtility.WriteLine($"Adversary '{createReply.Adversaries.First().Name}' was created with Id '{createReply.Adversaries.First().Id}'");
            }
        }
示例#2
0
        public Game(
            IBoardRepository boardRepository,
            IInvaderCardSender invaderCardSender,
            IInvaderDeckFactory invaderDeckFactory,
            Adversary adversary)
        {
            _boardRepository    = boardRepository;
            _invaderCardSender  = invaderCardSender;
            _invaderDeckFactory = invaderDeckFactory;
            _adversary          = adversary;

            _invaderDeckOrder = (_adversary as IAffectsInvaderDeckOrder)?.InvaderDeckOrder ?? "111222233333";
        }
示例#3
0
 protected internal virtual void PageCachePostConstruct(PageCacheConfig overriddenConfig)
 {
     if (SelectConfig(BaseConfig.inconsistentReads, overriddenConfig.InconsistentReads, true))
     {
         AtomicBoolean controller = SelectConfig(BaseConfig.nextReadIsInconsistent, overriddenConfig.NextReadIsInconsistent, null);
         Adversary     adversary  = controller != null ? new AtomicBooleanInconsistentReadAdversary(controller) : new RandomInconsistentReadAdversary();
         PageCache = new AdversarialPageCache(PageCache, adversary);
     }
     if (SelectConfig(BaseConfig.accessChecks, overriddenConfig.AccessChecks, false))
     {
         PageCache = new AccessCheckingPageCache(PageCache);
     }
 }
示例#4
0
        public void IncRowVersion_HappyDays_SendsCorrectSqlToProvider()
        {
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            Adversary.ForTable("Person").IdentifiedBy("IdPerson", 1).IncRowVersion("Version");

            Assert.AreEqual("UPDATE Person SET Version = Version + 1 WHERE IdPerson = 1", provider.GetExecutedQuery(0));
        }
示例#5
0
        private static async ValueTask <IReadOnlyList <Adversary> > CreateAdversaries(GameServiceClient client, IReadOnlyList <GamePackage> packages, IReadOnlyList <Ability> abilities)
        {
            ConsoleUtility.WriteLine("Creating adversaries");
            List <Adversary> result = (await AdversaryUtility.GetAdversariesAsync(client, null)).ToList();

            if (result.Any())
            {
                return(result);
            }

            foreach (var file in Directory.EnumerateFiles(@"C:\Users\Ryan\SkyDrive\code\LegendaryGameStarter\LegendaryGameModel2\GameSets", s_fileMask))
            {
                var doc = XDocument.Load(file);

                var name = doc.Element("Set").Attribute("Name").Value;
                var activeGamePackage = packages.FirstOrDefault(x => x.Name == name);
                if (activeGamePackage == null)
                {
                    ConsoleUtility.WriteLine($"Failed to find matching game package for {file}");
                }

                foreach (var adversaryElement in doc.Element("Set").Element("Cards").Elements("Card").Where(x => x?.Attribute("Area").Value == "Adversary"))
                {
                    var request = new CreateAdversariesRequest();
                    request.CreateOptions.Add(CreateOptions.ErrorOnDuplicates);

                    var adversary = new Adversary();
                    adversary.Name          = adversaryElement.Attribute("Name").Value;
                    adversary.GamePackageId = activeGamePackage.Id;
                    adversary.AbilityIds.AddRange(GetMatchingItems(adversaryElement.Attribute("Abilities")?.Value, name => abilities.First(x => x.Name == name)).Select(x => x.Id));

                    request.Adversaries.Add(adversary);

                    var reply = await client.CreateAdversariesAsync(request);

                    if (reply.Status.Code != 200)
                    {
                        ConsoleUtility.WriteLine($"Failed to create '{adversary.Name}': {reply.Status.Message}");
                    }

                    result.AddRange(reply.Adversaries);
                }

                ConsoleUtility.WriteLine($"Completed: {name}");
            }

            return(result);
        }
示例#6
0
        public void IncRowVersion_HappyDays_IncreasesVersionInDatabase()
        {
            int id         = NextId();
            int rowVersion = 1;

            DataBoy.ForTable("Person")
            .Row("IdPerson", id)
            .D("FirstName", "Petter")
            .D("LastName", "Hansen")
            .D("Version", rowVersion)
            .Commit();

            Adversary.ForTable("Person").IdentifiedBy("IdPerson", id).IncRowVersion("Version");

            DbAssert.ForTable("Person").WithColumnValuePair("IdPerson", id).AreEqual("Version", rowVersion + 1);
        }
示例#7
0
        private static void InitializeAdversary(IReadOnlyList <Adversary> adversaries, int selection)
        {
            _adversary = adversaries[selection - 1];
            _logger.Information($"Selected adversary: {_adversary.DisplayName}");
            _logger.Warning("Select level (1-6):");
            var line = Console.ReadLine();

            if (int.TryParse(line, out var level) && level >= 1 && level <= 6)
            {
                _adversary.Initialize(level);
            }
            else
            {
                _adversary.Initialize(1);
            }
            _adversary.ShowMessageRequested += p => _logger.Warning(p);
        }
示例#8
0
 internal SensibleAdversarialFileSystemAbstraction(Adversary adversary, FileSystemAbstraction @delegate) : base(adversary, @delegate)
 {
     this.Adversary = adversary;
     this.Delegate  = @delegate;
 }
示例#9
0
 public AdversarialOutputStreamAnonymousInnerClass(SensibleAdversarialFileSystemAbstraction outerInstance, Stream outputStream, Adversary adversary) : base(outputStream, adversary)
 {
     this.outerInstance = outerInstance;
     this._outputStream = outputStream;
 }
示例#10
0
 public AdversarialReader(Reader reader, Adversary adversary)
 {
     this._reader    = reader;
     this._adversary = adversary;
 }
示例#11
0
 public AdversarialFileWatcher(FileWatcher fileWatcher, Adversary adversary)
 {
     this._fileWatcher = fileWatcher;
     this._adversary   = adversary;
 }
示例#12
0
 private AdversarialFileChannel(StoreFileChannel channel, Adversary adversary) : base(channel)
 {
     this.@delegate  = channel;
     this._adversary = adversary;
 }
示例#13
0
 public AdversarialPageCache(PageCache @delegate, Adversary adversary)
 {
     this.@delegate  = Objects.requireNonNull(@delegate);
     this._adversary = Objects.requireNonNull(adversary);
 }
示例#14
0
 public AdversarialWriter(Writer writer, Adversary adversary)
 {
     this._writer    = writer;
     this._adversary = adversary;
 }
示例#15
0
 public static StoreFileChannel Wrap(StoreFileChannel channel, Adversary adversary)
 {
     return(new AdversarialFileChannel(channel, adversary));
 }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @SafeVarargs public StackTraceElementGuardedAdversary(Adversary delegate, System.Predicate<StackTraceElement>... checks)
        public StackTraceElementGuardedAdversary(Adversary @delegate, params System.Predicate <StackTraceElement>[] checks)
        {
            this.@delegate = @delegate;
            this._checks   = checks;
            _enabled       = true;
        }
示例#17
0
 public AdversarialInputStream(Stream inputStream, Adversary adversary)
 {
     this._inputStream = inputStream;
     this._adversary   = adversary;
 }
示例#18
0
 public ClassGuardedAdversary(Adversary @delegate, params Type[] victimClassSet) : base(@delegate, new PredicateAnonymousInnerClass(victimClassSet))
 {
 }
示例#19
0
 public AdversarialOutputStream(Stream outputStream, Adversary adversary)
 {
     this._outputStream = outputStream;
     this._adversary    = adversary;
 }
示例#20
0
 public MethodGuardedAdversary(Adversary @delegate, params System.Reflection.MethodInfo[] victimMethodSet) : base(@delegate, new PredicateAnonymousInnerClass(victimMethodSet))
 {
 }
 internal AdversarialReadPageCursor(PageCursor @delegate, Adversary adversary) : base(@delegate)
 {
     this._state = new State(Objects.requireNonNull(adversary));
 }
 internal State(Adversary adversary)
 {
     this.Adversary          = adversary;
     InconsistentReadHistory = new List <object>(32);
 }
示例#23
0
        /// <summary>
        /// Specifies victims as arbitrary <seealso cref="StackTraceElement"/> <seealso cref="Predicate"/>.
        /// </summary>
        /// <param name="delegate"> <seealso cref="Adversary"/> to delegate calls to. </param>
        /// <param name="victims"> arbitrary <seealso cref="Predicate"/> for <seealso cref="StackTraceElement"/> in the executing
        /// thread and if any of the elements in the current stack trace matches then failure is injected. </param>
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @SafeVarargs public ClassGuardedAdversary(Adversary delegate, System.Predicate<StackTraceElement>... victims)
        public ClassGuardedAdversary(Adversary @delegate, params System.Predicate <StackTraceElement>[] victims) : base(@delegate, victims)
        {
        }
示例#24
0
 internal AdversarialWritePageCursor(PageCursor @delegate, Adversary adversary) : base(@delegate)
 {
     this._adversary = Objects.requireNonNull(adversary);
 }