コード例 #1
0
ファイル: STOClient.cs プロジェクト: TzarIvan/ratel
            public STORunner(int numInstances, int systemId, int start, int?end, bool noKill)
            {
                this.numInstances = numInstances;
                this.systemId     = systemId;
                this.start        = start;
                this.noKill       = noKill;
                details           = SystemDetailsTable.DETAILS.details(systemId);
                this.end          = end.HasValue ? end.Value : details.lastRunNumber();
                writer            = new STOMetricsWriter(details, false);
                STO.populateSymbolsPortfolios(details, out symbols, out portfolios);
                runner = new EC2Runner(systemId + "-" + Dates.yyyyMmDdHhMmSsNoSeparator(Dates.now()));
                LogC.info("checking for completed runs");
                existingRuns = completedRuns();
                var allRunsComplete = true;

                for (var i = this.start; i <= this.end; i++)
                {
                    if (!existingRuns.Contains(i))
                    {
                        allRunsComplete = false;
                        break;
                    }
                }
                if (allRunsComplete)
                {
                    this.numInstances = 0;
                }
                unhandledExceptionProcessor = ((sender, args) => killRun(LogC.errMessage("unhandled exception", (Exception)args.ExceptionObject)));
            }
コード例 #2
0
ファイル: STOServer.cs プロジェクト: TzarIvan/ratel
        public static void Main(string[] args)
        {
            Directory.CreateDirectory(@"E:\logs");
            LogC.setOut("STOServer", @"E:\logs\STOServer." + processId() + ".log", true);
            LogC.setErr(@"E:\logs\STOServer." + processId() + ".error.log");
            AppDomain.CurrentDomain.UnhandledException += handleUncaughtExceptions;
            S3Cache.setDefaultSqsDbMode(true);
            if (!(hostname().StartsWith("NY") || hostname().StartsWith("LN")))
            {
                QHttpClient.turnOffProxy();
            }
            var runner = EC2Runner.fromUserData();

            S3Cache.setS3Cache(runner.s3Cache());
            var lastRunTime = 120;

            while (trueDat())
            {
                info("lastRunTime: " + lastRunTime);
                STORequest request = null;
                try {
                    lastRunTime = processNextMessage(runner, lastRunTime, out request);
                } catch (Exception e) {
                    LogC.err("failed " + request, e);
                    LogC.info("failed " + request, e);
                    continue;
                }
                info("finished " + request);
            }
        }
コード例 #3
0
 public static void Main(string[] args) {
     var userData = EC2Runner.userData();
     var q = new SqsQ((string) userData.get("requestQueue"));
     while(trueDat()) {
         var messages = q.messagesBlocking();
         each<Message>(messages, message => {
             var request = (TestEC2.TestRequest) message.@object();
             request.sendResponse();
             message.delete();
         });
     }
 }
コード例 #4
0
ファイル: Bootstrap.cs プロジェクト: TzarIvan/ratel
        protected override void OnStart(string[] args)
        {
            var timeSync = Process.Start(@"C:\WINDOWS\system32\w32tm.exe", "/resync");

            if (timeSync == null)
            {
                throw Bomb.toss("unable to start time sync process");
            }
            timeSync.WaitForExit();
            var userData = EC2Runner.userData();
            var nProcs   = int.Parse((string)userData.get("numProcs"));
            var command  = (string)userData.get("command");

            new EC2Runner((string)userData.get("requestQueue")).downloadJarsAndQRunFromS3(new QDirectory("E:/svn"));
            Environment.SetEnvironmentVariable("MAIN", @"E:\svn");
            O.zeroTo(nProcs, i => startProcess(command));
        }
コード例 #5
0
ファイル: STOServer.cs プロジェクト: TzarIvan/ratel
        static int processNextMessage(EC2Runner runner, int lastRunTime, out STORequest request)
        {
            var message = runner.nextMessage(Math.Min(7200, 2 * lastRunTime));
            var start   = now();

            request = new STORequest(message.@object());
            info("received " + request);
            if (symbols == null || barData == null)
            {
                cacheSymbolData(request);
            }
            else
            {
                request.requireMatch(symbols);
            }
            var simulator = new Simulator.Simulator(new SystemArguments(symbols, request.portfolios, request.parameters), barData, "QUEDGE");

            simulator.processBars();
            simulator.shutdown();
            lastRunTime = Math.Max((int)now().Subtract(start).TotalSeconds, 10);
            runner.responseQueue().send(request.response(EC2Runner.instanceId(), start, now(), processId()));
            message.delete();
            return(lastRunTime);
        }