コード例 #1
0
        public virtual bool DeleteAllTracks(IJobMonitor jobMonitor)
        {
            bool result = false;

            try
            {
                if (this.Open())
                {
                    //IList<GlobalsatPacket.TrackFileHeader> headers = ((GlobalsatProtocol2)device).ReadTrackHeaders(jobMonitor);
                    //List<GlobalsatPacket.TrackFileHeader> fetch = new List<GlobalsatPacket.TrackFileHeader>();
                    GlobalsatPacket  getDeleteAllTracks = PacketFactory.GetDeleteAllTracks();
                    GlobalsatPacket2 response           = (GlobalsatPacket2)SendPacket(getDeleteAllTracks);
                    result = true;
                }
            }
            catch (Exception e)
            {
                jobMonitor.ErrorText = Properties.Resources.Device_OpenDevice_Error + e;
                //throw new Exception(Properties.Resources.Device_OpenDevice_Error + e);
            }
            finally
            {
                this.Close();
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
            }
            return(result);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //Just one bsm
        private void Experiment6()
        {
            if (finished == 0)
            {
                DeleteFiles();
            }
            started = DateTime.Now;
            LogWrite(started.ToLongTimeString() + " Starting experiment 6 mode " + mode);

            ParasiteLoading("b14.b14-113");
            //ParasiteLoading("b14.b14-22");
            return;

            var wfDescriptionReader = new DescriptionReader("bsm.wf");

            _api.UploadFiles(wfDescriptionReader.InputFiles);

            _api.Script             = wfDescriptionReader.Script;
            jobMonitor              = _api.CreateMonitor();
            jobMonitor.UpdatePeriod = 1000 * 5;
            jobMonitor.Active      += JobMonitorOnActive;
            jobMonitor.Finished    += (sender, jobDecriptionEventArgs) =>
            {
                var monitor = (sender as JobMonitor);
                finished++;
                Statuses[monitor.JobId.ToString()] = "Finished";
                LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " " + Statuses[monitor.JobId.ToString()] + " after " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Minutes + " min " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Seconds + " sec ");
                //CopyRows();
            };
            LogWrite(_api.Script);
            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //cnm DefaultHeuristics
        private void Experiment4(int mode)
        {
            if (finished == 0)
            {
                DeleteFiles();
            }

            started = DateTime.Now;
            LogWrite(started.ToLongTimeString() + " Starting experiment 4 mode " + mode);

            SwitchParameter("DefaultHeuristics", (mode == 2 ? "MinMin" : "Stub"));

            var wfDescriptionReader = new DescriptionReader("cnm.wf");

            _api.UploadFiles(wfDescriptionReader.InputFiles);

            _api.Script = wfDescriptionReader.Script;
            LogWrite(_api.Script);
            jobMonitor = _api.CreateMonitor();
            jobMonitor.UpdatePeriod = 1000 * 5;
            jobMonitor.Active      += JobMonitorOnActive;
            jobMonitor.Finished    += (sender, jobDecriptionEventArgs) =>
            {
                JobMonitorStandardFinished(sender, jobDecriptionEventArgs);
                CopyRows();
                if (mode == 2)
                {
                    Experiment4(mode);
                }
            };

            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " state: pushed");
        }
コード例 #4
0
        public virtual bool DeleteAllWaypoints(IJobMonitor jobMonitor)
        {
            bool result = false;

            if (this.Open())
            {
                try
                {
                    GlobalsatPacket packet   = PacketFactory.DeleteAllWaypoints();
                    GlobalsatPacket response = (GlobalsatPacket)this.SendPacket(packet);
                    result = true;
                }
                catch (Exception e)
                {
                    jobMonitor.ErrorText = Properties.Resources.Device_DeleteWaypoints_Error + e;
                }
                finally
                {
                    this.Close();
                }
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
            }
            return(result);
        }
コード例 #5
0
        public virtual int SendWaypoints(IList <GlobalsatWaypoint> waypoints, IJobMonitor jobMonitor)
        {
            int nrSentWaypoints = 0;

            if (this.Open())
            {
                try
                {
                    GlobalsatPacket packet   = PacketFactory.SendWaypoints(this.FitnessDevice.configInfo.MaxNrWaypoints, waypoints);
                    GlobalsatPacket response = (GlobalsatPacket)this.SendPacket(packet);

                    // km500 no out of memory- waypoint overwritten
                    nrSentWaypoints = response.ResponseSendWaypoints();
                    if (nrSentWaypoints < waypoints.Count)
                    {
                        jobMonitor.ErrorText = string.Format("Could only send {0} out of {1} waypoints (Capacity {2}).",
                                                             nrSentWaypoints, waypoints.Count, this.FitnessDevice.configInfo.MaxNrWaypoints);
                    }
                }
                catch (Exception e)
                {
                    jobMonitor.ErrorText = Properties.Resources.Device_SendWaypoints_Error + e;
                }
                finally
                {
                    this.Close();
                }
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
                nrSentWaypoints = 0;
            }
            return(nrSentWaypoints);
        }
コード例 #6
0
        public virtual IList <GlobalsatWaypoint> GetWaypoints(IJobMonitor jobMonitor)
        {
            IList <GlobalsatWaypoint> waypoints = null;

            if (this.Open())
            {
                try
                {
                    GlobalsatPacket packet   = PacketFactory.GetWaypoints();
                    GlobalsatPacket response = (GlobalsatPacket)this.SendPacket(packet);
                    waypoints = response.ResponseGetWaypoints();
                }
                catch (Exception e)
                {
                    jobMonitor.ErrorText = Properties.Resources.Device_GetWaypoints_Error + e;
                }
                finally
                {
                    this.Close();
                }
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
                waypoints = null;
            }
            return(waypoints);
        }
コード例 #7
0
        public TimeSpan GetRemainingTime(IJobMonitor jobMonitor)
        {
            TimeSpan res = TimeSpan.MinValue;

            try
            {
                if (this.Open())
                {
                    IList <GlobalsatPacket.TrackFileHeader> headers    = this.ReadTrackHeaders(jobMonitor);
                    GlobalsatSystemConfiguration2           systemInfo = GetGlobalsatSystemConfiguration2();
                    res = this.RemainingTime(headers, systemInfo);
                }
            }
            catch (Exception e)
            {
                jobMonitor.ErrorText = Properties.Resources.Device_OpenDevice_Error + e;
            }
            finally
            {
                this.Close();
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
            }
            return(res);
        }
コード例 #8
0
 public ImportJob(GlobalsatProtocol device, string sourceDescription, IJobMonitor monitor, IImportResults importResults)
 {
     this.device                  = device;
     this.sourceDescription       = sourceDescription.Replace(Environment.NewLine, " ");
     this.monitor                 = monitor;
     this.monitor.PercentComplete = 0;
     this.importResults           = importResults;
 }
コード例 #9
0
        public virtual IList <GlobalsatPacket.TrackFileHeader> ReadTrackHeaders(IJobMonitor monitor)
        {
            //monitor.StatusText = CommonResources.Text.Devices.ImportJob_Status_OpeningDevice;

            GlobalsatPacket  getHeadersPacket = PacketFactory.GetTrackFileHeaders();
            GlobalsatPacket2 response         = (GlobalsatPacket2)SendPacket(getHeadersPacket);

            return(response.UnpackTrackHeaders());
        }
コード例 #10
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //virtual starting
        private void Experiment2()
        {
            vmlauncher = new VMLauncher();
            vmlauncher.StopAll(20);

            steps     = 2;
            workflows = 25;
            int sleep = 30;
            int delay = 140;

            var testpDescriptionReader = new DescriptionReader("testp.wf");

            int i = 0;

            timer = new Timer();

            timer.Elapsed += new ElapsedEventHandler((s, e) =>
            {
                if (i >= workflows)
                {
                    timer.Stop();
                    LogWrite("Pusher stopped");
                }
                else
                {
                    StringBuilder sb = new StringBuilder();
                    sb.Append(testpDescriptionReader.Script);
                    if (i > 1)
                    {
                        steps = 1;
                    }
                    for (int step = 0; step < steps; step++)
                    {
                        sb.Append("\n step s" + step + " runs testp (\n in0=" + step + ",\n in1=" + sleep + ",\n timeToWait=" + (delay).ToString() + "\n)\n");
                    }

                    _api.Script = sb.ToString();

                    jobMonitor = _api.CreateMonitor();
                    jobMonitor.UpdatePeriod = 1000 * 50;
                    jobMonitor.Finished    += JobMonitorOnFinishedExp2;
                    jobMonitor.Active      += JobMonitorOnActive;
                    LogWrite(DateTime.Now.ToLongTimeString() + " " + (i + 1) + "/" + workflows + " testp pushed; " + steps + " steps");
                    jobMonitor.Run();
                    timer.Interval = sleep * 1000;
                }
                i++;
            });
            LogWrite("Sending jobs to " + ConfigurationManager.AppSettings["ServerName"] + ". Press any key to stop monitoring...");
            timer.Interval = 100;
            timer.Start();

            vmlauncher.Run();

            Console.ReadLine();
        }
コード例 #11
0
        public bool Import(string configurationInfo, IJobMonitor monitor, IImportResults importResults)
        {
            bool result = false;

            this.configInfo.Parse(configurationInfo);
            bool generic = this is FitnessDevice_GsSport;

            //import for specific device - Importjob must be implemented
            monitor.PercentComplete = 0;

            try
            {
                if (generic)
                {
                    //Always retry to reimport (other use create new device at each use, but device kept at import)
                    FitnessDevice_GsSport dev = (this as FitnessDevice_GsSport);
                    dev.DetectionAttempted = false;
                }
                else
                {
                    //Only change status message for non generic
                    monitor.StatusText = CommonResources.Text.Devices.ImportJob_Status_OpeningDevice;
                }

                if (this.Device() != null)
                {
                    string cfgDesc = ConfiguredDescription(configurationInfo);
                    if (generic)
                    {
                        cfgDesc += " - " + this.Device().devId;
                    }
                    ImportJob job = this.Device().ImportJob(cfgDesc, monitor, importResults);
                    if (job == null)
                    {
                        string devId = this.Device().devId;
                        if (string.IsNullOrEmpty(devId))
                        {
                            devId = this.Name;
                        }
                        monitor.ErrorText = "Import not supported for " + devId;
                        result            = false;
                    }
                    else
                    {
                        result = job.Import();
                    }
                }
            }
            catch (NotImplementedException)
            {
                monitor.ErrorText = ZoneFiveSoftware.SportTracks.Device.Globalsat.Properties.Resources.Device_Unsupported;
                result            = false;
            }
            return(result);
        }
コード例 #12
0
        public static bool DeleteAllWpt(IJobMonitor jobMonitor)
        {
            FitnessDevice_GsSport device  = new FitnessDevice_GsSport();
            GlobalsatProtocol     device2 = device.Device();

            if (device2 == null)
            {
                return(false);
            }
            return(device2.DeleteAllWaypoints(jobMonitor));
        }
コード例 #13
0
 //Standard error text when a device is detected but "second protocol" times out
 //This overrides the primary error message
 public void NoCommunicationError(IJobMonitor jobMonitor)
 {
     if (!string.IsNullOrEmpty(this.devId))
     {
         jobMonitor.ErrorText = string.Format(Properties.Resources.Device_TurnOnNotConnected, this.devId);
     }
     else
     {
         jobMonitor.ErrorText = Properties.Resources.Device_OpenDevice_Error + " No Communication";
     }
 }
コード例 #14
0
        public static int ExportRte(Stream routes, IJobMonitor jobMonitor)
        {
            FitnessDevice_GsSport device  = new FitnessDevice_GsSport();
            GlobalsatProtocol     device2 = device.Device();

            if (device2 == null)
            {
                return(-1);
            }
            return(device2.SendRoute(WaypointsPlugin.IO.ImportRoutes.ImportStreamGpxRoutes(routes), jobMonitor));
        }
コード例 #15
0
        public static bool DeleteWpt(Stream waypoints, IJobMonitor jobMonitor)
        {
            FitnessDevice_GsSport device  = new FitnessDevice_GsSport();
            GlobalsatProtocol     device2 = device.Device();

            if (device2 == null)
            {
                return(false);
            }
            return(device2.DeleteWaypoints(WaypointsPlugin.IO.ImportWaypoints.ImportStreamGpxWaypoints(waypoints), jobMonitor));
        }
コード例 #16
0
 public static Stream ImportRte(IJobMonitor jobMonitor)
 {
     jobMonitor.ErrorText = ZoneFiveSoftware.SportTracks.Device.Globalsat.Properties.Resources.Device_Unsupported;
     return(null);
     //throw new GlobalsatProtocol.FeatureNotSupportedException();
     //GenericDevice device = new GenericDevice();
     //GlobalsatProtocol device2 = device.Device(jobMonitor);
     //if (device2 == null) { return null; }
     //Stream result = KeymazePlugin.IO.ExportRoutes.ExportGpxRoutesStream(device2.GetRoutes(jobMonitor));
     //return result;
 }
コード例 #17
0
        public static int ExportAct(IList <IActivity> activities, IJobMonitor jobMonitor)
        {
            FitnessDevice_GsSport device  = new FitnessDevice_GsSport();
            GlobalsatProtocol     device2 = device.Device();

            if (device2 == null)
            {
                return(-1);
            }
            return(device2.SendTrack(ToGlobTrack(device2, activities), jobMonitor));
        }
コード例 #18
0
        public IList <Gh625Packet.TrackFileHeader625M> ReadTrackHeaders(IJobMonitor monitor)
        {
            monitor.PercentComplete = 0;
            monitor.StatusText      = CommonResources.Text.Devices.ImportJob_Status_OpeningDevice;

            Int16[] tracks = new Int16[2];

            GlobalsatPacket getHeadersPacket = PacketFactory.GetTrackFileHeaders();
            Gh625Packet     response         = (Gh625Packet)SendPacket(getHeadersPacket);

            return(response.UnpackTrackHeaders());
        }
コード例 #19
0
        public static Stream ImportWpt(IJobMonitor jobMonitor)
        {
            FitnessDevice_GsSport device  = new FitnessDevice_GsSport();
            GlobalsatProtocol     device2 = device.Device();

            if (device2 == null)
            {
                return(null);
            }
            Stream result = WaypointsPlugin.IO.ExportWaypoints.ExportGpxWaypointsStream(device2.GetWaypoints(jobMonitor));

            return(result);
        }
コード例 #20
0
ファイル: HIS2TDF.cs プロジェクト: ElettraSciComp/STP-Gui
        public HISToTDF()
        {
            InitializeComponent();

            // Settings for the LocalJobMonitor instance:
            mJobMonitor               = new LocalJobMonitor();
            mJobMonitor.JobStarted   += new JobStartedEventHandler(mJobMonitor_JobStarted);
            mJobMonitor.JobCompleted += new JobCompletedEventHandler(mJobMonitor_JobCompleted);
            mJobMonitor.JobError     += new JobErrorEventHandler(mJobMonitor_JobError);
            mJobMonitor.JobStep      += new JobStepEventHandler(mJobMonitor_JobStep);

            // Start the LocalJobMonitor with the background worker:
            mJobMonitorBgw.RunWorkerAsync();
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //estimation learning
        private void Experiment3PushBsm()
        {
            if (finished == 0)
            {
                DeleteFiles();
            }
            var resourse = "b4.b4-131";

            LogWrite("Pushing BSM to resourse " + resourse);
            //workflows = 5;
            steps = 1;
            int[] sizes = { 1, 3, 4, 5, 6 };
            var   bsmDescriptionReader = new DescriptionReader("bsm.wf");

            _api.UploadFiles(bsmDescriptionReader.InputFiles);

            for (int i = 0; i < sizes.Length; i++)
            {
                StringBuilder sb = new StringBuilder();
                //sb.Append(bsmDescriptionReader.Script);


                int stepDiffer = 0;
                for (int step = 1; step <= steps; step++)
                //foreach(var size in sizes)
                {
                    var size = sizes[0];
                    //if (stepDiffer >= sizes.Length) stepDiffer = 0;
                    sb.Append("[Resource = " + '"' + resourse + '"' + "]\n");
                    sb.Append("step MaskedFullBSM_" + stepDiffer + " runs bsm " + (stepDiffer > 0 ? " after MaskedFullBSM_" + (stepDiffer - 1) : "") + " \n (\n inMeasurement = measurementFile,\n inHirlam = hirlam" + size + ",\n swan = swanFile,\n inBSH = BSHFile,\n useAssimilation = true,\n useSWAN = true,\n useBSH = true,\n useOldProject = false,\n useMask = false,\n startCalcDate = \"09/01/2007 12:00:00\",\n inAssFields = assFields,\n inProject = projects,\n controlPoints = inControlPoints,\n deleteDirs = true,\n ForecastSize = " + size + " \n)\n");
                    stepDiffer++;
                }
                _api.Script             = sb.ToString();
                jobMonitor              = _api.CreateMonitor();
                jobMonitor.UpdatePeriod = 1000 * 5;
                jobMonitor.Active      += JobMonitorOnActive;
                jobMonitor.Finished    += (sender, jobDecriptionEventArgs) =>
                {
                    JobMonitorStandardFinished(sender, jobDecriptionEventArgs);
                    CopyRows();
                };

                LogWrite(DateTime.Now.ToLongTimeString() + " " + steps + " bsm pushed: " + i + "/" + workflows + "; id:" + jobMonitor.JobId);
                LogWrite(_api.Script.Substring(0, 70));
                jobMonitor.Run();
                Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
                LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
            }
        }
コード例 #22
0
        public virtual Bitmap GetScreenshot(IJobMonitor jobMonitor)
        {
            Bitmap result = null;

            //Note: No check for connected here
            if (this.Open())
            {
                try
                {
                    GlobalsatPacket packet   = PacketFactory.GetScreenshot();
                    GlobalsatPacket response = (GlobalsatPacket)this.SendPacket(packet);

                    System.Drawing.RotateFlipType rotate = RotateFlipType.RotateNoneFlipNone;
                    if (this.FitnessDevice.CanRotateScreen)
                    {
                        //try getting screen orientaion
                        try
                        {
                            packet = PacketFactory.GetSystemConfiguration2();
                            GlobalsatPacket response2 = (GlobalsatPacket)this.SendPacket(packet);
                            GlobalsatSystemConfiguration2 systemInfo = response2.ResponseGetSystemConfiguration2();
                            if (systemInfo.ScreenOrientation == 1)
                            {
                                rotate = RotateFlipType.Rotate90FlipNone;
                            }
                        }
                        catch {}
                    }
                    result = response.ResponseGetScreenshot(rotate);
                }
                catch (Exception e)
                {
                    jobMonitor.ErrorText = Properties.Resources.Device_GetInfo_Error + e;
                    //throw new Exception(Properties.Resources.Device_GetInfo_Error + e);
                }
                finally
                {
                    this.Close();
                }
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
            }
            return(result);
        }
コード例 #23
0
        //  public Image Image
        //  {
        //      get { return Properties.Resources.Image_24_FileHRM; }
        //  }

        public bool Import(string configurationInfo, IJobMonitor monitor, IImportResults importResults)
        {
            //TJL Open Log File
            logger = Logger.GetLogger();
            //logger.writeLog("Starting computrainer import");
            //logger.writeLog(configurationInfo.ToString());

            //TODO: 50% of the progress should come from computrainerActivity
            ComputrainerActivity computrainerActivity = new ComputrainerActivity(configurationInfo);

            DateTime activityStartTime = computrainerActivity.ActivityStartTime;

            logger.writeLog("Got activity start time" + activityStartTime.ToString());
            IActivity activity = importResults.AddActivity(activityStartTime);

            activity.HasStartTime = true;

            //POWER
            float[,] activityDataPower = computrainerActivity.getActivityDataPower();
            activity.PowerWattsTrack   = populateNumericDataTrack(activityDataPower, activityStartTime);

            //HEARTRATE
            float[,] activityDataHeartRate   = computrainerActivity.getActivityDataHeartRate();
            activity.HeartRatePerMinuteTrack = populateNumericDataTrack(activityDataHeartRate, activityStartTime);
            monitor.PercentComplete          = 0.8F;

            //CADENCE
            float[,] activityDataCadence   = computrainerActivity.getActivityDataCadence();
            activity.CadencePerMinuteTrack = populateNumericDataTrack(activityDataCadence, activityStartTime);

            //TODO: 50% of the progress should come from here
            //DISTANCE IN METERS
            float[,] activityDataDistanceMeters = computrainerActivity.getActivityDataDistanceMeters();
            activity.DistanceMetersTrack        = populateDistanceDataTrack(activityDataDistanceMeters, activityStartTime);

            activity.Name           = computrainerActivity.WorkoutFile;
            activity.Location       = computrainerActivity.ActivityLocation;
            activity.Notes          = computrainerActivity.Filename;
            activity.UseEnteredData = false;

            //    logger.closeLog();
            return(true);
        }
コード例 #24
0
        public override int SendWaypoints(IList <GlobalsatWaypoint> waypoints, IJobMonitor jobMonitor)
        {
            int nrSentWaypoints = 0;

            if (this.Open())
            {
                try
                {
                    foreach (GlobalsatWaypoint g in waypoints)
                    {
                        GlobalsatPacket packet = PacketFactory.SendWaypoints(this.FitnessDevice.configInfo.MaxNrWaypoints, new List <GlobalsatWaypoint> {
                            g
                        });
                        GlobalsatPacket response = (GlobalsatPacket)this.SendPacket(packet);

                        int resp = response.ResponseSendWaypoints();
                        nrSentWaypoints += resp;
                        if (resp <= 0)
                        {
                            jobMonitor.ErrorText = string.Format("Could only send {0} out of {1} waypoints. (Capacity {2}).",
                                                                 nrSentWaypoints, waypoints.Count, this.FitnessDevice.configInfo.MaxNrWaypoints);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    jobMonitor.ErrorText = Properties.Resources.Device_SendWaypoints_Error + ex;
                }
                finally
                {
                    this.Close();
                }
            }
            if (!this.DataRecieved)
            {
                //Normal case
                NoCommunicationError(jobMonitor);
            }
            return(nrSentWaypoints);
        }
コード例 #25
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //cnm DefaultUrgentHeuristics
        private void Experiment5(int mode)
        {
            if (finished == 0)
            {
                DeleteFiles();
            }

            started = DateTime.Now;
            LogWrite(started.ToLongTimeString() + "Starting experiment 5 mode " + mode);

            ParasiteLoading("b14.b14-113");
            ParasiteLoading("b14.b14-22");

            SwitchParameter(DateTime.Now.ToLongTimeString() + " DefaultUrgentHeuristics", (mode == 2 ? "UBestFirst" : "UGreedy"));

            var wfDescriptionReader = new DescriptionReader("cnm2.wf");

            _api.UploadFiles(wfDescriptionReader.InputFiles);

            _api.Script             = wfDescriptionReader.Script;
            jobMonitor              = _api.CreateMonitor();
            jobMonitor.UpdatePeriod = 1000 * 5;
            jobMonitor.Active      += JobMonitorOnActive;
            jobMonitor.Finished    += (sender, jobDecriptionEventArgs) =>
            {
                var monitor = (sender as JobMonitor);
                finished++;
                Statuses[monitor.JobId.ToString()] = "Finished";
                LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " " + Statuses[monitor.JobId.ToString()] + " after " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Minutes + " min " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Seconds + " sec ");
                CopyRows();
                mode++;
                if (mode == 2)
                {
                    Experiment5(mode);
                }
            };
            LogWrite(_api.Script);
            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
        }
コード例 #26
0
        //not working, deletes all...
        public virtual int DeleteTracks(DateTime oldest, IJobMonitor jobMonitor)
        {
            int res = -1;

            try
            {
                if (this.Open())
                {
                    IList <GlobalsatPacket.TrackFileHeader> headers = this.ReadTrackHeaders(jobMonitor);
                    IList <GlobalsatPacket.TrackFileHeader> fetch   = new List <GlobalsatPacket.TrackFileHeader>();
                    foreach (GlobalsatPacket.TrackFileHeader t in headers)
                    {
                        if (t.StartTime < oldest)
                        {
                            fetch.Add(t);
                        }
                    }
                    if (fetch.Count > 0)
                    {
                        GlobalsatPacket  getDeleteTracks = PacketFactory.GetDeleteTracks(fetch);
                        GlobalsatPacket2 response        = (GlobalsatPacket2)SendPacket(getDeleteTracks);
                    }
                    res = fetch.Count;
                }
            }
            catch (Exception e)
            {
                jobMonitor.ErrorText = Properties.Resources.Device_OpenDevice_Error + e;
                //throw new Exception(Properties.Resources.Device_OpenDevice_Error + e);
            }
            finally
            {
                this.Close();
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
            }
            return(res);
        }
コード例 #27
0
        public GDEI(
            int airSx,
            int airDx,
            bool flatEnd,
            bool halfHalf,
            int halfHalfLine,
            bool extFOV,
            bool extFOVRight,
            int extFOVOverlap,
            bool extFOVNormalize,
            bool extFOVAverage,
            string ringRemoval,
            bool dynamicFlatFielding
            )
        {
            InitializeComponent();

            mAirSx               = airSx;
            mAirDx               = airDx;
            mFlatEnd             = flatEnd;
            mHalfHalf            = halfHalf;
            mHalfHalfLine        = halfHalfLine;
            mExtFOV              = extFOV;
            mExtFOVRight         = extFOVRight;
            mExtFOVOverlap       = extFOVOverlap;
            mExtFOVNormalize     = extFOVNormalize;
            mExtFOVAverage       = extFOVAverage;
            mRingRemoval         = ringRemoval;
            mDynamicFlatFielding = dynamicFlatFielding;

            // Settings for the JobMonitor instance:
            mJobMonitor               = new LocalJobMonitor();
            mJobMonitor.JobStarted   += new JobStartedEventHandler(mJobMonitor_JobStarted);
            mJobMonitor.JobCompleted += new JobCompletedEventHandler(mJobMonitor_JobCompleted);
            mJobMonitor.JobError     += new JobErrorEventHandler(mJobMonitor_JobError);
            mJobMonitor.JobStep      += new JobStepEventHandler(mJobMonitor_JobStep);

            // Start the JobMonitor with the background worker:
            mJobMonitorBgw.RunWorkerAsync();
        }
コード例 #28
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        private void ParasiteLoading(string resourse = null)
        {
            LogWrite(DateTime.Now.ToLongTimeString() + " Loading " + (resourse != null?resourse:"system") + " by parasite testp task");
            var parasiteWfDescriptionReader = new DescriptionReader("parasite.wf");

            _api.Script        = (resourse != null?"[Resource = \"" + resourse + "\"]\n":"") + parasiteWfDescriptionReader.Script;
            jobMonitor         = _api.CreateMonitor();
            jobMonitor.Active += (sender, jobDecriptionEventArgs) => {
                if (Statuses[jobDecriptionEventArgs.JobInfo.ID.ToString()] != jobDecriptionEventArgs.JobInfo.State.ToString())
                {
                    Statuses[jobDecriptionEventArgs.JobInfo.ID.ToString()] = jobDecriptionEventArgs.JobInfo.State.ToString();
                    if (Statuses[jobDecriptionEventArgs.JobInfo.ID.ToString()] == "Active")
                    {
                        //var sleep = 15;
                        //LogWrite(DateTime.Now.ToLongTimeString() + " Sleep " + sleep + " sec");
                        //System.Threading.Thread.Sleep(sleep * 1000);
                        waitOne.Set();
                    }
                }
            };
            jobMonitor.Finished += (sender, jobDecriptionEventArgs) =>
            {
                var monitor = (sender as JobMonitor);
                Statuses[monitor.JobId.ToString()] = "Finished";

                if (jobDecriptionEventArgs.JobInfo != null && jobDecriptionEventArgs.JobInfo.ErrorComment != null)
                {
                    LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " parasite " + Statuses[monitor.JobId.ToString()] + (resourse != null ? " on " + resourse : "") + " with error " + jobDecriptionEventArgs.JobInfo.ErrorComment);
                    return;
                }
                LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " parasite " + Statuses[monitor.JobId.ToString()] + (resourse != null ? " on " + resourse : ""));
                CopyRows();
            };
            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " parasite pushed " + (resourse != null ? " on " + resourse : ""));
            LogWrite(DateTime.Now.ToLongTimeString() + " Waiting till parasite WF become active");
            waitOne.WaitOne();
        }
コード例 #29
0
        //Not used as a separate protocol now
        //public virtual GlobalsatPacket.GlobalsatSystemInformation GetSystemConfiguration(IJobMonitor jobMonitor)
        //{
        //    this.Open();
        //    try
        //    {
        //        GlobalsatPacket packet = PacketFactory.GetSystemConfiguration();
        //        GlobalsatPacket response = (GlobalsatPacket)this.SendPacket(packet);

        //        GlobalsatPacket.GlobalsatSystemConfiguration systemInfo = response.ResponseGetSystemConfiguration();
        //        return systemInfo;
        //    }
        //    catch(Exception e)
        //    {
        //        throw new Exception(Properties.Resources.Device_GetInfo_Error+e);
        //    }
        //    finally
        //    {
        //        this.Close();
        //    }
        //}

        public virtual GlobalsatDeviceConfiguration GetSystemConfiguration2(IJobMonitor jobMonitor)
        {
            //No need to check if device is connected
            GlobalsatDeviceConfiguration devConfig = new GlobalsatDeviceConfiguration();

            if (this.Open())
            {
                try
                {
                    GlobalsatPacket packet   = PacketFactory.GetSystemConfiguration();
                    GlobalsatPacket response = (GlobalsatPacket)this.SendPacket(packet);

                    GlobalsatSystemConfiguration systemInfo = response.ResponseGetSystemConfiguration();
                    devConfig.DeviceName = systemInfo.DeviceName;

                    packet   = PacketFactory.GetSystemConfiguration2();
                    response = (GlobalsatPacket)this.SendPacket(packet);

                    devConfig.SystemConfigDataRaw = response.PacketData;
                }
                catch (Exception e)
                {
                    devConfig            = null;
                    jobMonitor.ErrorText = Properties.Resources.Device_GetInfo_Error + e;
                }
                finally
                {
                    this.Close();
                }
            }
            if (!this.DataRecieved)
            {
                NoCommunicationError(jobMonitor);
            }
            return(devConfig);
        }
コード例 #30
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //3 modes
        private void Experiment1(int mode)
        {
            LogWrite("Starting experiment mode " + mode.ToString());
            workflows = 2;
            steps = 20; //max 20

            int delay = 120;  //150

            var testpDescriptionReader = new DescriptionReader("testp.wf");
            var bsmDescriptionReader = new DescriptionReader("bsm.wf");
            foreach (var pair in bsmDescriptionReader.InputFiles)
            {
                var val = ConfigurationManager.AppSettings[pair.Key];
                _api.BindFile(pair.Key, val);
            }

            var timer = new Timer();
            int i = 1;
            timer.Elapsed += new ElapsedEventHandler((s, e) =>
            {
                Random random = new Random();
                if (i > workflows)
                {
                    i = 0;
                    timer.Stop();
                }
                else if (i == 1)
                {

                    StringBuilder sb = new StringBuilder();
                    sb.Append(testpDescriptionReader.Script);
                    for (int step = 1; step <= 2*steps; step++)
                    {
                        //if (step > amount/2) offset = 40;
                        sb.Append("\n step s" + step + " runs testp (\n in0=" + i + step + ",\n in1=1,\n timeToWait=" + (delay / i + random.Next(0, 20)).ToString() + "\n)\n");
                    }
                    _api.Script = sb.ToString();
                    jobMonitor = _api.CreateMonitor();
                    jobMonitor.UpdatePeriod = 1000 * 50;
                    jobMonitor.Finished += JobMonitorOnFinishedExp1;
                    jobMonitor.Active += JobMonitorOnActive;

                    LogWrite(DateTime.Now.ToLongTimeString() + " " + steps + " testp pushed: " + i + "/" + "; id:" + jobMonitor.JobId);
                    LogWrite(_api.Script.Substring(0, 57));
                    if (mode == 1 || mode==3) {
                        timer.Interval = 20 * 1000;
                        LogWrite("Waiting 25 sec");
                    }
                    jobMonitor.Run();

                }
                else
                {
                    StringBuilder sb = new StringBuilder();
                    //sb.Append(bsmDescriptionReader.Script);
                    if (mode > 1) { //2,3
                        sb.Append("[flow:priority = @urgent]\n");
                        if (mode == 2) sb.Append("[flow:MinTime = " + '"' + "0" + '"' + "]\n[flow:MaxTime = " + '"' + "0" + '"' + "]\n");
                    }
                    if (mode > 2) sb.Append("[flow:MinTime = " + '"' + "0" + '"' + "]\n[flow:MaxTime = " + '"' + "0" + '"' + "]\n");

                    for (int step = 1; step <=steps; step++)
                    {
                        sb.Append("\n step MaskedFullBSM_" + step + " runs bsm \n (\n inMeasurement = measurementFile,\n inHirlam = hirlam6,\n swan = swanFile,\n inBSH = BSHFile,\n useAssimilation = true,\n useSWAN = true,\n useBSH = true,\n useOldProject = false,\n useMask = false,\n startCalcDate = \"09/01/2007 12:00:00\",\n inAssFields = assFields,\n inProject = projects,\n controlPoints = inControlPoints,\n deleteDirs = true,\n ForecastSize = 3 \n)\n");
                    }
                    _api.Script = sb.ToString();
                    jobMonitor = _api.CreateMonitor();
                    jobMonitor.UpdatePeriod = 1000 * 5;
                    jobMonitor.Finished += JobMonitorOnFinishedExp1;
                    jobMonitor.Active += JobMonitorOnActive;
                    LogWrite(DateTime.Now.ToLongTimeString() + " " + steps + " bsm pushed: " + i + "/" + "; id:" + jobMonitor.JobId);
                    LogWrite(_api.Script.Substring(0, 70));
                    jobMonitor.Run();
                    //timer.Interval = 120 * 1000;
                    timer.Stop();
                }
                i++;

            });
            timer.Interval = 1000;
            timer.Start();
        }
コード例 #31
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //cnm DefaultUrgentHeuristics
        private void Experiment5(int mode)
        {
            if (finished == 0) DeleteFiles();

            started = DateTime.Now;
            LogWrite(started.ToLongTimeString() + "Starting experiment 5 mode " + mode);

            ParasiteLoading("b14.b14-113");
            ParasiteLoading("b14.b14-22");

            SwitchParameter(DateTime.Now.ToLongTimeString() + " DefaultUrgentHeuristics", (mode == 2 ? "UBestFirst" : "UGreedy"));

            var wfDescriptionReader = new DescriptionReader("cnm2.wf");
            _api.UploadFiles(wfDescriptionReader.InputFiles);

            _api.Script = wfDescriptionReader.Script;
            jobMonitor = _api.CreateMonitor();
            jobMonitor.UpdatePeriod = 1000 * 5;
            jobMonitor.Active += JobMonitorOnActive;
            jobMonitor.Finished += (sender, jobDecriptionEventArgs) =>
            {
                var monitor = (sender as JobMonitor);
                finished++;
                Statuses[monitor.JobId.ToString()] = "Finished";
                LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " " + Statuses[monitor.JobId.ToString()] + " after " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Minutes + " min " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Seconds + " sec ");
                CopyRows();
                mode++;
                if (mode == 2) Experiment5(mode);
            };
            LogWrite(_api.Script);
            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
        }
コード例 #32
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        private void Experiment3()
        {
            if (finished == 0)
                if (DeleteFiles()) {
                    finished++;
                    Experiment3PushBsm();
                    return;
                }
            var resourse = "b4.b4-131";
            LogWrite("Starting experiment 3 on resourse "+resourse);

            steps = 1; //max 20
            int[] sizes = { 1,3,4,5,6 };
            workflows = sizes.Length;

            /*
            foreach (var pair in bsmDescriptionReader.InputFiles)
            {
                var val = ConfigurationManager.AppSettings[pair.Key];
                _api.BindFile(pair.Key, val);
            }
            */
            IEnumerable<string> lines = new List<string>();
            IEnumerable<string> overlines = new List<string>();
            if (File.Exists(ConfigurationManager.AppSettings["HistoryFile"]))
            {
                lines = File.ReadAllLines(ConfigurationManager.AppSettings["HistoryFile"]).Where(line => line.Contains("bsm") && line.Contains(resourse));
                overlines = File.ReadAllLines(ConfigurationManager.AppSettings["HistoryFile"].Replace("model_coef", "over"));
            }
            var runs = new List<RunRecord>();
            //.Where(l=>l.Contains(@"{""ForecastSize"": ""1""}"))
            foreach (var line in lines)
            {
                var rows = line.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                var rows2 = overlines.Where(l => l.Contains(rows[0])).FirstOrDefault().Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                //Select(s => double.Parse(s)).ToArray();
                var rx = new Regex(@"""ForecastSize"": ""([^,]+)""");
                var match = rx.Match(rows[11]);
                if (match.Success)
                {
                    var rec = new RunRecord { ComputationTime = double.Parse(rows[7].Replace(".", ",")) };
                    rec.OverheadTime = TimeSpan.Parse(rows2[7]).TotalSeconds;   // База пакетов
                    rec.OverheadTime += TimeSpan.Parse(rows2[8]).TotalSeconds;  // Оценка ресурсов
                    rec.OverheadTime += TimeSpan.Parse(rows2[9]).TotalSeconds;  // T_Scheduler
                    rec.OverheadTime += TimeSpan.Parse(rows2[10]).TotalSeconds; // Коммуникация
                    rec.OverheadTime += TimeSpan.Parse(rows2[11]).TotalSeconds; // T_InputFilesCopy
                    rec.OverheadTime += TimeSpan.Parse(rows2[12]).TotalSeconds; // T_OutputFilesCopy
                    rec.RunContext.Add("ForecastSize", double.Parse(match.Groups[1].Value));
                    runs.Add(rec);
                }
            }

            PerformanceModel model = new BsmModel();
            var sp = ParametersOptimizer.UpdateServiceComputationParameters(new Dictionary<string, double>(), runs, model);
            var spp = ParametersOptimizer.UpdateServiceOverheadParameters(new Dictionary<string, double>(), runs);

            foreach (var p in sp)
                LogWrite(String.Format("{0}: {1}", p.Key, p.Value.ToString("0.0000")));
            /*
            foreach (var p in spp)
                LogWrite(String.Format("{0}: {1}", p.Key, p.Value.ToString("0.0000")));
            */

            var bsmDescriptionReader = new DescriptionReader("bsm.wf");
            _api.UploadFiles(bsmDescriptionReader.InputFiles);

            int i = 0;
            foreach (var size in sizes)
            {
                LogWrite(String.Format("ForecastSize: {0}",size));
                var runRecord = new RunRecord();
                runRecord.RunContext.Add("ForecastSize", (double)size);

                var compuTime = model.GetComputationTime(sp, runRecord.RunContext, runRecord.ExecutionParams);
                var compuError = model.GetComputationErrorRelative(sp, runRecord.RunContext, runRecord.ExecutionParams);
                LogWrite(String.Format("Calculation time: {0}+/-{1}", compuTime.ToString("0.000"), compuError.ToString("0.000")));

                var overheadTime = model.GetOverheadTime(spp, runRecord.RunContext, runRecord.ExecutionParams);
                var overheadError = model.GetOverheadError(spp, runRecord.RunContext, runRecord.ExecutionParams);
                LogWrite(String.Format("Overhead time: {0}+/-{1}", overheadTime.ToString("0.000"), overheadError.ToString("0.000")));

                StringBuilder sb = new StringBuilder();
                //int stepDiffer = 0;
                for (int step = 1; step <= steps; step++){
                //if (stepDiffer >= sizes.Length) stepDiffer = 0;
                sb.Append("[Resource = " + '"' + resourse + '"' + "]\n");
                sb.Append("step MaskedFullBSM_"+step+" runs bsm \n (\n inMeasurement = measurementFile,\n inHirlam = hirlam" + size + ",\n swan = swanFile,\n inBSH = BSHFile,\n useAssimilation = true,\n useSWAN = true,\n useBSH = true,\n useOldProject = false,\n useMask = false,\n startCalcDate = \"09/01/2007 12:00:00\",\n inAssFields = assFields,\n inProject = projects,\n controlPoints = inControlPoints,\n deleteDirs = true,\n ForecastSize = " + size + " \n)\n");
                //stepDiffer++;
                }
                _api.Script = sb.ToString();
                jobMonitor = _api.CreateMonitor();
                jobMonitor.UpdatePeriod = 1000 * 5;
                jobMonitor.Active += JobMonitorOnActive;
                jobMonitor.Finished += (sender, jobDecriptionEventArgs) =>
                {
                    JobMonitorStandardFinished(sender, jobDecriptionEventArgs);
                    CopyRows(new string[]{"ForecastSize"});
                };

                LogWrite(DateTime.Now.ToLongTimeString() + " " + steps + " bsm pushed: " + i + "/" + workflows + "; id:" + jobMonitor.JobId);
                //LogWrite(_api.Script.Substring(0, 70));
                started = DateTime.Now;
                jobMonitor.Run();
                Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
                CalculationTimes.Add(jobMonitor.JobId.ToString(), compuTime.ToString("0.000"));
                CalculationTimesErr.Add(jobMonitor.JobId.ToString(), compuError.ToString("0.000"));
                OverheadTimes.Add(jobMonitor.JobId.ToString(), overheadTime.ToString("0.000"));
                OverheadTimesErr.Add(jobMonitor.JobId.ToString(), overheadError.ToString("0.000"));
                LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
                i++;
            }
        }
コード例 #33
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //virtual starting
        private void Experiment2()
        {
            vmlauncher = new VMLauncher();
            vmlauncher.StopAll(20);

            steps = 2;
            workflows = 25;
            int sleep = 30;
            int delay = 140;

            var testpDescriptionReader = new DescriptionReader("testp.wf");

            int i = 0;
            timer = new Timer();

            timer.Elapsed += new ElapsedEventHandler((s, e) =>
            {

                if (i >= workflows)
                {
                    timer.Stop();
                    LogWrite("Pusher stopped");
                }
                else{

                    StringBuilder sb = new StringBuilder();
                    sb.Append(testpDescriptionReader.Script);
                    if (i > 1) steps = 1;
                    for (int step = 0; step < steps; step++)
                    sb.Append("\n step s"+step+" runs testp (\n in0=" + step+",\n in1="+sleep+",\n timeToWait=" + (delay).ToString() + "\n)\n");

                   _api.Script = sb.ToString();

                    jobMonitor = _api.CreateMonitor();
                    jobMonitor.UpdatePeriod = 1000 * 50;
                    jobMonitor.Finished += JobMonitorOnFinishedExp2;
                    jobMonitor.Active += JobMonitorOnActive;
                    LogWrite(DateTime.Now.ToLongTimeString() + " " + (i + 1) + "/" + workflows + " testp pushed; " + steps + " steps");
                    jobMonitor.Run();
                    timer.Interval = sleep*1000;

                }
                i++;

            });
            LogWrite("Sending jobs to " + ConfigurationManager.AppSettings["ServerName"] + ". Press any key to stop monitoring...");
            timer.Interval = 100;
            timer.Start();

            vmlauncher.Run();

            Console.ReadLine();
        }
コード例 #34
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //estimation learning
        private void Experiment3PushBsm()
        {
            if (finished == 0) DeleteFiles();
            var resourse = "b4.b4-131";
            LogWrite("Pushing BSM to resourse " + resourse);
            //workflows = 5;
            steps = 1;
            int[] sizes = { 1,3,4,5,6 };
            var bsmDescriptionReader = new DescriptionReader("bsm.wf");
            _api.UploadFiles(bsmDescriptionReader.InputFiles);

            for (int i = 0; i < sizes.Length; i++)
            {

                StringBuilder sb = new StringBuilder();
                //sb.Append(bsmDescriptionReader.Script);

                int stepDiffer = 0;
                for (int step = 1; step <= steps; step++)
                //foreach(var size in sizes)
                {
                    var size = sizes[0];
                    //if (stepDiffer >= sizes.Length) stepDiffer = 0;
                    sb.Append("[Resource = " + '"' + resourse + '"' + "]\n");
                    sb.Append("step MaskedFullBSM_" + stepDiffer + " runs bsm " + (stepDiffer > 0 ? " after MaskedFullBSM_" + (stepDiffer - 1) : "") + " \n (\n inMeasurement = measurementFile,\n inHirlam = hirlam" + size + ",\n swan = swanFile,\n inBSH = BSHFile,\n useAssimilation = true,\n useSWAN = true,\n useBSH = true,\n useOldProject = false,\n useMask = false,\n startCalcDate = \"09/01/2007 12:00:00\",\n inAssFields = assFields,\n inProject = projects,\n controlPoints = inControlPoints,\n deleteDirs = true,\n ForecastSize = " + size + " \n)\n");
                    stepDiffer++;
                }
                _api.Script = sb.ToString();
                jobMonitor = _api.CreateMonitor();
                jobMonitor.UpdatePeriod = 1000 * 5;
                jobMonitor.Active += JobMonitorOnActive;
                jobMonitor.Finished += (sender, jobDecriptionEventArgs) =>
                {
                    JobMonitorStandardFinished(sender, jobDecriptionEventArgs);
                    CopyRows();
                };

                LogWrite(DateTime.Now.ToLongTimeString() + " " + steps + " bsm pushed: " + i + "/" + workflows + "; id:" + jobMonitor.JobId);
                LogWrite(_api.Script.Substring(0, 70));
                jobMonitor.Run();
                Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
                LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
            }
        }
コード例 #35
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        private void Experiment3()
        {
            if (finished == 0)
            {
                if (DeleteFiles())
                {
                    finished++;
                    Experiment3PushBsm();
                    return;
                }
            }
            var resourse = "b4.b4-131";

            LogWrite("Starting experiment 3 on resourse " + resourse);

            steps = 1; //max 20
            int[] sizes = { 1, 3, 4, 5, 6 };
            workflows = sizes.Length;

            /*
             * foreach (var pair in bsmDescriptionReader.InputFiles)
             * {
             *  var val = ConfigurationManager.AppSettings[pair.Key];
             *  _api.BindFile(pair.Key, val);
             * }
             */
            IEnumerable <string> lines     = new List <string>();
            IEnumerable <string> overlines = new List <string>();

            if (File.Exists(ConfigurationManager.AppSettings["HistoryFile"]))
            {
                lines     = File.ReadAllLines(ConfigurationManager.AppSettings["HistoryFile"]).Where(line => line.Contains("bsm") && line.Contains(resourse));
                overlines = File.ReadAllLines(ConfigurationManager.AppSettings["HistoryFile"].Replace("model_coef", "over"));
            }
            var runs = new List <RunRecord>();

            //.Where(l=>l.Contains(@"{""ForecastSize"": ""1""}"))
            foreach (var line in lines)
            {
                var rows  = line.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                var rows2 = overlines.Where(l => l.Contains(rows[0])).FirstOrDefault().Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                //Select(s => double.Parse(s)).ToArray();
                var rx    = new Regex(@"""ForecastSize"": ""([^,]+)""");
                var match = rx.Match(rows[11]);
                if (match.Success)
                {
                    var rec = new RunRecord {
                        ComputationTime = double.Parse(rows[7].Replace(".", ","))
                    };
                    rec.OverheadTime  = TimeSpan.Parse(rows2[7]).TotalSeconds;  // База пакетов
                    rec.OverheadTime += TimeSpan.Parse(rows2[8]).TotalSeconds;  // Оценка ресурсов
                    rec.OverheadTime += TimeSpan.Parse(rows2[9]).TotalSeconds;  // T_Scheduler
                    rec.OverheadTime += TimeSpan.Parse(rows2[10]).TotalSeconds; // Коммуникация
                    rec.OverheadTime += TimeSpan.Parse(rows2[11]).TotalSeconds; // T_InputFilesCopy
                    rec.OverheadTime += TimeSpan.Parse(rows2[12]).TotalSeconds; // T_OutputFilesCopy
                    rec.RunContext.Add("ForecastSize", double.Parse(match.Groups[1].Value));
                    runs.Add(rec);
                }
            }

            PerformanceModel model = new BsmModel();
            var sp  = ParametersOptimizer.UpdateServiceComputationParameters(new Dictionary <string, double>(), runs, model);
            var spp = ParametersOptimizer.UpdateServiceOverheadParameters(new Dictionary <string, double>(), runs);

            foreach (var p in sp)
            {
                LogWrite(String.Format("{0}: {1}", p.Key, p.Value.ToString("0.0000")));
            }

            /*
             * foreach (var p in spp)
             *  LogWrite(String.Format("{0}: {1}", p.Key, p.Value.ToString("0.0000")));
             */

            var bsmDescriptionReader = new DescriptionReader("bsm.wf");

            _api.UploadFiles(bsmDescriptionReader.InputFiles);

            int i = 0;

            foreach (var size in sizes)
            {
                LogWrite(String.Format("ForecastSize: {0}", size));
                var runRecord = new RunRecord();
                runRecord.RunContext.Add("ForecastSize", (double)size);

                var compuTime  = model.GetComputationTime(sp, runRecord.RunContext, runRecord.ExecutionParams);
                var compuError = model.GetComputationErrorRelative(sp, runRecord.RunContext, runRecord.ExecutionParams);
                LogWrite(String.Format("Calculation time: {0}+/-{1}", compuTime.ToString("0.000"), compuError.ToString("0.000")));

                var overheadTime  = model.GetOverheadTime(spp, runRecord.RunContext, runRecord.ExecutionParams);
                var overheadError = model.GetOverheadError(spp, runRecord.RunContext, runRecord.ExecutionParams);
                LogWrite(String.Format("Overhead time: {0}+/-{1}", overheadTime.ToString("0.000"), overheadError.ToString("0.000")));

                StringBuilder sb = new StringBuilder();
                //int stepDiffer = 0;
                for (int step = 1; step <= steps; step++)
                {
                    //if (stepDiffer >= sizes.Length) stepDiffer = 0;
                    sb.Append("[Resource = " + '"' + resourse + '"' + "]\n");
                    sb.Append("step MaskedFullBSM_" + step + " runs bsm \n (\n inMeasurement = measurementFile,\n inHirlam = hirlam" + size + ",\n swan = swanFile,\n inBSH = BSHFile,\n useAssimilation = true,\n useSWAN = true,\n useBSH = true,\n useOldProject = false,\n useMask = false,\n startCalcDate = \"09/01/2007 12:00:00\",\n inAssFields = assFields,\n inProject = projects,\n controlPoints = inControlPoints,\n deleteDirs = true,\n ForecastSize = " + size + " \n)\n");
                    //stepDiffer++;
                }
                _api.Script             = sb.ToString();
                jobMonitor              = _api.CreateMonitor();
                jobMonitor.UpdatePeriod = 1000 * 5;
                jobMonitor.Active      += JobMonitorOnActive;
                jobMonitor.Finished    += (sender, jobDecriptionEventArgs) =>
                {
                    JobMonitorStandardFinished(sender, jobDecriptionEventArgs);
                    CopyRows(new string[] { "ForecastSize" });
                };

                LogWrite(DateTime.Now.ToLongTimeString() + " " + steps + " bsm pushed: " + i + "/" + workflows + "; id:" + jobMonitor.JobId);
                //LogWrite(_api.Script.Substring(0, 70));
                started = DateTime.Now;
                jobMonitor.Run();
                Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
                CalculationTimes.Add(jobMonitor.JobId.ToString(), compuTime.ToString("0.000"));
                CalculationTimesErr.Add(jobMonitor.JobId.ToString(), compuError.ToString("0.000"));
                OverheadTimes.Add(jobMonitor.JobId.ToString(), overheadTime.ToString("0.000"));
                OverheadTimesErr.Add(jobMonitor.JobId.ToString(), overheadError.ToString("0.000"));
                LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
                i++;
            }
        }
コード例 #36
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //cnm DefaultHeuristics
        private void Experiment4(int mode)
        {
            if (finished == 0) DeleteFiles();

            started = DateTime.Now;
            LogWrite(started.ToLongTimeString()+" Starting experiment 4 mode " + mode);

            SwitchParameter("DefaultHeuristics", (mode == 2 ? "MinMin" : "Stub"));

            var wfDescriptionReader = new DescriptionReader("cnm.wf");
            _api.UploadFiles(wfDescriptionReader.InputFiles);

            _api.Script = wfDescriptionReader.Script;
            LogWrite(_api.Script);
            jobMonitor = _api.CreateMonitor();
            jobMonitor.UpdatePeriod = 1000 * 5;
            jobMonitor.Active += JobMonitorOnActive;
            jobMonitor.Finished += (sender, jobDecriptionEventArgs) =>
            {
                JobMonitorStandardFinished(sender, jobDecriptionEventArgs);
                CopyRows();
                if (mode == 2) Experiment4(mode);
            };

            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(),"Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " state: pushed");
        }
コード例 #37
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        //Just one bsm
        private void Experiment6()
        {
            if (finished == 0) DeleteFiles();
            started = DateTime.Now;
            LogWrite(started.ToLongTimeString() + " Starting experiment 6 mode " + mode);

            ParasiteLoading("b14.b14-113");
            //ParasiteLoading("b14.b14-22");
            return;

            var wfDescriptionReader = new DescriptionReader("bsm.wf");
            _api.UploadFiles(wfDescriptionReader.InputFiles);

            _api.Script = wfDescriptionReader.Script;
            jobMonitor = _api.CreateMonitor();
            jobMonitor.UpdatePeriod = 1000 * 5;
            jobMonitor.Active += JobMonitorOnActive;
            jobMonitor.Finished += (sender, jobDecriptionEventArgs) =>
            {
                var monitor = (sender as JobMonitor);
                finished++;
                Statuses[monitor.JobId.ToString()] = "Finished";
                LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " " + Statuses[monitor.JobId.ToString()] + " after " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Minutes + " min " + TimeSpan.FromTicks(DateTime.Now.Ticks - started.Ticks).Seconds + " sec ");
                //CopyRows();
            };
            LogWrite(_api.Script);
            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " pushed");
        }
コード例 #38
0
ファイル: Program.cs プロジェクト: kbochenina/Kraken
        private void ParasiteLoading(string resourse=null)
        {
            LogWrite(DateTime.Now.ToLongTimeString() + " Loading "+(resourse!=null?resourse:"system")+" by parasite testp task");
            var parasiteWfDescriptionReader = new DescriptionReader("parasite.wf");
            _api.Script = (resourse!=null?"[Resource = \""+resourse+"\"]\n":"")+parasiteWfDescriptionReader.Script;
            jobMonitor = _api.CreateMonitor();
            jobMonitor.Active += (sender, jobDecriptionEventArgs) =>{
                if (Statuses[jobDecriptionEventArgs.JobInfo.ID.ToString()] != jobDecriptionEventArgs.JobInfo.State.ToString())
                {
                    Statuses[jobDecriptionEventArgs.JobInfo.ID.ToString()] = jobDecriptionEventArgs.JobInfo.State.ToString();
                    if (Statuses[jobDecriptionEventArgs.JobInfo.ID.ToString()] == "Active")
                    {
                        //var sleep = 15;
                        //LogWrite(DateTime.Now.ToLongTimeString() + " Sleep " + sleep + " sec");
                        //System.Threading.Thread.Sleep(sleep * 1000);
                        waitOne.Set();
                    }
                }
            };
            jobMonitor.Finished += (sender, jobDecriptionEventArgs) =>
            {
                var monitor = (sender as JobMonitor);
                Statuses[monitor.JobId.ToString()] = "Finished";

                if (jobDecriptionEventArgs.JobInfo != null && jobDecriptionEventArgs.JobInfo.ErrorComment != null) {
                    LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " parasite " + Statuses[monitor.JobId.ToString()]+(resourse != null ? " on " + resourse : "")+" with error "+jobDecriptionEventArgs.JobInfo.ErrorComment);
                    return;
                }
                LogWrite(DateTime.Now.ToLongTimeString() + " " + monitor.JobId + " parasite " + Statuses[monitor.JobId.ToString()]+(resourse != null ? " on " + resourse : ""));
                CopyRows();
            };
            jobMonitor.Run();
            Statuses.Add(jobMonitor.JobId.ToString(), "Pushed");
            LogWrite(DateTime.Now.ToLongTimeString() + " " + jobMonitor.JobId + " parasite pushed " + (resourse != null ? " on "+resourse : ""));
            LogWrite(DateTime.Now.ToLongTimeString() + " Waiting till parasite WF become active");
            waitOne.WaitOne();
        }