Ejemplo n.º 1
0
        public void Test_DeserializeHandWrittenWithSchema()
        {
            string testResourcesPath = UTHelper.GetTestResourceDir(Assembly.GetExecutingAssembly());

            SessionSuiteCfg ssc = XmlSerializerExt.Deserialize <SessionSuiteCfg>(
                Path.Combine(testResourcesPath, "SessionSuiteCfg_Test.xml"));

            Assert.IsNotNull(ssc);
            Assert.AreEqual("Test Suite", ssc.Name);
            Assert.AreEqual(2, ssc.LocalPlayers.Length);
            Assert.AreEqual("RaiserBot1", ssc.LocalPlayers[0].Name);
            Assert.AreEqual("players.dll", ssc.LocalPlayers[0].Assembly.RawValue);
            Assert.AreEqual("players.RaiserBot", ssc.LocalPlayers[0].Type.RawValue);
            Assert.AreEqual(1, ssc.LocalPlayers[0].CreationParameters.Count);
            Assert.AreEqual("Some creation configuration", ssc.LocalPlayers[0].CreationParameters.Get("p1"));
            Assert.AreEqual(2, ssc.Sessions.Length);
            // Session 0
            Assert.AreEqual("Ring Game", ssc.Sessions[0].Name);
            Assert.AreEqual(SessionKind.RingGame, ssc.Sessions[0].Kind);
            Assert.AreEqual(1000, ssc.Sessions[0].GamesCount);
            Assert.AreEqual(36, ssc.Sessions[0].RngSeed);
            Assert.AreEqual(2, ssc.Sessions[0].Players.Length);
            Assert.AreEqual("RaiserBot1", ssc.Sessions[0].Players[0].Name);
            Assert.AreEqual(2, ssc.Sessions[0].Players[0].SessionParameters.Count);
            Assert.AreEqual("v1", ssc.Sessions[0].Players[0].SessionParameters.Get("p1"));
            Assert.AreEqual("v2", ssc.Sessions[0].Players[0].SessionParameters.Get("p2"));
            Assert.AreEqual("GameDef1", ssc.Sessions[0].GameDefinition.Name);

            // Session 1
            Assert.AreEqual(0, ssc.Sessions[1].RngSeed);
            Assert.AreEqual("GameDef2", ssc.Sessions[1].GameDefinition.Name);
        }
Ejemplo n.º 2
0
        static int Main(string[] args)
        {
            Thread runnerThread = null;

            try
            {
                if (!Parser.ParseArgumentsWithUsage(args, _cmdLine))
                {
                    return(-1);
                }
                if (_cmdLine.DebuggerLaunch)
                {
                    Debugger.Launch();
                }
                SetUpLog4Net();
                log.Info("Server started.");
                Debug.WriteLine("Server started");

                _cmdLineString = string.Join(" ", args);


                _sessionResult.Name = _SESSION_RESULT_NAME;
                _totalResult.Name   = "Total result in all sessions";

                // First create all the configurations to make sure everything is ok before
                // the games start.
                _suiteCfgs = new SessionSuiteCfg[_cmdLine.SessionSuites.Length];
                for (int ss = 0; ss < _cmdLine.SessionSuites.Length; ++ss)
                {
                    string sessionSuiteFile = _cmdLine.SessionSuites[ss];
                    _suiteCfgs[ss] = XmlSerializerExt.Deserialize <SessionSuiteCfg>(sessionSuiteFile);

                    foreach (SessionCfg sc in _suiteCfgs[ss].Sessions)
                    {
                        _sessionsTotal += sc.RepeatCount;
                        _gamesTotal    += sc.GetEstimatedGamesCount() * sc.RepeatCount;
                    }
                }

                runnerThread = new Thread(Run);
                _startTime   = DateTime.Now;
                runnerThread.Start();

                int cnt = 0;
                for (; ;)
                {
                    if (!runnerThread.IsAlive)
                    {
                        break;
                    }
                    Thread.Sleep(100);
                    if (_cmdLine.Menu)
                    {
                        ProcessMenu();
                        cnt++;
                        if (!_quit && _quitCounter < _quitPressThreshold && (cnt % 10) == 0)
                        {
                            _quitCounter++;
                        }
                    }
                }

                return(_exitCode);
            }
            catch (Exception e)
            {
                log.Fatal("Unhandled exception", e);
                Console.Error.Write(e.ToString());
                if (Debugger.IsAttached)
                {
                    Debugger.Break();
                }
                if (runnerThread != null && runnerThread.IsAlive)
                {
                    runnerThread.Abort();
                }
            }
            return(-1);
        }
Ejemplo n.º 3
0
        public void Test_XmlSerialization()
        {
            SessionSuiteCfg ssc1 = new SessionSuiteCfg();

            string testResDir = UTHelper.GetTestResourceDir(Assembly.GetExecutingAssembly());

            ssc1.Name         = "Suite1";
            ssc1.LocalPlayers = new LocalPlayerCfg[2]
            {
                new LocalPlayerCfg
                {
                    Assembly           = "Players.dll",
                    Type               = "SuperBot",
                    Name               = "SuperBot1",
                    CreationParameters = new string[] { "Param1", "1" }
                },
                new LocalPlayerCfg
                {
                    Assembly           = "Players.dll",
                    Type               = "PuperBot",
                    Name               = "PuperBot1",
                    CreationParameters = new Dictionary <string, string> {
                        { "Param1", "2" }
                    }
                }
            };

            ssc1.Sessions = new SessionCfg[2]
            {
                new SessionCfg("Ring Game", SessionKind.RingGame, testResDir + "SessionSuiteCfg_Test.Gamedef1.xml"),
                new SessionCfg("Ring Game With Seat Permutation",
                               SessionKind.RingGameWithSeatPermutations, testResDir + "SessionSuiteCfg_Test.Gamedef1.xml")
            };

            ssc1.Sessions[0].GamesCount = 1000;
            ssc1.Sessions[0].Players    = new PlayerSessionCfg[]
            {
                new PlayerSessionCfg {
                    Name = "SuperBot1", SessionParameters = new Dictionary <string, string> {
                        { "p1", "v1" }
                    }
                },
                new PlayerSessionCfg {
                    Name = "PuperBot1", SessionParameters = new Dictionary <string, string> {
                        { "p1", "v1" }
                    }
                }
            };

            ssc1.Sessions[1].GamesCount = 100;
            ssc1.Sessions[1].Players    = new PlayerSessionCfg[]
            {
                new PlayerSessionCfg {
                    Name = "SuperBot1", SessionParameters = new Dictionary <string, string> {
                        { "p1", "v1" }
                    }
                },
                new PlayerSessionCfg {
                    Name = "PuperBot1", SessionParameters = new Dictionary <string, string> {
                        { "p1", "v1" }
                    }
                }
            };



            StringBuilder sb = new StringBuilder();

            using (TextWriter tw = new StringWriter(sb))
            {
                ssc1.XmlSerialize(tw);
            }

            Console.WriteLine(sb.ToString());

            SessionSuiteCfg rc2;

            using (TextReader textReader = new StringReader(sb.ToString()))
            {
                XmlSerializerExt.Deserialize(out rc2, textReader);
            }

            Assert.IsNotNull(rc2);
        }