Exemple #1
0
 public bfgWorker(string name, string route, string[] tags, IAppServiceRegistry registry, IAppServiceDiscovery services, IZipService zipService, IAppStatusServiceClient appStatus, IRxnManager <IRxn> rxnManager, IUpdateServiceClient updateService, IAppStatusCfg cfg, Func <ITestArena[]> arena)
 {
     _registry      = registry;
     _services      = services;
     _zipService    = zipService;
     _appStatus     = appStatus;
     _rxnManager    = rxnManager;
     _updateService = updateService;
     _cfg           = cfg;
     _arena         = arena;
     Name           = name;
     Route          = route;
     Info.Add(bfgTagWorkflow.WorkerTag, tags.ToStringEach());
 }
Exemple #2
0
 //to load a range of tests with dotnet test i cant use filters
 //will need to discover_tests in the dll first, parse the list of tests and divide them up
 //and stitch a list together
 public static IObservable <ApiHeartbeat> DiscoverWork(IAppServiceDiscovery services, string apiName = null)
 {
     return(services.Discover()
            .Where(msg => msg.Name.Contains("bfg-worker-queue") &&
                   (apiName.IsNullOrWhitespace() || msg.Name.BasicallyContains(apiName)))
            .Select(m =>
     {
         var tokens = m.Name.Split(':');
         m.Name = tokens.Reverse().Skip(1).FirstOrDefault();
         return m;
     })
            .Do(msg =>
     {
         $"Discovered target {msg.Name} @ {msg.Url}".LogDebug();
     }));
 }
Exemple #3
0
        public static string ClientId = bfgCfg.Detect().Id.Split('-').FirstOrDefault(); //get from cfg file if exists

        public bfgWorkerManager(bfgCluster workerCluster, IObservable <StartUnitTest[]> cfg, SystemStatusPublisher systemStatus, IResolveTypes resolver, IRxnManager <IRxn> eventManager, IAppStatusCfg appStatusCfg, IAppServiceRegistry appServiceRegistry, IZipService zipService, IAppStatusStore appCmds, IAppStatusServiceClient appStatus, IAppServiceDiscovery serviceDiscovery, IUpdateServiceClient appUpdates)
        {
            _workerCluster      = workerCluster;
            _cfg                = cfg;
            _resolver           = resolver;
            _eventManager       = eventManager;
            _appStatusCfg       = appStatusCfg;
            _appServiceRegistry = appServiceRegistry;
            _zipService         = zipService;
            _appCmds            = appCmds;
            _appStatus          = appStatus;
            _serviceDiscovery   = serviceDiscovery;
            _appUpdates         = appUpdates;

            systemStatus.Process(new AppStatusInfoProviderEvent()
            {
                ReporterName = nameof(bfgWorkerManager),
                Component    = "Status",
                Info         = WorkerManagerStatus
            }).Until();
        }
Exemple #4
0
 public static IDisposable AdvertiseForWorkers(IAppServiceDiscovery discovery, string apiName = null, string hostUrl = "http://localhost:888/")
 {
     return(discovery.Advertise("bfg-worker-queue", apiName, hostUrl).Until());
 }
Exemple #5
0
        public static IDisposable StartTestArena(string[] args, IObservable <StartUnitTest[]> testCfg, bfgCluster cluster, bfgWorkerManager workerManager, IRxnManager <IRxn> toFireOn, IAppServiceDiscovery discovery)
        {
            "Starting up TestArena".LogDebug();

            if (_started.HasValue)
            {
                _started = DateTime.Now;
            }

            var stopAdvertising = bfgTestArenaApi.AdvertiseForWorkers(discovery, "all", $"http://{RxnApp.GetIpAddress()}:888");

            theBfg.Use(cluster, workerManager);

            var stopWorkers = Disposable.Empty;

            if (args.Any(a => a.BasicallyEquals("fire")))
            {
                stopWorkers = theBfg.StartTestArenaWorkers(args, testCfg).Until();
            }

            var stopFiring = StartFiringWorkflow(args, testCfg, toFireOn);


            return(new CompositeDisposable(stopAdvertising, stopWorkers, stopFiring));
        }