InitTaskForId() публичный статический Метод

public static InitTaskForId ( string id, TaskType type ) : void
id string
type TaskType
Результат void
Пример #1
0
        public void InitTaskForIdYieldsStopped()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.AreEqual(TaskStatus.stopped, task.status);
        }
Пример #2
0
        public void ExistingTaskExists()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.That(task.id == testid);
        }
Пример #3
0
        public void StartTaskForIdYieldsAllocated()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            Scheduler.StartTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.AreEqual(TaskStatus.allocated, task.status);
        }
Пример #4
0
 public static void EnsureTaskRecord(string id, TaskType type)
 {
     if (Scheduler.ExistsTaskRecordForId(id, type) == false)
     {
         GenUtils.LogMsg("status", "MaybeCreateTaskRecord: creating task for " + id, null);
         Scheduler.InitTaskForId(id, type);
     }
 }
Пример #5
0
        public void UpdateStartTaskForIdYieldsRunning()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            Scheduler.StartTaskForId(testid, test_task_type);
            Scheduler.UpdateStartTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.AreEqual(TaskStatus.running, task.status);
        }
Пример #6
0
        public void StopTaskForIdYieldsStopTimeGreaterThanStartTime()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            Scheduler.StartTaskForId(testid, test_task_type);
            Utils.Wait(3);
            Scheduler.StopTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            Assert.Greater(task.stop, task.start);
        }
Пример #7
0
        public void IsNotAbandonedIfWithinInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var less_than_interval = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) - 60, 0);

            task.start = DateTime.UtcNow - less_than_interval;
            Scheduler.StoreTaskForId(task, testid, test_task_type);
            Assert.AreEqual(false, Scheduler.IsAbandoned(testid, test_task_type));
        }
Пример #8
0
        public void IsAbandonedIfBeyondInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var more_than_interval = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) + 60, 0);

            task.start = DateTime.UtcNow - more_than_interval;              // started more than 8hrs ago
            Scheduler.StoreTaskForId(task, testid, test_task_type);
            Assert.AreEqual(true, Scheduler.IsAbandoned(testid, test_task_type));
        }
Пример #9
0
        public void MaybeStartTaskUpdatesStartTime()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var now  = DateTime.UtcNow;

            Scheduler.MaybeStartTaskForId(now, test_calinfo, test_task_type);
            task = Scheduler.FetchTaskForId(testid, test_task_type);
            Assert.That(task.start > now);
        }
Пример #10
0
        public void MaybeStartTaskSucceedsForLongEnoughInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var ts   = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) + 10, 0);
            var now  = task.start + ts;

            Scheduler.MaybeStartTaskForId(now, test_calinfo, test_task_type);
            task = Scheduler.FetchTaskForId(testid, test_task_type);
            Assert.AreEqual(TaskStatus.allocated, task.status);
        }
Пример #11
0
        public void MaybeStartTaskFailsForTooShortInterval()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);
            var ts   = new System.TimeSpan(0, (Configurator.nonical_aggregate_interval_hours * 60) - 10, 0);
            var now  = task.start + ts;

            Scheduler.MaybeStartTaskForId(now, test_calinfo, test_task_type);
            task = Scheduler.FetchTaskForId(testid, test_task_type);
            Assert.AreEqual(TaskStatus.stopped, task.status);
        }
Пример #12
0
        public void IsAbandonedIfLockedAndNotRunning()
        {
            Scheduler.InitTaskForId(testid, test_task_type);
            var task = Scheduler.FetchTaskForId(testid, test_task_type);

            //task.running = false;
            task.status = TaskStatus.stopped;
            Scheduler.StoreTaskForId(task, testid, test_task_type);
            Scheduler.LockId(testid, test_task_type);
            Assert.AreEqual(true, Scheduler.IsAbandoned(testid, test_task_type));
        }
Пример #13
0
        public static void UpdateFeedsForId(string id, string json)
        {
            TableStorage ts = TableStorage.MakeDefaultTableStorage();
            List <Dictionary <string, string> > list_metadict_str;

            try
            {
                list_metadict_str = JsonConvert.DeserializeObject <List <Dictionary <string, string> > >(json);
                var dupes = ObjectUtils.FindDuplicateValuesForKey(list_metadict_str, "feedurl");
                if (dupes.Count > 0)
                {
                    GenUtils.PriorityLogMsg("warning", string.Format("{0} duplicate feeds for {1}", dupes.Count, id), null);
                }
            }
            catch (Exception e)
            {
                GenUtils.PriorityLogMsg("exception", "UpdateFeedsForId: " + json, e.Message + e.StackTrace);
                throw (e);
            }

            var snapshot_changed = ObjectUtils.SavedJsonSnapshot(id, ObjectUtils.JsonSnapshotType.ListDictStr, "feeds", list_metadict_str);

            if (snapshot_changed == true)
            {
                try
                {
                    var json_blob_name = id + ".feeds.json";                                                     // update json blob
                    var updated_json   = ObjectUtils.ListDictStrToJson(list_metadict_str);
                    bs.PutBlob(id, json_blob_name, updated_json, "application/json");

                    var fes               = "feedentryschema";
                    var fesquery          = string.Format("$filter=PartitionKey eq '{0}' and RowKey eq '{1}'", fes, fes);
                    var feed_entry_schema = TableStorage.QueryForSingleEntityAsDictStr(ts, fes, fesquery)["fields"];

                    GenUtils.LogMsg("status", "UpdateFeedsForId: processing changed snapshot", null);

                    var current_feed_urls = list_metadict_str.Select(feed => feed["feedurl"]).ToList();

                    GenUtils.LogMsg("status", "UpdateFeedsForId: find existing", null);

                    // query existing feeds
                    var           existing_query      = string.Format("$filter=PartitionKey eq '{0}' and feedurl ne ''", id);
                    var           existing_feeds      = ts.QueryAllEntitiesAsListDict("metadata", existing_query, 0).list_dict_obj;
                    List <object> _existing_feed_urls = (List <object>)existing_feeds.Select(feed => feed["feedurl"]).ToList();
                    List <string> existing_feed_urls  = (List <string>)_existing_feed_urls.Select(x => x.ToString()).ToList();

                    GenUtils.LogMsg("status", "UpdateFeedsForId: find new and add", null);

                    HandleFeedAdds(id, list_metadict_str, current_feed_urls, existing_feed_urls);

                    var deleted_feed_urls = HandleFeedDeletes(id, ts, current_feed_urls, existing_feed_urls);

                    HandleFeedUpdates(id, ts, list_metadict_str, feed_entry_schema, current_feed_urls, deleted_feed_urls);

                    Utils.RecreatePickledCalinfoAndRenderer(id);
                    Scheduler.InitTaskForId(id, TaskType.icaltasks);
                    bs.DeleteBlob(id, "metadata.html");                            // dump the static page
                    var metadata_url = string.Format("http://{0}/{1}/metadata", ElmcityUtils.Configurator.appdomain, id);

                    var args = new Dictionary <string, string>()
                    {
                        { "metadata_url", metadata_url }
                    };
                    ThreadPool.QueueUserWorkItem(new WaitCallback(rebuild_metahistory_handler), args);                     // rebuild metadata page on another thread

                    var args2 = new Dictionary <string, string>()
                    {
                        { "id", id }
                    };                                                                                 // dump feed cache on another thread
                    ThreadPool.QueueUserWorkItem(new WaitCallback(dump_feed_cache_handler), args2);
                }
                catch (Exception e)
                {
                    GenUtils.LogMsg("status", "UpdateFeedsForId", e.Message + e.StackTrace);
                }
            }
        }