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); }
//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"); }
//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"); }
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); }
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); }
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); }
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); }
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; }
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()); }
//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(); }
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); }
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)); }
//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"; } }
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)); }
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)); }
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; }
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)); }
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()); }
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); }
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(); }
//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"); } }
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); }
// 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); }
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); }
//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"); }
//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); }
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(); }
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(); }
//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); }
//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(); }
//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"); }
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++; } }
//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(); }
//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"); } }
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++; } }
//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"); }
//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"); }
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(); }