예제 #1
0
        public override IEnumerable <TestUnitResult> RunTestUnits(TaskFactory taskFactory, Task prepTask)
        {
            if (StartTime.Ticks == 0)
            {
                StartTime = DateTimeOffset.UtcNow;
            }

            if (prepTask.IsFaulted)
            {
                throw prepTask.Exception;
            }

            List <Task <TestUnitResult> > _testUnits = new List <Task <TestUnitResult> >();

            Task[] previousTask = Array.ConvertAll(new int[target.TargetSiteConfig.MaxCatalogueThread], mp => prepTask);

            int i = queryFilters.Count();

            while (i > 0)
            {
                for (int j = 0; j < target.TargetSiteConfig.MaxCatalogueThread; j++)
                {
                    var _testUnit = previousTask[j].ContinueWith <KeyValuePair <IOpenSearchable, FiltersDefinition> >((task) =>
                    {
                        prepTask.Wait();
                        FiltersDefinition randomFilter;
                        queryFilters.TryDequeue(out randomFilter);
                        return(new KeyValuePair <IOpenSearchable, FiltersDefinition>(target.CreateOpenSearchableEntity(randomFilter, Configuration.Current.Global.QueryTryNumber), randomFilter));
                    }).
                                    ContinueWith((request) =>
                    {
                        if (request.Result.Value == null)
                        {
                            return(null);
                        }
                        return(MakeQuery(request.Result.Key, request.Result.Value));
                    });
                    _testUnits.Add(_testUnit);
                    previousTask[j] = _testUnit;
                    i--;
                }
            }
            try
            {
                Task.WaitAll(_testUnits.ToArray());
            }
            catch (AggregateException ae)
            {
                Exception ex = ae;
                while (ex is AggregateException)
                {
                    ex = ex.InnerException;
                }
                log.Debug(ex.Message);
                log.Debug(ex.StackTrace);
            }
            EndTime = DateTimeOffset.UtcNow;

            return(_testUnits.Select(t => t.Result).Where(r => r != null));
        }
예제 #2
0
        private static bool CheckTimelinessParameter(TargetSiteWrapper target)
        {
            var os         = target.CreateOpenSearchableEntity();
            var parameters = os.GetOpenSearchParameters(os.DefaultMimeType);

            return(parameters.AllKeys.Any(key =>
            {
                return key == "timeliness" || parameters[key].Contains("timeliness");
            }));
        }
예제 #3
0
        protected virtual List <IOpenSearchResultItem> FindItemsToDownload(int count = 20)
        {
            List <IOpenSearchResultItem> forcedFoundItems = new List <IOpenSearchResultItem>();
            TestCase201 tc      = new TestCase201(log, target, 1, Mission.GenerateExistingDataDictionary(target), out forcedFoundItems);
            var         filters = new FiltersDefinition("all");

            filters.AddFilter("missionName", "{http://a9.com/-/opensearch/extensions/eo/1.0/}platform", "Sentinel-1", "Sentinel-1", null, null);
            filters.AddFilter("productType", "{http://a9.com/-/opensearch/extensions/eo/1.0/}productType", "GRD", "GRD", null, null);
            filters.AddFilter("archiveStatus", "{http://a9.com/-/opensearch/extensions/eo/1.0/}statusSubType", "online", "Online", null, null);
            filters.AddFilter("productFormat", "{http://a9.com/-/opensearch/extensions/eo/1.0/}productFormat", "zip", "ZIP", null, null);
            filters.AddFilter("count", "{http://a9.com/-/spec/opensearch/1.1/}count", count > 50 ? count.ToString() : "50", "", null, null);
            tc.MakeQuery(target.CreateOpenSearchableEntity(), filters);
            return(forcedFoundItems);
        }