Ejemplo n.º 1
0
            public IResult[] Execute(ITimes times, IParallelism parallelism)
            {
                IInstance[] input = this.instances;

                while (true)
                {
                    Log.Information("Executing {Case} {Times}", [email protected], times.Describe());

                    MinDurationVisitor visitor = new MinDurationVisitor();
                    IResult[]          results = parallelism.Execute(input, times);

                    foreach (IResult result in results)
                    {
                        result.Data.Visit(visitor);
                    }

                    if (visitor.HasValue() == false || visitor.GetValue().TotalSeconds >= 1.0d)
                    {
                        return(results);
                    }

                    double ceiling = Math.Ceiling(1.2d / visitor.GetValue().TotalSeconds);
                    times = times.Multiply(Math.Max(2, (int)ceiling));
                    input = OptimizeOrder(results);
                }
            }
Ejemplo n.º 2
0
        public ActionResult <IEnumerable <string> > Get()
        {
            ITimes time1 = container.ResolveNamed <ITimes>("SaoBento");
            ITimes time2 = container.ResolveNamed <ITimes>("Corinthians");

            return(new string[] { time1.Time, time2.Time });
        }
Ejemplo n.º 3
0
            public IResult[] Execute(ITimes times, IParallelism parallelism)
            {
                IInstance[] input = this.instances;

                while (true)
                {
                    Log.Information("Executing {Case} {Times}", [email protected], times.Describe());

                    MinDurationVisitor visitor = new MinDurationVisitor();
                    IResult[] results = parallelism.Execute(input, times);

                    foreach (IResult result in results)
                    {
                        result.Data.Visit(visitor);
                    }

                    if (visitor.HasValue() == false || visitor.GetValue().TotalSeconds >= 1.0d)
                    {
                        return results;
                    }

                    double ceiling = Math.Ceiling(1.2d / visitor.GetValue().TotalSeconds);
                    times = times.Multiply(Math.Max(2, (int)ceiling));
                    input = OptimizeOrder(results);
                }
            }
Ejemplo n.º 4
0
 public IResult[] Execute(IInstance[] instances, ITimes times)
 {
     return
         instances
             .AsParallel()
             .WithDegreeOfParallelism(this.degree)
             .Select(Parallelism.CreateCallback(times))
             .ToArray();
 }
Ejemplo n.º 5
0
 public IResult[] Execute(IInstance[] instances, ITimes times)
 {
     return
         (instances
          .AsParallel()
          .WithDegreeOfParallelism(this.degree)
          .Select(Parallelism.CreateCallback(times))
          .ToArray());
 }
Ejemplo n.º 6
0
        public IReport Execute(ITimes times, IParallelism parallelism)
        {
            Report report = new Report();

            foreach (IExecutionGroup @group in this.GroupInstances())
            {
                foreach (IResult result in @group.Execute(times, parallelism))
                {
                    report.AddResult(result);
                }
            }

            return report;
        }
Ejemplo n.º 7
0
        private IResultData Serialize <T>(IResource <T> resource, ISubject subject, ITimes times)
            where T : class
        {
            times = resource.Multiply(times);
            T instance = resource.GetInstance();

            IRoutine routine = new Routine <T>(subject, instance);
            TimeSpan started = AppDomain.CurrentDomain.MonitoringTotalProcessorTime;

            times.Execute(routine);
            TimeSpan ended = AppDomain.CurrentDomain.MonitoringTotalProcessorTime;

            return(new MeasuredDurationResult(ended - started));
        }
Ejemplo n.º 8
0
        public IReport Execute(ITimes times, IParallelism parallelism)
        {
            Report report = new Report();

            foreach (IExecutionGroup @group in this.GroupInstances())
            {
                foreach (IResult result in @group.Execute(times, parallelism))
                {
                    report.AddResult(result);
                }
            }

            return(report);
        }
        public IResultData Process <T>(IResource <T> resource, ISubject subject, ITimes times)
            where T : class
        {
            IResultData result = null;

            try
            {
                result = result ?? Validate <T>(resource, subject);
                result = result ?? Deserialize <T>(resource, subject, times);
            }
            catch (Exception ex)
            {
                result = new FailedByExceptionResult(ex);
            }

            return(result);
        }
Ejemplo n.º 10
0
        public IResult Execute(ITimes times)
        {
            Log.Debug("New AppDomain {Subject}/{Procedure}", this.subject.Name, this.procedure.Name);
            AppDomain domain = AppDomain.CreateDomain(String.Join("-", [email protected], this.subject.Name, this.procedure.Name));

            try
            {
                Log.Information("Executing {Subject}/{Procedure} on thread {ThreadId}", this.subject.Name, this.procedure.Name);

                Proxy proxy = (Proxy)domain.CreateInstanceFromAndUnwrap(this.GetType().Assembly.CodeBase, typeof(Proxy).FullName);
                IResultData data = proxy.Execute(this.@case, this.procedure, this.subject, times);
                IResult result = new Result(this.@case, this.procedure, this.subject, data);

                return result;
            }
            finally
            {
                Log.Information("Executing {Subject}/{Procedure} on thread {ThreadId} completed", this.subject.Name, this.procedure.Name);
                AppDomain.Unload(domain);
            }
        }
Ejemplo n.º 11
0
        public IResult Execute(ITimes times)
        {
            Log.Debug("New AppDomain {Subject}/{Procedure}", this.subject.Name, this.procedure.Name);
            AppDomain domain = AppDomain.CreateDomain(String.Join("-", [email protected], this.subject.Name, this.procedure.Name));

            try
            {
                Log.Information("Executing {Subject}/{Procedure} on thread {ThreadId}", this.subject.Name, this.procedure.Name);

                Proxy       proxy  = (Proxy)domain.CreateInstanceFromAndUnwrap(this.GetType().Assembly.CodeBase, typeof(Proxy).FullName);
                IResultData data   = proxy.Execute(this.@case, this.procedure, this.subject, times);
                IResult     result = new Result(this.@case, this.procedure, this.subject, data);

                return(result);
            }
            finally
            {
                Log.Information("Executing {Subject}/{Procedure} on thread {ThreadId} completed", this.subject.Name, this.procedure.Name);
                AppDomain.Unload(domain);
            }
        }
Ejemplo n.º 12
0
 public ITimes Multiply(ITimes times)
 {
     return(times.Multiply(20000));
 }
Ejemplo n.º 13
0
 public IResultData Execute(IProcedure procedure, ISubject subject, ITimes times)
 {
     return(procedure.Process(this, subject, times));
 }
Ejemplo n.º 14
0
 private static Func<IInstance, IResult> CreateCallback(ITimes times)
 {
     return instance => instance.Execute(times);
 }
Ejemplo n.º 15
0
 public IResultData Execute(ICase @case, IProcedure procedure, ISubject subject, ITimes times)
 {
     return @case.Execute(procedure, subject, times);
 }
Ejemplo n.º 16
0
 // Note that the compiler thinks this is unused...
 public DoSomethinger(IWhat a, ITimes b)
 {
     _a = a;
     _b = b;
 }
Ejemplo n.º 17
0
 private static Func <IInstance, IResult> CreateCallback(ITimes times)
 {
     return(instance => instance.Execute(times));
 }
Ejemplo n.º 18
0
 public IResultData Execute(ICase @case, IProcedure procedure, ISubject subject, ITimes times)
 {
     return(@case.Execute(procedure, subject, times));
 }