private void BenchmarkingTimer_Tick(object sender, EventArgs e)
 {
     foreach (var check in BenchmarkManager.GetStatusCheckAlgos())
     {
         algorithmsListView1.SetSpeedStatus(check.Item1, check.Item2, GetDotsWaitString());
     }
 }
Beispiel #2
0
        public static (bool stopped, string failReason) StopDevice(ComputeDevice device, bool refreshStateChange = true)
        {
            // we can only start a device it is already stopped
            switch (device.State)
            {
            case DeviceState.Stopped:
                return(false, $"Device {device.Uuid} already stopped");

            case DeviceState.Benchmarking:
                device.State = DeviceState.Stopped;
                BenchmarkManager.StopBenchmarForDevice(device);
                if (refreshStateChange)
                {
                    NiceHashStats.StateChanged();
                }
                return(true, "");

            case DeviceState.Mining:
                device.State = DeviceState.Stopped;
                UpdateDevicesToMine();
                if (refreshStateChange)
                {
                    NiceHashStats.StateChanged();
                }
                return(true, "");

            default:
                return(false, $"Cannot handle state {device.State.ToString()} for device {device.Uuid}");
            }
        }
        private void FormBenchmark_New_FormClosing(object sender, FormClosingEventArgs e)
        {
            BenchmarkManager.OnAlgoStatusUpdate -= SetCurrentStatus;
            BenchmarkManager.OnStepUp           -= StepUpBenchmarkStepProgress;
            BenchmarkManager.OnBenchmarkEnd     -= EndBenchmark;
            if (ApplicationStateManager.BurnCalled)
            {
                return;
            }
            if (BenchmarkManager.InBenchmark)
            {
                e.Cancel = true;
                return;
            }

            // disable all pending benchmark
            foreach (var cDev in AvailableDevices.Devices)
            {
                foreach (var algorithm in cDev.AlgorithmSettings)
                {
                    algorithm.ClearBenchmarkPending();
                }
            }

            BenchmarkManager.ClearQueue();

            // save already benchmarked algorithms
            ConfigManager.CommitBenchmarks();
        }
Beispiel #4
0
        public App()
        {
            var log = new Label();

            MainPage = new ContentPage
            {
                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Start,
                    Children        =
                    {
                        new Button {
                            Text    = "Start benchmark",
                            Command = new Command(OnStartBenchmarkClick)
                        },
                        log
                    }
                }
            };

            BenchmarkManager manager = BenchmarkManager.Current;

            manager.Log += text => log.Text += Environment.NewLine + text;
            manager.Register(typeof(BenchmarksBasic).GetTypeInfo().Assembly);
        }
        public void CalcBenchmarkDevicesAlgorithmQueue()
        {
            var count = BenchmarkManager.CalcBenchDevAlgoQueue();

            // GUI stuff
            progressBarBenchmarkSteps.Maximum = count;
            progressBarBenchmarkSteps.Value   = 0;
            SetLabelBenchmarkSteps(0, count);
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            BenchmarkManager manager = BenchmarkManager.Current;

            manager.Log += WriteLine;
            manager.Register(typeof(BenchmarksBasic).Assembly);
            manager.Start();

            ReadLine();
        }
Beispiel #7
0
        public static (bool started, string failReason) StartDevice(ComputeDevice device, bool skipBenhcmakrk = false)
        {
            // we can only start a device it is already stopped
            if (device.State != DeviceState.Stopped && !skipBenhcmakrk)
            {
                return(false, "Device already started");
            }

            var started              = true;
            var failReason           = "";
            var isErrorState         = !device.AnyAlgorithmEnabled();
            var isAllZeroPayingState = device.AllEnabledAlgorithmsZeroPaying();
            // check if device has any benchmakrs
            var needsBenchmark   = device.AllEnabledAlgorithmsWithoutBenchmarks();
            var needsReBenchmark = device.HasEnabledAlgorithmsWithReBenchmark();

            if (isErrorState || isAllZeroPayingState)
            {
                device.State = DeviceState.Error;
                started      = false;
                failReason   = isAllZeroPayingState ? "No enabled algorithm is profitable" : "Cannot start a device with all disabled algoirhtms";
            }
            else if (needsBenchmark && !skipBenhcmakrk)
            {
                device.State = DeviceState.Benchmarking;
                BenchmarkManager.StartBenchmarForDevice(device, new BenchmarkStartSettings {
                    StartMiningAfterBenchmark = true,
                    BenchmarkPerformanceType  = BenchmarkPerformanceType.Standard,
                    BenchmarkOption           = BenchmarkOption.ZeroOnly
                });
            }
            else if (needsReBenchmark && !skipBenhcmakrk)
            {
                device.State = DeviceState.Benchmarking;
                BenchmarkManager.StartBenchmarForDevice(device, new BenchmarkStartSettings
                {
                    StartMiningAfterBenchmark = true,
                    BenchmarkPerformanceType  = BenchmarkPerformanceType.Standard,
                    BenchmarkOption           = BenchmarkOption.ReBecnhOnly
                });
            }
            else
            {
                device.State = DeviceState.Mining;
                UpdateDevicesToMine();
            }

            RefreshDeviceListView?.Invoke(null, null);
            NiceHashStats.StateChanged();

            return(started, failReason);
        }
        // TODO add list for safety and kill all miners
        private void StopButonClick()
        {
            _benchmarkingTimer.Stop();
            Logger.Debug("FormBenchmark", "StopButonClick() benchmark routine stopped");
            //// copy benchmarked
            //CopyBenchmarks();

            BenchmarkManager.Stop();

            if (_exitWhenFinished)
            {
                Close();
            }
        }
Beispiel #9
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Main);
            _console = FindViewById<TextView>(Resource.Id.console);
            _scroll = FindViewById<ScrollView>(Resource.Id.consoleScroll);

            _benchmarkManager = new BenchmarkManager();
            _benchmarkManager.Log += BenchmarkManagerOnLog;

            using (var buttonRun = FindViewById<Button>(Resource.Id.run))
            buttonRun.Click += ButtonRunOnClick;
        }
        private bool StartButonClick()
        {
            CalcBenchmarkDevicesAlgorithmQueue();
            // device selection check scope
            {
                var noneSelected = AvailableDevices.Devices.All(cDev => !cDev.Enabled);
                if (noneSelected)
                {
                    MessageBox.Show(Translations.Tr("No device has been selected there is nothing to benchmark"),
                                    Translations.Tr("No device selected"),
                                    MessageBoxButtons.OK);
                    return(false);
                }
            }
            // device todo benchmark check scope
            {
                if (!BenchmarkManager.HasWork)
                {
                    MessageBox.Show(Translations.Tr("Current benchmark settings are already executed. There is nothing to do."),
                                    Translations.Tr("Nothing to benchmark"),
                                    MessageBoxButtons.OK);
                    return(false);
                }
            }

            // disable gui controls
            benchmarkOptions1.Enabled                   = false;
            CloseBtn.Enabled                            = false;
            algorithmsListView1.IsInBenchmark           = true;
            devicesListViewEnableControl1.IsInBenchmark = true;
            algorithmSettingsControl1.IsInBenchmark     = true;
            algorithmSettingsControl1.Enabled           = false;
            // set benchmark pending status
            foreach (var deviceAlgosTuple in BenchmarkManager.BenchDevAlgoQueue)
            {
                foreach (var algo in deviceAlgosTuple.Item2)
                {
                    algo.SetBenchmarkPending();
                }
                if (deviceAlgosTuple.Item1 != null)
                {
                    algorithmsListView1.RepaintStatus(deviceAlgosTuple.Item1.Enabled, deviceAlgosTuple.Item1.Uuid);
                }
            }

            BenchmarkManager.Start(benchmarkOptions1.PerformanceType, this);
            _benchmarkingTimer.Start();

            return(true);
        }
Beispiel #11
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.Main);
            _console = FindViewById <TextView>(Resource.Id.console);
            _scroll  = FindViewById <ScrollView>(Resource.Id.consoleScroll);

            _benchmarkManager      = new BenchmarkManager();
            _benchmarkManager.Log += BenchmarkManagerOnLog;

            using (var buttonRun = FindViewById <Button>(Resource.Id.run))
                buttonRun.Click += ButtonRunOnClick;
        }
        public void EndBenchmark(object sender, bool hasFailedAlgos)
        {
            if (ApplicationStateManager.BurnCalled)
            {
                return;
            }
            FormHelpers.SafeInvoke(this, () => {
                _benchmarkingTimer.Stop();
                Logger.Debug("FormBenchmark", "EndBenchmark() benchmark routine finished");

                //CopyBenchmarks();

                BenchmarkStoppedGuiSettings();
                // check if all ok
                if (!hasFailedAlgos && StartMiningOnFinish == false)
                {
                    MessageBox.Show(
                        Translations.Tr("All benchmarks have been successful"),
                        Translations.Tr("Benchmark finished report"),
                        MessageBoxButtons.OK);
                }
                else if (StartMiningOnFinish == false)
                {
                    var result = MessageBox.Show(
                        //Translations.Tr("Not all benchmarks finished successfully. Retry to re-run the benchmark process against unbenchmarked algos or Cancel to disable unbenchmarked algorithms."),
                        Translations.Tr("Not all benchmarks finished successfully."),
                        Translations.Tr("Benchmark finished report"),
                        MessageBoxButtons.OK);

                    //if (result == DialogResult.Retry)
                    //{
                    //    StartButonClick();
                    //    return;
                    //}

                    // update algos status
                    BenchmarkManager.CalcBenchDevAlgoQueue();
                }

                if (_exitWhenFinished || StartMiningOnFinish)
                {
                    Close();
                }
            });
        }
        public void LviSetColor(ListViewItem lvi)
        {
            if (!(lvi.Tag is ComputeDevice cDevice))
            {
                return;
            }

            var uuid = cDevice.Uuid;

            if (!cDevice.Enabled)
            {
                lvi.BackColor = DisabledColor;
            }
            else
            {
                lvi.BackColor = BenchmarkManager.IsDevBenchmarked(uuid) ? BenchmarkedColor : UnbenchmarkedColor;
            }
        }
Beispiel #14
0
        public static (bool stopped, string failReason) StopAllDevice()
        {
            var allDevs = AvailableDevices.Devices;
            // TODO when starting and stopping we are not taking Pending and Error states into account
            var devicesToStop = allDevs.Where(dev => dev.State == DeviceState.Mining || dev.State == DeviceState.Benchmarking);

            if (devicesToStop.Count() == 0)
            {
                return(false, "No new devices to stop");
            }
            var devicesToStopBenchmarking = devicesToStop.Where(dev => dev.State == DeviceState.Benchmarking);

            if (devicesToStopBenchmarking.Count() > 0)
            {
                BenchmarkManager.StopBenchmarForDevices(devicesToStopBenchmarking);
            }
            var devicesToStopMining = devicesToStop.Where(dev => dev.State == DeviceState.Mining);

            if (devicesToStopMining.Count() > 0)
            {
                foreach (var stopDevice in devicesToStopMining)
                {
                    stopDevice.State = DeviceState.Stopped;
                }
                UpdateDevicesToMine();
            }

            // TODO for now no partial success so if one fails send back that everything fails
            var stopped    = true;
            var failReason = "";

            //// try to stop all
            //foreach (var dev in devicesToStop) {
            //    var (success, msg) = StopDevice(dev, false);
            //    if (!success) {
            //        stopped = false;
            //        failReason = msg;
            //    }
            //}
            NiceHashStats.StateChanged();
            StopMining(true);
            return(stopped, failReason);
        }
        private static GreenField.Targeting.Server.FacadeSettings CreateFacadeSettingsUnsafe(String connectionString, String usersConnectionString, Boolean shouldDropRepositories)
        {
            var infoCopier = new InfoCopier();
            var cache      = MemoryCache.Default;
            var countryRepositoryStorage = new CacheStorage <CountryRepository>(cache);
            var countrySerializer        = new CountryToJsonSerializer();
            var countryManager           = new CountryManager(countryRepositoryStorage);
            var basketRenderer           = new BasketRenderer();
            var securityRepositoryCache  = new CacheStorage <SecurityRepository>(cache);
            var calculationRequester     = new CalculationRequester();
            var monitor            = new Monitor();
            var securitySerializer = new SecurityToJsonSerializer(countrySerializer);
            var securityManager    = new SecurityManager(securityRepositoryCache, monitor);

            IDataManagerFactory      dataManagerFactory      = new DataManagerFactory();
            IUsersDataManagerFactory usersDataManagerFactory = new UsersDataManagerFactory();
            var connectionFactory        = new SqlConnectionFactory(connectionString);
            var usersConnectionFactory   = new SqlConnectionFactory(usersConnectionString);
            var portfolioRepositoryCache = new CacheStorage <PortfolioRepository>(cache);
            var portfolioSerialzer       = new TopDown.Core.ManagingPortfolios.PortfolioToJsonSerializer(securitySerializer);
            var portfolioManager         = new TopDown.Core.ManagingPortfolios.PortfolioManager(
                portfolioRepositoryCache,
                portfolioSerialzer
                );

            var targetingTypeManager = new TargetingTypeManager(
                new TopDown.Core.ManagingTargetingTypes.InfoDeserializer(),
                new CacheStorage <TargetingTypeRepository>(cache),
                new CacheStorage <TargetingTypeGroupRepository>(cache)
                );
            var taxonomyManager = new TaxonomyManager(
                new CacheStorage <TaxonomyRepository>(cache),
                new TopDown.Core.ManagingTaxonomies.InfoDeserializer(
                    new TopDown.Core.ManagingTaxonomies.XmlDeserializer()
                    )
                );

            var basketRepositoryStorage = new CacheStorage <BasketRepository>(cache);
            var basketManager           = new BasketManager(
                basketRepositoryStorage,
                new TopDown.Core.ManagingBaskets.XmlDeserializer(),
                new BasketSecurityRelationshipInvestigator()
                );


            var benchmarkRepositoryStorage = new CacheStorage <BenchmarkRepository>(cache);
            var benchmarkManager           = new BenchmarkManager(benchmarkRepositoryStorage);

            var portfolioSecurityTargetRepositoryCache   = new CacheStorage <TopDown.Core.ManagingPst.PortfolioSecurityTargetRepository>(cache);
            var portfolioSecurityTargetRepositoryManager = new TopDown.Core.ManagingPst.RepositoryManager(
                infoCopier,
                portfolioSecurityTargetRepositoryCache
                );

            var bpstCache   = new CacheStorage <TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepository>(cache);
            var bpstManager = new TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepositoryManager(bpstCache);

            var ttgbsbvrCache   = new CacheStorage <TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepository>(cache);
            var ttgbsbvrManager = new TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepositoryManager(ttgbsbvrCache);

            var issuerRepositoryStorage = new CacheStorage <IssuerRepository>(cache);
            var issuerManager           = new IssuerManager(monitor, issuerRepositoryStorage);

            var repositoryManager = new TopDown.Core.RepositoryManager(
                monitor,
                basketManager,
                targetingTypeManager,
                countryManager,
                taxonomyManager,
                securityManager,
                portfolioManager,
                benchmarkManager,
                portfolioSecurityTargetRepositoryManager,
                bpstManager,
                ttgbsbvrManager,
                issuerManager
                );

            if (shouldDropRepositories)
            {
                repositoryManager.DropEverything();
            }

            var validationSerializer   = new TopDown.Core.ValidationIssueToJsonSerializer();
            var expressionSerializer   = new ExpressionToJsonSerializer(validationSerializer);
            var expressionDeserializer = new ExpressionFromJsonDeserializer();
            var defaultBreakdownValues = TopDown.Core.ManagingBpt.DefaultValues.CreateDefaultValues();
            var picker              = new ExpressionPicker();
            var commonParts         = new CommonParts();
            var overlayModelBuilder = new TopDown.Core.Overlaying.ModelBuilder(null, commonParts);
            var overlayManager      = new OverlayManager(overlayModelBuilder);
            var bptModelBuilder     = new TopDown.Core.ManagingBpt.ModelBuilder(
                picker,
                commonParts,
                defaultBreakdownValues,
                overlayModelBuilder
                );

            var globeTraverser             = new GlobeTraverser();
            var taxonomyTraverser          = new TaxonomyTraverser();
            var taxonomyToModelTransformer = new TaxonomyToModelTransformer(picker, bptModelBuilder, globeTraverser);
            var countriesDetector          = new MissingCountriesDetector(
                new UnknownCountryIsoCodesDetector(),
                new TopDown.Core.ManagingTaxonomies.CountryIsoCodesExtractor(taxonomyTraverser),
                new TopDown.Core.Overlaying.CombinedCountryIsoCodesExtractor(new TopDown.Core.Overlaying.CountryIsoCodesExtractor()),
                new TopDown.Core.ManagingBenchmarks.CountryIsoCodesExtractor()
                );
            var modelToTaxonomyTransformer = new ModelToTaxonomyTransformer();
            var bptModelApplier            = new TopDown.Core.ManagingBpt.ModelApplier(
                new TopDown.Core.ManagingBpt.ChangingBt.ChangesetApplier(dataManagerFactory, modelToTaxonomyTransformer),
                new TopDown.Core.ManagingBpt.ChangingBt.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ChangingPsto.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingPsto.ModelToChangesetTransformer(),
                new TopDown.Core.ManagingBpt.ChangingTtbbv.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingTtbbv.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ChangingTtbpt.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingTtbpt.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ModelValidator(globeTraverser),
                dataManagerFactory,
                calculationRequester
                );

            var targetsFlattener  = new TargetsFlattener(infoCopier);
            var bptChangeDetector = new TopDown.Core.ManagingBpt.ModelChangeDetector(
                new TopDown.Core.ManagingBpt.ModelExpressionTraverser(globeTraverser)
                );
            var bptManager = new TopDown.Core.ManagingBpt.ModelManager(
                globeTraverser,
                bptModelBuilder,
                taxonomyToModelTransformer,
                new BaseValueInitializer(globeTraverser),
                new BenchmarkValueInitializer(globeTraverser),
                new OverlayInitializer(globeTraverser, targetsFlattener),
                new PortfolioAdjustmentInitializer(globeTraverser),
                new TopDown.Core.ManagingBpt.ModelToJsonSerializer(expressionSerializer, portfolioSerialzer),
                new TopDown.Core.ManagingBpt.ModelFromJsonDeserializer(
                    picker,
                    bptModelBuilder,
                    globeTraverser,
                    expressionDeserializer
                    ),
                repositoryManager,
                overlayManager,
                countriesDetector,
                bptModelApplier,
                bptChangeDetector
                );

            var pstModelToChangeMapper = new TopDown.Core.ManagingPst.ModelToChangesetTransformer();
            var pstChangeApplier       = new TopDown.Core.ManagingPst.ChangesetApplier();
            var pstModelBuilder        = new TopDown.Core.ManagingPst.ModelBuilder(null, commonParts);
            var pstModelChangeDetector = new TopDown.Core.ManagingPst.ModelChangeDetector(
                new TopDown.Core.ManagingPst.ModelExpressionTraverser()
                );
            var pstModelValidator = new TopDown.Core.ManagingPst.ModelValidator();
            var pstManager        = new PstManager(
                pstChangeApplier,
                pstModelValidator,
                pstModelToChangeMapper,
                new TopDown.Core.ManagingPst.ModelFromJsonDeserializer(
                    pstModelBuilder,
                    expressionDeserializer
                    ),
                pstModelBuilder,
                portfolioSecurityTargetRepositoryManager,
                pstModelChangeDetector,
                dataManagerFactory,
                calculationRequester,
                new TopDown.Core.ManagingPst.ModelToJsonSerializer(expressionSerializer, securitySerializer)
                );


            var portfiolioPickerManager = new ProtfolioPickerManager(
                new TopDown.Core.Gadgets.PortfolioPicker.ModelToJsonSerializer()
                );

            var basketPickerManager = new TopDown.Core.Gadgets.BasketPicker.ModelManager(
                new TopDown.Core.Gadgets.BasketPicker.ModelBuilder(
                    new BasketExtractor(taxonomyTraverser),
                    new BasketRenderer()
                    ),
                new TopDown.Core.Gadgets.BasketPicker.ModelToJsonSerializer()
                );

            var bpstModelBuilder = new TopDown.Core.ManagingBpst.ModelBuilder(
                TopDown.Core.ManagingBpst.DefaultValues.CreateDefaultValues(),
                commonParts
                );
            var bpstBenchmarkInitializer = new TopDown.Core.ManagingBpst.BenchmarkInitializer();
            var bpstModelValidator       = new TopDown.Core.ManagingBpst.ModelValidator();
            var bpstModelChangeDetector  = new TopDown.Core.ManagingBpst.ModelChangeDetector(new TopDown.Core.ManagingBpst.ModelExpressionTraverser());
            var bpstModelManager         = new TopDown.Core.ManagingBpst.ModelManager(
                new TopDown.Core.ManagingBpst.ModelToJsonSerializer(expressionSerializer, securitySerializer),
                bpstModelBuilder,
                new TopDown.Core.ManagingBpst.ModelFromJsonDeserializer(
                    expressionDeserializer,
                    bpstModelBuilder,
                    bpstBenchmarkInitializer
                    ),
                new TopDown.Core.ManagingBpst.ModelApplier(
                    dataManagerFactory,
                    new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ChangesetApplier(),
                    new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ModelToChangesetTransformer(),
                    new TopDown.Core.ManagingBpst.ChangingBpst.PortfolioTargetChangesetApplier(),
                    new TopDown.Core.ManagingBpst.ChangingBpst.ModelToChangesetTransformter(),
                    calculationRequester,
                    bpstModelValidator,
                    repositoryManager
                    ),
                bpstModelValidator,
                bpstBenchmarkInitializer,
                bpstModelChangeDetector,
                repositoryManager
                );

            var validationManager = new ValidationManager(validationSerializer);

            var hopper = new TopDown.Core.ManagingCalculations.Hopper(
                repositoryManager,
                bptManager,
                bpstModelManager,
                basketRenderer
                );

            var commentManager = new TopDown.Core.ManagingComments.CommentManager();
            var facade         = new Facade(
                connectionFactory,
                usersConnectionFactory,
                dataManagerFactory,
                usersDataManagerFactory,
                repositoryManager,
                bptManager,
                picker,
                commonParts,
                pstManager,
                basketManager,
                portfiolioPickerManager,
                basketPickerManager,
                bpstModelManager,
                portfolioManager,
                hopper,
                commentManager
                );


            var serializer    = new Server.Serializer();
            var bgaSerializer = new GreenField.Targeting.Server.BroadGlobalActive.Serializer(
                serializer,
                bptChangeDetector
                );

            var deserializer    = new Server.Deserializer(connectionFactory, dataManagerFactory, repositoryManager);
            var bgaDeserializer = new GreenField.Targeting.Server.BroadGlobalActive.Deserializer(
                deserializer,
                bptModelBuilder,
                globeTraverser
                );

            var btSerializer   = new GreenField.Targeting.Server.BasketTargets.Serializer(serializer, bpstModelChangeDetector);
            var btDeserializer = new GreenField.Targeting.Server.BasketTargets.Deserializer(deserializer, bpstModelBuilder, bpstBenchmarkInitializer);


            var buSerializer   = new GreenField.Targeting.Server.BottomUp.Serializer(serializer, pstModelChangeDetector);
            var buDeserializer = new GreenField.Targeting.Server.BottomUp.Deserializer(deserializer, pstModelBuilder);

            var result = new GreenField.Targeting.Server.FacadeSettings(
                facade,
                serializer,
                bgaSerializer,
                bgaDeserializer,
                btSerializer,
                btDeserializer,
                buSerializer,
                buDeserializer,
                ConfigurationSettings.ShouldDropRepositoriesOnEachReload
                );

            return(result);
        }
Beispiel #16
0
        // TODO add check for any enabled algorithms
        public static (bool started, string failReason) StartAllAvailableDevices(bool isRpcCall = false)
        {
            var allDevs        = AvailableDevices.Devices;
            var devicesToStart = allDevs.Where(dev => dev.State == DeviceState.Stopped);

            if (devicesToStart.Count() == 0)
            {
                return(false, "there are no new devices to start");
            }
            // TODO for now no partial success so if one fails send back that everything fails
            var started    = true;
            var failReason = "";

            // TODO we have a BUG HERE if device enabled with all disabled algorithms
            var devicesToBenchmark   = devicesToStart.Where(dev => dev.AllEnabledAlgorithmsWithoutBenchmarks() && dev.AnyAlgorithmEnabled());
            var devicesToReBenchmark = devicesToStart.Where(dev => dev.HasEnabledAlgorithmsWithReBenchmark() && !devicesToBenchmark.Contains(dev));

            foreach (var dev in devicesToBenchmark)
            {
                dev.State = DeviceState.Benchmarking;
                BenchmarkManager.StartBenchmarForDevice(dev, new BenchmarkStartSettings
                {
                    StartMiningAfterBenchmark = true,
                    BenchmarkPerformanceType  = BenchmarkPerformanceType.Standard,
                    BenchmarkOption           = BenchmarkOption.ZeroOrReBenchOnly
                });
            }
            foreach (var dev in devicesToReBenchmark)
            {
                dev.State = DeviceState.Benchmarking;
                BenchmarkManager.StartBenchmarForDevice(dev, new BenchmarkStartSettings
                {
                    StartMiningAfterBenchmark = true,
                    BenchmarkPerformanceType  = BenchmarkPerformanceType.Standard,
                    BenchmarkOption           = BenchmarkOption.ReBecnhOnly
                });
            }

            var devicesInErrorState      = devicesToStart.Where(dev => !dev.AnyAlgorithmEnabled() || dev.AllEnabledAlgorithmsZeroPaying()).ToList();
            var devicesInErrorStateUUIDs = devicesInErrorState.Select(dev => dev.Uuid);

            foreach (var dev in devicesInErrorState)
            {
                dev.State = DeviceState.Error;
            }

            // TODO check count
            var devicesToMine = devicesToStart.Where(dev => !dev.AllEnabledAlgorithmsWithoutBenchmarks() && !devicesInErrorStateUUIDs.Contains(dev.Uuid)).ToList();

            foreach (var dev in devicesToMine)
            {
                dev.State = DeviceState.Mining;
            }
            UpdateDevicesToMine();
            if (!isRpcCall)
            {
                NiceHashStats.StateChanged();
            }
            RefreshDeviceListView?.Invoke(null, null);

            return(started, "");
        }
Beispiel #17
0
        public static Facade CreateFacade(String connectionString)
        {
            var infoCopier = new InfoCopier();
            var countryRepositoryStorage = new InMemoryStorage <CountryRepository>();
            var countrySerializer        = new CountryToJsonSerializer();
            var countryManager           = new CountryManager(countryRepositoryStorage);
            var basketRenderer           = new BasketRenderer();
            var securityRepositoryCache  = new InMemoryStorage <SecurityRepository>();
            var calculationRequester     = new CalculationRequester();
            var monitor            = new Monitor();
            var securitySerializer = new SecurityToJsonSerializer(countrySerializer);
            var securityManager    = new SecurityManager(securityRepositoryCache, monitor);

            IDataManagerFactory dataManagerFactory = new FakeDataManagerFactory();
            var connectionFactory        = new SqlConnectionFactory(connectionString);
            var portfolioRepositoryCache = new InMemoryStorage <PortfolioRepository>();
            var portfolioSerialzer       = new TopDown.Core.ManagingPortfolios.PortfolioToJsonSerializer(securitySerializer);
            var portfolioManager         = new TopDown.Core.ManagingPortfolios.PortfolioManager(
                portfolioRepositoryCache,
                portfolioSerialzer
                );

            var targetingTypeManager = new TargetingTypeManager(
                new TopDown.Core.ManagingTargetingTypes.InfoDeserializer(),
                new InMemoryStorage <TargetingTypeRepository>(),
                new InMemoryStorage <TargetingTypeGroupRepository>()
                );
            var taxonomyManager = new TaxonomyManager(
                new InMemoryStorage <TaxonomyRepository>(),
                new TopDown.Core.ManagingTaxonomies.InfoDeserializer(
                    new TopDown.Core.ManagingTaxonomies.XmlDeserializer()
                    )
                );

            var basketRepositoryStorage = new InMemoryStorage <BasketRepository>();
            var basketManager           = new BasketManager(
                basketRepositoryStorage,
                new TopDown.Core.ManagingBaskets.XmlDeserializer(),
                new BasketSecurityRelationshipInvestigator()
                );


            var benchmarkRepositoryStorage = new InMemoryStorage <BenchmarkRepository>();
            var benchmarkManager           = new BenchmarkManager(benchmarkRepositoryStorage);

            var portfolioSecurityTargetRepositoryCache   = new InMemoryStorage <TopDown.Core.ManagingPst.PortfolioSecurityTargetRepository>();
            var portfolioSecurityTargetRepositoryManager = new TopDown.Core.ManagingPst.RepositoryManager(
                infoCopier,
                portfolioSecurityTargetRepositoryCache
                );

            var bpstCache   = new InMemoryStorage <TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepository>();
            var bpstManager = new TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepositoryManager(bpstCache);

            var ttgbsbvrCache   = new InMemoryStorage <TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepository>();
            var ttgbsbvrManager = new TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepositoryManager(ttgbsbvrCache);

            var issuerRepositoryStorage = new InMemoryStorage <IssuerRepository>();
            var issuerManager           = new IssuerManager(monitor, issuerRepositoryStorage);


            var repositoryManager = new TopDown.Core.RepositoryManager(
                monitor,
                basketManager,
                targetingTypeManager,
                countryManager,
                taxonomyManager,
                securityManager,
                portfolioManager,
                benchmarkManager,
                portfolioSecurityTargetRepositoryManager,
                bpstManager,
                ttgbsbvrManager,
                issuerManager
                );

            repositoryManager.DropEverything();

            var validationSerializer   = new TopDown.Core.ValidationIssueToJsonSerializer();
            var expressionSerializer   = new ExpressionToJsonSerializer(validationSerializer);
            var expressionDeserializer = new ExpressionFromJsonDeserializer();
            var defaultBreakdownValues = TopDown.Core.ManagingBpt.DefaultValues.CreateDefaultValues();
            var picker              = new ExpressionPicker();
            var commonParts         = new CommonParts();
            var overlayModelBuilder = new TopDown.Core.Overlaying.ModelBuilder(null, commonParts);
            var overlayManager      = new OverlayManager(overlayModelBuilder);
            var bptModelBuilder     = new TopDown.Core.ManagingBpt.ModelBuilder(
                picker,
                commonParts,
                defaultBreakdownValues,
                overlayModelBuilder
                );

            var globeTraverser             = new GlobeTraverser();
            var taxonomyTraverser          = new TaxonomyTraverser();
            var taxonomyToModelTransformer = new TaxonomyToModelTransformer(picker, bptModelBuilder, globeTraverser);
            var countriesDetector          = new MissingCountriesDetector(
                new UnknownCountryIsoCodesDetector(),
                new TopDown.Core.ManagingTaxonomies.CountryIsoCodesExtractor(taxonomyTraverser),
                new TopDown.Core.Overlaying.CombinedCountryIsoCodesExtractor(new TopDown.Core.Overlaying.CountryIsoCodesExtractor()),
                new TopDown.Core.ManagingBenchmarks.CountryIsoCodesExtractor()
                );
            var modelToTaxonomyTransformer = new ModelToTaxonomyTransformer();
            var bptModelApplier            = new TopDown.Core.ManagingBpt.ModelApplier(
                new TopDown.Core.ManagingBpt.ChangingBt.ChangesetApplier(dataManagerFactory, modelToTaxonomyTransformer),
                new TopDown.Core.ManagingBpt.ChangingBt.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ChangingPsto.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingPsto.ModelToChangesetTransformer(),
                new TopDown.Core.ManagingBpt.ChangingTtbbv.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingTtbbv.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ChangingTtbpt.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingTtbpt.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ModelValidator(globeTraverser),
                dataManagerFactory,
                calculationRequester
                );

            var targetsFlattener  = new TargetsFlattener(infoCopier);
            var bptChangeDetector = new TopDown.Core.ManagingBpt.ModelChangeDetector(
                new TopDown.Core.ManagingBpt.ModelExpressionTraverser(globeTraverser)
                );
            var bptManager = new TopDown.Core.ManagingBpt.ModelManager(
                globeTraverser,
                bptModelBuilder,
                taxonomyToModelTransformer,
                new BaseValueInitializer(globeTraverser),
                new BenchmarkValueInitializer(globeTraverser),
                new OverlayInitializer(globeTraverser, targetsFlattener),
                new PortfolioAdjustmentInitializer(globeTraverser),
                new TopDown.Core.ManagingBpt.ModelToJsonSerializer(expressionSerializer, portfolioSerialzer),
                new TopDown.Core.ManagingBpt.ModelFromJsonDeserializer(
                    picker,
                    bptModelBuilder,
                    globeTraverser,
                    expressionDeserializer
                    ),
                repositoryManager,
                overlayManager,
                countriesDetector,
                bptModelApplier,
                bptChangeDetector
                );

            var pstModelToChangeMapper = new TopDown.Core.ManagingPst.ModelToChangesetTransformer();
            var pstChangeApplier       = new TopDown.Core.ManagingPst.ChangesetApplier();
            var pstModelBuilder        = new TopDown.Core.ManagingPst.ModelBuilder(null, commonParts);
            var pstModelValidator      = new TopDown.Core.ManagingPst.ModelValidator();
            var pstManager             = new PstManager(
                pstChangeApplier,
                pstModelValidator,
                pstModelToChangeMapper,
                new TopDown.Core.ManagingPst.ModelFromJsonDeserializer(
                    pstModelBuilder,
                    expressionDeserializer
                    ),
                pstModelBuilder,
                portfolioSecurityTargetRepositoryManager,
                new TopDown.Core.ManagingPst.ModelChangeDetector(
                    new TopDown.Core.ManagingPst.ModelExpressionTraverser()
                    ),
                dataManagerFactory,
                calculationRequester,
                new TopDown.Core.ManagingPst.ModelToJsonSerializer(expressionSerializer, securitySerializer)
                );


            var portfiolioPickerManager = new ProtfolioPickerManager(
                new TopDown.Core.Gadgets.PortfolioPicker.ModelToJsonSerializer()
                );

            var basketPickerManager = new TopDown.Core.Gadgets.BasketPicker.ModelManager(
                new TopDown.Core.Gadgets.BasketPicker.ModelBuilder(
                    new BasketExtractor(taxonomyTraverser),
                    new BasketRenderer()
                    ),
                new TopDown.Core.Gadgets.BasketPicker.ModelToJsonSerializer()
                );

            var bpstModelBuilder = new TopDown.Core.ManagingBpst.ModelBuilder(
                TopDown.Core.ManagingBpst.DefaultValues.CreateDefaultValues(),
                commonParts
                );
            var bpstBenchmarkInitializer = new TopDown.Core.ManagingBpst.BenchmarkInitializer();
            var bpstModelValidator       = new TopDown.Core.ManagingBpst.ModelValidator();
            var bpstModelManager         = new TopDown.Core.ManagingBpst.ModelManager(
                new TopDown.Core.ManagingBpst.ModelToJsonSerializer(expressionSerializer, securitySerializer),
                bpstModelBuilder,
                new TopDown.Core.ManagingBpst.ModelFromJsonDeserializer(
                    expressionDeserializer,
                    bpstModelBuilder,
                    bpstBenchmarkInitializer
                    ),
                new TopDown.Core.ManagingBpst.ModelApplier(
                    dataManagerFactory,
                    new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ChangesetApplier(),
                    new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ModelToChangesetTransformer(),
                    new TopDown.Core.ManagingBpst.ChangingBpst.PortfolioTargetChangesetApplier(),
                    new TopDown.Core.ManagingBpst.ChangingBpst.ModelToChangesetTransformter(),
                    calculationRequester,
                    bpstModelValidator,
                    repositoryManager
                    ),
                bpstModelValidator,
                bpstBenchmarkInitializer,
                new TopDown.Core.ManagingBpst.ModelChangeDetector(new TopDown.Core.ManagingBpst.ModelExpressionTraverser()),
                repositoryManager
                );

            var validationManager = new ValidationManager(validationSerializer);

            var hopper = new TopDown.Core.ManagingCalculations.Hopper(
                repositoryManager,
                bptManager,
                bpstModelManager,
                basketRenderer
                );

            //var fileManager = new TopDown.Core.ManagingCalculations.TradingTargetsFileManager(repositoryManager, dataManagerFactory, connectionFactory);

            var commentManager = new Core.ManagingComments.CommentManager();

            var facade = new Facade(
                connectionFactory,
                dataManagerFactory,
                repositoryManager,
                bptManager,
                picker,
                commonParts,
                pstManager,
                basketManager,
                portfiolioPickerManager,
                basketPickerManager,
                bpstModelManager,
                portfolioManager,
                hopper,
                commentManager
                );

            return(facade);
        }